【正文】
當(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 中的教師號, 具體如圖 44 所示。 業(yè)務(wù)邏輯層不需要知道如何操作具體數(shù)據(jù),只要知道通過 DAO 層的什么方法得到什么參數(shù),或者傳遞什么 參數(shù)從而能達(dá)到功能的實現(xiàn)。 業(yè)務(wù)邏輯層提供了一系列可提供給用戶的 服務(wù),是對用戶問題提供解決的方法。 學(xué)生選題活動 圖如圖 43 所示。老師通過查看預(yù)選了課題的學(xué)生的測試成績決定是否同意學(xué)生預(yù)選。 根據(jù)需求分析得到學(xué)生登陸后的業(yè)務(wù)功能 實現(xiàn) 活動圖如 圖 42 所示 。 在頁面顯示數(shù)據(jù)時傳遞的是對象數(shù)組 。 Ajax 技術(shù)實現(xiàn) 了 瀏覽器與服務(wù)器 之間數(shù)據(jù)的 異步傳輸 , Ajax 中是使用 JavaScript 來傳遞數(shù)據(jù) 給業(yè)務(wù)邏輯層 ,業(yè)務(wù)邏輯層將處理后 要返回的 數(shù)據(jù)傳回給請求數(shù)據(jù)的客戶端 JSP 頁面,頁面再通過 DOM( Document Object Model)顯示新數(shù)據(jù) ,在整個過程中用戶 可以不 手動刷新頁面 。 當(dāng)業(yè)務(wù)邏輯層將數(shù)據(jù)傳遞給相應(yīng)的 Action 后,通過 中的映射來跳轉(zhuǎn)到相應(yīng)的 JSP 頁面,在頁面中使用 Struts2 標(biāo)簽就可以將傳遞過來的參數(shù)顯示在 頁面中。 其中 又 用到了Struts2 的標(biāo)簽 和 Ajax 技術(shù) 。根據(jù)所見即所得原理,表示層將業(yè)務(wù)邏輯層返回的數(shù)據(jù)以用戶能理解的形式在頁面中顯示,用戶通過表示層提供的接口 輸入數(shù)據(jù),通過頁面來 傳遞數(shù)據(jù)到后臺業(yè)務(wù)邏輯層 進(jìn)行 處理。關(guān)系型 數(shù)據(jù)庫 要滿足 三類 完整性約束 , 即實體完整性,參照完整性,用戶 自 定義的完整性 [13]。 為了能設(shè)計出符合需求的系統(tǒng),設(shè)計時要遵守以下原則: ( 1) 結(jié)構(gòu)應(yīng)該分層次 ,從而建立軟件成分之間的控制 ; ( 2)設(shè)計應(yīng)當(dāng)模塊化,邏輯上將軟件劃分為完成特定功能或子功能的部件 ; ( 3)設(shè)計應(yīng)該包含數(shù)據(jù)抽象和過程抽象 ; ( 4)模塊與外部環(huán)境之間的接口盡量少 ; ( 5) 系統(tǒng)盡量簡單,減少處理的時間和費用 ; ( 6)系統(tǒng)數(shù)據(jù)的一致性,對于系統(tǒng)中的相同信息的顯示和存儲要一致 ; ( 7)系統(tǒng)具備一定的出錯處理功能, 提高系統(tǒng)的 可靠性。 系統(tǒng)設(shè)計還應(yīng)該以 易于實現(xiàn)、易于測試、易于維護 為基本理念 。對于數(shù)據(jù)庫的設(shè)計,要充分考慮到數(shù)據(jù)的存儲需求并充分利用不同數(shù)據(jù)類型的優(yōu)勢來選擇存儲數(shù)據(jù)類型。 對于不同專業(yè)的學(xué)生要評測出真實的水平,測試系統(tǒng)題型應(yīng)該與學(xué)生 所 學(xué)專業(yè)設(shè)置的 課程 掛鉤,并且有難易程度 的過度 。從用戶的使用感受考慮,系統(tǒng)設(shè)計時應(yīng)該盡量以 使用 簡單、 操作 一目了然、界面友好、有交互性為主。 根據(jù) 軟件工程 中軟件設(shè)計的抽象與 逐步求精原則 [12],先從系統(tǒng)的整個結(jié)構(gòu)出發(fā)來設(shè)計系統(tǒng)總體架構(gòu)設(shè)計,再設(shè)計系統(tǒng)需要實現(xiàn) 的 功能模塊、系統(tǒng)界面、數(shù)據(jù)庫表 等。 15 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 4 系統(tǒng)設(shè)計 系統(tǒng)設(shè)計時站在對系統(tǒng)規(guī)劃的角度來 考慮系統(tǒng)該如何實現(xiàn) 、如何將需求轉(zhuǎn)換為軟件設(shè)計的問題。如果對用戶的需求誤解了將對以后的系統(tǒng)的設(shè)計和實現(xiàn)造成很大的誤導(dǎo),并且不好改動 ,所以這一步需謹(jǐn)慎 。 小結(jié) 系統(tǒng)需求分析需要注意很多原則,避免出現(xiàn)的需求出現(xiàn)沖突。當(dāng)用戶要管理的表格中數(shù)據(jù)為空時,系統(tǒng)不顯示數(shù)據(jù)。 學(xué)生信息管理用例說明: 前置條件:管理員合法登陸,進(jìn)入管理員后臺管理首頁 。 系統(tǒng)管理員實體具有的功能如圖 34 所示。 基本事件流: ( 1) 輸入用戶名、密碼 和用戶身份 ( 2) 點擊“登錄”,系統(tǒng)通過對用戶信息驗證和數(shù)據(jù)庫中用戶信息的對比檢測用戶的合法性,如果用戶合法則進(jìn)入教師后臺管理首頁 ( 3) 教師點擊“學(xué)生測試成績”菜單下的“查看測試成績”,系統(tǒng)查找到學(xué)生測試成績,提取學(xué)生測試信息返回顯示 備選事件流:學(xué)生未測試則提示學(xué)生尚未有測試結(jié)果。 11 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 v i e w _ t h e s i sa d d _ t h e s i sd e l e t e _ t h e s i su p d a t e _ t h e s i sc h a n g e _ p a s s w o r dv i e w _ p e r s o n a l _ i n f o rl o g o u tl o g i nd i s t r i b u t e _ t h e s i sm a n a g e _ t h e s i s i n c l u d e e x t e n d e x t e n d e x t e n d m a n a g e _ a p p l y _ i n f o r m a t i o nd i s t r i b u t e _ t h e s i sv i e w _ s t u d e n t _ t e s t _ r e s u l tm a n a g e _ p e r s o n a l _ i n f o r e x t e n d e x t e n d m a n a g e _ s t u d e n t _ p a p e rt e a c h e r 圖 33 教師用例圖 teacher(教師)的用例有: login: 登陸 系統(tǒng) logout: 退出系統(tǒng) distribute_thesis:分配課題 manage_student_paper: 管理學(xué)生論文 fill_in_thesis_requirement:填寫課題要求 課程 view_student_test_result:查看學(xué)生測試結(jié)果 manage_apply_information:管理學(xué)生 預(yù)選情況 manage_thesis:管理課題 add _thesis:添加課題 delete_thesis:刪除課題 update_thesis:更新課題 view_thesis:查看課題 manage_personal_infor:管理個人信息 change_password:修改密碼 view_personal_infor:查看個人信息 教師的主要功能給出選題內(nèi)容及建議,通過查看學(xué)生的測試結(jié)果和測試報告了解學(xué)生情況。 基本事件流: ( 1) 輸入用戶名、密碼和用戶身份 ( 2) 點擊 “ 登錄 ” ,系統(tǒng)通過對用戶信息驗證和數(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)測試的頁面后置條件:用戶測試完成,得到測試結(jié)果和測試報告。 extract_questionsanswer_questionssubmit_test_paperupload_thesisview_personal_inforchange_passworddownload_thesisloginlogoutmanage_thesisextendextendapply_teachersave_test_reportview_test_reporttestingincludeincludeincludemanage_personal_inforextendextendview_test_resultstudent 圖 32 學(xué)生用例圖 student(學(xué)生)的用例有: login:登陸 系統(tǒng) logout:退出系統(tǒng) testing:測試 extract_questions:抽取試題 answer_questions:回答測題 submit_test_paper:提交考卷 manage_personal_infor: 管理個人信息 view_personal_infor:查看個人信息 change_password:修改密碼 view_test_result:查看測試結(jié)果 view_test_report:查看測試報告 save_test_report:保存測試報告 manage_thesis:管理論文 upload_thesis:上傳論文 download_thesis:下載已批改論文 apply_teacher:預(yù)選 導(dǎo)師 對于學(xué)生的功能可以看到選題測試功能包括:抽取試題、回答問題、提交答卷用例。所有用戶使用系統(tǒng)時必須先登錄,學(xué)生和教師的部分必填的個人信息要導(dǎo)入到系統(tǒng)中,教師在學(xué)生測試之前要完成對課題的設(shè)置和課題建議工作。由于本系統(tǒng)與其他系統(tǒng)和進(jìn)程沒有直接的聯(lián)系,是一個獨立的系統(tǒng),所以系統(tǒng)主要參與的角色分為三個:學(xué)生、教師和系統(tǒng)管理員。 圖 31 功能模塊圖 每個功能模塊之間是相互獨立的。為了能夠?qū)崿F(xiàn)學(xué)生的專業(yè)知識掌握能力和動手能力的測試、教師通過學(xué)生的測試 成績 來了解學(xué)生綜合能力,系統(tǒng)管理員對系統(tǒng)的后臺數(shù)據(jù)庫進(jìn)行管理,系統(tǒng)應(yīng)該分別對這 三個角色的功能進(jìn)行實現(xiàn)。 該系統(tǒng)使用應(yīng)該盡量簡單,容易被理解。教師可以從系統(tǒng)中 查看預(yù)先選擇了自己的 學(xué)生的測試 成績 。 為了保證系統(tǒng)能發(fā)揮其作用,系統(tǒng)管理員要把所有學(xué)生和教師信息和測試用題庫按照數(shù)據(jù)庫相應(yīng)的表的要求 存入數(shù)據(jù)庫中 ,導(dǎo)師在學(xué)生測試之前應(yīng)該提供所有 可選的 課題 和 課題建議 和每個課題特別要求哪些課程信息 到系統(tǒng)。同時也為教師了解學(xué)生具體情況提供參考,確保畢業(yè)論文(設(shè)計)選題工作的順利開展。 系統(tǒng)需求分析的目的在與開發(fā)出高質(zhì)量和具體的需求 ,為軟件設(shè)計和實現(xiàn)提供依據(jù)。 7 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 3 系統(tǒng) 需求分析 系統(tǒng)需求分析 是 在需求獲取結(jié)束之后進(jìn)行的,主要是根據(jù)獲取的需求提煉、分析 和 仔細(xì)審查收集到的需求,以確保項目參與者都明白其含義并 分析每個需求與其他需求的關(guān)系, 找出其中的錯誤、遺漏 、重疊 、不一致 或其他不足的地方 [10]。 Myeclipse 的高度集成性使得與其它軟件的合作性比較好 。 小結(jié) 在選擇開發(fā)和設(shè)計使用的工具時 并不是選擇最好的而選擇的是比較適合本系統(tǒng) 的工具 。 Rational 可以運行在 WINDOWS 操作系統(tǒng)下,其主要的特點有: ( 1) 保證模型和代碼高度一致,它實現(xiàn)了正向和逆向和雙向工程。利用 Rational Rose 可以建立用 UML(統(tǒng)一建模語言) 描述的 軟件系統(tǒng)模型,而且可以自動生成和維護 C++、 Java、 Visual Basic 和 Oracle 等語言和系統(tǒng)的代碼。 隨后又出現(xiàn)了 Myeclipse 和 版本, 版本已經(jīng)不需要配置 Tomcat,只需安裝好 ,而 Struts2的 支持。系統(tǒng)開發(fā)時使用的是 Myeclipse 版本,從 Myeclipse 版本就增加了 UML 雙向建 模工具、可 5 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 視化的 Hibernate/ORM 工具、 Web services 支持和 Oracle 數(shù)據(jù)庫開發(fā)等。對于一些代碼如 JavaBean 中的 Get 和 Set 方法可以自動生成相應(yīng)的代碼,節(jié)省了工作量。 在 Myeclipse 下可以對系統(tǒng)進(jìn)行編碼、調(diào)試、測試和發(fā)布 ,另外支持 html 的所有標(biāo)記。 而開發(fā)的系統(tǒng)對數(shù)據(jù)的查詢和速度要求比較大,所以使用 Mysql 數(shù)據(jù)庫更加適合本系統(tǒng)。 Access 數(shù)據(jù)庫 適合數(shù)據(jù)量小的數(shù)據(jù)存儲,但數(shù)據(jù)量太大時會造成服務(wù)器死機 有 時 甚至服務(wù)器崩潰 。如: char 提供的是定長的數(shù)據(jù)存儲類型使得檢索該類型的數(shù)據(jù)比較快,varchar 類型的數(shù)據(jù)可以保存變長的字符串,通過設(shè)置其最大可存儲的數(shù)據(jù)的長度可以在不知道數(shù)據(jù)長度的情況下存儲任何小于該最大長度的字符串 ; ( 4) 查詢功能 很 強大, 支持 SELECT 和 WHERE 語句的 count()、 avg()、 min()、sum()函數(shù)和 order by 等命令,使得檢索時可以進(jìn)行一些運算,對檢索出來的結(jié)果可以進(jìn)行一些處理 ; ( 5) 支持多個用戶對數(shù)據(jù)庫的同時訪問。 對數(shù)據(jù)庫不是十分了解的用戶使用起來比較簡單 ; ( 2) 不僅在 WINDOWS 操作系統(tǒng)還可以在 LINUX、 UNIX、 SUN OS 等 操作系統(tǒng)上使用 ; ( 3) Mysql 提供了不同的數(shù)據(jù)類型供選擇, 支持所有的 SQL 數(shù)值類型。 雖然是免費的但是與同類商業(yè)用途的數(shù)據(jù)庫比并不遜色。 Mysql 簡介 Mysql 是目前非常流行的 SQ