【正文】
e rM a il( t e a c h e rM a il: 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 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 rP a s s w or d ( ) : S t ri n g+s e t T e a c h e rP a s s w or d ( t e a c h e rP a s s w or d : S t ri n g )+g e t M a x S t u ( ) : in t+s e t M a x S t u ( m a x S t u : in t )+g e t I n s t it u t e N u m ( ) : S t ri n g+s e t I n s t it u t e N u m ( in s t it u t e N u m : S t ri n g )s t u d e n ts t u N u m : S t ri n gs t u N a m e : S t ri n gs t u P a s s w or d : S t ri n gm a j or N u m : S t ri n gs t u M a il: S t ri n gs e x : in tt e s t F la g : in t+g e t S e x ( ) : in t+s e t S e x ( s e x : in t )+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 S t u P a s s w or d ( ) : S t ri n g+s e t S t u P a s s w or d ( s t u P a s s w or d : S t ri n g )+g e t M a j or N u m ( ) : S t ri n g+s e t M a j or N u m ( m a j or N u m : S t ri n g )+g e t S t u M a il( ) : S t ri n g+s e t S t u M a il( s t u M a il: S t ri n g )+g e t T e s t F la g ( ) : in t+s e t T e s t F la g ( t e s t F la g : in t )a p p ly I n f o r D I+s e t A p p ro v e F la g ( s t u N u m : S t ri n g , t e a c e rN u m : S t ri n g )+s e t A p p ly F la g ( s t u N u m : S t ri n g , t e a c h e rN u m : S t ri n g )+s e t R e j e c t R e a s on ( s t u N u m : S t ri n g , t e a c h e rN u m : S t ri n g , re j e c t R e a s on : S t ri n g )+f la g I s T ru e ( s t u N u m : S t ri n g )+s e a rc h S t u I s F a ls e ( )+s e a rc h S t u I s W a it ( )+s e a rc h B y T N ( t e a c h e rN u m : S t ri n g )+d e lA p p ly I n f or ( s t u N u m : S t ri n g )+s e a rc h B y S t u N u m ( s t u N u m : S t ri n g )+s e a rc h B y S N T N ( s t u N u m : S t ri n g , t e a c h e rN u m : S t ri n g )+u p d a t e S t u T e a ( S t ri n g s t u N u m , S t ri n g s t u N a m e , S t ri n g t e a c h e rN u m , S t ri n g t e a c h e rN a m e )+d e lO t h e rA p p ly I n f or ( s t u N u m : S t ri n g , a p p ro v e F la g : in t )+d e lA p p ly I n f or B y T N ( t e a c h e rN u m : S t ri n g )a p p ly I n f o r SI+d e lA p p ly I n f or ( s t u N u m : S t ri n g )+f la g I s T ru e ( s t u N u m : S t ri n g )+s e a rc h S t u I s F a ls e ( )+s e t A p p ly F la g ( s t u N u m : S t ri n g , t e a c h e rN u m : S t ri n g )+s e t A p p ro v e F la g ( s t u N u m : S t ri n g , t e a c h e rN u m : S t ri n g , re j e c t R e a s on : S t ri n g )+d e lO t h e rA p p ly I n f or ( s t u N u m : S t ri n g , a p p ro v e F la g : in t )+s e t R e j e c t R e a s on ( s t u N u m : S t ri n g , t e a c h e rN u m : S t ri n g , re j e c t R e a s on : S t ri n g )+s e a rc h B y S t u N u m ( s t u N u m : S t ri n g )+s e a rc h B y S N T N ( s t u N u m : S t ri n g , t e a c h e rN u m : S t ri n g )+s e a rc h B y T N ( t e a c h e rN u m : S t ri n g )+u p d a t e S t u T e a ( s t u N u m : S t ri n g , s t u N a m e : S t ri n g , t e a c h e rN u m : S t ri n g , t e a c h e rN a m e : S t ri n g )+w h e n S c or e I s B a d ( s t u N u m : S t ri n g )0. . nu s e 圖 45 預(yù)選導(dǎo)師過程使用的類圖 Service 層的 applyInforSI 對象中的 setApplyFlag()方法為預(yù)選 導(dǎo)師時(shí)調(diào)用的方法,該方法調(diào)用了 DAO 層 applyInforDI 對象的 setApplyFlag()方法。 DAO 層調(diào)用了Bean 實(shí)體類,使用 SQL 語句來操作數(shù)據(jù)庫,為了體現(xiàn)類的封裝性,實(shí)現(xiàn)時(shí)則是調(diào)用封裝好的數(shù)據(jù)庫操作對象中的方法來實(shí)現(xiàn)對數(shù)據(jù)庫的操作。 圖 46 DAO 層設(shè)計(jì)的類文件 : 對管理員表進(jìn)行操作 : 對學(xué)生預(yù)選導(dǎo)師表進(jìn)行操作 : 對課程表進(jìn)行操作 : 對學(xué)院表進(jìn)行操作 : 對專業(yè)表進(jìn)行操作 : 對上下頁跳轉(zhuǎn)進(jìn)行判斷 : 對測題表進(jìn)行操作 : 對學(xué)生測試課程表進(jìn)行操作 : 對學(xué)生表進(jìn)行操作 : 對教師表進(jìn)行操作 23 : 對課題表進(jìn)行操作 : 對課題要求表進(jìn)行操作 DAO 層與數(shù)據(jù)庫操作對象間的類圖如圖 47 所示。 questionDI 中對測題 question 對象進(jìn)行了實(shí)例化作為 DAO 層的返回參數(shù)。系統(tǒng)設(shè)計(jì)的好壞直接影響系統(tǒng)實(shí)現(xiàn)時(shí)的復(fù)雜度,如果設(shè)計(jì)時(shí)對需求分析不充分則業(yè)務(wù)功能模塊就會缺少從而影響系統(tǒng)功能。對數(shù)據(jù)庫每個(gè)字段 24 的設(shè)計(jì)意義也更明確。 5 系統(tǒng)實(shí)現(xiàn) 系統(tǒng)實(shí)現(xiàn)是系統(tǒng)設(shè)計(jì)之后的工作,是將系統(tǒng)設(shè)計(jì)轉(zhuǎn)換為可執(zhí)行的程序代碼的過程。系統(tǒng) 實(shí)現(xiàn)需要掌握系統(tǒng)開發(fā)工具的使用方法和程序設(shè)計(jì)語言,本系統(tǒng)主要應(yīng)用程序設(shè)計(jì)語言有 Java、 Javascript,開發(fā)技術(shù)有 Struts、 Ajax。 開發(fā)環(huán)境 配置 本系統(tǒng)的技術(shù)要求是基于 JavaEE 的 Web 應(yīng)用系統(tǒng)。從系統(tǒng)硬件需求角度出發(fā),系統(tǒng)是在個(gè)人 PC 機(jī)上開發(fā)的,普通的 PC 機(jī)的配置即可用于開發(fā)本系統(tǒng)。由于用到的數(shù)據(jù)很多 ,為了便于管理和使用的快速、穩(wěn)定,選擇 MySQL Server 作為系統(tǒng)的數(shù)據(jù)庫。系統(tǒng)采用的是 Tomcat 作為 Web 應(yīng)用服務(wù)器,Tomcat 技術(shù)先進(jìn)、性能也很穩(wěn)定,是當(dāng)前非常受歡迎的一款服務(wù)器。之后根據(jù)安裝向?qū)О惭bMyeclipse 、 Tomcat、 Navicate Lite 、 MySQL Server 等軟件。啟動 Myeclipse,在 Myeclipse 對服務(wù)器進(jìn)行配置,在 Myeclipse中建立一個(gè) Web 項(xiàng)目,通過對項(xiàng)目的部署 ,在瀏覽器中輸入網(wǎng)址來瀏覽本地建立的 25 項(xiàng)目測試 Tomcat 服務(wù)器與 Myeclipse 能正確連接。當(dāng) Myeclipse 和 Tomcat 之間、 Myeclipse 和 Navicate Lite之間、 Navicate Lite 和 MySQL Server 之間都能建立聯(lián)系則開發(fā)環(huán)境搭建完畢。表示層主要功能有分析提交的動作和 Ajax 提交的異步請求、顯示請求的數(shù)據(jù)與分析返回給 Ajax 中 Json 的數(shù)據(jù)然后將其顯示到用戶界面。具體的配置信息寫入 文件。以學(xué)生登陸后開始測試為例,當(dāng)學(xué)生登陸后選擇“開始測試”菜單,進(jìn)入請求對應(yīng)的 Action,代碼如下: lia href=?stuNum=%=(loginStuNum)% target=content開始測試 /a/li 請求 ,并且將參數(shù) stuNum 傳遞到 action 中,在 中配置跳轉(zhuǎn)的 Action 和不同返回結(jié)果應(yīng)該跳轉(zhuǎn)的頁面,具體配置如下: !我要測試 action name=courseAction class= result name=success/student//result result name=tested/student//result /action 此時(shí)在 中對請求的任務(wù)提供數(shù)據(jù),具體實(shí)現(xiàn)如下: package 。 import 。 SuppressWarnings(serial) public class courseAction extends ActionSupport{ private String stuNum。 } public void setStuNum(String stuNum) { //學(xué)號的 set方法 27 = stuNum。 if((stuNum)){ //查看用戶是否已經(jīng)測試 return tested。 //未測試 } } 當(dāng)根據(jù) ,自動執(zhí)行setStuNum()方法給變量 stuNum賦值,再執(zhí)行 execute()方法, execute()方法調(diào)用了Service層的方法來判斷用戶是否已經(jīng)測試,如果學(xué)生已經(jīng)測試測 execute()方法返回值為 “ tested” 字符串,如果學(xué)生還沒有進(jìn)行測試則返回值為 “ success” 字符串,在 文件中 result/result標(biāo)簽下來配置不同的返回結(jié)果所跳轉(zhuǎn)的頁面,當(dāng)返回返回“ tested” 字符串則跳轉(zhuǎn)到系統(tǒng)根目錄下 student/ ,如果返回的是 “ success” 字符串則跳轉(zhuǎn)到系統(tǒng)根目錄下的 student/。 業(yè)務(wù)邏輯層不需要考慮如何操作底層數(shù)據(jù)庫,只需傳入?yún)?shù)給 DAO 層的方法,再通過 DAO 層的方法來獲取所需的數(shù)據(jù)。 package 。 28 import 。 //引入 DAO層的 questionDI類 public class questionSI {