【文章內(nèi)容簡(jiǎn)介】
e n t _ t e s t _ r e s u lt 圖 33 教師用例圖 teacher(教師)的用例有: login:登陸系統(tǒng) logout:退出系統(tǒng) attribute_thesises:分配課題 manage_student_thesis:管理學(xué)生論文 fill_in_thesis_requirement:填寫(xiě)課題要求課程 view_student_test_result:查看學(xué)生測(cè)試結(jié)果 manage_apply_information:管理學(xué)生預(yù)選情況 manage_thesis:管理課題 add _thesis:添加課題 12 delete_thesis:刪除課題 update_thesis:更新課題 view_thesis:查看課題 manage_personal_infor:管理個(gè)人信息 change_password:修改密碼 view_personal_infor:查看個(gè)人信息 教師的主要功能給出選題內(nèi)容及建議,通過(guò)查看學(xué)生的測(cè)試結(jié)果和測(cè)試報(bào)告了解學(xué)生情況。 查看學(xué)生測(cè)試結(jié)果用例說(shuō)明: 前置條件:用戶登錄成功,學(xué)生完成測(cè)試。 基本事件流: 1. 輸入用戶名、密碼和用戶身份 2. 點(diǎn)擊“登錄”,系統(tǒng)通過(guò)對(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é)果。 后置條件:顯示學(xué)生測(cè)試成績(jī) 系統(tǒng)管理員實(shí)體具有的功能如圖 34 所示。 13 m a n a g e _ q u e s t io n s _ in f o rlo g ina d d _ u s e r _ in f o r d e le t e _ u s e r _ in f o ru p d a t e _ u s e r _ in f o rm a n a g e _ u s e r s _ in f o rs e le c t _ u s e r _ in f o ra d d _ q u e s t io n s _ in f o rd e le t e _ q u e s t io n s _ in f o ru p d a t e _ q u e s t io n s _ in f o rv ie w _ q u e s t io n s _ in f o rlo g o u tm a n a g e _ t h e s is _ in f o rv ie w _ t h e s is _ in f o r e x t e n d e x t e n d e x t e n d e x t e n d e x t e n d e x t e n d e x t e n d i n c l u d e i n c l u d e a d m in is t r a t o ru p d a t e _ p a s s w o r d 圖 34 管理員用例圖 administrator(管理員)的用例有: login:登陸系統(tǒng) logout:退出系統(tǒng) manage_users_infor:管理用戶信息 add_user_infor:添加用戶信息 delete_user_infor:刪除用戶信息 update_user_infor:更新用戶信息 select_user_infor:查找用戶信息 manage_questions_infor:管理題庫(kù) add_questions_infor:添加測(cè)題 delete_questions_infor:刪除測(cè)題 update_questions_infor:更新測(cè)題 view_questions_infor:查找測(cè)題 manage_thesis_infor:管理課題信息 view_thesis_infor:查看課題信息 14 update_password:修改密碼 管理員的主要功能之一是對(duì)學(xué)生信息進(jìn)行管理。 學(xué)生信息管理用例說(shuō)明: 前置條件:管理員合法登陸,進(jìn)入管理員后臺(tái)管理首頁(yè) 基本事件流: 1. 單擊“學(xué)生信息管理”菜單下的“查看學(xué)生信息”菜單,系統(tǒng)從數(shù)據(jù)庫(kù) 選出所有學(xué)生信息在頁(yè)面顯示 2. 單擊一條學(xué)生信息記錄后的“編輯”按鈕,對(duì)信息進(jìn)行修改單擊“確定” 3. 單擊一條學(xué)生信息記錄后面的“刪除”按鈕,對(duì)信息進(jìn)行刪除 備選事件流:當(dāng)用戶表中數(shù)據(jù)的外鍵被修改時(shí),如果與外鍵所在基本表中數(shù)據(jù)不符合,則無(wú)法修改。當(dāng)用戶要管理的表格中數(shù)據(jù)為空時(shí),系統(tǒng)不顯 示數(shù)據(jù)。 后置條件:數(shù)據(jù)管理成功,數(shù)據(jù)庫(kù)保存修改后的表信息,數(shù)據(jù)庫(kù)刪除記錄。 小結(jié): 系統(tǒng)需求分析需要注意很多原則,避免出現(xiàn)的需求出現(xiàn)沖突。通過(guò)分析得到的需求還必須與用戶所要的需求相一致。如果對(duì)用戶的需求誤解了將對(duì)以后的系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)造成很大的誤導(dǎo),并且不好改動(dòng),所以這一步需謹(jǐn)慎。通過(guò)對(duì)系統(tǒng)進(jìn)行需求分析,對(duì)系統(tǒng)的實(shí)現(xiàn)更加細(xì)化和明確。 15 4 系統(tǒng)設(shè)計(jì) 系統(tǒng)設(shè)計(jì)時(shí)站在對(duì)系統(tǒng)規(guī)劃的角度來(lái)考慮系統(tǒng)該如何實(shí)現(xiàn)、如何將需求轉(zhuǎn)換為軟件設(shè)計(jì)的問(wèn)題。系統(tǒng)設(shè)計(jì)分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。根據(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ù)表等。 設(shè)計(jì)目標(biāo)及原則 隨著科技的發(fā)展,越來(lái)越多的自動(dòng)化的產(chǎn)品被應(yīng)用于生活中,特別是年輕人對(duì)這些數(shù)字化產(chǎn)品特別熱衷,這樣使得現(xiàn)在的孩子們都不愿意去使用不易理解,使用復(fù)雜的產(chǎn)品。從用戶的使用感受考慮,系統(tǒng)設(shè)計(jì)時(shí)應(yīng)該盡量以使用簡(jiǎn)單、操作一目了然、界面友好、有交互性為主?;谥饕脩魹閷W(xué)生團(tuán)體,所以界面風(fēng)格上設(shè)計(jì)的要清新,美觀。對(duì)于不同專(zhuān)業(yè)的學(xué)生要評(píng)測(cè)出真實(shí)的水平,測(cè)試系統(tǒng)題型應(yīng)該與學(xué)生所 學(xué)專(zhuān)業(yè)設(shè)置的課程掛鉤,并且有難易程度的過(guò)度。軟件總體框架要以 JavaEE思想來(lái)設(shè)計(jì)。對(duì)于數(shù)據(jù)庫(kù)的設(shè)計(jì),要充分考慮到數(shù)據(jù)的存儲(chǔ)需求并充分利用不同數(shù)據(jù)類(lèi)型的優(yōu)勢(shì)來(lái)選擇存儲(chǔ)數(shù)據(jù)類(lèi)型。最終的系統(tǒng)能夠?qū)崿F(xiàn)所有需求獲取階段得到的需求,主要是學(xué)生在線測(cè)試和對(duì)測(cè)試進(jìn)行分析的功能以及論文交流的功能,能夠使老師通過(guò)系統(tǒng)了解學(xué)生的優(yōu)勢(shì)和劣勢(shì),對(duì)導(dǎo)師真正出畢業(yè)設(shè)計(jì)選題提供參考。系統(tǒng)設(shè)計(jì)還應(yīng)該以易于實(shí)現(xiàn)、易于測(cè)試、易于維護(hù)為基本理念。 系統(tǒng)設(shè)計(jì)的原則是指導(dǎo)設(shè)計(jì)過(guò)程的。為了能設(shè)計(jì)出符合需求的系統(tǒng),設(shè)計(jì)時(shí)要遵守以下原則: ( 1)結(jié)構(gòu)應(yīng)該 分層次,從而建立軟件成分之間的控制 [6]。 ( 2)設(shè)計(jì)應(yīng)當(dāng)模塊化,邏輯上將軟件劃分為完成特定功能或子功能的部件。 ( 3)設(shè)計(jì)應(yīng)該包含數(shù)據(jù)抽象和過(guò)程抽象 ( 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)的可靠性。 系統(tǒng)總體架構(gòu)設(shè)計(jì) 系統(tǒng)采用的是 JavaEE 技術(shù),總共分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層三層來(lái)考慮。系統(tǒng)體系結(jié)構(gòu)如下圖 41 所示。 圖 41 體系結(jié)構(gòu)圖 通過(guò) Web 瀏覽器來(lái)作為 MVC 架構(gòu)的視圖層。 Web 表示層用于獲取提交的數(shù)據(jù)、顯示請(qǐng)求的業(yè)務(wù)功能返回的數(shù)據(jù)。業(yè)務(wù)邏輯層是處于承上啟下的位置,它完成了 DAO層的調(diào)用又被 Web 表示層調(diào)用。 DAO 層調(diào)用 Bean 中對(duì)象實(shí)現(xiàn)持久化方法,對(duì)關(guān)系數(shù)據(jù)庫(kù)進(jìn)行操作。系統(tǒng)運(yùn)作流程為 Web 瀏覽器發(fā)送 HTTP 請(qǐng)求給 JSP 頁(yè)面,在 JSP頁(yè)面中請(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ù)庫(kù)的操作,操作完成后將數(shù)據(jù)庫(kù)的數(shù)據(jù)返回給 DAO 層中的方法, DAO 層再返回?cái)?shù)據(jù)給 Service層, Service 層將數(shù)據(jù)返回給 JSP 頁(yè)面, JSP 通過(guò) Struts2 標(biāo)簽、 HTML 標(biāo)記來(lái)顯示數(shù)Web 瀏覽器 Web 表示層( JSP、 Action) 業(yè)務(wù)邏輯層( Service) DAO 層( DAO) 數(shù)據(jù)庫(kù) Struts 技術(shù) HTTP 請(qǐng)求 HTTP 響應(yīng) 17 據(jù),返回 HTTP 響應(yīng)到 Web 瀏覽器。此時(shí)一次請(qǐng)求服務(wù)完成。 系統(tǒng) 數(shù)據(jù)庫(kù)設(shè)計(jì) 根據(jù)對(duì)系統(tǒng)的分析得到如下的實(shí)體關(guān)系圖如下圖 42 所示: 學(xué) 生屬 于屬 于專(zhuān) 業(yè)學(xué) 院課 程測(cè) 試屬 于要 求課 題提 出教 師屬于論 文 指 導(dǎo)nm nmnn1n11n1n1n設(shè) 置問(wèn) 題1n1預(yù) 選 老 師nm 圖 42 系統(tǒng) ER圖 從圖中可以看到各個(gè)實(shí)體間的聯(lián)系。關(guān)系型數(shù)據(jù)庫(kù)要滿足三類(lèi)完整性約束,即實(shí)體完整性,參照完整性,用戶自 定義的完整性 [7]。通過(guò)這三個(gè)約束將實(shí)體型轉(zhuǎn)換得到關(guān)系模式即為數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì): 學(xué)生( 學(xué)號(hào) ,學(xué)生姓名,登陸密碼,性別,專(zhuān)業(yè)號(hào),郵箱號(hào),測(cè)試標(biāo)記) 課程( 課程號(hào) ,課程名,專(zhuān)業(yè)號(hào)) 教師( 教師號(hào) ,教師姓名,登陸密碼,性別,允許指導(dǎo)學(xué)生數(shù),學(xué)院號(hào),郵箱號(hào)) 管理員( 管理員號(hào) ,管理員姓名,登陸密碼) 專(zhuān)業(yè)( 專(zhuān)業(yè)號(hào) ,專(zhuān)業(yè)名,學(xué)院號(hào)) 學(xué)院( 學(xué)院號(hào) ,學(xué)院名) 學(xué)生測(cè)試課程( 學(xué)號(hào) , 課程號(hào) ,課程名,得分,測(cè)試日期) 問(wèn)題( 問(wèn)題編號(hào) ,問(wèn)題內(nèi)容,選項(xiàng) A 內(nèi)容,選項(xiàng) B 內(nèi)容,選項(xiàng) C 內(nèi)容,選項(xiàng) D 內(nèi)容, 18 答案選項(xiàng),分?jǐn)?shù),課程號(hào)) 論 文指導(dǎo)( 學(xué)號(hào) ,論文號(hào),論文主題,學(xué)生論文存放位置,更新標(biāo)志,學(xué)生上傳日期,教師號(hào),教師論文存放位置,教師上傳日期) 課題( 課題號(hào) ,課題名,出題日期,課題介紹,課題研究建議,教師號(hào)) 課題要求( 課題號(hào) ,課題名, 課程號(hào) ,課程名) 預(yù)選老師( 學(xué)號(hào) , 教師號(hào) ,預(yù)選標(biāo)志,教師同意標(biāo)志,拒絕原因) ( Web)表示層設(shè)計(jì) 表示層是服務(wù)器與用戶之間的接口。根據(jù)所見(jiàn)即所得原理,表示層將業(yè)務(wù)邏輯層返回的數(shù)據(jù)以用戶能理解的形式在頁(yè)面中顯示,用戶通過(guò)表示層提供的接口輸入數(shù)據(jù),通過(guò)頁(yè)面來(lái)傳遞數(shù)據(jù)到后臺(tái)業(yè)務(wù)邏輯層進(jìn)行處理。 本系 統(tǒng)的表示層主要通過(guò)不同的 Action 控制在 JSP 頁(yè)面體現(xiàn)。其中又用到了Struts2 的標(biāo)簽和 Ajax 技術(shù)。 Struts2 標(biāo)簽使得數(shù)據(jù)顯示更加更加方便,代碼量減少,同時(shí)數(shù)據(jù)傳輸方便。當(dāng)業(yè)務(wù)邏輯層將數(shù)據(jù)傳遞給相應(yīng)的 Action 后,通過(guò) 中的映射來(lái)跳轉(zhuǎn)到相應(yīng)的 JSP 頁(yè)面,在頁(yè)面中使用 Struts2 標(biāo)簽就可以將傳遞過(guò)來(lái)的參數(shù)顯示在頁(yè)面中。用戶在使用系統(tǒng)時(shí)更希望界面簡(jiǎn)單,操作簡(jiǎn)便,有盡量少刷新操作和等待時(shí)間。 Ajax 技術(shù)實(shí)現(xiàn)了瀏覽器與服務(wù)器之間數(shù)據(jù)的異步傳輸, Ajax 中是使用 JavaScript 來(lái)傳遞數(shù)據(jù)給業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層將處理后要返回的數(shù)據(jù)傳回給請(qǐng)求數(shù)據(jù)的客戶端 JSP 頁(yè)面,頁(yè)面再通過(guò) DOM( Document Object Model)顯示新數(shù)據(jù),在整個(gè)過(guò)程中用戶可以不手動(dòng)刷新頁(yè)面。為了更好的實(shí)現(xiàn)導(dǎo)航的功能,系統(tǒng)表示層設(shè)計(jì)時(shí),讓不同角色的用戶的操作都顯示在導(dǎo)航欄,當(dāng)頁(yè)面跳轉(zhuǎn)時(shí),導(dǎo)航欄不會(huì)改變位置,而請(qǐng)求的頁(yè)面則顯示在一個(gè)固定的框架中。在頁(yè)面顯示數(shù)據(jù)時(shí)傳遞的是對(duì)象數(shù)組。 根據(jù)需求分析得到學(xué)生登陸后的業(yè)務(wù)功能實(shí)現(xiàn)如下活動(dòng)圖 43 所示。 19 登陸開(kāi)始測(cè)試查看個(gè)人信息是否已經(jīng)測(cè)試?進(jìn)行測(cè)試是查看測(cè)試成績(jī)是否測(cè)試完畢?否是查看測(cè)試報(bào)告退出系統(tǒng)預(yù)選老師否 圖 43 學(xué)生活動(dòng)圖 當(dāng)學(xué)生為登陸后可以進(jìn)行測(cè)試或查看個(gè) 人信息,如果還未進(jìn)行測(cè)試則測(cè)試成績(jī)、測(cè)試報(bào)告、預(yù)選老師業(yè)務(wù)都無(wú)數(shù)據(jù)顯示,如果已經(jīng)測(cè)試則可以查看到測(cè)試成績(jī)、測(cè)試報(bào)告、預(yù)選老師、退出系統(tǒng)。 學(xué)生選題活動(dòng)圖如圖 44 所示。 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)的老師。老師通過(guò)查看預(yù)選了課題的學(xué)生的測(cè)試成績(jī)決定是否同意學(xué)生預(yù)選。老師同意學(xué)生預(yù)選則可以分配課題給學(xué)生,學(xué)生可以查看課題信息;拒絕則給出拒絕信息,學(xué)生可以查看老師拒絕信息。 業(yè)務(wù)邏輯層設(shè)計(jì) 業(yè)務(wù)邏輯層( Service 層)主要是針對(duì) 不同的業(yè)務(wù)需求來(lái)調(diào)用數(shù)據(jù)訪問(wèn)層( DAO層)的方法,從而實(shí)現(xiàn)不同業(yè)務(wù)需求功能。業(yè)務(wù)邏輯層提供了一系列可提供給用戶的服務(wù),是對(duì)用戶問(wèn)題提供解決的方法。業(yè)務(wù)邏輯層的實(shí)現(xiàn)是通過(guò)調(diào)用數(shù)據(jù)訪問(wèn)層的方法來(lái)實(shí)現(xiàn)的。業(yè)務(wù)邏輯層不需要知道如何操作具體數(shù)據(jù),只要知道通過(guò) DAO 層的什么方法得到什么