網(wǎng)賭網(wǎng)站怎么做的seo百度關(guān)鍵詞優(yōu)化
🙊作者簡介:擁有多年開發(fā)工作經(jīng)驗(yàn),分享技術(shù)代碼幫助學(xué)生學(xué)習(xí),獨(dú)立完成自己的項(xiàng)目或者畢業(yè)設(shè)計(jì)。
- 代碼可以私聊博主獲取。🌹
- 贈送計(jì)算機(jī)畢業(yè)設(shè)計(jì)600個(gè)選題excel文件,幫助大學(xué)選題。
- 贈送開題報(bào)告模板,幫助書寫開題報(bào)告。
作者完整代碼目錄供你選擇:
- 《Springboot網(wǎng)站項(xiàng)目》400套
- 《ssm網(wǎng)站項(xiàng)目》800套
- 《小程序項(xiàng)目》300套
- 《App項(xiàng)目》500套
- 《python網(wǎng)站項(xiàng)目》600套
?感興趣大家可以點(diǎn)點(diǎn)關(guān)注收藏,后續(xù)更新更多項(xiàng)目資料。?
項(xiàng)目演示
??????????
互聯(lián)網(wǎng)發(fā)展至今,無論是其理論還是技術(shù)都已經(jīng)成熟,而且它廣泛參與在社會中的方方面面。它讓信息都可以通過網(wǎng)絡(luò)傳播,搭配信息管理工具可以很好地為人們提供服務(wù)。針對高校教師成果信息管理混亂,出錯(cuò)率高,信息安全性差,勞動強(qiáng)度大,費(fèi)時(shí)費(fèi)力等問題,采用課堂點(diǎn)名系統(tǒng)可以有效管理,使信息管理能夠更加科學(xué)和規(guī)范。
課堂點(diǎn)名系統(tǒng)使用Java語言進(jìn)行編碼,使用Mysql創(chuàng)建數(shù)據(jù)表保存本系統(tǒng)產(chǎn)生的數(shù)據(jù)。系統(tǒng)可以提供信息顯示和相應(yīng)服務(wù),其管理課堂點(diǎn)名系統(tǒng)信息,查看課堂點(diǎn)名系統(tǒng)信息,管理課堂點(diǎn)名系統(tǒng)。
總之,課堂點(diǎn)名系統(tǒng)集中管理信息,有著保密性強(qiáng),效率高,存儲空間大,成本低等諸多優(yōu)點(diǎn)。它可以降低信息管理成本,實(shí)現(xiàn)信息管理計(jì)算機(jī)化。
關(guān)鍵詞:課堂點(diǎn)名系統(tǒng);Java語言;Mysql
第1章?緒論
1.1?課題背景
互聯(lián)網(wǎng)發(fā)展至今,無論是其理論還是技術(shù)都已經(jīng)成熟,而且它廣泛參與在社會中的方方面面。它讓信息都可以通過網(wǎng)絡(luò)傳播,搭配信息管理工具可以很好地為人們提供服務(wù)。所以各行業(yè),尤其是規(guī)模較大的企業(yè)和學(xué)校等都開始借助互聯(lián)網(wǎng)和軟件工具管理信息,傳播信息,共享信息等等,以此可以增強(qiáng)自身實(shí)力,提高在同行業(yè)當(dāng)中的競爭能力,并從各種激烈的競爭中獲取發(fā)展的機(jī)會。針對高校教師成果信息管理混亂,出錯(cuò)率高,信息安全性差,勞動強(qiáng)度大,費(fèi)時(shí)費(fèi)力等問題,經(jīng)過分析和考慮,在目前的情況下,可以引進(jìn)一款課堂點(diǎn)名系統(tǒng)這樣的現(xiàn)代化管理工具,這個(gè)工具就是解決上述問題的最好的解決方案。它不僅可以實(shí)時(shí)完成信息處理,還縮短高校教師成果信息管理流程,使其系統(tǒng)化和規(guī)范化。同時(shí)還可以減少工作量,節(jié)約高校教師成果信息管理需要的人力和資金。所以課堂點(diǎn)名系統(tǒng)是信息管理環(huán)節(jié)中不可缺少的工具,它對管理者來說非常重要。
1.2 課題意義?
現(xiàn)如今,信息種類變得越來越多,信息的容量也變得越來越大,這就是信息時(shí)代的標(biāo)志。近些年,計(jì)算機(jī)科學(xué)發(fā)展得也越來越快,而且軟件開發(fā)技術(shù)也越來越成熟,因此,在生活中的各個(gè)領(lǐng)域,只要存在信息管理,幾乎都有計(jì)算機(jī)的影子,可以說很多行業(yè)都采用計(jì)算機(jī)的方式管理信息。信息計(jì)算機(jī)化處理相比手工操作,有著保密性強(qiáng),效率高,存儲空間大,成本低等諸多優(yōu)點(diǎn)。針對高校教師成果信息管理,采用課堂點(diǎn)名系統(tǒng)可以有效管理,使信息管理能夠更加科學(xué)和規(guī)范。
總之,在實(shí)際中使用課堂點(diǎn)名系統(tǒng),其意義如下:
第一點(diǎn):課堂點(diǎn)名系統(tǒng)的實(shí)際運(yùn)用,可以幫助管理人員在短時(shí)間內(nèi)完成信息處理工作;
第二點(diǎn):通過系統(tǒng)頁面的合理排版布局,可以更加直觀的展示系統(tǒng)的內(nèi)容,并且使用者可以隨時(shí)閱讀頁面信息,隨時(shí)操作系統(tǒng)提供的功能;
第三點(diǎn):可以實(shí)現(xiàn)信息管理計(jì)算機(jī)化;
第四點(diǎn):可以降低信息管理成本;
1.3 研究內(nèi)容
對課堂點(diǎn)名系統(tǒng)設(shè)計(jì)制作,不僅需要技術(shù)支撐,也需要大量的理論研究。本文在對課堂點(diǎn)名系統(tǒng)進(jìn)行介紹時(shí),將按照如下內(nèi)容進(jìn)行。
第一部分:介紹課堂點(diǎn)名系統(tǒng)研究的背景意義,便于用戶了解系統(tǒng);
第二部分:介紹開發(fā)課堂點(diǎn)名系統(tǒng)需要搭建的環(huán)境,包括技術(shù)和工具;
第三部分:介紹用戶對課堂點(diǎn)名系統(tǒng)的功能要求,以及對課堂點(diǎn)名系統(tǒng)的性能要求等;
第四部分:介紹數(shù)據(jù)庫的設(shè)計(jì)方案,以及根據(jù)功能要求設(shè)計(jì)的功能結(jié)構(gòu);
第五部分:介紹通過編碼最終實(shí)現(xiàn)的系統(tǒng)功能運(yùn)行效果;
第六部分:介紹系統(tǒng)的功能測試,對系統(tǒng)進(jìn)行綜合檢測,并及時(shí)解決系統(tǒng)出現(xiàn)的問題,直至系統(tǒng)運(yùn)行正常。
第2章?開發(fā)環(huán)境與技術(shù)
課堂點(diǎn)名系統(tǒng)的編碼實(shí)現(xiàn)需要搭建一定的環(huán)境和使用相應(yīng)的技術(shù),接下來的內(nèi)容就是對課堂點(diǎn)名系統(tǒng)用到的技術(shù)和工具進(jìn)行介紹。
2.1 MYSQL數(shù)據(jù)庫
本課題所開發(fā)的應(yīng)用程序在數(shù)據(jù)操作方面是不可預(yù)知的,是經(jīng)常變動的,沒有辦法直接把數(shù)據(jù)寫在文檔里,這樣不僅僅不安全,也不能實(shí)現(xiàn)應(yīng)用程序的功能。如果要能實(shí)現(xiàn)應(yīng)用程序所需要的數(shù)據(jù)存儲功能,就避免不了要進(jìn)行專業(yè)數(shù)據(jù)庫存儲軟件的選擇?;旧蠎?yīng)用程序?qū)崿F(xiàn)的功能不算太復(fù)雜,市面上任何一個(gè)關(guān)系型數(shù)據(jù)庫軟件都可以實(shí)現(xiàn)。參考自己的學(xué)習(xí)進(jìn)度和操作習(xí)慣來講,Oracle數(shù)據(jù)庫是適合的,但是所需要的的安裝軟件很大,并且有好多不需要的功能都是開啟的狀態(tài),十分消耗電腦資源,所以沒有選擇Oracle數(shù)據(jù)庫,而SQL Server數(shù)據(jù)庫雖然學(xué)過,但是安裝的時(shí)候因?yàn)殡娔X上可能有其他的軟件存在,經(jīng)常性的出問題,而安裝問題不好解決就需要重新安裝操作系統(tǒng),這樣對已經(jīng)存在的軟件來講又是一種時(shí)間上的浪費(fèi)。只有MySQL數(shù)據(jù)庫,安裝包小,安裝速度快,操作簡單,哪怕安裝出問題也好解決,不用重裝操作系統(tǒng),也不影響電腦上運(yùn)行的其他軟件,消耗資源也少,最重要的是在功能方面完全的符合設(shè)計(jì)需要,所以最后選擇了MySQL數(shù)據(jù)庫作為應(yīng)用軟件開發(fā)需要的數(shù)據(jù)庫。
2.2 Java語言
Java語言發(fā)展有25年多了,在互聯(lián)網(wǎng)行業(yè)經(jīng)過這么多年的發(fā)展,還依然在市場的占有率上有半壁江山,依然受到很多程序員的喜愛,好多從業(yè)人員進(jìn)行學(xué)習(xí),隨著互聯(lián)網(wǎng)從業(yè)人員的增加,并沒有降低Java語言的江湖地位,算是一個(gè)常青藤。Java語言學(xué)習(xí)很簡單,當(dāng)然這是針對于前輩C++來講的,C++語言相當(dāng)?shù)膹?qiáng)悍。Java取消了很多C++特征,比如go to這些語句,還有取消了主文件,讓所有的文件都是類,類里都是數(shù)組和各種對象,還讓Java自己處理各種對象的引用和回收,讓開發(fā)人員只需要創(chuàng)建對象,使用對象,編輯代碼邏輯,不需要關(guān)注性能方面,讓數(shù)據(jù)的各種存儲交給Java自己處理,可以花更多的時(shí)間研究應(yīng)用程序之間的關(guān)系,讓開發(fā)變得更專注,就像賽車的駕駛員一樣,只需要了解各種車輛的性能,并且進(jìn)行操作,不需要研究轱轆如何制造,這樣讓程序開發(fā)更加的細(xì)化。
2.3 微信小程序技術(shù)??
小程序并非憑空冒出來的一個(gè)概念。當(dāng)微信中的 WebView 逐漸成為移動 Web 的一個(gè)重要入口時(shí),微信就有相關(guān)的 JS API 了。
實(shí)際上,微信官方是沒有對外暴露過如此調(diào)用的,此類 API 最初是提供給騰訊內(nèi)部一些業(yè)務(wù)使用,很多外部開發(fā)者發(fā)現(xiàn)了之后,依葫蘆畫瓢地使用了,逐漸成為微信中網(wǎng)頁的事實(shí)標(biāo)準(zhǔn)。2015年初,微信發(fā)布了一整套網(wǎng)頁開發(fā)工具包,稱之為 JS-SDK,開放了拍攝、錄音、語音識別、二維碼、地圖、支付、分享、卡券等幾十個(gè)API。給所有的 Web 開發(fā)者打開了一扇全新的窗戶,讓所有開發(fā)者都可以使用到微信的原生能力,去完成一些之前做不到或者難以做到的事情。
JS-SDK是對之前的 WeixinJSBrige 的一個(gè)包裝,以及新能力的釋放,并且由對內(nèi)開放轉(zhuǎn)為了對所有開發(fā)者開放,在很短的時(shí)間內(nèi)獲得了極大的關(guān)注。從數(shù)據(jù)監(jiān)控來看,絕大部分在微信內(nèi)傳播的移動網(wǎng)頁都使用到了相關(guān)的接口。
?JS-SDK 解決了移動網(wǎng)頁能力不足的問題,通過暴露微信的接口使得 Web 開發(fā)者能夠擁有更多的能力,然而在更多的能力之外,JS-SDK 的模式并沒有解決使用移動網(wǎng)頁遇到的體驗(yàn)不良的問題。用戶在訪問網(wǎng)頁的時(shí)候,在瀏覽器開始顯示之前都會有一個(gè)的白屏過程,在移動端,受限于設(shè)備性能和網(wǎng)絡(luò)速度,白屏?xí)用黠@。我們團(tuán)隊(duì)把很多技術(shù)精力放置在如何幫助平臺上的Web開發(fā)者解決這個(gè)問題。因此我們設(shè)計(jì)了一個(gè) JS-SDK 的增強(qiáng)版本,其中有一個(gè)重要的功能,稱之為“微信 Web 資源離線存儲”
?這個(gè)設(shè)計(jì)有點(diǎn)類似 HTML5 的 Application Cache,但在設(shè)計(jì)上規(guī)避了一些 Application Cache的不足。
?在內(nèi)部測試中,我們發(fā)現(xiàn) 離線存儲 能夠解決一些問題,但對于一些復(fù)雜的頁面依然會有白屏問題,例如頁面加載了大量的 CSS 或者是 JavaScript 文件。?除了白屏,影響 Web 體驗(yàn)的問題還有缺少操作的反饋,主要表現(xiàn)在兩個(gè)方面:頁面切換的生硬和點(diǎn)擊的遲滯感。
?微信面臨的問題是如何設(shè)計(jì)一個(gè)比較好的系統(tǒng),使得所有開發(fā)者在微信中都能獲得比較好的體驗(yàn)。這個(gè)問題是之前的 JS-SDK 所處理不了的,需要一個(gè)全新的系統(tǒng)來完成,它需要使得所有的開發(fā)者都能做到:
快速的加載
更強(qiáng)大的能力
原生的體驗(yàn)
易用且安全的微信數(shù)據(jù)開放
高效和簡單的開發(fā)
2.4?SpringBoot框架
那Spring Boot有何魔法?自動配置、起步依賴、Actuator、命令行界面(CLI) 是Spring Boot最重要的4大核心特性,其中CLI是Spring Boot的可選特性,雖然它功能強(qiáng)大,但也引入了一套不太常規(guī)的開發(fā)模型,因而這個(gè)系列的文章僅關(guān)注其它3種特性。如文章標(biāo)題,本文是這個(gè)系列的第一部分,將為你打開Spring Boot的大門,重點(diǎn)為你剖析其啟動流程以及自動配置實(shí)現(xiàn)原理。要掌握這部分核心內(nèi)容,理解一些Spring框架的基礎(chǔ)知識,將會讓你事半功倍。
可以把Spring IoC容器比作一間餐館,當(dāng)你來到餐館,通常會直接招呼服務(wù)員:點(diǎn)菜!至于菜的原料是什么?如何用原料把菜做出來?可能你根本就不關(guān)心。IoC容器也是一樣,你只需要告訴它需要某個(gè)bean,它就把對應(yīng)的實(shí)例(instance)扔給你,至于這個(gè)bean是否依賴其他組件,怎樣完成它的初始化,根本就不需要你關(guān)心。
作為餐館,想要做出菜肴,得知道菜的原料和菜譜,同樣地,IoC容器想要管理各個(gè)業(yè)務(wù)對象以及它們之間的依賴關(guān)系,需要通過某種途徑來記錄和管理這些信息。?BeanDefinition對象就承擔(dān)了這個(gè)責(zé)任:容器中的每一個(gè)bean都會有一個(gè)對應(yīng)的BeanDefinition實(shí)例,該實(shí)例負(fù)責(zé)保存bean對象的所有必要信息,包括bean對象的class類型、是否是抽象類、構(gòu)造方法和參數(shù)、其它屬性等等。當(dāng)客戶端向容器請求相應(yīng)對象時(shí),容器就會通過這些信息為客戶端返回一個(gè)完整可用的bean實(shí)例。
2.5?B/S架構(gòu)
B/S架構(gòu)是軟件行業(yè)針對C/S架構(gòu)來進(jìn)行區(qū)分的,用來描述瀏覽器與服務(wù)器之間的一種架構(gòu)模式。一般選擇B/S架構(gòu)最主要的原因就是方便維護(hù),當(dāng)程序開發(fā)的時(shí)候,可以在本地進(jìn)行測試,一般的集成開發(fā)環(huán)境都自帶的有開發(fā)和一鍵部署,本地瀏覽器可以及時(shí)的看到效果,測試人員有專門的服務(wù)器,只需要部署上去即可,如果中間有問題都可以進(jìn)行整改的。應(yīng)用程序升級,只需要后臺維護(hù)代碼即可,客戶方面還是用之前的瀏覽器進(jìn)行訪問,所以客戶端方面是很方便的?,F(xiàn)在市面上基本上所有的操作系統(tǒng)平臺只要是有視窗模式的,除了命令行操作界面的窗口之外,在視窗模式都是可以安裝瀏覽器的,所以任何帶視窗模式的電腦操作系統(tǒng)自帶的瀏覽器或者是其他廠家的瀏覽器,或者是移動端的瀏覽器,都可以進(jìn)行訪問服務(wù)器的。訪問服務(wù)器占用客戶端資源是很少,而且不容易出錯(cuò),哪怕客戶端這邊出現(xiàn)大的問題,只需要重裝系統(tǒng)然后再安裝上瀏覽器即可。在程序功能和客戶體驗(yàn)上面,選擇B/S架構(gòu)進(jìn)行應(yīng)用程序開發(fā),是很適合當(dāng)今社會的主流發(fā)展趨勢的。
2.6?Tomcat 介紹
剛開始學(xué)習(xí)Java語言的時(shí)候,是不知道還有Tomcat這些東西的,各種語法各種輸出在控制臺進(jìn)行輸出結(jié)果,當(dāng)Java網(wǎng)站開發(fā)的時(shí)候就不可避免的學(xué)習(xí)到了Tomcat服務(wù)器。Tomcat準(zhǔn)確的來講不算是服務(wù)器,可以說是微信小程序引擎或者一個(gè)容器,這些都是學(xué)術(shù)上或者原理上都比較貼切的,但是實(shí)際工作中Tomcat就是作為一個(gè)web服務(wù)器來用的,因?yàn)榭梢詫?shí)現(xiàn)網(wǎng)站的發(fā)布和運(yùn)行。因?yàn)楣ぷ髟淼脑?#xff0c;Tomcat一般作為中小型企業(yè)和并發(fā)量并不突出的一種輕量級的服務(wù)器存在的,比如某些行業(yè)的應(yīng)用系統(tǒng),本身客戶端就不多,需要的連接也不多,一般都用Tomcat的。Tomcat里面可以配置多個(gè)網(wǎng)站,配置文件后綴是config的文檔,類似于XML的結(jié)構(gòu),比較清晰明了。每當(dāng)Java發(fā)布新的版本的時(shí)候,Tomcat也會為了匹配Java的版本進(jìn)行升級,目前Tomcat版本已經(jīng)到版本10了。Tomcat標(biāo)識是一只有點(diǎn)發(fā)黃的小貓咪,當(dāng)Tomcat配置成功一般測試的時(shí)候能看到這個(gè)小貓咪就算是成功的,才能進(jìn)行下一步的配置。Tomcat服務(wù)器在Java網(wǎng)站開發(fā)中還是挺合適的。
2.7 HTML簡介
HTML是超文本標(biāo)記語言,都是用各種聲明以及對稱性的的特殊符號作為標(biāo)記,用以瀏覽器解析。HTML還有一些基本標(biāo)簽,比如根元素標(biāo)簽就是<html>,而文檔元數(shù)據(jù)一般都寫在了<head>標(biāo)簽里面,標(biāo)題就是瀏覽器左上角的顯示的網(wǎng)頁內(nèi)容,用的是<title>標(biāo)簽描述,<body>里是很重要的,描述的是瀏覽器顯示的可見內(nèi)容,如果想要在瀏覽器上面顯示一些數(shù)據(jù),那么肯定是要寫在<body>標(biāo)簽里面的。關(guān)于定義標(biāo)題或者換行以及段落,都有對應(yīng)的標(biāo)簽?;旧细鱾€(gè)瀏覽器都支持調(diào)試模式,一般都是用到了鍵盤上面用F12就可以看到標(biāo)簽形式的代碼。
HTML作為一種超文本標(biāo)記語言,是目前學(xué)習(xí)網(wǎng)站必須學(xué)習(xí)的第一門語言,要熟悉里面很多種標(biāo)記,這種標(biāo)記就是網(wǎng)頁專屬標(biāo)記,只有這樣瀏覽器才能解析相關(guān)信息。HTML里面包含了整整一套的標(biāo)簽,各種標(biāo)簽都有自己的功能,并且可以循環(huán)嵌套這些標(biāo)簽,比如一個(gè)表格里套著兩個(gè)小小的表格。HTML一般文件名稱的后綴都是html作為后綴,文檔一般叫做web頁面,里面的描述性標(biāo)記語法被稱為代碼。
2.8 MyEclipse開發(fā)工具
MyEclipse是功能最全面的Java IDE。Java語言發(fā)展至今,已經(jīng)與好多語言相互配合,并且各種語法都不一樣,實(shí)現(xiàn)的效果不一樣,造成現(xiàn)在的程序開發(fā)人員需要學(xué)習(xí)很多種語言,出現(xiàn)問題就解決問題,這是各種新的工具產(chǎn)生的一些動力。剛開始的Java需要自己安裝開發(fā)環(huán)境和運(yùn)行環(huán)境,然后手動新建文本,一句話一句話的進(jìn)行編寫,這樣的功底需要極其的扎實(shí),效率也是相當(dāng)?shù)牡拖?#xff0c;所以各種文本編輯工具就開始像雨后春筍一樣的冒了出來,經(jīng)過互聯(lián)網(wǎng)的傳播,大家使用后經(jīng)過口碑,自然優(yōu)勝略汰,大浪淘沙,到現(xiàn)在為止MyEclipse開發(fā)工具已經(jīng)牢牢地占據(jù)了Java開發(fā)的半壁江山。MyEclipse的立足就是為了企業(yè)人員用的,企業(yè)開發(fā)講究效率,不可能讓所有的開發(fā)人員來了從電腦安裝軟件先開始,配置環(huán)境又需要花費(fèi)太久的時(shí)間,MyEclipse就解決了這樣的煩惱,只要安裝了軟件,各種Java程序都可以進(jìn)行開發(fā),可以對各種語法自動的進(jìn)行檢測,有效的提示細(xì)節(jié)處錯(cuò)誤,并且可以在寫作上面讓對一些整段代碼的移動復(fù)制都很便利,應(yīng)用部署也是一鍵到位。
第3章?系統(tǒng)分析
面對即將開發(fā)的系統(tǒng),進(jìn)行提前的分析是必要的。這也是開發(fā)流程中必須有的環(huán)節(jié)。通常分析系統(tǒng)期間,主要涉及的內(nèi)容包括系統(tǒng)開發(fā)可行性問題,對系統(tǒng)功能和性能的分析等問題。
3.1?可行性分析
在正式對需要建設(shè)的項(xiàng)目進(jìn)行投資前,有一個(gè)比較關(guān)鍵的步驟是不能缺少的,那就是可行性分析。它主要從當(dāng)前技術(shù),經(jīng)濟(jì)等角度去評估系統(tǒng)的可行性,在投資決策中常常采用這種科學(xué)的方法來論證項(xiàng)目。
3.1.1 技術(shù)可行性
當(dāng)前,系統(tǒng)開發(fā)的技術(shù)已經(jīng)發(fā)展成熟,而且通過計(jì)算機(jī)網(wǎng)絡(luò)可以獲取開發(fā)工具的使用方法,以及規(guī)范化編寫的模塊化代碼,這些知識可以幫助開發(fā)者順利完成本系統(tǒng)的編碼工作。
3.1.2 經(jīng)濟(jì)可行性
本系統(tǒng)開發(fā)期間需要配置的軟件環(huán)境,可以免費(fèi)通過開發(fā)類官網(wǎng)下載安裝,需要配置的硬件設(shè)備也不需要具備很高的性能,通常網(wǎng)吧電腦,或?qū)W校計(jì)算機(jī)機(jī)房的電腦都符合要求。因此,從經(jīng)濟(jì)方面考慮,課堂點(diǎn)名系統(tǒng)開發(fā)可行。
3.1.3 操作可行性
課堂點(diǎn)名系統(tǒng)根據(jù)用戶使用習(xí)慣進(jìn)行開發(fā),設(shè)計(jì)的界面具有統(tǒng)一性,并具備優(yōu)秀的導(dǎo)航功能。所以,只要會簡單操作電腦的人員,可以無壓力操作課堂點(diǎn)名系統(tǒng)。
總之,從上述的論證來看,本系統(tǒng)可以開發(fā)。
3.2 系統(tǒng)流程
流程圖這樣的工具可以直觀反映出系統(tǒng)內(nèi)部的操作邏輯,可以幫助用戶更好的理解系統(tǒng)。
3.2.1 操作流程
進(jìn)入本系統(tǒng)需要訪問者提供驗(yàn)證信息。驗(yàn)證合格的訪問者才能獲取訪問資格。其具體的操作流程見下圖。訪問者根據(jù)登錄界面設(shè)置的信息項(xiàng)如實(shí)填寫,待信息通過驗(yàn)證后,訪問者可以進(jìn)入指定的頁面享受本系統(tǒng)提供的服務(wù)和閱讀本系統(tǒng)的相關(guān)信息。
圖3.1?操作流程圖
3.2.2 登錄流程
本系統(tǒng)的登錄模塊,其內(nèi)部的流程見下圖。主要對訪問本系統(tǒng)的人員提供的驗(yàn)證信息進(jìn)行逐個(gè)判斷,系統(tǒng)面對錄入錯(cuò)誤的信息會給出提示,比如,提示賬號不對,或提示密碼不匹配等提示信息。總之,在登錄頁面填寫的所有信息都符合要求,訪問者就登錄成功了。
圖3.2 登錄流程圖
3.2.3 刪除信息流程
本系統(tǒng)在經(jīng)常性的使用后,會產(chǎn)生很多失去價(jià)值的信息,因此就需要及時(shí)清理數(shù)據(jù),騰出系統(tǒng)的空間。對這些數(shù)據(jù)進(jìn)行清理時(shí),其對應(yīng)的流程見下圖。先選中要清理的數(shù)據(jù),通過反復(fù)確認(rèn)需要清理的數(shù)據(jù),避免操作人員誤刪。已經(jīng)刪除的數(shù)據(jù)就不會出現(xiàn)在系統(tǒng)里面。
圖3.3?刪除信息流程圖
3.2.4 添加信息流程
本系統(tǒng)主要用于顯示信息,提供服務(wù),其中,數(shù)據(jù)添加功能就是其中的服務(wù)之一,具體流程見下圖。讓操作者在信息添加的頁面錄入數(shù)據(jù),待這些數(shù)據(jù)被提交檢驗(yàn)合格后,就會在系統(tǒng)指定頁面顯示出來。
圖3.4?添加信息流程圖
3.3 性能需求
進(jìn)行需求分析,包括了根據(jù)用戶實(shí)際需求制定功能,也涵蓋了對即將設(shè)計(jì)的系統(tǒng)進(jìn)行性能上的需求分析。所以一般分析系統(tǒng)時(shí),一方面要分析系統(tǒng)功能,另一方面也要分析系統(tǒng)的性能。畢竟設(shè)計(jì)開發(fā)出一個(gè)好性能的系統(tǒng)可以確保系統(tǒng)的質(zhì)量可靠。
接下來分析系統(tǒng)的性能,還要從界面友好性,系統(tǒng)的時(shí)間特性,系統(tǒng)的可靠性等方面來分析說明。
(1)系統(tǒng)的容量要求:對本系統(tǒng)完成數(shù)據(jù)處理的容量最大化進(jìn)行確定。也就是確定系統(tǒng)處理數(shù)據(jù)的容量臨界值,超過這個(gè)臨界值,可能系統(tǒng)就運(yùn)行不正常了。
(2)系統(tǒng)精度的要求:確定數(shù)據(jù)傳輸需要達(dá)到的精度值,也包括了數(shù)值計(jì)算的精度值,數(shù)據(jù)的精度值的設(shè)置等。
(3)時(shí)間特性要求:系統(tǒng)處理數(shù)據(jù)都有時(shí)間要求,這也是系統(tǒng)的時(shí)間特性。通常都會把數(shù)據(jù)處理的時(shí)間進(jìn)行分析,也會設(shè)置用戶請求的響應(yīng)時(shí)間,還有系統(tǒng)在滿負(fù)荷運(yùn)行時(shí)可以偏離的范圍數(shù)值等都需要提前分析確定。
(4)適應(yīng)性要求:系統(tǒng)在面對系統(tǒng)環(huán)境的改變時(shí),其自身適應(yīng)這種變化的能力,也需要通過參數(shù)信息體現(xiàn)。比如說,在面對變化的需求,系統(tǒng)就要去適應(yīng)這種變化,通過指出需要設(shè)計(jì)的過程或者是需要設(shè)計(jì)的軟件來體現(xiàn)系統(tǒng)的適應(yīng)性。
(5)界面友好性:除了功能上需要考慮用戶需求外,在人機(jī)交互界面的設(shè)計(jì)上,也需要考慮用戶的使用習(xí)慣,包括界面的布局,界面基調(diào)選擇以及顏色搭配等。盡量做到用戶在接受簡單的培訓(xùn)之后,可以對系統(tǒng)進(jìn)行獨(dú)立操作。
(6)系統(tǒng)可靠性:對于初學(xué)者而言,很容易出現(xiàn)一個(gè)問題,就是設(shè)計(jì)開發(fā)的系統(tǒng),因?yàn)槿藶榈恼`操作出現(xiàn)崩潰,有些也會導(dǎo)致電腦死機(jī)。這樣的現(xiàn)象也說明這種容錯(cuò)能力低下的系統(tǒng)是不可靠的。完全不能作為生活中處理信息的系統(tǒng)。當(dāng)下,系統(tǒng)開發(fā)要保證可靠性,設(shè)計(jì)時(shí),把模塊化和結(jié)構(gòu)化的設(shè)計(jì)理念也考慮進(jìn)來。如果遇到對時(shí)效性要求比較嚴(yán)格的系統(tǒng),也需要采取其它的措施,比如雙機(jī)系統(tǒng),還有磁盤陣列等方式。還有就是一個(gè)可靠性的系統(tǒng),對設(shè)備的供電能力也有要求。
運(yùn)行在計(jì)算機(jī)上的系統(tǒng)大都擔(dān)負(fù)著信息處理的任務(wù),對于它們而言,其性能要求有:完成信息查詢,需要的響應(yīng)時(shí)間;對終端設(shè)備的連接數(shù)量的確定;對存儲數(shù)據(jù)的容量的安排;以及存儲數(shù)據(jù)的可擴(kuò)充的容量的設(shè)置,比如說系統(tǒng)存放近幾個(gè)月,或者存放近幾年的數(shù)據(jù);完成報(bào)表打印數(shù)量的設(shè)置,也包括報(bào)表打印種類的設(shè)置等。
第4章?系統(tǒng)設(shè)計(jì)
一個(gè)成功設(shè)計(jì)的系統(tǒng)在內(nèi)容上必定是豐富的,在系統(tǒng)外觀或系統(tǒng)功能上必定是對用戶友好的。所以為了提升系統(tǒng)的價(jià)值,吸引更多的訪問者訪問系統(tǒng),以及讓來訪用戶可以花費(fèi)更多時(shí)間停留在系統(tǒng)上,則表明該系統(tǒng)設(shè)計(jì)得比較專業(yè)。
4.1?設(shè)計(jì)原則
本系統(tǒng)在設(shè)計(jì)過程中需要依照一定的設(shè)計(jì)原則進(jìn)行,目的就是為了讓開發(fā)的系統(tǒng)具備高質(zhì)量,齊全完備的功能,方便簡單的操作,如此才可以最大限度的滿足使用者的要求。系統(tǒng)設(shè)計(jì)原則除了基本的易操作原則,安全性原則外,還有準(zhǔn)確性原則,實(shí)用性原則,可維護(hù)性原則。
第一個(gè)設(shè)計(jì)原則:易操作原則,針對本系統(tǒng)設(shè)計(jì)的功能要完備齊全,編碼時(shí),設(shè)計(jì)的各個(gè)接口要具備友好性,使用者一旦使用本系統(tǒng)時(shí),要能夠輕松上手,操作本系統(tǒng)處理數(shù)據(jù)時(shí),要具備便利性。此外,也需要設(shè)計(jì)一些必要提示,引導(dǎo)使用者操作系統(tǒng)。
第二個(gè)設(shè)計(jì)原則:安全性原則,本系統(tǒng)在登錄模塊要對各個(gè)訪問者進(jìn)行身份驗(yàn)證,系統(tǒng)會通過訪問者輸入的信息進(jìn)行判斷,使用提前編寫的安全驗(yàn)證代碼進(jìn)行數(shù)據(jù)比對,引導(dǎo)匹配成功的訪問者進(jìn)入指定的操作界面。這樣可以避免無關(guān)性訪問者竊取系統(tǒng)的數(shù)據(jù)。
第三個(gè)設(shè)計(jì)原則:準(zhǔn)確性原則,為了保證使用者登記的數(shù)據(jù)是正確的,需要提前設(shè)計(jì)數(shù)據(jù)糾錯(cuò)機(jī)制,讓使用者可以通過系統(tǒng)的報(bào)錯(cuò)提示,仔細(xì)檢查登記的錯(cuò)誤信息,并及時(shí)糾正錯(cuò)誤,填寫規(guī)范正確的信息。比如設(shè)置密碼時(shí),要求密碼的長度不能低于6個(gè)字符,且數(shù)據(jù)類型要求不能全部是數(shù)字等都能進(jìn)行規(guī)范。
第四個(gè)設(shè)計(jì)原則:實(shí)用性原則,本系統(tǒng)主要用于處理信息,在實(shí)際工作中,要幫助使用者完成信息處理任務(wù),同時(shí)本系統(tǒng)在面對特殊情況時(shí),也要能夠滿足信息處理的需要。另外,為了后期便于在本系統(tǒng)中進(jìn)行功能的擴(kuò)充,也需要提前預(yù)留好空間。
第五個(gè)設(shè)計(jì)原則:可維護(hù)性原則,本系統(tǒng)在實(shí)際使用期間,難免會遇到一些故障,因此,本系統(tǒng)在應(yīng)對故障時(shí),要能夠進(jìn)行診斷并弱化故障,可以在短時(shí)間內(nèi)進(jìn)行自維護(hù)。
4.2?功能結(jié)構(gòu)設(shè)計(jì)
在前面分析的管理員功能的基礎(chǔ)上,進(jìn)行接下來的設(shè)計(jì)工作,最終展示設(shè)計(jì)的結(jié)構(gòu)圖(見下圖)。
4.3 數(shù)據(jù)庫設(shè)計(jì)
開發(fā)一個(gè)系統(tǒng)也需要提前設(shè)計(jì)數(shù)據(jù)庫。這里的數(shù)據(jù)庫是相關(guān)數(shù)據(jù)的集合,存儲在一起的這些數(shù)據(jù)也是按照一定的組織方式進(jìn)行的。目前,數(shù)據(jù)庫能夠服務(wù)于多種應(yīng)用程序,則是源于它存儲方式最佳,具備數(shù)據(jù)冗余率低的優(yōu)勢。雖然數(shù)據(jù)庫為程序提供信息存儲服務(wù),但它與程序之間也可以保持較高的獨(dú)立性??偠灾?#xff0c;數(shù)據(jù)庫經(jīng)歷了很長一段時(shí)間的發(fā)展,從最初的不為人知,到現(xiàn)在的人盡皆知,其相關(guān)技術(shù)也越發(fā)成熟,同時(shí)也擁有著堅(jiān)實(shí)的理論基礎(chǔ)。
4.3.1 數(shù)據(jù)庫概念設(shè)計(jì)
這部分內(nèi)容需要借助數(shù)據(jù)庫關(guān)系圖來完成,也需要使用專門繪制數(shù)據(jù)庫關(guān)系圖的工具,比如Visio工具就可以設(shè)計(jì)E-R圖(數(shù)據(jù)庫關(guān)系圖)。設(shè)計(jì)數(shù)據(jù)庫,也需要按照設(shè)計(jì)的流程進(jìn)行,首先還是要根據(jù)需求完成實(shí)體的確定,分析實(shí)體具有的特征,還有對實(shí)體間的關(guān)聯(lián)關(guān)系進(jìn)行確定。最后才是使用E-R模型的表示方法,繪制本系統(tǒng)的E-R圖。不管是使用億圖軟件,還是Visio工具,對于E-R模型的表示符號都一樣,通常矩形代表實(shí)體,實(shí)體間存在的關(guān)系用菱形符號表示,實(shí)體的屬性也就是實(shí)體的特征用符號橢圓表示。最后使用直線將矩形,菱形和橢圓等符號連接起來。接下來就開始對本系統(tǒng)的E-R圖進(jìn)行繪制。
(1)下圖是用戶實(shí)體和其具備的屬性。
(2)下圖是教師實(shí)體和其具備的屬性。
圖4.2 教師實(shí)體屬性圖
(3)下圖是課程考勤實(shí)體和其具備的屬性。
圖4.3 課程考勤實(shí)體屬性圖
(4)下圖是公告信息實(shí)體和其具備的屬性。
圖4.4 公告信息實(shí)體屬性圖
(5)下圖是字典表實(shí)體和其具備的屬性。
圖4.5 字典表實(shí)體屬性圖
(6)下圖是論壇信息實(shí)體和其具備的屬性。
圖4.6 論壇信息實(shí)體屬性圖
(7)下圖是課程信息實(shí)體和其具備的屬性。
圖4.7 課程信息實(shí)體屬性圖
(8)下圖是用戶表實(shí)體和其具備的屬性。
圖4.8 用戶表實(shí)體屬性圖
(9)下圖是課程收藏實(shí)體和其具備的屬性。
(10)下圖是課程留言實(shí)體和其具備的屬性。
圖4.10 課程留言實(shí)體屬性圖
4.3.1?數(shù)據(jù)庫物理設(shè)計(jì)
本數(shù)據(jù)庫是關(guān)系型數(shù)據(jù)庫,因此對二維表的結(jié)構(gòu)設(shè)計(jì)也比較關(guān)鍵。畢竟二維表格模型就是關(guān)系型數(shù)據(jù)庫中的關(guān)系模型。而一些常用的關(guān)系模型中的概念也需要了解,才可以對關(guān)系模型進(jìn)行設(shè)計(jì)。下面就簡單介紹關(guān)系,元組,屬性,域,關(guān)鍵字等常用概念的含義。
關(guān)系:關(guān)系就是數(shù)據(jù)庫中的一張數(shù)據(jù)表,每張數(shù)據(jù)表都有命名,也就是每個(gè)關(guān)系也有名字,那就是數(shù)據(jù)表名;
元組:元組就是數(shù)據(jù)表中的一行記錄;
屬性:屬性就是數(shù)據(jù)表中的字段,也就是數(shù)據(jù)表中的一列;
域:域就是對數(shù)據(jù)表中屬性的取值進(jìn)行限定;
關(guān)鍵字:關(guān)鍵字就是數(shù)據(jù)表中的主鍵;
在了解了表結(jié)構(gòu)設(shè)計(jì)的常用概念后,接下來就需要使用前面繪制的E-R模型完成表結(jié)構(gòu)的設(shè)計(jì)工作,并在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表,并為各個(gè)數(shù)據(jù)表進(jìn)行命名。以下就對設(shè)計(jì)的結(jié)果通過表格形式進(jìn)行展示。
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | dic_code | String | 字段 | 是 |
3 | dic_name | String | 字段名 | 是 |
4 | code_index | Integer | 編碼 | 是 |
5 | index_name | String | 編碼名字 | 是 |
6 | super_id | Integer | 父字段id | 是 |
7 | beizhu | String | 備注 | 是 |
8 | create_time | Date | 創(chuàng)建時(shí)間 | 是 |
表4.2論壇信息表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | forum_name | String | 帖子標(biāo)題 | 是 |
3 | jiaoshi_id | Integer | 教師 | 是 |
4 | yonghu_id | Integer | 用戶 | 是 |
5 | users_id | Integer | 管理員 | 是 |
6 | forum_content | String | 發(fā)布內(nèi)容 | 是 |
7 | super_ids | Integer | 父id | 是 |
8 | forum_state_types | Integer | 帖子狀態(tài) | 是 |
9 | insert_time | Date | 發(fā)帖時(shí)間 | 是 |
10 | update_time | Date | 修改時(shí)間 | 是 |
11 | create_time | Date | 創(chuàng)建時(shí)間 | 是 |
表4.3教師表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | jiaoshi_name | String | 教師姓名 | 是 |
3 | jiaoshi_photo | String | 頭像 | 是 |
4 | jiaoshi_phone | String | 聯(lián)系方式 | 是 |
5 | jiaoshi_email | String | 郵箱 | 是 |
6 | yonghu_delete | Integer | 假刪 | 是 |
7 | insert_time | Date | 添加時(shí)間 | 是 |
8 | create_time | Date | 創(chuàng)建時(shí)間 | 是 |
表4.4課程信息表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | kecheng_uuid_number | String | 課程編號 | 是 |
3 | kecheng_name | String | 課程名稱 | 是 |
4 | kecheng_types | Integer | 課程類型 | 是 |
5 | banji_types | Integer | 班級 | 是 |
6 | jiaoshi_id | Integer | 教師 | 是 |
7 | kaishi_time | Date | 課程開始時(shí)間 | 是 |
8 | jieshu_time | Date | 課程結(jié)束時(shí)間 | 是 |
9 | kecheng_photo | String | 封面 | 是 |
10 | kecheng_content | String | 課程詳情 | 是 |
11 | insert_time | Date | 添加時(shí)間 | 是 |
12 | create_time | Date | 創(chuàng)建時(shí)間 | 是 |
表4.5課程收藏表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | kecheng_id | Integer | 課程 | 是 |
3 | yonghu_id | Integer | 用戶 | 是 |
4 | kecheng_collection_types | Integer | 類型 | 是 |
5 | insert_time | Date | 收藏時(shí)間 | 是 |
6 | create_time | Date | 創(chuàng)建時(shí)間 | 是 |
表4.6課程留言表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | kecheng_id | Integer | 課程 | 是 |
3 | yonghu_id | Integer | 用戶 | 是 |
4 | kecheng_liuyan_text | String | 留言內(nèi)容 | 是 |
5 | insert_time | Date | 留言時(shí)間 | 是 |
6 | reply_text | String | 回復(fù)內(nèi)容 | 是 |
7 | update_time | Date | 回復(fù)時(shí)間 | 是 |
8 | create_time | Date | 創(chuàng)建時(shí)間 | 是 |
表4.7課程考勤表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | kecheng_id | Integer | 課程 | 是 |
3 | yonghu_id | Integer | 用戶 | 是 |
4 | kechengkaoqin_types | Integer | 考勤狀態(tài) | 是 |
5 | insert_time | Date | 創(chuàng)建時(shí)間 | 是 |
6 | update_time | Date | 考勤時(shí)間 | 是 |
7 | create_time | Date | 創(chuàng)建時(shí)間 | 是 |
表4.8公告信息表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | news_name | String | 公告標(biāo)題 | 是 |
3 | news_types | Integer | 公告類型 | 是 |
4 | news_photo | String | 公告圖片 | 是 |
5 | insert_time | Date | 添加時(shí)間 | 是 |
6 | news_content | String | 公告詳情 | 是 |
7 | create_time | Date | 創(chuàng)建時(shí)間 | 是 |
表4.9用戶表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | yonghu_name | String | 用戶姓名 | 是 |
3 | yonghu_photo | String | 頭像 | 是 |
4 | yonghu_phone | String | 聯(lián)系方式 | 是 |
5 | yonghu_email | String | 郵箱 | 是 |
6 | banji_types | Integer | 班級 | 是 |
7 | xueyuan_types | Integer | 專業(yè) | 是 |
8 | yonghu_delete | Integer | 假刪 | 是 |
9 | insert_time | Date | 添加時(shí)間 | 是 |
10 | create_time | Date | 創(chuàng)建時(shí)間 | 是 |
表4.10用戶表表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | username | String | 用戶名 | 是 |
3 | password | String | 密碼 | 是 |
4 | role | String | 角色 | 是 |
5 | addtime | Date | 新增時(shí)間 | 是 |
第5章?系統(tǒng)實(shí)現(xiàn)
進(jìn)入到這個(gè)環(huán)節(jié),也就可以及時(shí)檢查出前面設(shè)計(jì)的需求是否可靠了。一個(gè)設(shè)計(jì)良好的方案在運(yùn)用于系統(tǒng)實(shí)現(xiàn)中,是會幫助系統(tǒng)編制人員節(jié)省時(shí)間,并提升開發(fā)效率的。所以在系統(tǒng)的編程階段,也就是系統(tǒng)實(shí)現(xiàn)階段,對于一些不合理的設(shè)計(jì)需求,也是可以及時(shí)發(fā)現(xiàn)。因?yàn)樵O(shè)計(jì)的方案是完全指導(dǎo)系統(tǒng)的編碼過程的。
5.1用戶信息管理
如圖5.1顯示的就是用戶信息管理頁面,此頁面提供給管理員的功能有:用戶信息的查詢管理,可以刪除用戶信息、修改用戶信息、新增用戶信息,
還進(jìn)行了對用戶名稱的模糊查詢的條件
圖5.1 用戶信息管理頁面
5.2 課程信息管理
如圖5.2顯示的就是課程信息管理頁面,此頁面提供給管理員的功能有:查看已發(fā)布的課程信息數(shù)據(jù),修改課程信息,課程信息作廢,即可刪除,還進(jìn)行了對課程信息名稱的模糊查詢 課程信息信息的類型查詢等等一些條件。
圖5.2 課程信息管理頁面
5.3課程類型管理
如圖5.3顯示的就是課程類型管理頁面,此頁面提供給管理員的功能有:根據(jù)課程類型進(jìn)行條件查詢,還可以對課程類型進(jìn)行新增、修改、查詢操作等等。
圖5.3 課程類型管理頁面
5.1論壇信息管理
如圖5.4顯示的就是論壇信息管理頁面,此頁面提供給管理員的功能有:根據(jù)論壇信息進(jìn)行新增、修改、查詢操作等等。
圖5.4 論壇信息管理頁面
第6章 系統(tǒng)測試
進(jìn)入這個(gè)環(huán)節(jié)就代表著系統(tǒng)已經(jīng)結(jié)束了編碼實(shí)現(xiàn)功能階段,接下來要做的事情,就是對該系統(tǒng)進(jìn)行檢測,也就是系統(tǒng)測試,這個(gè)環(huán)節(jié)是很有必要進(jìn)行的,原因是開發(fā)本系統(tǒng)的人員,其自身具備的開發(fā)技術(shù)以及開發(fā)思維是有限的,在面對具有復(fù)雜性操作邏輯的系統(tǒng),都會出現(xiàn)大大小小的錯(cuò)誤,并且這樣的錯(cuò)誤還都是不可避免的。通過及時(shí)的測試,可以盡早排除程序中的錯(cuò)誤,這樣也可以減少實(shí)際運(yùn)行中產(chǎn)生的問題,從而真正避免在后期使用中為修復(fù)這些問題所付出的高昂代價(jià)。及時(shí)測試,及時(shí)發(fā)現(xiàn)問題并解決,也是提高開發(fā)過程的效率的一種表現(xiàn)形式??偠灾?#xff0c;在軟件開發(fā)生命周期的每個(gè)階段都需要加以重視,并做好每個(gè)階段需要做的任務(wù),從開始到結(jié)尾都需要保證開發(fā)軟件的質(zhì)量。
6.1 測試的任務(wù)
在系統(tǒng)編碼完成之后,完成對本系統(tǒng)的測試工作,其主要的任務(wù)還是找出本系統(tǒng)可能出現(xiàn)的錯(cuò)誤,而且是發(fā)現(xiàn)的錯(cuò)誤越多越好,因?yàn)槊堪l(fā)現(xiàn)一個(gè)程序錯(cuò)誤,都需要進(jìn)行文檔記載,然后根據(jù)這些記載程序錯(cuò)誤的文檔,采取各種措施去解決這些程序問題,逐漸完善程序。所以,測試并不是去證明開發(fā)的系統(tǒng)是正確的,而是通過各種各樣的方式去尋找系統(tǒng)中的缺陷,并針對性的完善系統(tǒng)。這樣才能保證系統(tǒng)在實(shí)際運(yùn)行中,可以保質(zhì)保量的進(jìn)行工作。
6.2 測試的目標(biāo)
通過對系統(tǒng)的測試,才可以發(fā)現(xiàn)系統(tǒng)的問題。通常測試就是對大部分程序容易出錯(cuò)的位置進(jìn)行檢測,或者是針對系統(tǒng)復(fù)雜的部分進(jìn)行檢測,其目的就是發(fā)現(xiàn)系統(tǒng)中盡可能多的錯(cuò)誤。盡管系統(tǒng)開發(fā)時(shí),采用的開發(fā)方式,或者是開發(fā)技術(shù)都是比較成熟的,但這并不能證明系統(tǒng)是沒有缺陷和錯(cuò)誤的。尤其是隨著現(xiàn)在軟件開發(fā)技術(shù)的升級,市場上大部分軟件都具有規(guī)模大,復(fù)雜性高的特點(diǎn),所以這更加難以保證開發(fā)的系統(tǒng)不會出現(xiàn)錯(cuò)誤。對此,進(jìn)行系統(tǒng)的測試,并做好測試工作,是十分有益的。
6.3 測試方案
系統(tǒng)進(jìn)入測試階段,就要確定測試方案,畢竟這部分內(nèi)容非常關(guān)鍵。測試時(shí),要對前面設(shè)計(jì)的系統(tǒng)功能進(jìn)行檢測,看剛剛完成編碼的系統(tǒng)是否在功能上符合用戶需求,同時(shí)還要在各個(gè)功能模塊里面進(jìn)行測試數(shù)據(jù)的輸入,并查看預(yù)期的結(jié)果與系統(tǒng)實(shí)際反饋的結(jié)果是否一致,另外,為了檢測系統(tǒng)各個(gè)模塊的錯(cuò)誤,也要設(shè)計(jì)輸入一些不符合操作規(guī)范的數(shù)據(jù),檢測系統(tǒng)能不能正常應(yīng)對或者顯示報(bào)錯(cuò)提示。截止目前,常用的兩種測試方法即:黑盒和白盒測試,它們分別用于不同的測試內(nèi)容。以下就對這兩種方法進(jìn)行了描述。
黑盒測試方法:這個(gè)測試主要還是運(yùn)用在程序的各個(gè)接口測試,使用這個(gè)方法主要還是檢查程序?qū)崿F(xiàn)的功能是否跟功能需求文檔匹配,它關(guān)注的主要還是功能實(shí)現(xiàn),而忽視了程序的內(nèi)部運(yùn)行原理,以及程序在操作邏輯上的處理過程。通常進(jìn)行黑盒測試,大部分都沒有讓用戶參與。常見的除了功能測試外,它也會涉及到其它的測試,比如系統(tǒng)的安全性測試,恢復(fù)性測試,容量和負(fù)載性測試,以及穩(wěn)定性和可靠性測試等。
白盒測試方法:這個(gè)測試主要還是注重程序內(nèi)部的邏輯,包括檢測程序是如何工作的,是否跟預(yù)期設(shè)定的操作邏輯一致,同時(shí)白盒測試對程序代碼的檢測比較徹底,可以及時(shí)把代碼層面隱藏的錯(cuò)誤給找出來,因?yàn)槌绦虼a的每條路徑都要經(jīng)過檢測,所以這樣的方式對于代碼優(yōu)化也有好處。
本節(jié)針對本系統(tǒng)的檢測也設(shè)置了相應(yīng)的測試步驟,首先是模塊測試,然后是集成測試,最后是驗(yàn)收測試。
模塊測試:這個(gè)測試環(huán)節(jié)的操作員,一般都是編寫程序的人員,他們會劃分系統(tǒng)的功能模塊,然后把每個(gè)功能模塊都當(dāng)成一個(gè)單元進(jìn)行測試,因此單元測試也是模塊測試的別稱。這部分測試通常就是驗(yàn)證程序各個(gè)功能可以運(yùn)行,以及發(fā)現(xiàn)一些來源于編碼和程序設(shè)計(jì)的問題。對于模塊測試,常見的錯(cuò)誤主要有下面5個(gè)。
第一個(gè)常見錯(cuò)誤:則是單元接口;
第二個(gè)常見錯(cuò)誤:則是局部數(shù)據(jù)結(jié)構(gòu);
第三個(gè)常見錯(cuò)誤:則是獨(dú)立路徑;
第四個(gè)常見錯(cuò)誤:則是出錯(cuò)處理通路;
第五個(gè)常見錯(cuò)誤:則是跟上述錯(cuò)誤相關(guān)的邊界條件;
總之,模塊測試也是基于白盒測試,在對各模塊內(nèi)部的檢測中,發(fā)現(xiàn)可能存在的錯(cuò)誤。
集成測試:進(jìn)行這個(gè)環(huán)節(jié)的測試的前提是,模塊測試已經(jīng)完成,然后把系統(tǒng)的各個(gè)模塊進(jìn)行組合并開始測試,測試時(shí),主要還是檢查系統(tǒng)各個(gè)模塊連接的接口是否正確。當(dāng)模塊測試通過之后,把它們進(jìn)行組合時(shí),也會出現(xiàn)一些問題,所以在模塊組合時(shí),也進(jìn)行整體性的測試,也非常重要。
集成測試常用的方法則是漸增式方法,相比非漸增式來說,漸增式用得比較多,也比較受歡迎,其中的原因有以下4點(diǎn)。
第一點(diǎn):同樣是測試,采用漸增式方法可以節(jié)約成本,開銷不高;
第二點(diǎn):采用漸增式方法可以短時(shí)間內(nèi)暴露模塊間接口的錯(cuò)誤問題;
第三點(diǎn):采用漸增式方法可以更容易對錯(cuò)誤的位置進(jìn)行判斷;
第四點(diǎn):采用漸增式方法可以更徹底地測試系統(tǒng);
通過上面的比較分析,選用漸增式方式測試本系統(tǒng),但是主要是運(yùn)用漸增式里面的混合法進(jìn)行集成測試。用自上而下的方式測試程序結(jié)構(gòu)的較上層;對程序結(jié)構(gòu)的較下層,則是采用自下而上的方式,這兩種方式搭配使用完成本系統(tǒng)的集成測試。
驗(yàn)收測試:這個(gè)步驟就需要未來使用程序的人進(jìn)行參與了,主要還是檢測程序是否可以按照用戶預(yù)定的方式進(jìn)行工作,此部分測試主要還是在功能檢測上,參考標(biāo)準(zhǔn)就是提前設(shè)計(jì)的功能需求文檔,所以,采用黑盒測試法比較符合要求。一般來說,進(jìn)行到驗(yàn)收測試這個(gè)環(huán)節(jié),都會產(chǎn)生兩種結(jié)果。一種是程序提供的功能跟用戶之前要求的功能保持一致;這個(gè)就是未來使用程序的用戶想要達(dá)到的效果。還有一種是程序提供的功能跟用戶預(yù)定的功能需求有差距;總的來說,這個(gè)階段主要還是驗(yàn)證程序跟需求文檔之間的差距問題。
6.4 功能測試
通過設(shè)計(jì)一些數(shù)據(jù)檢驗(yàn)課堂點(diǎn)名系統(tǒng)的功能是否根據(jù)預(yù)定進(jìn)行數(shù)據(jù)輸出,以此檢驗(yàn)系統(tǒng)功能是否合格。接下來就選取部分功能進(jìn)行檢測。
6.4.1 登錄功能測試
課堂點(diǎn)名系統(tǒng)提供的服務(wù)是給規(guī)定的用戶使用的,其他無關(guān)用戶是無法進(jìn)入的,登錄功能就是檢驗(yàn)訪問者是否是符合要求的用戶,及時(shí)將不符合要求的用戶拒之門外。以此保證系統(tǒng)安全。這里以管理員身份進(jìn)行檢測,測試的內(nèi)容見下表。
表6.1 登錄功能測試表
賬號 | 密碼 | 身份 | 結(jié)果 |
guanliyuan | guanliyuan | 管理員 | 提示成功,進(jìn)入系統(tǒng)后臺 |
user | guanliyuan | 管理員 | 提示失敗,停留在登錄頁面 |
guanliyuan | user | 管理員 | 提示失敗,停留在登錄頁面 |
6.5 測試結(jié)果
經(jīng)過測試,從課堂點(diǎn)名系統(tǒng)功能的角度來看,本系統(tǒng)各個(gè)功能在符合用戶要求的情況下,也能保持運(yùn)行正常。從課堂點(diǎn)名系統(tǒng)性能的角度來看,本系統(tǒng)可以保持24小時(shí)不間斷運(yùn)行,而且面對用戶的誤操作行為,有提前設(shè)置的錯(cuò)誤反饋機(jī)制應(yīng)對,另外,本系統(tǒng)界面布局考慮用戶閱讀習(xí)慣,可以讓用戶短時(shí)間內(nèi)獲取需要的內(nèi)容??傊?#xff0c;本系統(tǒng)可以投入生產(chǎn),幫助用戶解決實(shí)際問題,發(fā)揮其應(yīng)用價(jià)值。
結(jié) ?論
采用Java+Mysql的方式設(shè)計(jì)制作的課堂點(diǎn)名系統(tǒng),在功能上可以滿足管理人員對于信息的管理需求;在界面的設(shè)計(jì)上,盡最大努力用自身的美工知識做到界面美觀簡潔。在操作方面上,讓系統(tǒng)可以方便操作,同時(shí)對用戶常見的誤操作行為進(jìn)行分析總結(jié),并盡力在系統(tǒng)中避免同樣的由于用戶的誤操作所帶來的錯(cuò)誤現(xiàn)象。
作為畢業(yè)設(shè)計(jì),分配給本系統(tǒng)的設(shè)計(jì)與制作時(shí)間還是不足的,所以,課堂點(diǎn)名系統(tǒng)還有許多需要完善的地方。
第一個(gè)就是本系統(tǒng)的編程代碼問題,各個(gè)程序文件的代碼存在冗余的地方非常多,導(dǎo)致代碼不夠簡潔,同時(shí)對代碼的注釋也比較麻煩。編碼期間,對于很多頁面可以共享的函數(shù)與方法都沒有單獨(dú)列出來,而是在需要用到函數(shù)和方法的頁面上都重新編寫了代碼,通過后期的技術(shù)學(xué)習(xí),以及對編碼過程的分析總結(jié),發(fā)現(xiàn)可以把共用的函數(shù)或方法編寫在同一個(gè)頁面上,在之后的頁面中,需要使用此函數(shù)的頁面,則可以直接調(diào)用函數(shù),無需再編寫代碼了,這樣可以簡化代碼,也能節(jié)省時(shí)間和存儲空間。
第二個(gè)就是對數(shù)據(jù)庫的設(shè)計(jì)不夠好,在數(shù)據(jù)處理中,影響程序運(yùn)行速度。因此需要對數(shù)據(jù)庫的性能進(jìn)行優(yōu)化。通過這方面知識的學(xué)習(xí),在某個(gè)開發(fā)技術(shù)類的博客中,發(fā)現(xiàn)可以用數(shù)據(jù)庫連接池技術(shù)來解決數(shù)據(jù)庫的性能問題,另外還需規(guī)范數(shù)據(jù)庫里面的關(guān)系模式,降低數(shù)據(jù)庫的冗余率,提高運(yùn)行速度。
如果說平時(shí)的作業(yè)也是檢查對知識的掌握情況,那么制作畢業(yè)設(shè)計(jì),將是對自身所有知識的一個(gè)全面檢測。因?yàn)橄到y(tǒng)能夠制作完成則是經(jīng)歷了很多階段,正如文中所展示的那樣,先有可行性分析,對功能的分析,對功能的設(shè)計(jì),對數(shù)據(jù)庫的設(shè)計(jì),對程序功能的編碼實(shí)現(xiàn),對完成編碼程序的測試等,這些環(huán)節(jié)缺一不可,而且還都需要認(rèn)真對待,大學(xué)學(xué)到的所有知識在制作系統(tǒng)時(shí),才會發(fā)現(xiàn)不夠用。所以這個(gè)項(xiàng)目制作,在檢測自身能力的同時(shí),也對問題分析,資料搜集,問題解決等能力進(jìn)行了培養(yǎng)。
我通過制作本系統(tǒng),熟悉了程序開發(fā)的流程,提高了對程序的編碼能力,培養(yǎng)了獨(dú)立分析與解決問題的能力;但也讓我明白自身的不足之處,所以在接下來的時(shí)間,我還是要加強(qiáng)對技術(shù)知識的學(xué)習(xí),去逐漸完善本系統(tǒng)。
致??謝
制作畢設(shè)項(xiàng)目這段時(shí)間,忙碌又充實(shí)。從最開始選題的不知所措,到現(xiàn)在畢設(shè)項(xiàng)目完成時(shí)的淡然,兩種完全不同的心境,也意味著我這段時(shí)間在不斷成長。項(xiàng)目制作是一個(gè)很耗費(fèi)時(shí)間與精力的任務(wù),如果說僅僅依靠自己的話,那肯定達(dá)不到畢設(shè)的標(biāo)準(zhǔn)。所以,這一路走來,導(dǎo)師給予我的幫助也是非常大的。不管我處于哪個(gè)階段,比如選題階段,比如分析系統(tǒng)功能階段,設(shè)計(jì)系統(tǒng)結(jié)構(gòu)階段,系統(tǒng)編碼階段等,都有導(dǎo)師參與指導(dǎo),他提出的建議和技術(shù)上的指導(dǎo)讓我可以更快地完成這個(gè)畢設(shè)項(xiàng)目。此刻,我非常感謝導(dǎo)師,感謝他提供的幫助。
畢設(shè)項(xiàng)目制作期間,我身邊的同學(xué)也及時(shí)指出了我系統(tǒng)的錯(cuò)誤,并幫助我完善已開發(fā)的系統(tǒng),還提供了很多文檔撰寫的技巧,所以,我也非常慶幸能和他們一起努力制作項(xiàng)目,也非常感謝他們一直以來的陪伴。
大學(xué)短短幾年,能夠得到成長,也離不開授課老師們,他們一直在校園為廣大學(xué)子傳授知識,用他們畢生所學(xué),教出一批批優(yōu)秀的學(xué)生,我這幾年的成熟與成長也得益于他們的教導(dǎo)。所以我也非常感謝校園的各位老師。
即將離開校園,回想這幾年的時(shí)光,還真挺不舍。安安靜靜在校園走了一圈,發(fā)現(xiàn)我的大學(xué)校園真的很美,我也感謝學(xué)校給我們提供這么美好的學(xué)習(xí)環(huán)境,以及給了我上大學(xué)的機(jī)會。感謝母校!
參考文獻(xiàn)
[1]李德華.基于SpringBoot技術(shù)的在線考試系統(tǒng)的研究與實(shí)現(xiàn)[J].信息與電腦(理論版),2019,31(17):51-53.
[2]屈敬華,王曉孟.在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2019(01):43-45.
[3]張振超,吳杰,陳序蓬.淺談Java中Mysql數(shù)據(jù)庫的連接與操作[J].信息記錄材料,2020,21(02):144-145.
[4]鄭智方,魏愷樂,李彬,謝易壯.MySQL得到廣泛使用的原因以及它的嵌入應(yīng)用[J].科技風(fēng),2020(05):114.
[5]趙秀芹,劉楊青,李瑞祥.MySQL數(shù)據(jù)庫使用技巧三例[J].網(wǎng)絡(luò)安全和信息化,2019(08):90-91.
[6]余濤.計(jì)算機(jī)軟件開發(fā)中Java編程語言的應(yīng)用研究[J].信息記錄材料,2020,21(01):113-115.
[7]岳青玲.Java面向?qū)ο缶幊痰娜筇匦訹J].電子技術(shù)與軟件工程,2019(24):239-240.
[8]耿學(xué).關(guān)于Java Web中中文亂碼問題的探討[J].現(xiàn)代信息科技,2020,4(01):74-75+78.
[9]張彥芳.Java Web項(xiàng)目開發(fā)中的中文亂碼問題與對策[J].電腦知識與技術(shù),2020,16(09):96-97.
[10]韓思凡.Web開發(fā)中的微信小程序與H T ML的基礎(chǔ)應(yīng)用[J].科學(xué)技術(shù)創(chuàng)新,2020(14):71-72.
[11]趙曉丹.網(wǎng)頁開發(fā)中的微信小程序技術(shù)分析[J].南方農(nóng)機(jī),2019,50(20):247-248.
[12]薛茹.基于SpringBoot框架的Web系統(tǒng)研究與應(yīng)用[J].計(jì)算機(jī)產(chǎn)品與流通,2018(07):30.
[13]邱丹萍.Web開發(fā)中SpringBoot框架的分析[J].電腦知識與技術(shù),2020,16(17):81-82.
[14]仲崇文.關(guān)于計(jì)算機(jī)軟件開發(fā)中常見問題的研究[J].通訊世界,2020,27(07):89-90.
[15]Raffi Khatchadourian.Automated refactoring of legacy Java?software to enumerated types[J].Automated Software Engineering,2017,24(4).
[16]Ben White.Marx and Chayanov at the margins:understanding agrarian change in Java[J].The Journal of Peasant Studies,2018,45(5-6).
核心代碼展示
/*** 公告通知* 后端接口* @author * @email * @date 2021-03-09 11:33:59*/
@RestController
@RequestMapping("/news")
public class NewsController {@Autowiredprivate NewsService newsService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( NewsEntity news){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); return R.ok().put("data", newsService.selectListView(ew));}/*** 查詢*/@RequestMapping("/query")public R query(NewsEntity news){EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); NewsView newsView = newsService.selectView(ew);return R.ok("查詢公告通知成功").put("data", newsView);}/*** 后端詳情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 前端詳情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody NewsEntity news, HttpServletRequest request){//ValidatorUtils.validateEntity(news);newsService.updateById(news);//全部更新return R.ok();}/*** 刪除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){newsService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = newsService.selectCount(wrapper);return R.ok().put("count", count);}}