【正文】
.............................................. (34) 致 謝 ................................................ (37) 參考文獻(xiàn) ............................................. (39) 1 1 概述 課題意義 畢業(yè)設(shè)計(jì)是對(duì)大學(xué)生們?cè)诖髮W(xué)期間所學(xué)的所有知識(shí)的掌握程度進(jìn)行考核。 學(xué)生測(cè)試后可以更了解自己的專業(yè)水平,通過系統(tǒng)推薦的導(dǎo)師和課題,可以幫助學(xué)生更好的選擇導(dǎo)師。系統(tǒng)提供給學(xué)生有在線測(cè)試、查看評(píng)測(cè)結(jié)果、查看評(píng)測(cè)報(bào)告、推薦導(dǎo)師和課題、提交論文、下載論文等功能。系統(tǒng)提供給老師管理課題、查看學(xué)生測(cè)試結(jié)果 、提交課題研究建議、查看學(xué)生論文、上傳批閱的論文等功能。導(dǎo)師可以通過系統(tǒng)更全面的了解學(xué)生的各方面能力同時(shí)選擇學(xué)生?,F(xiàn)在很多學(xué)生對(duì)大學(xué)學(xué)習(xí)的知識(shí)沒有進(jìn)行過系統(tǒng)的應(yīng)用和總結(jié),不了解自己總體的水平、優(yōu)勢(shì)和劣勢(shì)。學(xué)生在制作畢業(yè)設(shè)計(jì)期間與老師要進(jìn)行頻繁的交流,特別是在畢業(yè)論文的修改、提交、審核、評(píng)閱、意見反饋,畢業(yè)設(shè)計(jì)制作進(jìn)度的監(jiān)督、系統(tǒng)質(zhì)量的監(jiān)督方面。管理員通過該系統(tǒng)對(duì)所以系統(tǒng)用戶進(jìn)行管理,對(duì)題庫(kù)進(jìn)行管理。 ( 2)技術(shù)介紹和分析:對(duì)系統(tǒng)所用的技術(shù)和工具作比較和介紹,闡述使用各項(xiàng)技術(shù)和工具的優(yōu)勢(shì)。并解析 JavaEE技術(shù)在各層之間的具體應(yīng)用。通過測(cè)試完善系統(tǒng),改進(jìn)系統(tǒng),改正系統(tǒng)中存在的隱含的缺陷。 Struts 最早是作為 Apache 基金會(huì) Jakarta 項(xiàng)目組的組成部分Open Source 項(xiàng)目,項(xiàng)目的創(chuàng)立者希望通過對(duì)該項(xiàng)目的研究,改進(jìn)和提高 JavaServer Pages 、 Servlet、標(biāo)簽庫(kù)以及面向?qū)ο蟮募夹g(shù)水準(zhǔn)。 ( 2)有自己的標(biāo)記庫(kù)即 Taglib,一方面使得 JSP 頁(yè)面盡可能少的嵌入 Java 腳本,不必考慮 Java 語(yǔ)法或其他 JSP 語(yǔ)法專注于頁(yè)面的可視特征上。 Struts 在實(shí)現(xiàn) MVC 模型時(shí),模型層是將模型分為系統(tǒng)的內(nèi)部狀態(tài)和事物邏輯兩個(gè)部分,內(nèi)部狀態(tài)通常由一組 ActionForm JavaBean 表示,大型應(yīng)用程序的事物邏輯封裝在方法內(nèi)部,小型應(yīng)用程序則可能內(nèi)嵌在 Action 類中。由于其開源性使得當(dāng)前很多系統(tǒng)都使用 Mysql 數(shù)據(jù)庫(kù)。 ( 2)不僅在 WINDOWS 操作系統(tǒng)還可以在 LINUX、 UNIX、 SUN OS 等操作系統(tǒng)上使用。 ( 4)查詢功能很強(qiáng)大,支持 SELECT 和 WHERE 語(yǔ)句的 count()、 avg()、 min()、sum()函數(shù)和 order by 等命令,使得檢索時(shí)可以進(jìn)行一些運(yùn)算,對(duì)檢索出來(lái)的結(jié)果可以進(jìn)行一些處理。而開發(fā)的系統(tǒng)對(duì)數(shù)據(jù)的查詢和速度要求比較大,所以使用 Mysql 數(shù)據(jù)庫(kù)更加適合本系統(tǒng)。 Myeclipse 就是 Eclipse 的插件,它結(jié)構(gòu)上是模塊化得,在不影響其他模塊的情況下可以對(duì)任一模塊單褲升級(jí)和擴(kuò)展。 Rational Rose 簡(jiǎn)介 Rational Rose 是由美國(guó)的 Rational 公司開發(fā)的一種面向?qū)ο蟮目梢暬9ぞ?。它可?更具模型生成代碼,也可根據(jù)軟件系統(tǒng)導(dǎo)出系統(tǒng)的模型。 ( 5)生成使用簡(jiǎn)單且定制靈活的文檔, Rose 中的文檔生成工具 SoDA 可以提供 6 模型文檔模板,可以自動(dòng)生成 Word 格式的文檔。 Myeclipse 的高度集成性使得與其它軟件的合作性比較好。系統(tǒng)需求分析的目的在與開發(fā)出高質(zhì)量和具體的需求,為軟件設(shè)計(jì)和實(shí)現(xiàn)提供依據(jù)。 為了保證系統(tǒng)能發(fā)揮其作用,系統(tǒng)管理員要把所有學(xué)生和教師信息和測(cè)試用題庫(kù)按照數(shù)據(jù)庫(kù)相應(yīng)的表的要求存入數(shù)據(jù)庫(kù)中,導(dǎo)師在學(xué)生測(cè)試之前應(yīng)該提供所有可選的課題和課題建議和每個(gè)課題特別要求哪些課程信息到系統(tǒng)。該系統(tǒng)使用應(yīng)該盡量簡(jiǎn)單,容易被理解。 圖 31 功能模塊圖 每個(gè)功能模塊之間是相互獨(dú)立的。所有用戶使用系統(tǒng)時(shí)必須先登錄,學(xué)生和教師的部分必填的個(gè)人信息要導(dǎo)入到系統(tǒng)中,教 師在學(xué)生測(cè)試之前要完成對(duì)課題的設(shè)置和課題建議工作。 基本事件流: 1. 輸入用戶名、密碼和用戶身份 2. 點(diǎn)擊 “登錄”,系統(tǒng)通過對(duì)用戶信息驗(yàn)證和數(shù)據(jù)庫(kù)中用戶信息的對(duì)比檢 測(cè)用戶的合法性,如果用戶合法則進(jìn)入學(xué)生后臺(tái)管理首頁(yè) 3. 單擊“我要測(cè)試”菜單下的“開始測(cè)試”,如果用戶還未測(cè)試則進(jìn)入測(cè)試 頁(yè)面 4. 單擊“抽取試題”按鈕,做完測(cè)題后,單擊“提交答卷”按鈕,測(cè)試完 畢 備選事件流: 1. 當(dāng)用戶輸入的用戶名或密碼為空時(shí),系統(tǒng)將不進(jìn)行跳轉(zhuǎn),不出現(xiàn)用戶操作頁(yè)面 2. 當(dāng)用戶已經(jīng)測(cè)試,則不跳轉(zhuǎn)到測(cè)試頁(yè)面,而是跳轉(zhuǎn)到提示已經(jīng)測(cè)試的頁(yè) 11 面 后置條件:用戶測(cè)試完成,得到測(cè)試結(jié)果和測(cè)試報(bào)告。 基本事件流: 1. 輸入用戶名、密碼和用戶身份 2. 點(diǎn)擊“登錄”,系統(tǒng)通過對(duì)用戶信息驗(yàn)證和數(shù)據(jù)庫(kù)中用戶信息的對(duì)比檢測(cè)用戶的合法性,如果用戶合法則進(jìn)入教師后臺(tái)管理首頁(yè) 3. 教師點(diǎn)擊“學(xué)生測(cè)試成績(jī)”菜單下的“查看測(cè)試成績(jī)”,系統(tǒng)查找到學(xué)生測(cè)試成績(jī),提取學(xué)生測(cè)試信息返回顯示 備選事件流:學(xué)生未測(cè)試則提示學(xué)生尚未有測(cè)試結(jié)果。當(dāng)用戶要管理的表格中數(shù)據(jù)為空時(shí),系統(tǒng)不顯 示數(shù)據(jù)。如果對(duì)用戶的需求誤解了將對(duì)以后的系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)造成很大的誤導(dǎo),并且不好改動(dòng),所以這一步需謹(jǐn)慎。根據(jù)軟件工程中軟件設(shè)計(jì)的抽象與逐步求精原則 [5],先從系統(tǒng)的整個(gè)結(jié)構(gòu)出發(fā)來(lái)設(shè)計(jì)系統(tǒng)總體架構(gòu)設(shè)計(jì),再設(shè)計(jì)系統(tǒng)需要實(shí)現(xiàn)的功能模塊、系統(tǒng)界面、數(shù)據(jù)庫(kù)表等。對(duì)于不同專業(yè)的學(xué)生要評(píng)測(cè)出真實(shí)的水平,測(cè)試系統(tǒng)題型應(yīng)該與學(xué)生所 學(xué)專業(yè)設(shè)置的課程掛鉤,并且有難易程度的過度。系統(tǒng)設(shè)計(jì)還應(yīng)該以易于實(shí)現(xiàn)、易于測(cè)試、易于維護(hù)為基本理念。 ( 3)設(shè)計(jì)應(yīng)該包含數(shù)據(jù)抽象和過程抽象 ( 4)模塊與外部環(huán)境之間的接口盡量少 ( 5)系統(tǒng)盡量簡(jiǎn)單,減少處理的時(shí)間和費(fèi)用 16 ( 6)系統(tǒng)數(shù)據(jù)的一致性,對(duì)于系統(tǒng)中的相同信息的顯示和存儲(chǔ)要一致 ( 7)系統(tǒng)具備一定的出錯(cuò)處理功能,提高系統(tǒng)的可靠性。 Web 表示層用于獲取提交的數(shù)據(jù)、顯示請(qǐng)求的業(yè)務(wù)功能返回的數(shù)據(jù)。此時(shí)一次請(qǐng)求服務(wù)完成。根據(jù)所見即所得原理,表示層將業(yè)務(wù)邏輯層返回的數(shù)據(jù)以用戶能理解的形式在頁(yè)面中顯示,用戶通過表示層提供的接口輸入數(shù)據(jù),通過頁(yè)面來(lái)傳遞數(shù)據(jù)到后臺(tái)業(yè)務(wù)邏輯層進(jìn)行處理。當(dāng)業(yè)務(wù)邏輯層將數(shù)據(jù)傳遞給相應(yīng)的 Action 后,通過 中的映射來(lái)跳轉(zhuǎn)到相應(yīng)的 JSP 頁(yè)面,在頁(yè)面中使用 Struts2 標(biāo)簽就可以將傳遞過來(lái)的參數(shù)顯示在頁(yè)面中。在頁(yè)面顯示數(shù)據(jù)時(shí)傳遞的是對(duì)象數(shù)組。 20 學(xué)生 教師測(cè)試課程預(yù)選導(dǎo)師查看學(xué)生測(cè)試成績(jī)處理學(xué)生預(yù)選是否同意預(yù)選?查看教師拒絕信息分配課題否是查看課題信息 圖 44學(xué)生選題活動(dòng)圖 學(xué)生首先進(jìn)行測(cè)試,系統(tǒng)根據(jù)學(xué)生擅長(zhǎng)的課程推薦課題及老師,學(xué)生預(yù)選課題對(duì)應(yīng)的老師。業(yè)務(wù)邏輯層提供了一系列可提供給用戶的服務(wù),是對(duì)用戶問題提供解決的方法。 21 當(dāng)學(xué)生申請(qǐng)導(dǎo)師時(shí)要傳遞學(xué)號(hào)和教師號(hào)到 Service 層來(lái)調(diào)用 Service 層的申 請(qǐng)方法, Service 層將參數(shù)傳遞至 DAO 層, DAO 層再調(diào)用數(shù)據(jù)庫(kù)操作方法,操作完成后以 applyInfor 對(duì)象的形式返回申請(qǐng)導(dǎo)師表中的一條記錄,其中 applyInfor 中的學(xué)號(hào)stuNum 和教師號(hào) teacherNum 分別依賴于學(xué)生表 student 中的學(xué)號(hào)和教師表 teacher 中的教師號(hào),具體如圖 45 所示。 從數(shù)據(jù)庫(kù)設(shè)計(jì)中得到相應(yīng)的 DAO 層的設(shè)計(jì)如圖 46 所示。 小結(jié): 系統(tǒng)設(shè)計(jì)在軟件工程中占了很重要的角色,并且是占用整個(gè)開發(fā)周期中比較長(zhǎng)時(shí) 間的階段。理解了整個(gè) JavaEE 在系統(tǒng)架構(gòu)中的表現(xiàn)形式。系統(tǒng)實(shí)現(xiàn)按功能模塊的劃分來(lái)分別實(shí)現(xiàn),循序漸進(jìn)。從軟件角度出發(fā),系統(tǒng)需配置 Web 系統(tǒng)開發(fā)工具,所以選擇了 Myeclipse 作為開發(fā)軟件。 首先,從各個(gè)官方網(wǎng)站下載好各個(gè)軟件,因?yàn)檫M(jìn)行 JavaEE 開發(fā)時(shí)使用的一系列軟件都需要 JavaSE 的支持,所以首先安裝 JDK 開發(fā)環(huán)境。打開 Navicat,新建一個(gè)數(shù)據(jù)庫(kù),通過 Web 項(xiàng)目中 .java 后綴類型的文件中輸入簡(jiǎn)單的數(shù)據(jù)庫(kù)操作語(yǔ)句,運(yùn)行該文件后查看數(shù)據(jù)庫(kù)能否成功連接。首先需要對(duì) Struts2 進(jìn)行配置。 //引入所需要的包 import 。 //學(xué)生學(xué)號(hào) public String getStuNum() { //學(xué)號(hào)的 get方法 return stuNum。 //已經(jīng)測(cè)試 } return SUCCESS。以測(cè)試試題的業(yè)務(wù)邏輯為例進(jìn)行分析業(yè)務(wù)邏輯層的實(shí)現(xiàn)。 //引入 bean中的 question類 import 。 import 。 業(yè)務(wù)邏輯層實(shí)現(xiàn) 業(yè)務(wù)邏輯層實(shí)現(xiàn)是通過 Service 層來(lái)實(shí)現(xiàn)的, Service 層編寫不同的業(yè)務(wù)邏輯, 根據(jù)業(yè)務(wù)需要的數(shù)據(jù)來(lái)對(duì) DAO 層的方法進(jìn)行了調(diào)用來(lái)獲取數(shù)據(jù)實(shí)現(xiàn)業(yè)務(wù)功能。 } public String execute() throws Exception { = new studentSI()。 import 。 !配置歡迎界面 welefilelist welefile/welefile /welefilelist !配置過濾器 filter !配置過濾器名稱 filternamestruts2/filtername !過濾器對(duì)應(yīng)的類 filterclass /filterclass /filter filtermapping filternamestruts2/filtername !設(shè)置過濾匹配的 URL 模式為所有模式均匹配 26 urlpattern/*/urlpattern /filtermapping 文件配置好后對(duì)所有請(qǐng)求均過濾,在 中對(duì)不同請(qǐng)求決定對(duì)應(yīng)的是哪個(gè) Action。 ( Web)表示 層實(shí)現(xiàn) Web 表示層的實(shí)現(xiàn)是通過 Struts 調(diào)用對(duì)應(yīng)的 Action 在再 JSP 中體現(xiàn)來(lái)實(shí)現(xiàn)的。啟動(dòng) Tomcat,通過在瀏覽器中輸入網(wǎng)址: 務(wù)器是否正常運(yùn)行。因?yàn)?MySQL數(shù)據(jù)庫(kù)是要通過 SQL 命令來(lái)操作的不是很方便,為了對(duì)數(shù)據(jù)庫(kù)的操作能更簡(jiǎn)便,系統(tǒng)還需安裝 Navicate Lite ,這是一款具有可視化圖形用戶界面,操作安全簡(jiǎn)便的MySQL 數(shù)據(jù)庫(kù)服務(wù)器管理和開發(fā)工具。所以要從硬件和軟件兩個(gè)方面考慮來(lái)配置系統(tǒng)。只有在對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)充分分析之后進(jìn)行系統(tǒng)開發(fā)工作才能符合需求。通過對(duì)系統(tǒng)設(shè)計(jì)的分析知道該從哪個(gè)方面開始著手做,并且清楚了每個(gè)角色的操作。 c o n n e c ts C on n e c t S t ri n g : S t ri n gs U s e r: S t ri n gs P a s s w or d : S t ri n gs D ri v e r: S t ri n g+g e t C on n e c t ion ( ) : C on n e c t ion+c los e C on n e c t ion ( c on : C on n e c t ion , rs : R e s u lt S e t , s t : S t a t e m e n t ) : b ool e a nd bO p e r a t es t : S t a t e m e n t = n u llrs : R e s u lt S e t = n u llre s u lt V a lu e : in t+g e t S t ( ) : S t a t e m e n t+s e t S t ( s t : S t a t e m e n t )+g e t R s ( ) : R e s u lt S e t+s e t R s ( rs : R e s u lt S e t )+i n s e rt ( c on n : C on n e c t ion , s I n s e rt S q l: S t ri n g ) : in t+s e le c t ( c on n : C on n e c t ion , s S e le c t S q l: S t ri n g ) : R e s u lt S e t+d e le t e ( c on n e c t : C on n e c t ion , s D e le t e S q l: S t ri n g ) : in t+u p d a t e ( c on n e c t : C on n e c t ion , s U p d a t e S q l: S t ri n g ) : in tu s eq u e s t io n D I+a d d Q u e ( q u e : q u e s t ion ) : b ool e a n+d e le t