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