【正文】
。對后期的系統(tǒng)維護(hù)提供了很大的便利,對系統(tǒng)的脈絡(luò)也更加清晰。視圖層由 JSP 建立,應(yīng)用 Struts 的標(biāo)簽庫。 Mysql 簡介 Mysql 是目前 非常流行的 SQL 語言數(shù)據(jù)庫,是開放源代碼的非商用的關(guān)系型數(shù) 4 據(jù)庫。雖然是免費的但是與同類商業(yè)用途的數(shù)據(jù)庫比并不遜色。對數(shù)據(jù)庫不是十分了解的用戶使用起來比較簡單。 ( 3) Mysql 提供了不同的數(shù)據(jù)類型供選擇,支持所有的 SQL 數(shù)值類型。如: char 提供的是定長的數(shù)據(jù)存儲類型使得檢索該類型的數(shù)據(jù)比較快,varchar 類型的數(shù)據(jù)可以保存變長的字符串,通過設(shè)置其最大可存儲的數(shù)據(jù)的長度可以在不知道數(shù)據(jù)長度的情況下存儲任何小于該最大長度的字符串。 ( 5)支持多個用戶對數(shù)據(jù)庫的同時訪問。本系統(tǒng)是面向信息學(xué)院所有學(xué)生和教師的,要存儲學(xué)生信息和教師信息以及題庫信息,不適合使用 Access 數(shù)據(jù)庫。 Myeclipse簡介 Myeclipse 是企業(yè)級工作平臺是對 Eclipse IDE 的擴(kuò)展,它是功能非常豐富的JavaEE 的集成開發(fā)環(huán)境,在 Myeclipse 下可以對系統(tǒng) 進(jìn)行編碼、調(diào)試、測試和發(fā)布,另外支持 html 的所有標(biāo)記。對于一些代碼如 JavaBean 中的 Get 和 Set 方法可以自 5 動生成相應(yīng)的代碼,節(jié)省了工作量。系統(tǒng)開發(fā)時使用的是 Myeclipse 版本,從 Myeclipse 版本就增加了 UML 雙向建模工具、可視化的 Hibernate/ORM 工具、 Web services 支持和 Oracle 數(shù)據(jù)庫開發(fā)等。隨后又出現(xiàn)了 Myeclipse 和 版本, 版本已經(jīng)不需要配置 Tomcat,只需安裝好 ,而 Struts2的支持。利用 Rational Rose 可以建立用 UML(統(tǒng)一建模語言)描述的軟件系統(tǒng)模型,而且可以自動生成和維護(hù) C++、 Java、 Visual Basic 和 Oracle 等語言和系統(tǒng)的代碼。 Rational 可以運行在 WINDOWS 操作系統(tǒng)下,其主要的特點有: ( 1)保證模型和代碼高度一致,它實現(xiàn)了正向和逆向和雙向工程。 ( 2)支持多種語言, Rational Rose 支持包括 C++、 Visual C++、 Java 等語言,為 Rational Rose 用戶提供了便利。 ( 4)支持模型的 Inter 發(fā)布, Rose 中有 Inter Web Publisher 能將模型發(fā)布為 HTML 版本,使得其他人員可以通過 IE 等瀏覽器瀏覽模型。 ( 6)支持關(guān)系型數(shù)據(jù)庫的建模, Rose 能為 SQL Server、 Oracle 等支持標(biāo)準(zhǔn) DDL的數(shù)據(jù)庫自動生成數(shù)據(jù)描述語言。 Struts 使得開發(fā)的項目層次分明,便于管理。 Rational Rose 在建立系統(tǒng)模型過中起到了非常重要的作用。通過分析得到系統(tǒng)可以實現(xiàn)的范圍和實現(xiàn)能力,根據(jù)用戶的需求對需求進(jìn)行排序。 系統(tǒng)概述 基于 JavaEE 的畢業(yè)設(shè)計選題測試及管理系統(tǒng)要求學(xué)生在設(shè)計選題前期參加平臺提供的測試了 解自己的專業(yè)知識掌握能力和動手能力,以便選題。此外系統(tǒng)也要解決畢業(yè)設(shè)計的相關(guān)管理業(yè)務(wù)功能,包括學(xué)生與教師在畢業(yè)設(shè)計制作期間的論文交流功能。系統(tǒng)的功能應(yīng)該包括所有用戶的合法登陸,系統(tǒng)根據(jù)學(xué)生所在專業(yè)設(shè)置的課程出題,從學(xué)生的測試結(jié)果來判斷和 推薦適合該學(xué)生做的課題和適合選擇的老師。在畢業(yè)設(shè)計制作期間,學(xué)生可以通過系統(tǒng)來與導(dǎo)師交流制作的論文等。 系統(tǒng)功能分析 系統(tǒng)功能分析可以幫助將整個系統(tǒng)的任務(wù)細(xì)化成較小的模塊,將一個大問題進(jìn)行分解。系統(tǒng)按角色的功能分為三大功能模塊,如圖 31 所示。 學(xué)生操作 教師操作 管理員操作 選題測試 管理個人信息 上傳論文 預(yù)選老師 保存測試報告 管理題庫信息 管理用戶信息 管理員登陸 查看測試結(jié)果 畢業(yè)設(shè)計選題測試及管理系統(tǒng)功能 下載教師批改論文 修改密碼 管理課題信息 學(xué)生登陸 管理課程信息 查看學(xué)生測試成績 管理學(xué) 生預(yù)選信息 教師登陸 管理個人信息 管理學(xué)生論文 管理課題信息 分配課題 9 系統(tǒng)用例建模 系統(tǒng)的角色是指系統(tǒng)外部的實體,一般系統(tǒng)參與者為系統(tǒng)用戶、與所建造系統(tǒng)交互的其他系統(tǒng)和一些可以運行的進(jìn)程。對于不同角色使用該系統(tǒng)是要保證系統(tǒng)部分信息已經(jīng)完善,部分用例有時間上的優(yōu)先順序。 從系統(tǒng)概述可得到,學(xué)生參與者具有的功能如圖 32 所示。 選題測試用例說明: 前置條件:進(jìn)入主頁面,登錄系統(tǒng)。 教師實體具有的功能如圖 33 所示。 查看學(xué)生測試結(jié)果用例說明: 前置條件:用戶登錄成功,學(xué)生完成測試。 后置條件:顯示學(xué)生測試成績 系統(tǒng)管理員實體具有的功能如圖 34 所示。 學(xué)生信息管理用例說明: 前置條件:管理員合法登陸,進(jìn)入管理員后臺管理首頁 基本事件流: 1. 單擊“學(xué)生信息管理”菜單下的“查看學(xué)生信息”菜單,系統(tǒng)從數(shù)據(jù)庫 選出所有學(xué)生信息在頁面顯示 2. 單擊一條學(xué)生信息記錄后的“編輯”按鈕,對信息進(jìn)行修改單擊“確定” 3. 單擊一條學(xué)生信息記錄后面的“刪除”按鈕,對信息進(jìn)行刪除 備選事件流:當(dāng)用戶表中數(shù)據(jù)的外鍵被修改時,如果與外鍵所在基本表中數(shù)據(jù)不符合,則無法修改。 后置條件:數(shù)據(jù)管理成功,數(shù)據(jù)庫保存修改后的表信息,數(shù)據(jù)庫刪除記錄。通過分析得到的需求還必須與用戶所要的需求相一致。通過對系統(tǒng)進(jìn)行需求分析,對系統(tǒng)的實現(xiàn)更加細(xì)化和明確。系統(tǒng)設(shè)計分為概要設(shè)計和詳細(xì)設(shè)計。 設(shè)計目標(biāo)及原則 隨著科技的發(fā)展,越來越多的自動化的產(chǎn)品被應(yīng)用于生活中,特別是年輕人對這些數(shù)字化產(chǎn)品特別熱衷,這樣使得現(xiàn)在的孩子們都不愿意去使用不易理解,使用復(fù)雜的產(chǎn)品?;谥饕脩魹閷W(xué)生團(tuán)體,所以界面風(fēng)格上設(shè)計的要清新,美觀。軟件總體框架要以 JavaEE思想來設(shè)計。最終的系統(tǒng)能夠?qū)崿F(xiàn)所有需求獲取階段得到的需求,主要是學(xué)生在線測試和對測試進(jìn)行分析的功能以及論文交流的功能,能夠使老師通過系統(tǒng)了解學(xué)生的優(yōu)勢和劣勢,對導(dǎo)師真正出畢業(yè)設(shè)計選題提供參考。 系統(tǒng)設(shè)計的原則是指導(dǎo)設(shè)計過程的。 ( 2)設(shè)計應(yīng)當(dāng)模塊化,邏輯上將軟件劃分為完成特定功能或子功能的部件。 系統(tǒng)總體架構(gòu)設(shè)計 系統(tǒng)采用的是 JavaEE 技術(shù),總共分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層三層來考慮。 圖 41 體系結(jié)構(gòu)圖 通過 Web 瀏覽器來作為 MVC 架構(gòu)的視圖層。業(yè)務(wù)邏輯層是處于承上啟下的位置,它完成了 DAO層的調(diào)用又被 Web 表示層調(diào)用。系統(tǒng)運作流程為 Web 瀏覽器發(fā)送 HTTP 請求給 JSP 頁面,在 JSP頁面中請求某項業(yè)務(wù), JSP 將調(diào)用 Service 層對業(yè)務(wù)實現(xiàn)的功能函數(shù), Service 層在調(diào)用不同的 DAO 層中的方法, DAO 層每個被調(diào)用的方法則實現(xiàn)了對 數(shù)據(jù)庫的操作,操作完成后將數(shù)據(jù)庫的數(shù)據(jù)返回給 DAO 層中的方法, DAO 層再返回數(shù)據(jù)給 Service層, Service 層將數(shù)據(jù)返回給 JSP 頁面, JSP 通過 Struts2 標(biāo)簽、 HTML 標(biāo)記來顯示數(shù)Web 瀏覽器 Web 表示層( JSP、 Action) 業(yè)務(wù)邏輯層( Service) DAO 層( DAO) 數(shù)據(jù)庫 Struts 技術(shù) HTTP 請求 HTTP 響應(yīng) 17 據(jù),返回 HTTP 響應(yīng)到 Web 瀏覽器。 系統(tǒng) 數(shù)據(jù)庫設(shè)計 根據(jù)對系統(tǒng)的分析得到如下的實體關(guān)系圖如下圖 42 所示: 學(xué) 生屬 于屬 于專 業(yè)學(xué) 院課 程測 試屬 于要 求課 題提 出教 師屬于論 文 指 導(dǎo)nm nmnn1n11n1n1n設(shè) 置問 題1n1預(yù) 選 老 師nm 圖 42 系統(tǒng) ER圖 從圖中可以看到各個實體間的聯(lián)系。通過這三個約束將實體型轉(zhuǎn)換得到關(guān)系模式即為數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計: 學(xué)生( 學(xué)號 ,學(xué)生姓名,登陸密碼,性別,專業(yè)號,郵箱號,測試標(biāo)記) 課程( 課程號 ,課程名,專業(yè)號) 教師( 教師號 ,教師姓名,登陸密碼,性別,允許指導(dǎo)學(xué)生數(shù),學(xué)院號,郵箱號) 管理員( 管理員號 ,管理員姓名,登陸密碼) 專業(yè)( 專業(yè)號 ,專業(yè)名,學(xué)院號) 學(xué)院( 學(xué)院號 ,學(xué)院名) 學(xué)生測試課程( 學(xué)號 , 課程號 ,課程名,得分,測試日期) 問題( 問題編號 ,問題內(nèi)容,選項 A 內(nèi)容,選項 B 內(nèi)容,選項 C 內(nèi)容,選項 D 內(nèi)容, 18 答案選項,分?jǐn)?shù),課程號) 論 文指導(dǎo)( 學(xué)號 ,論文號,論文主題,學(xué)生論文存放位置,更新標(biāo)志,學(xué)生上傳日期,教師號,教師論文存放位置,教師上傳日期) 課題( 課題號 ,課題名,出題日期,課題介紹,課題研究建議,教師號) 課題要求( 課題號 ,課題名, 課程號 ,課程名) 預(yù)選老師( 學(xué)號 , 教師號 ,預(yù)選標(biāo)志,教師同意標(biāo)志,拒絕原因) ( Web)表示層設(shè)計 表示層是服務(wù)器與用戶之間的接口。 本系 統(tǒng)的表示層主要通過不同的 Action 控制在 JSP 頁面體現(xiàn)。 Struts2 標(biāo)簽使得數(shù)據(jù)顯示更加更加方便,代碼量減少,同時數(shù)據(jù)傳輸方便。用戶在使用系統(tǒng)時更希望界面簡單,操作簡便,有盡量少刷新操作和等待時間。為了更好的實現(xiàn)導(dǎo)航的功能,系統(tǒng)表示層設(shè)計時,讓不同角色的用戶的操作都顯示在導(dǎo)航欄,當(dāng)頁面跳轉(zhuǎn)時,導(dǎo)航欄不會改變位置,而請求的頁面則顯示在一個固定的框架中。 根據(jù)需求分析得到學(xué)生登陸后的業(yè)務(wù)功能實現(xiàn)如下活動圖 43 所示。 學(xué)生選題活動圖如圖 44 所示。老師通過查看預(yù)選了課題的學(xué)生的測試成績決定是否同意學(xué)生預(yù)選。 業(yè)務(wù)邏輯層設(shè)計 業(yè)務(wù)邏輯層( Service 層)主要是針對 不同的業(yè)務(wù)需求來調(diào)用數(shù)據(jù)訪問層( DAO層)的方法,從而實現(xiàn)不同業(yè)務(wù)需求功能。業(yè)務(wù)邏輯層的實現(xiàn)是通過調(diào)用數(shù)據(jù)訪問層的方法來實現(xiàn)的。對于數(shù)據(jù)訪問層而言,業(yè)務(wù)邏輯層主要充當(dāng)?shù)氖钦{(diào)度者的角色,而對( Web)表示層而言,業(yè)務(wù)邏輯層充當(dāng)?shù)氖潜徽{(diào)度的角色。 a p p ly I n f o rs t u N u m : S t ri n gs t u N a m e : S t ri n gt e a c h e rN u m : S t ri n gt e a c h e rN a m e : S t ri n ga p p ly F la g : in ta p p ro v e F la g : in tre j e c t R e a s on : S t ri n g+g e t S t u N u m ( ) : S t ri n g+s e t S t u N u m ( s t u N u m : S t ri n g )+g e t S t u N a m e ( ) : S t ri n g+s e t S t u N a m e ( s t u N a m e : S t ri n g )+g e t T e a c h e rN a m e ( ) : S t ri n g+s e t T e a c h e rN a m e ( t e a c h e rN a m e : S t ri n g )+g e t T e a c h e rN u m ( ) : S t ri n g+s e t T e a c h e rN u m ( t e a c h e rN u m : S t ri n g )+g e t A p p ly F la g ( ) : in t+s e t A p p ly F la g ( a p p ly F la g : in t )+g e t A p p ro v e F la g ( ) : in t+s e t A p p ro v e F la g ( a p p ro v e F la g : in t )+g e t R e j e c t R e a s on ( ) : S t ri n g+s e t R e j e c t R e a s on ( re j e c t R e a s on : S t ri n g )t e a c h e rt e a c h e rN u m : S t ri n gt e a c h e rN a m e : S t ri n gt e a c h e rP a s s w or d : S t ri n gt e a c h e rM a il: S t ri n gm a x S t u : in ti n s t it u t e N u m : S t ri n gs e x : in t+g e t S e x ( ) : in t+s e t S e x ( s e x : in t )+g e t T e a c h e rM a il( ) : S t ri n g+s e t T e a c h e rM a il( t e a c h e rM a il: S