畢業(yè)設(shè)計(jì)--基于javaee的畢業(yè)設(shè)計(jì)選題測(cè)試及管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
已閱讀1頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  畢 業(yè) 論 文 </b></p><p>  題 目 基于JavaEE的畢業(yè)設(shè)計(jì)選題測(cè)試及管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) </p><p>  英文題目 Design and Implementation of The Graduation Design Topics Selection Testing an

2、d Management System Based on JavaEE </p><p>  院 系 信息科學(xué)與技術(shù)學(xué)院 </p><p>  專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  姓 名 <

3、;/p><p>  班級(jí)學(xué)號(hào) </p><p>  指導(dǎo)教師 </p><p><b>  二○一二年五月</b></p><p><b>  摘 要</b></p><p>  

4、基于JavaEE的畢業(yè)設(shè)計(jì)選題測(cè)試及管理系統(tǒng)通過在畢業(yè)設(shè)計(jì)選題之前的測(cè)試來判斷學(xué)生能力,指導(dǎo)學(xué)生選擇自己優(yōu)勢(shì)方向來選擇題目,能夠更好幫助畢業(yè)生正確選題。系統(tǒng)提供給學(xué)生有在線測(cè)試、查看評(píng)測(cè)結(jié)果、查看評(píng)測(cè)報(bào)告、推薦導(dǎo)師和課題、提交論文、下載論文等功能。系統(tǒng)提供給老師管理課題、查看學(xué)生測(cè)試結(jié)果、提交課題研究建議、查看學(xué)生論文、上傳批閱的論文等功能。系統(tǒng)提供給系統(tǒng)管理員有管理用戶信息、管理題庫等功能。系統(tǒng)采用的Struts架構(gòu)是對(duì)MVC設(shè)計(jì)模式

5、的一種實(shí)現(xiàn),它繼承了MVC設(shè)計(jì)模式的所有特性,組件的模塊化、重用性、靈活性使得開發(fā)更加快捷,管理和維護(hù)更加方便。</p><p>  學(xué)生測(cè)試后可以更了解自己的專業(yè)水平,通過系統(tǒng)推薦的導(dǎo)師和課題,可以幫助學(xué)生更好的選擇導(dǎo)師。導(dǎo)師可以通過系統(tǒng)更全面的了解學(xué)生的各方面能力同時(shí)選擇學(xué)生。在學(xué)生與導(dǎo)師雙向選定后對(duì)學(xué)生論文的進(jìn)度跟進(jìn),論文批改工作方面也起到了一定的協(xié)助作用。</p><p>  關(guān)鍵

6、詞:Struts,選題測(cè)試,論文管理</p><p><b>  Abstract</b></p><p>  Based on JavaEE the Graduation Design Topics Selection Testing and Management System can determine the ability of the students ac

7、cording to the testing result. The System can guide the students according to their own advantages to choose a topic, and help to evaluate them and select topic correctly. The system provides students with online testing

8、, show evaluation results, show testing scores, recommend tutors and thesis, upload thesis, and download thesis and some other functions. The system pr</p><p>  After testing, students can better understand

9、their professional level. Through the recommendation by the system, students can select their tutors better; tutors can have a more comprehensive understanding of all aspects of students’ ability. The system also has ass

10、istant function in following the track of papers’ writing and in correcting the papers.</p><p>  Key words: Struts, Topics testing, Paper management</p><p><b>  目 錄</b></p>&

11、lt;p><b>  摘 要I</b></p><p>  AbstractII</p><p><b>  1 概 述</b></p><p>  1.1課題意義(1)</p><p>  1.2課題目標(biāo)(1)</p><p>  1.3論文結(jié)構(gòu)簡(jiǎn)介(2

12、)</p><p>  2 技術(shù)介紹和分析 </p><p>  2.1 Struts簡(jiǎn)介(3)</p><p>  2.2 Mysql簡(jiǎn)介(3)</p><p>  2.3 Myeclipse簡(jiǎn)介(4)</p><p>  2.4 Rational Rose簡(jiǎn)介(5)</p><p>

13、;<b>  3 系統(tǒng)需求分析</b></p><p>  3.1系統(tǒng)概述(7)</p><p>  3.2系統(tǒng)功能分析(7)</p><p>  3.3系統(tǒng)用例建模(9)</p><p><b>  4 系統(tǒng)設(shè)計(jì)</b></p><p>  4.1設(shè)計(jì)目標(biāo)及原則

14、(15)</p><p>  4.2系統(tǒng)總體架構(gòu)設(shè)計(jì)(16)</p><p>  4.3系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)(17)</p><p>  4.4(Web)表示層設(shè)計(jì)(18)</p><p>  4.5業(yè)務(wù)邏輯層設(shè)計(jì)(20)</p><p>  4.6(DAO)數(shù)據(jù)訪問層設(shè)計(jì)(21)</p><p

15、><b>  5 系統(tǒng)實(shí)現(xiàn)</b></p><p>  5.1開發(fā)環(huán)境配置(24)</p><p>  5.2(Web)表示層實(shí)現(xiàn)(25)</p><p>  5.3業(yè)務(wù)邏輯層實(shí)現(xiàn)(27)</p><p>  5.4(DAO)數(shù)據(jù)訪問層實(shí)現(xiàn)(29)</p><p><b>

16、;  6 系統(tǒng)測(cè)試</b></p><p>  6.1冒煙測(cè)試(33)</p><p>  6.2功能測(cè)試(34)</p><p><b>  致 謝(38)</b></p><p><b>  參考文獻(xiàn)(39)</b></p><p><b>

17、;  1 概述</b></p><p><b>  1.1 課題意義</b></p><p>  畢業(yè)設(shè)計(jì)是對(duì)大學(xué)生們?cè)诖髮W(xué)期間所學(xué)的所有知識(shí)的掌握程度進(jìn)行考核?,F(xiàn)在很多學(xué)生對(duì)大學(xué)學(xué)習(xí)的知識(shí)沒有進(jìn)行過系統(tǒng)的應(yīng)用和總結(jié),不了解自己總體的水平、優(yōu)勢(shì)和劣勢(shì)。導(dǎo)師與學(xué)生之間的交流還停留在紙質(zhì)論文交流的方式。由于不少學(xué)生正式選題時(shí)不了解有哪些導(dǎo)師的研究方向適合自己

18、,造成選題盲目甚至做出來的畢業(yè)設(shè)計(jì)不符合要求等現(xiàn)象。出題的教師出題前也沒有渠道來充分了解學(xué)生具體情況,設(shè)置的選題可能無法體現(xiàn)學(xué)生的技能水平。學(xué)生在制作畢業(yè)設(shè)計(jì)期間與老師要進(jìn)行頻繁的交流,特別是在畢業(yè)論文的修改、提交、審核、評(píng)閱、意見反饋,畢業(yè)設(shè)計(jì)制作進(jìn)度的監(jiān)督、系統(tǒng)質(zhì)量的監(jiān)督方面。本系統(tǒng)就是為了方便學(xué)生科學(xué)的了解自己的專業(yè)技能水平,根據(jù)自己有優(yōu)勢(shì)的方面選擇畢業(yè)設(shè)計(jì),方便導(dǎo)師與學(xué)生之間的交流和學(xué)生順利完成畢業(yè)設(shè)計(jì)而提出來的采用當(dāng)前流行架構(gòu)

19、和技術(shù)完成的系統(tǒng)。</p><p><b>  1.2 課題目標(biāo)</b></p><p>  通過本課題的研究和課題系統(tǒng)的實(shí)現(xiàn),可以讓學(xué)生以學(xué)生身份登錄,通過學(xué)生的在線測(cè)試系統(tǒng)將提供測(cè)試結(jié)果,根據(jù)測(cè)試結(jié)果再提供給學(xué)生選題建議,如適合選擇的課題和導(dǎo)師。撰寫論文期間可以上傳寫好的論文和下載導(dǎo)師批改過的論文,導(dǎo)師可以以教師身份登錄,給每個(gè)選題填寫題目要求和對(duì)學(xué)生的期望要求,

20、可以查看學(xué)生的評(píng)測(cè)結(jié)果,對(duì)所帶的學(xué)生提交的論文可以下載下來進(jìn)行審閱,并提交到系統(tǒng)供學(xué)生查看。管理員通過該系統(tǒng)對(duì)所以系統(tǒng)用戶進(jìn)行管理,對(duì)題庫進(jìn)行管理。最終系統(tǒng)能幫助學(xué)生選題和教師出題,以及畢業(yè)論文高效設(shè)計(jì)和制作,搭建教師與學(xué)生的有效交流平臺(tái)。</p><p>  1.3 論文結(jié)構(gòu)簡(jiǎn)介</p><p>  系統(tǒng)是根據(jù)軟件工程中軟件開發(fā)過程來制作的,首先進(jìn)行的是可行性研究,需求分析,總體結(jié)構(gòu)設(shè)計(jì)

21、,詳細(xì)設(shè)計(jì),編碼實(shí)現(xiàn),系統(tǒng)測(cè)試,最后是系統(tǒng)維護(hù)。根據(jù)這個(gè)過程來組織論文的結(jié)構(gòu)如下:</p><p>  (1)概述:主要敘述課題研究對(duì)用戶的意義,介紹最終系統(tǒng)應(yīng)該完成的功能和達(dá)到的效果。</p><p>  (2)技術(shù)介紹和分析:對(duì)系統(tǒng)所用的技術(shù)和工具作比較和介紹,闡述使用各項(xiàng)技術(shù)和工具的優(yōu)勢(shì)。</p><p>  (3)需求分析:根據(jù)實(shí)際的應(yīng)用和用戶需求概述得到開

22、發(fā)的系統(tǒng)的需求,通過對(duì)角色的分析得到系統(tǒng)使用對(duì)象的特點(diǎn)和功能需求。根據(jù)用戶之間的關(guān)系為系統(tǒng)內(nèi)部邏輯的設(shè)計(jì)和數(shù)據(jù)庫的設(shè)計(jì)提供參考。</p><p> ?。?)系統(tǒng)設(shè)計(jì):根據(jù)系統(tǒng)需求設(shè)計(jì)系統(tǒng)總體的架構(gòu)和數(shù)據(jù)庫。并解析JavaEE技術(shù)在各層之間的具體應(yīng)用。</p><p> ?。?)系統(tǒng)實(shí)現(xiàn):根據(jù)系統(tǒng)設(shè)計(jì),闡述系統(tǒng)功能實(shí)現(xiàn)過程、數(shù)據(jù)庫創(chuàng)建過程、前后臺(tái)工作過程。通過對(duì)學(xué)生選題測(cè)試功能中Struts

23、架構(gòu)的運(yùn)作過程來更具體的闡述實(shí)現(xiàn)過程。</p><p>  (6)系統(tǒng)測(cè)試與維護(hù):通過測(cè)試工具的使用,測(cè)試系統(tǒng)是否符合用戶需求。通過測(cè)試完善系統(tǒng),改進(jìn)系統(tǒng),改正系統(tǒng)中存在的隱含的缺陷。</p><p>  小結(jié):通過本節(jié)的介紹,使得對(duì)系統(tǒng)的制作的意義和目的進(jìn)一步細(xì)化。堅(jiān)定了實(shí)現(xiàn)系統(tǒng)的決心,并對(duì)完成系統(tǒng)有了大概的總體把握。</p><p>  2 技術(shù)介紹和分析&l

24、t;/p><p>  2.1 Struts簡(jiǎn)介</p><p>  Struts框架是一種流行的MVC框架,它是對(duì)MVC的實(shí)現(xiàn)[1],將Servlet和JSP標(biāo)記作為實(shí)現(xiàn)的一部分。Struts最早是作為Apache基金會(huì)Jakarta項(xiàng)目組的組成部分Open Source項(xiàng)目,項(xiàng)目的創(chuàng)立者希望通過對(duì)該項(xiàng)目的研究,改進(jìn)和提高JavaServer Pages 、Servlet、標(biāo)簽庫以及面向?qū)ο蟮?/p>

25、技術(shù)水準(zhǔn)。Struts采用MVC模式,能夠很好的幫助Java開發(fā)者利用JavaEE開發(fā)Web應(yīng)用。Struts的使用能夠很好的幫助開發(fā)團(tuán)隊(duì)減少在運(yùn)用MVC設(shè)計(jì)模型來開發(fā)Web應(yīng)用的時(shí)間。它的優(yōu)勢(shì)主要集中在:</p><p>  (1)是一款開源軟件,開發(fā)者可以深入了解其內(nèi)部實(shí)現(xiàn)機(jī)制,各種開發(fā)要用的jar包可以通過網(wǎng)絡(luò)下載到本地,非常便捷。</p><p> ?。?)有自己的標(biāo)記庫即Tagl

26、ib,一方面使得JSP頁面盡可能少的嵌入Java腳本,不必考慮Java語法或其他JSP語法專注于頁面的可視特征上。另一方面給應(yīng)用開發(fā)者很強(qiáng)的后臺(tái)支持。</p><p> ?。?)頁面導(dǎo)航功能,通過一個(gè)配置文件struts.xml來控制整個(gè)系統(tǒng)各部分之間的聯(lián)系,對(duì)各個(gè)頁面的請(qǐng)求進(jìn)行分發(fā)。對(duì)后期的系統(tǒng)維護(hù)提供了很大的便利,對(duì)系統(tǒng)的脈絡(luò)也更加清晰。</p><p>  Struts在實(shí)現(xiàn)MVC模

27、型時(shí),模型層是將模型分為系統(tǒng)的內(nèi)部狀態(tài)和事物邏輯兩個(gè)部分,內(nèi)部狀態(tài)通常由一組ActionForm JavaBean表示,大型應(yīng)用程序的事物邏輯封裝在方法內(nèi)部,小型應(yīng)用程序則可能內(nèi)嵌在Action類中。視圖層由JSP建立,應(yīng)用Struts的標(biāo)簽庫??刂茖佑玫氖抢^承自ActionSupport的Action類,實(shí)際操作中是在struts.xml配置文件中進(jìn)行Action映射。</p><p>  2.2 Mysql簡(jiǎn)

28、介</p><p>  Mysql是目前非常流行的SQL語言數(shù)據(jù)庫,是開放源代碼的非商用的關(guān)系型數(shù)據(jù)庫。由于其開源性使得當(dāng)前很多系統(tǒng)都使用Mysql數(shù)據(jù)庫。雖然是免費(fèi)的但是與同類商業(yè)用途的數(shù)據(jù)庫比并不遜色。其主要特性有:</p><p> ?。?)數(shù)據(jù)的物理存儲(chǔ)和存取路徑對(duì)用戶是不透明的,這樣也減少了用戶的使用難度。對(duì)數(shù)據(jù)庫不是十分了解的用戶使用起來比較簡(jiǎn)單。</p><

29、;p>  (2)不僅在WINDOWS操作系統(tǒng)還可以在LINUX、UNIX、SUN OS等操作系統(tǒng)上使用。</p><p> ?。?)Mysql提供了不同的數(shù)據(jù)類型供選擇,支持所有的SQL數(shù)值類型。根據(jù)數(shù)據(jù)結(jié)構(gòu)可以選擇不同格式和大小的數(shù)據(jù)類型,使得磁盤空間更加節(jié)省,數(shù)據(jù)庫的性能的到提高。如:char提供的是定長(zhǎng)的數(shù)據(jù)存儲(chǔ)類型使得檢索該類型的數(shù)據(jù)比較快,varchar類型的數(shù)據(jù)可以保存變長(zhǎng)的字符串,通過設(shè)置其最

30、大可存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度可以在不知道數(shù)據(jù)長(zhǎng)度的情況下存儲(chǔ)任何小于該最大長(zhǎng)度的字符串。</p><p> ?。?)查詢功能很強(qiáng)大,支持SELECT和WHERE語句的count()、avg()、min()、sum()函數(shù)和order by等命令,使得檢索時(shí)可以進(jìn)行一些運(yùn)算,對(duì)檢索出來的結(jié)果可以進(jìn)行一些處理。</p><p>  (5)支持多個(gè)用戶對(duì)數(shù)據(jù)庫的同時(shí)訪問。</p><

31、p>  與另一個(gè)比較常用的Access數(shù)據(jù)庫比較,Access只能運(yùn)行在Windows操作系統(tǒng),適合數(shù)據(jù)量小的數(shù)據(jù)存儲(chǔ),但數(shù)據(jù)量太大時(shí)會(huì)造成服務(wù)器死機(jī)有時(shí)甚至服務(wù)器崩潰。本系統(tǒng)是面向信息學(xué)院所有學(xué)生和教師的,要存儲(chǔ)學(xué)生信息和教師信息以及題庫信息,不適合使用Access數(shù)據(jù)庫。而開發(fā)的系統(tǒng)對(duì)數(shù)據(jù)的查詢和速度要求比較大,所以使用Mysql數(shù)據(jù)庫更加適合本系統(tǒng)。</p><p>  2.3 Myeclipse簡(jiǎn)介

32、</p><p>  Myeclipse是企業(yè)級(jí)工作平臺(tái)是對(duì)Eclipse IDE的擴(kuò)展,它是功能非常豐富的JavaEE的集成開發(fā)環(huán)境,在Myeclipse下可以對(duì)系統(tǒng)進(jìn)行編碼、調(diào)試、測(cè)試和發(fā)布,另外支持html的所有標(biāo)記。在使用Myeclipse時(shí)對(duì)代碼能進(jìn)行提示功能,并且對(duì)語法的錯(cuò)誤能提示和定位錯(cuò)誤。對(duì)于一些代碼如JavaBean中的Get和Set方法可以自動(dòng)生成相應(yīng)的代碼,節(jié)省了工作量。Myeclipse就

33、是Eclipse的插件,它結(jié)構(gòu)上是模塊化得,在不影響其他模塊的情況下可以對(duì)任一模塊單褲升級(jí)和擴(kuò)展。系統(tǒng)開發(fā)時(shí)使用的是Myeclipse 8.0版本,從Myeclipse 5.0版本就增加了UML雙向建模工具、可視化的Hibernate/ORM工具、Web services支持和Oracle數(shù)據(jù)庫開發(fā)等。之后出現(xiàn)了Myeclipse6.XGA版本,它兼容了Eclipse 3.3,可在WINDOWS,LINUX等操作系統(tǒng)上運(yùn)行,并且支持Ja

34、va持久化結(jié)構(gòu)開發(fā),能夠?qū)?xiàng)目自動(dòng)部署和啟動(dòng)服務(wù),另外還集成了Myeclipse Tomcat 6服務(wù)器。隨后又出現(xiàn)了Myeclipse 7.0和8.0版本,7.9版</p><p>  2.4 Rational Rose簡(jiǎn)介</p><p>  Rational Rose是由美國的Rational公司開發(fā)的一種面向?qū)ο蟮目梢暬9ぞ?。利用Rational Rose可以建立用UML(統(tǒng)一

35、建模語言)描述的軟件系統(tǒng)模型,而且可以自動(dòng)生成和維護(hù)C++、Java、Visual Basic和Oracle等語言和系統(tǒng)的代碼。Rational Rose 包括了統(tǒng)一建模語言(UML)、面向?qū)ο蟮能浖こ蹋∣OSE)及對(duì)象建模技術(shù)(OMT)[2]。Rational可以運(yùn)行在WINDOWS操作系統(tǒng)下,其主要的特點(diǎn)有:</p><p> ?。?)保證模型和代碼高度一致,它實(shí)現(xiàn)了正向和逆向和雙向工程。它可以更具模型生成

36、代碼,也可根據(jù)軟件系統(tǒng)導(dǎo)出系統(tǒng)的模型。</p><p> ?。?)支持多種語言,Rational Rose支持包括C++、Visual C++、Java等語言,為Rational Rose用戶提供了便利。</p><p> ?。?)為團(tuán)隊(duì)開發(fā)提供強(qiáng)有力的支持,它提供了蔡榮SCM(軟件配置管理)的團(tuán)隊(duì)開發(fā)方式和沒有SCM下的團(tuán)隊(duì)開發(fā)方式,用戶可以根據(jù)具體項(xiàng)目規(guī)模和資源選擇。</p>

37、;<p> ?。?)支持模型的Internet發(fā)布,Rose中有Internet Web Publisher能將模型發(fā)布為HTML版本,使得其他人員可以通過IE等瀏覽器瀏覽模型。</p><p> ?。?)生成使用簡(jiǎn)單且定制靈活的文檔,Rose中的文檔生成工具SoDA可以提供模型文檔模板,可以自動(dòng)生成Word格式的文檔。</p><p> ?。?)支持關(guān)系型數(shù)據(jù)庫的建模,Ro

38、se能為SQL Server、Oracle等支持標(biāo)準(zhǔn)DDL的數(shù)據(jù)庫自動(dòng)生成數(shù)據(jù)描述語言。</p><p>  小結(jié): 在選擇開發(fā)和設(shè)計(jì)使用的工具時(shí)并不是選擇最好的而選擇的是比較適合本系統(tǒng)的工具。Struts使得開發(fā)的項(xiàng)目層次分明,便于管理。Myeclipse的高度集成性使得與其它軟件的合作性比較好。Rational Rose在建立系統(tǒng)模型過中起到了非常重要的作用。</p><p><

39、b>  3 系統(tǒng)需求分析</b></p><p>  系統(tǒng)需求分析是在需求獲取結(jié)束之后進(jìn)行的,主要是根據(jù)獲取的需求提煉、分析和仔細(xì)審查收集到的需求,以確保項(xiàng)目參與者都明白其含義并分析每個(gè)需求與其他需求的關(guān)系,找出其中的錯(cuò)誤、遺漏、重疊、不一致或其他不足的地方。通過分析得到系統(tǒng)可以實(shí)現(xiàn)的范圍和實(shí)現(xiàn)能力,根據(jù)用戶的需求對(duì)需求進(jìn)行排序。系統(tǒng)需求分析的目的在與開發(fā)出高質(zhì)量和具體的需求,為軟件設(shè)計(jì)和實(shí)現(xiàn)

40、提供依據(jù)。</p><p><b>  3.1 系統(tǒng)概述</b></p><p>  基于JavaEE的畢業(yè)設(shè)計(jì)選題測(cè)試及管理系統(tǒng)要求學(xué)生在設(shè)計(jì)選題前期參加平臺(tái)提供的測(cè)試了解自己的專業(yè)知識(shí)掌握能力和動(dòng)手能力,以便選題。同時(shí)也為教師了解學(xué)生具體情況提供參考,確保畢業(yè)論文(設(shè)計(jì))選題工作的順利開展。此外系統(tǒng)也要解決畢業(yè)設(shè)計(jì)的相關(guān)管理業(yè)務(wù)功能,包括學(xué)生與教師在畢業(yè)設(shè)計(jì)制作期

41、間的論文交流功能。</p><p>  為了保證系統(tǒng)能發(fā)揮其作用,系統(tǒng)管理員要把所有學(xué)生和教師信息和測(cè)試用題庫按照數(shù)據(jù)庫相應(yīng)的表的要求存入數(shù)據(jù)庫中,導(dǎo)師在學(xué)生測(cè)試之前應(yīng)該提供所有可選的課題和課題建議和每個(gè)課題特別要求哪些課程信息到系統(tǒng)。系統(tǒng)的功能應(yīng)該包括所有用戶的合法登陸,系統(tǒng)根據(jù)學(xué)生所在專業(yè)設(shè)置的課程出題,從學(xué)生的測(cè)試結(jié)果來判斷和推薦適合該學(xué)生做的課題和適合選擇的老師。教師可以從系統(tǒng)中查看預(yù)先選擇了自己的學(xué)生的

42、測(cè)試成績(jī)。在畢業(yè)設(shè)計(jì)制作期間,學(xué)生可以通過系統(tǒng)來與導(dǎo)師交流制作的論文等。該系統(tǒng)使用應(yīng)該盡量簡(jiǎn)單,容易被理解。</p><p>  3.2 系統(tǒng)功能分析</p><p>  系統(tǒng)功能分析可以幫助將整個(gè)系統(tǒng)的任務(wù)細(xì)化成較小的模塊,將一個(gè)大問題進(jìn)行分解。為了能夠?qū)崿F(xiàn)學(xué)生的專業(yè)知識(shí)掌握能力和動(dòng)手能力的測(cè)試、教師通過學(xué)生的測(cè)試成績(jī)來了解學(xué)生綜合能力,系統(tǒng)管理員對(duì)系統(tǒng)的后臺(tái)數(shù)據(jù)庫進(jìn)行管理,系統(tǒng)應(yīng)該分別

43、對(duì)這三個(gè)角色的功能進(jìn)行實(shí)現(xiàn)。系統(tǒng)按角色的功能分為三大功能模塊,如圖3-1所示。</p><p>  圖3-1 功能模塊圖</p><p>  每個(gè)功能模塊之間是相互獨(dú)立的。</p><p>  3.3 系統(tǒng)用例建模</p><p>  系統(tǒng)的角色是指系統(tǒng)外部的實(shí)體,一般系統(tǒng)參與者為系統(tǒng)用戶、與所建造系統(tǒng)交互的其他系統(tǒng)和一些可以運(yùn)行的進(jìn)程。由于

44、本系統(tǒng)與其他系統(tǒng)和進(jìn)程沒有直接的聯(lián)系,是一個(gè)獨(dú)立的系統(tǒng),所以系統(tǒng)主要參與的角色分為三個(gè):學(xué)生、教師和系統(tǒng)管理員。對(duì)于不同角色使用該系統(tǒng)是要保證系統(tǒng)部分信息已經(jīng)完善,部分用例有時(shí)間上的優(yōu)先順序。所有用戶使用系統(tǒng)時(shí)必須先登錄,學(xué)生和教師的部分必填的個(gè)人信息要導(dǎo)入到系統(tǒng)中,教師在學(xué)生測(cè)試之前要完成對(duì)課題的設(shè)置和課題建議工作。</p><p>  從系統(tǒng)概述可得到,學(xué)生參與者具有的功能如圖3-2所示。</p>

45、<p>  圖3-2 學(xué)生用例圖</p><p>  student(學(xué)生)的用例有:</p><p>  login:登陸系統(tǒng)</p><p>  logout:退出系統(tǒng)</p><p>  testing:測(cè)試 </p><p>  extract_questions:抽取試題</p>

46、<p>  answer_questions:回答測(cè)題</p><p>  submit_test_paper:提交考卷</p><p>  manage_personal_infor:管理個(gè)人信息</p><p>  view_personal_infor:查看個(gè)人信息</p><p>  change_password:修改密

47、碼</p><p>  view_test_result:查看測(cè)試結(jié)果</p><p>  view_test_report:查看測(cè)試報(bào)告</p><p>  save_test_report:保存測(cè)試報(bào)告</p><p>  manage_thesis:管理論文</p><p>  upload_thesis:上傳論

48、文</p><p>  download_thesis:下載已批改論文</p><p>  apply_teacher:預(yù)選導(dǎo)師</p><p>  對(duì)于學(xué)生的功能可以看到選題測(cè)試功能包括:抽取試題、回答問題、提交答卷用例。</p><p><b>  選題測(cè)試用例說明:</b></p><p>

49、  前置條件:進(jìn)入主頁面,登錄系統(tǒng)。</p><p><b>  基本事件流:</b></p><p>  1. 輸入用戶名、密碼和用戶身份</p><p>  2. 點(diǎn)擊“登錄”,系統(tǒng)通過對(duì)用戶信息驗(yàn)證和數(shù)據(jù)庫中用戶信息的對(duì)比檢</p><p>  測(cè)用戶的合法性,如果用戶合法則進(jìn)入學(xué)生后臺(tái)管理首頁</p>

50、<p>  3. 單擊“我要測(cè)試”菜單下的“開始測(cè)試”,如果用戶還未測(cè)試則進(jìn)入測(cè)試</p><p><b>  頁面</b></p><p>  4. 單擊“抽取試題”按鈕,做完測(cè)題后,單擊“提交答卷”按鈕,測(cè)試完</p><p><b>  畢</b></p><p><b&g

51、t;  備選事件流:</b></p><p>  1. 當(dāng)用戶輸入的用戶名或密碼為空時(shí),系統(tǒng)將不進(jìn)行跳轉(zhuǎn),不出現(xiàn)用戶操作頁面</p><p>  2. 當(dāng)用戶已經(jīng)測(cè)試,則不跳轉(zhuǎn)到測(cè)試頁面,而是跳轉(zhuǎn)到提示已經(jīng)測(cè)試的頁面</p><p>  后置條件:用戶測(cè)試完成,得到測(cè)試結(jié)果和測(cè)試報(bào)告。</p><p>  教師實(shí)體具有的功能如圖3

52、-3所示。</p><p>  圖3-3 教師用例圖</p><p>  teacher(教師)的用例有:</p><p>  login:登陸系統(tǒng)</p><p>  logout:退出系統(tǒng)</p><p>  attribute_thesises:分配課題</p><p>  manage_

53、student_thesis:管理學(xué)生論文</p><p>  fill_in_thesis_requirement:填寫課題要求課程</p><p>  view_student_test_result:查看學(xué)生測(cè)試結(jié)果</p><p>  manage_apply_information:管理學(xué)生預(yù)選情況</p><p>  manage

54、_thesis:管理課題</p><p>  add _thesis:添加課題</p><p>  delete_thesis:刪除課題</p><p>  update_thesis:更新課題</p><p>  view_thesis:查看課題</p><p>  manage_personal_infor:管理個(gè)

55、人信息</p><p>  change_password:修改密碼</p><p>  view_personal_infor:查看個(gè)人信息</p><p>  教師的主要功能給出選題內(nèi)容及建議,通過查看學(xué)生的測(cè)試結(jié)果和測(cè)試報(bào)告了解學(xué)生情況。</p><p>  查看學(xué)生測(cè)試結(jié)果用例說明:</p><p>  前置條

56、件:用戶登錄成功,學(xué)生完成測(cè)試。</p><p><b>  基本事件流:</b></p><p>  1. 輸入用戶名、密碼和用戶身份</p><p>  2. 點(diǎn)擊“登錄”,系統(tǒng)通過對(duì)用戶信息驗(yàn)證和數(shù)據(jù)庫中用戶信息的對(duì)比檢測(cè)用戶的合法性,如果用戶合法則進(jìn)入教師后臺(tái)管理首頁</p><p>  3. 教師點(diǎn)擊“學(xué)生測(cè)試

57、成績(jī)”菜單下的“查看測(cè)試成績(jī)”,系統(tǒng)查找到學(xué)生測(cè)試成績(jī),提取學(xué)生測(cè)試信息返回顯示</p><p>  備選事件流:學(xué)生未測(cè)試則提示學(xué)生尚未有測(cè)試結(jié)果。</p><p>  后置條件:顯示學(xué)生測(cè)試成績(jī)</p><p>  系統(tǒng)管理員實(shí)體具有的功能如圖3-4所示。</p><p>  圖3-4 管理員用例圖</p><p>

58、;  administrator(管理員)的用例有:</p><p>  login:登陸系統(tǒng)</p><p>  logout:退出系統(tǒng)</p><p>  manage_users_infor:管理用戶信息</p><p>  add_user_infor:添加用戶信息</p><p>  delete_user_

59、infor:刪除用戶信息</p><p>  update_user_infor:更新用戶信息</p><p>  select_user_infor:查找用戶信息</p><p>  manage_questions_infor:管理題庫</p><p>  add_questions_infor:添加測(cè)題</p><p

60、>  delete_questions_infor:刪除測(cè)題</p><p>  update_questions_infor:更新測(cè)題</p><p>  view_questions_infor:查找測(cè)題</p><p>  manage_thesis_infor:管理課題信息</p><p>  view_thesis_infor

61、:查看課題信息</p><p>  update_password:修改密碼</p><p>  管理員的主要功能之一是對(duì)學(xué)生信息進(jìn)行管理。</p><p>  學(xué)生信息管理用例說明: </p><p>  前置條件:管理員合法登陸,進(jìn)入管理員后臺(tái)管理首頁</p><p><b>  基本事件流:</b

62、></p><p>  單擊“學(xué)生信息管理”菜單下的“查看學(xué)生信息”菜單,系統(tǒng)從數(shù)據(jù)庫</p><p>  選出所有學(xué)生信息在頁面顯示</p><p>  單擊一條學(xué)生信息記錄后的“編輯”按鈕,對(duì)信息進(jìn)行修改單擊“確定”</p><p>  單擊一條學(xué)生信息記錄后面的“刪除”按鈕,對(duì)信息進(jìn)行刪除</p><p>

63、  備選事件流:當(dāng)用戶表中數(shù)據(jù)的外鍵被修改時(shí),如果與外鍵所在基本表中數(shù)據(jù)不符合,則無法修改。當(dāng)用戶要管理的表格中數(shù)據(jù)為空時(shí),系統(tǒng)不顯示數(shù)據(jù)。</p><p>  后置條件:數(shù)據(jù)管理成功,數(shù)據(jù)庫保存修改后的表信息,數(shù)據(jù)庫刪除記錄。</p><p>  小結(jié): 系統(tǒng)需求分析需要注意很多原則,避免出現(xiàn)的需求出現(xiàn)沖突。通過分析得到的需求還必須與用戶所要的需求相一致。如果對(duì)用戶的需求誤解了將對(duì)以后的

64、系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)造成很大的誤導(dǎo),并且不好改動(dòng),所以這一步需謹(jǐn)慎。通過對(duì)系統(tǒng)進(jìn)行需求分析,對(duì)系統(tǒng)的實(shí)現(xiàn)更加細(xì)化和明確。</p><p><b>  4 系統(tǒng)設(shè)計(jì)</b></p><p>  系統(tǒng)設(shè)計(jì)時(shí)站在對(duì)系統(tǒng)規(guī)劃的角度來考慮系統(tǒng)該如何實(shí)現(xiàn)、如何將需求轉(zhuǎn)換為軟件設(shè)計(jì)的問題。系統(tǒng)設(shè)計(jì)分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。根據(jù)軟件工程中軟件設(shè)計(jì)的抽象與逐步求精原則[5],先從系統(tǒng)的整個(gè)

65、結(jié)構(gòu)出發(fā)來設(shè)計(jì)系統(tǒng)總體架構(gòu)設(shè)計(jì),再設(shè)計(jì)系統(tǒng)需要實(shí)現(xiàn)的功能模塊、系統(tǒng)界面、數(shù)據(jù)庫表等。</p><p>  4.1 設(shè)計(jì)目標(biāo)及原則</p><p>  隨著科技的發(fā)展,越來越多的自動(dòng)化的產(chǎn)品被應(yīng)用于生活中,特別是年輕人對(duì)這些數(shù)字化產(chǎn)品特別熱衷,這樣使得現(xiàn)在的孩子們都不愿意去使用不易理解,使用復(fù)雜的產(chǎn)品。從用戶的使用感受考慮,系統(tǒng)設(shè)計(jì)時(shí)應(yīng)該盡量以使用簡(jiǎn)單、操作一目了然、界面友好、有交互性為主。

66、基于主要用戶為學(xué)生團(tuán)體,所以界面風(fēng)格上設(shè)計(jì)的要清新,美觀。對(duì)于不同專業(yè)的學(xué)生要評(píng)測(cè)出真實(shí)的水平,測(cè)試系統(tǒng)題型應(yīng)該與學(xué)生所學(xué)專業(yè)設(shè)置的課程掛鉤,并且有難易程度的過度。軟件總體框架要以JavaEE思想來設(shè)計(jì)。對(duì)于數(shù)據(jù)庫的設(shè)計(jì),要充分考慮到數(shù)據(jù)的存儲(chǔ)需求并充分利用不同數(shù)據(jù)類型的優(yōu)勢(shì)來選擇存儲(chǔ)數(shù)據(jù)類型。最終的系統(tǒng)能夠?qū)崿F(xiàn)所有需求獲取階段得到的需求,主要是學(xué)生在線測(cè)試和對(duì)測(cè)試進(jìn)行分析的功能以及論文交流的功能,能夠使老師通過系統(tǒng)了解學(xué)生的優(yōu)勢(shì)和劣勢(shì)

67、,對(duì)導(dǎo)師真正出畢業(yè)設(shè)計(jì)選題提供參考。系統(tǒng)設(shè)計(jì)還應(yīng)該以易于實(shí)現(xiàn)、易于測(cè)試、易于維護(hù)為基本理念。</p><p>  系統(tǒng)設(shè)計(jì)的原則是指導(dǎo)設(shè)計(jì)過程的。為了能設(shè)計(jì)出符合需求的系統(tǒng),設(shè)計(jì)時(shí)要遵守以下原則:</p><p> ?。?)結(jié)構(gòu)應(yīng)該分層次,從而建立軟件成分之間的控制[6]。</p><p> ?。?)設(shè)計(jì)應(yīng)當(dāng)模塊化,邏輯上將軟件劃分為完成特定功能或子功能的部件。&l

68、t;/p><p> ?。?)設(shè)計(jì)應(yīng)該包含數(shù)據(jù)抽象和過程抽象</p><p> ?。?)模塊與外部環(huán)境之間的接口盡量少</p><p> ?。?)系統(tǒng)盡量簡(jiǎn)單,減少處理的時(shí)間和費(fèi)用</p><p> ?。?)系統(tǒng)數(shù)據(jù)的一致性,對(duì)于系統(tǒng)中的相同信息的顯示和存儲(chǔ)要一致</p><p>  (7)系統(tǒng)具備一定的出錯(cuò)處理功能,提高系

69、統(tǒng)的可靠性。</p><p>  4.2 系統(tǒng)總體架構(gòu)設(shè)計(jì)</p><p>  系統(tǒng)采用的是JavaEE技術(shù),總共分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層三層來考慮。系統(tǒng)體系結(jié)構(gòu)如下圖4-1所示。</p><p>  圖4-1 體系結(jié)構(gòu)圖</p><p>  通過Web瀏覽器來作為MVC架構(gòu)的視圖層。Web表示層用于獲取提交的數(shù)據(jù)、顯示請(qǐng)求的業(yè)務(wù)功

70、能返回的數(shù)據(jù)。業(yè)務(wù)邏輯層是處于承上啟下的位置,它完成了DAO層的調(diào)用又被Web表示層調(diào)用。DAO層調(diào)用Bean中對(duì)象實(shí)現(xiàn)持久化方法,對(duì)關(guān)系數(shù)據(jù)庫進(jìn)行操作。系統(tǒng)運(yùn)作流程為Web瀏覽器發(fā)送HTTP請(qǐng)求給JSP頁面,在JSP頁面中請(qǐng)求某項(xiàng)業(yè)務(wù),JSP將調(diào)用Service層對(duì)業(yè)務(wù)實(shí)現(xiàn)的功能函數(shù),Service層在調(diào)用不同的DAO層中的方法,DAO層每個(gè)被調(diào)用的方法則實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫的操作,操作完成后將數(shù)據(jù)庫的數(shù)據(jù)返回給DAO層中的方法,DAO層再

71、返回?cái)?shù)據(jù)給Service層,Service層將數(shù)據(jù)返回給JSP頁面,JSP通過Struts2標(biāo)簽、HTML標(biāo)記來顯示數(shù)據(jù),返回HTTP響應(yīng)到Web瀏覽器。此時(shí)一次請(qǐng)求服務(wù)完成。</p><p>  4.3 系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)</p><p>  根據(jù)對(duì)系統(tǒng)的分析得到如下的實(shí)體關(guān)系圖如下圖4-2所示:</p><p>  圖4-2 系統(tǒng)E-R圖</p>&l

72、t;p>  從圖中可以看到各個(gè)實(shí)體間的聯(lián)系。關(guān)系型數(shù)據(jù)庫要滿足三類完整性約束,即實(shí)體完整性,參照完整性,用戶自定義的完整性[7]。通過這三個(gè)約束將實(shí)體型轉(zhuǎn)換得到關(guān)系模式即為數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計(jì):</p><p>  學(xué)生(學(xué)號(hào),學(xué)生姓名,登陸密碼,性別,專業(yè)號(hào),郵箱號(hào),測(cè)試標(biāo)記)</p><p>  課程(課程號(hào),課程名,專業(yè)號(hào))</p><p>  教師(教

73、師號(hào),教師姓名,登陸密碼,性別,允許指導(dǎo)學(xué)生數(shù),學(xué)院號(hào),郵箱號(hào))</p><p>  管理員(管理員號(hào),管理員姓名,登陸密碼)</p><p>  專業(yè)(專業(yè)號(hào),專業(yè)名,學(xué)院號(hào))</p><p>  學(xué)院(學(xué)院號(hào),學(xué)院名)</p><p>  學(xué)生測(cè)試課程(學(xué)號(hào),課程號(hào),課程名,得分,測(cè)試日期)</p><p>  問

74、題(問題編號(hào),問題內(nèi)容,選項(xiàng)A內(nèi)容,選項(xiàng)B內(nèi)容,選項(xiàng)C內(nèi)容,選項(xiàng)D內(nèi)容,答案選項(xiàng),分?jǐn)?shù),課程號(hào))</p><p>  論文指導(dǎo)(學(xué)號(hào),論文號(hào),論文主題,學(xué)生論文存放位置,更新標(biāo)志,學(xué)生上傳日期,教師號(hào),教師論文存放位置,教師上傳日期)</p><p>  課題(課題號(hào),課題名,出題日期,課題介紹,課題研究建議,教師號(hào))</p><p>  課題要求(課題號(hào),課題名,

75、課程號(hào),課程名)</p><p>  預(yù)選老師(學(xué)號(hào),教師號(hào),預(yù)選標(biāo)志,教師同意標(biāo)志,拒絕原因)</p><p>  4.4 (Web)表示層設(shè)計(jì)</p><p>  表示層是服務(wù)器與用戶之間的接口。根據(jù)所見即所得原理,表示層將業(yè)務(wù)邏輯層返回的數(shù)據(jù)以用戶能理解的形式在頁面中顯示,用戶通過表示層提供的接口輸入數(shù)據(jù),通過頁面來傳遞數(shù)據(jù)到后臺(tái)業(yè)務(wù)邏輯層進(jìn)行處理。</

76、p><p>  本系統(tǒng)的表示層主要通過不同的Action控制在JSP頁面體現(xiàn)。其中又用到了Struts2的標(biāo)簽和Ajax技術(shù)。Struts2標(biāo)簽使得數(shù)據(jù)顯示更加更加方便,代碼量減少,同時(shí)數(shù)據(jù)傳輸方便。當(dāng)業(yè)務(wù)邏輯層將數(shù)據(jù)傳遞給相應(yīng)的Action后,通過struts.xml中的映射來跳轉(zhuǎn)到相應(yīng)的JSP頁面,在頁面中使用Struts2標(biāo)簽就可以將傳遞過來的參數(shù)顯示在頁面中。用戶在使用系統(tǒng)時(shí)更希望界面簡(jiǎn)單,操作簡(jiǎn)便,有盡量少

77、刷新操作和等待時(shí)間。Ajax技術(shù)實(shí)現(xiàn)了瀏覽器與服務(wù)器之間數(shù)據(jù)的異步傳輸,Ajax中是使用JavaScript來傳遞數(shù)據(jù)給業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層將處理后要返回的數(shù)據(jù)傳回給請(qǐng)求數(shù)據(jù)的客戶端JSP頁面,頁面再通過DOM(Document Object Model)顯示新數(shù)據(jù),在整個(gè)過程中用戶可以不手動(dòng)刷新頁面。為了更好的實(shí)現(xiàn)導(dǎo)航的功能,系統(tǒng)表示層設(shè)計(jì)時(shí),讓不同角色的用戶的操作都顯示在導(dǎo)航欄,當(dāng)頁面跳轉(zhuǎn)時(shí),導(dǎo)航欄不會(huì)改變位置,而請(qǐng)求的頁面則顯示

78、在一個(gè)固定的框架中。在頁面顯示數(shù)據(jù)時(shí)傳遞的是對(duì)象數(shù)組。</p><p>  根據(jù)需求分析得到學(xué)生登陸后的業(yè)務(wù)功能實(shí)現(xiàn)如下活動(dòng)圖4-3所示。</p><p>  圖4-3 學(xué)生活動(dòng)圖</p><p>  當(dāng)學(xué)生為登陸后可以進(jìn)行測(cè)試或查看個(gè)人信息,如果還未進(jìn)行測(cè)試則測(cè)試成績(jī)、測(cè)試報(bào)告、預(yù)選老師業(yè)務(wù)都無數(shù)據(jù)顯示,如果已經(jīng)測(cè)試則可以查看到測(cè)試成績(jī)、測(cè)試報(bào)告、預(yù)選老師、退出系

79、統(tǒng)。</p><p>  學(xué)生選題活動(dòng)圖如圖4-4所示。</p><p>  圖4-4學(xué)生選題活動(dòng)圖</p><p>  學(xué)生首先進(jìn)行測(cè)試,系統(tǒng)根據(jù)學(xué)生擅長(zhǎng)的課程推薦課題及老師,學(xué)生預(yù)選課題對(duì)應(yīng)的老師。老師通過查看預(yù)選了課題的學(xué)生的測(cè)試成績(jī)決定是否同意學(xué)生預(yù)選。老師同意學(xué)生預(yù)選則可以分配課題給學(xué)生,學(xué)生可以查看課題信息;拒絕則給出拒絕信息,學(xué)生可以查看老師拒絕信息。

80、</p><p>  4.5 業(yè)務(wù)邏輯層設(shè)計(jì)</p><p>  業(yè)務(wù)邏輯層(Service層)主要是針對(duì)不同的業(yè)務(wù)需求來調(diào)用數(shù)據(jù)訪問層(DAO層)的方法,從而實(shí)現(xiàn)不同業(yè)務(wù)需求功能。業(yè)務(wù)邏輯層提供了一系列可提供給用戶的服務(wù),是對(duì)用戶問題提供解決的方法。業(yè)務(wù)邏輯層的實(shí)現(xiàn)是通過調(diào)用數(shù)據(jù)訪問層的方法來實(shí)現(xiàn)的。業(yè)務(wù)邏輯層不需要知道如何操作具體數(shù)據(jù),只要知道通過DAO層的什么方法得到什么參數(shù),或者傳

81、遞什么參數(shù)從而能達(dá)到功能的實(shí)現(xiàn)。對(duì)于數(shù)據(jù)訪問層而言,業(yè)務(wù)邏輯層主要充當(dāng)?shù)氖钦{(diào)度者的角色,而對(duì)(Web)表示層而言,業(yè)務(wù)邏輯層充當(dāng)?shù)氖潜徽{(diào)度的角色。</p><p>  當(dāng)學(xué)生申請(qǐng)導(dǎo)師時(shí)要傳遞學(xué)號(hào)和教師號(hào)到Service層來調(diào)用Service層的申請(qǐng)方法,Service層將參數(shù)傳遞至DAO層,DAO層再調(diào)用數(shù)據(jù)庫操作方法,操作完成后以applyInfor對(duì)象的形式返回申請(qǐng)導(dǎo)師表中的一條記錄,其中applyInfor

82、中的學(xué)號(hào)stuNum和教師號(hào)teacherNum分別依賴于學(xué)生表student中的學(xué)號(hào)和教師表teacher中的教師號(hào),具體如圖4-5所示。</p><p>  圖4-5 預(yù)選導(dǎo)師過程使用的類圖</p><p>  Service層的applyInforSI對(duì)象中的setApplyFlag()方法為預(yù)選導(dǎo)師時(shí)調(diào)用的方法,該方法調(diào)用了DAO層applyInforDI對(duì)象的setApplyFl

83、ag()方法。</p><p>  4.6 (DAO)數(shù)據(jù)訪問層設(shè)計(jì)</p><p> ?。―AO)數(shù)據(jù)訪問層主要實(shí)現(xiàn)的功能是對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行操作,簡(jiǎn)而言之就是一系列的對(duì)數(shù)據(jù)庫中的記錄進(jìn)行增加、刪除、修改、查找操作。DAO層調(diào)用了Bean實(shí)體類,使用SQL語句來操作數(shù)據(jù)庫,為了體現(xiàn)類的封裝性,實(shí)現(xiàn)時(shí)則是調(diào)用封裝好的數(shù)據(jù)庫操作對(duì)象中的方法來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的操作。</p>&l

84、t;p>  從數(shù)據(jù)庫設(shè)計(jì)中得到相應(yīng)的DAO層的設(shè)計(jì)如圖4-6所示。</p><p>  圖4-6 DAO層設(shè)計(jì)的類文件</p><p>  adminDI.java:對(duì)管理員表進(jìn)行操作</p><p>  applyInforDI.java :對(duì)學(xué)生預(yù)選導(dǎo)師表進(jìn)行操作</p><p>  courseDI.java:對(duì)課程表進(jìn)行操作&l

85、t;/p><p>  instituteDI.java:對(duì)學(xué)院表進(jìn)行操作</p><p>  majorDI.java:對(duì)專業(yè)表進(jìn)行操作</p><p>  pageDI.java:對(duì)上下頁跳轉(zhuǎn)進(jìn)行判斷</p><p>  questionDI.java:對(duì)測(cè)題表進(jìn)行操作</p><p>  stuCourseDI.jav

86、a:對(duì)學(xué)生測(cè)試課程表進(jìn)行操作</p><p>  studentDI.java:對(duì)學(xué)生表進(jìn)行操作</p><p>  teacherDI.java:對(duì)教師表進(jìn)行操作</p><p>  thesisInforDI.java:對(duì)課題表進(jìn)行操作</p><p>  thesisRequirementDI.java:對(duì)課題要求表進(jìn)行操作</p

87、><p>  DAO層與數(shù)據(jù)庫操作對(duì)象間的類圖如圖4-7所示。</p><p>  圖4-7 測(cè)題DAO操作測(cè)題信息表類圖</p><p>  測(cè)題DAO(questionDI)通過數(shù)據(jù)庫連接connect類中的連接數(shù)據(jù)庫的方法來獲取數(shù)據(jù)庫連接,再將連接和SQL語句傳遞給數(shù)據(jù)庫操作dbOperator類中的方法來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫中question表的操作。questionD

88、I中對(duì)測(cè)題question對(duì)象進(jìn)行了實(shí)例化作為DAO層的返回參數(shù)。</p><p>  小結(jié): 系統(tǒng)設(shè)計(jì)在軟件工程中占了很重要的角色,并且是占用整個(gè)開發(fā)周期中比較長(zhǎng)時(shí)間的階段。系統(tǒng)設(shè)計(jì)的好壞直接影響系統(tǒng)實(shí)現(xiàn)時(shí)的復(fù)雜度,如果設(shè)計(jì)時(shí)對(duì)需求分析不充分則業(yè)務(wù)功能模塊就會(huì)缺少從而影響系統(tǒng)功能。通過對(duì)系統(tǒng)設(shè)計(jì)的分析知道該從哪個(gè)方面開始著手做,并且清楚了每個(gè)角色的操作。對(duì)數(shù)據(jù)庫每個(gè)字段的設(shè)計(jì)意義也更明確。理解了整個(gè)JavaEE

89、在系統(tǒng)架構(gòu)中的表現(xiàn)形式。</p><p><b>  5 系統(tǒng)實(shí)現(xiàn)</b></p><p>  系統(tǒng)實(shí)現(xiàn)是系統(tǒng)設(shè)計(jì)之后的工作,是將系統(tǒng)設(shè)計(jì)轉(zhuǎn)換為可執(zhí)行的程序代碼的過程。只有在對(duì)數(shù)據(jù)庫設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)充分分析之后進(jìn)行系統(tǒng)開發(fā)工作才能符合需求。系統(tǒng)實(shí)現(xiàn)需要掌握系統(tǒng)開發(fā)工具的使用方法和程序設(shè)計(jì)語言,本系統(tǒng)主要應(yīng)用程序設(shè)計(jì)語言有Java、Javascript,開發(fā)技術(shù)有Str

90、uts、Ajax。系統(tǒng)實(shí)現(xiàn)按功能模塊的劃分來分別實(shí)現(xiàn),循序漸進(jìn)。</p><p>  5.1 開發(fā)環(huán)境配置</p><p>  本系統(tǒng)的技術(shù)要求是基于JavaEE的Web應(yīng)用系統(tǒng)。所以要從硬件和軟件兩個(gè)方面考慮來配置系統(tǒng)。從系統(tǒng)硬件需求角度出發(fā),系統(tǒng)是在個(gè)人PC機(jī)上開發(fā)的,普通的PC機(jī)的配置即可用于開發(fā)本系統(tǒng)。從軟件角度出發(fā),系統(tǒng)需配置Web系統(tǒng)開發(fā)工具,所以選擇了Myeclipse 8.

91、0作為開發(fā)軟件。由于用到的數(shù)據(jù)很多,為了便于管理和使用的快速、穩(wěn)定,選擇MySQL Server 5.1作為系統(tǒng)的數(shù)據(jù)庫。因?yàn)镸ySQL數(shù)據(jù)庫是要通過SQL命令來操作的不是很方便,為了對(duì)數(shù)據(jù)庫的操作能更簡(jiǎn)便,系統(tǒng)還需安裝Navicate Lite 8.2,這是一款具有可視化圖形用戶界面,操作安全簡(jiǎn)便的MySQL數(shù)據(jù)庫服務(wù)器管理和開發(fā)工具。系統(tǒng)采用的是Tomcat作為Web應(yīng)用服務(wù)器,Tomcat技術(shù)先進(jìn)、性能也很穩(wěn)定,是當(dāng)前非常受歡迎的

92、一款服務(wù)器。</p><p>  首先,從各個(gè)官方網(wǎng)站下載好各個(gè)軟件,因?yàn)檫M(jìn)行JavaEE開發(fā)時(shí)使用的一系列軟件都需要JavaSE的支持,所以首先安裝JDK開發(fā)環(huán)境。之后根據(jù)安裝向?qū)О惭bMyeclipse 8.0、Tomcat、Navicate Lite 8.2、MySQL Server 5.1等軟件。啟動(dòng)Tomcat,通過在瀏覽器中輸入網(wǎng)址:http://localhost:8080/后是否出現(xiàn)服務(wù)器的主頁面來

93、查看服務(wù)器是否正常運(yùn)行。啟動(dòng)Myeclipse,在Myeclipse對(duì)服務(wù)器進(jìn)行配置,在Myeclipse中建立一個(gè)Web項(xiàng)目,通過對(duì)項(xiàng)目的部署,在瀏覽器中輸入網(wǎng)址來瀏覽本地建立的項(xiàng)目測(cè)試Tomcat服務(wù)器與Myeclipse能正確連接。打開Navicat,新建一個(gè)數(shù)據(jù)庫,通過Web項(xiàng)目中.java后綴類型的文件中輸入簡(jiǎn)單的數(shù)據(jù)庫操作語句,運(yùn)行該文件后查看數(shù)據(jù)庫能否成功連接。當(dāng)Myeclipse和Tomcat之間、Myeclipse和N

94、avicate Lite之間、Navicate Lite和MySQL Server之間都能建立聯(lián)系則開發(fā)環(huán)境搭建完畢。</p><p>  5.2 (Web)表示層實(shí)現(xiàn)</p><p>  Web表示層的實(shí)現(xiàn)是通過Struts調(diào)用對(duì)應(yīng)的Action在再JSP中體現(xiàn)來實(shí)現(xiàn)的。表示層主要功能有分析提交的動(dòng)作和Ajax提交的異步請(qǐng)求、顯示請(qǐng)求的數(shù)據(jù)與分析返回給Ajax中Json的數(shù)據(jù)然后將其顯示

95、到用戶界面。首先需要對(duì)Struts2進(jìn)行配置。具體的配置信息寫入web.xml文件。</p><p>  <!--配置歡迎界面--></p><p>  <welcome-file-list></p><p>  <welcome-file>index.jsp</welcome-file></p><

96、;p>  </welcome-file-list></p><p>  <!--配置過濾器--></p><p><b>  <filter></b></p><p>  <!--配置過濾器名稱--></p><p>  <filter-name>stru

97、ts2</filter-name></p><p>  <!--過濾器對(duì)應(yīng)的類--></p><p>  <filter-class></p><p>  org.apache.struts2.dispatcher.FilterDispatcher</p><p>  </filter-class&g

98、t;</p><p><b>  </filter></b></p><p>  <filter-mapping></p><p>  <filter-name>struts2</filter-name></p><p>  <!--設(shè)置過濾匹配的URL模式為所有模式

99、均匹配--></p><p>  <url-pattern>/*</url-pattern></p><p>  </filter-mapping> </p><p>  web.xml文件配置好后對(duì)所有請(qǐng)求均過濾,在struts.xml中對(duì)不同請(qǐng)求決定對(duì)應(yīng)的是哪個(gè)Action。以學(xué)生登陸后開始測(cè)試為例,當(dāng)學(xué)生登陸后選擇“開

100、始測(cè)試”菜單,進(jìn)入請(qǐng)求對(duì)應(yīng)的Action,代碼如下:</p><p>  <li><a href="courseAction.action?stuNum=<%=session.getAttribute("loginStuNum")%>" target="content">開始測(cè)試</a></li>

101、;</p><p>  請(qǐng)求courseAction.action,并且將參數(shù)stuNum傳遞到action中,在struts.xml中配置跳轉(zhuǎn)的Action和不同返回結(jié)果應(yīng)該跳轉(zhuǎn)的頁面,具體配置如下:</p><p>  <!--我要測(cè)試--></p><p>  <action name="courseAction" cla

102、ss="com.action.courseAction"></p><p>  <result name="success">/student/test.jsp</result></p><p>  <result name="tested">/student/tested.jsp<

103、/result></p><p><b>  </action></b></p><p>  此時(shí)在com.action.courseAction中對(duì)請(qǐng)求的任務(wù)提供數(shù)據(jù),具體實(shí)現(xiàn)如下:</p><p>  package com.action;</p><p><b>  //引入所需要的包&

104、lt;/b></p><p>  import java.util.List;</p><p>  import com.Service.Implements.studentSI;</p><p>  import com.opensymphony.xwork2.ActionSupport;</p><p>  @SuppressWar

105、nings("serial")</p><p>  public class courseAction extends ActionSupport{</p><p>  private String stuNum;//學(xué)生學(xué)號(hào)</p><p>  public String getStuNum() { //學(xué)號(hào)的get方法</p&g

106、t;<p>  return stuNum;</p><p><b>  }</b></p><p>  public void setStuNum(String stuNum) {//學(xué)號(hào)的set方法</p><p>  this.stuNum = stuNum;</p><p><b> 

107、 }</b></p><p>  public String execute() throws Exception {</p><p>  this.stuSI = new studentSI();</p><p>  if(this.stuSI.testFlagIsO(stuNum)){//查看用戶是否已經(jīng)測(cè)試</p><p>

108、;  return "tested";//已經(jīng)測(cè)試</p><p><b>  }</b></p><p>  return SUCCESS; //未測(cè)試</p><p><b>  }</b></p><p><b>  }</b></p>

109、<p>  當(dāng)根據(jù)struts.xml文件中的映射跳轉(zhuǎn)到com.action.courseAction.action,自動(dòng)執(zhí)行setStuNum()方法給變量stuNum賦值,再執(zhí)行execute()方法,execute()方法調(diào)用了Service層的方法來判斷用戶是否已經(jīng)測(cè)試,如果學(xué)生已經(jīng)測(cè)試測(cè)execute()方法返回值為“tested”字符串,如果學(xué)生還沒有進(jìn)行測(cè)試則返回值為“success”字符串,在struts.

110、xml文件中<result></result>標(biāo)簽下來配置不同的返回結(jié)果所跳轉(zhuǎn)的頁面,當(dāng)返回返回“tested”字符串則跳轉(zhuǎn)到系統(tǒng)根目錄下student/tested.jsp頁面提示已經(jīng)測(cè)試,如果返回的是“success”字符串則跳轉(zhuǎn)到系統(tǒng)根目錄下的student/test.jsp頁面進(jìn)行測(cè)試。</p><p>  5.3 業(yè)務(wù)邏輯層實(shí)現(xiàn)</p><p>  業(yè)務(wù)邏

111、輯層實(shí)現(xiàn)是通過Service層來實(shí)現(xiàn)的,Service層編寫不同的業(yè)務(wù)邏輯,根據(jù)業(yè)務(wù)需要的數(shù)據(jù)來對(duì)DAO層的方法進(jìn)行了調(diào)用來獲取數(shù)據(jù)實(shí)現(xiàn)業(yè)務(wù)功能。</p><p>  業(yè)務(wù)邏輯層不需要考慮如何操作底層數(shù)據(jù)庫,只需傳入?yún)?shù)給DAO層的方法,再通過DAO層的方法來獲取所需的數(shù)據(jù)。以測(cè)試試題的業(yè)務(wù)邏輯為例進(jìn)行分析業(yè)務(wù)邏輯層的實(shí)現(xiàn)。</p><p>  package com.Service.Im

112、plements;</p><p>  import java.util.List;</p><p>  import com.bean.question;//引入bean中的question類</p><p>  import com.Dao.Implements.questionDI;//引入DAO層的questionDI類</p><p

113、>  public class questionSI {</p><p><b>  //添加測(cè)題信息</b></p><p>  public void add(question question){</p><p>  questionDI questionDI = new questionDI();</p><

114、p>  questionDI.addQue(question);</p><p><b>  }</b></p><p>  //刪除測(cè)題課程信息</p><p>  public void del(int questionNum){</p><p>  questionDI questionDI = new qu

115、estionDI();</p><p>  questionDI.deleteQue(questionNum);</p><p><b>  }</b></p><p>  //查找某個(gè)課程號(hào)對(duì)應(yīng)的所有測(cè)題</p><p>  public List<question> searchAllByCourN(in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論