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