【正文】
對(duì)數(shù)據(jù)庫中 applyinfor 表的操作。 applyInforDI 中對(duì) applyInfor對(duì)象進(jìn)行了實(shí)例化作為 DAO 層的返回參數(shù)。 DAO 層與數(shù)據(jù)庫操作對(duì)象間的類圖 如圖 46 所示 。 22 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 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 )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 )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 eu s e0. . n 圖 46 預(yù)選信息 DAO操作 預(yù)選 信息表 類圖 小結(jié) 系統(tǒng)設(shè)計(jì)在軟件工程中占了很重要的角色,是占用整個(gè)開發(fā)周期中比較長時(shí)間的階段。通過對(duì)系統(tǒng)設(shè)計(jì)的分析知道該從哪個(gè)方面開始 實(shí)現(xiàn) ,并且清楚了每個(gè)角色的操作。對(duì)數(shù)據(jù)庫每個(gè)字段的設(shè)計(jì)意義也更明確。理解了 JavaEE 思想 在系統(tǒng)架構(gòu)中的表現(xiàn) 方式 。 23 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 5 系統(tǒng)實(shí)現(xiàn) 系統(tǒng)實(shí)現(xiàn)是 系統(tǒng)設(shè)計(jì)之后的工作 ,是將系統(tǒng)設(shè)計(jì)轉(zhuǎn)換為可執(zhí)行的程序代碼的過程。 只有在 對(duì)數(shù)據(jù)庫設(shè)計(jì)、系 統(tǒng)結(jié)構(gòu)充分分析 之后 進(jìn)行系統(tǒng)開發(fā)工作 才能符合需求 。系統(tǒng)實(shí)現(xiàn)需要掌握系統(tǒng)開發(fā)工具的使用方法和 程序設(shè)計(jì) 語言 ,本系統(tǒng)主要應(yīng)用程序設(shè)計(jì)語言有 Java、 Javascript,開發(fā)技術(shù)有 Struts、 Ajax。 系統(tǒng)實(shí)現(xiàn)按功能模塊的劃分來分別實(shí)現(xiàn) ,循序漸進(jìn) 。 選題測試模塊的 實(shí)現(xiàn) 選題測試模塊主要是對(duì)測試后的結(jié)果進(jìn)行分析,根據(jù)學(xué)生 根據(jù) 測試課程分?jǐn)?shù)推薦合適的課題和老師給學(xué)生 。 學(xué)生測試完畢后系統(tǒng)自動(dòng)跳轉(zhuǎn)到顯示測試報(bào)告界面 ,在 “ 查看測試報(bào)告 ” 頁面會(huì)顯示學(xué)生測試成績最好的 3 門課程的測試結(jié)果和推薦的符合要求的課題及出題老師。 表示 層 Web 實(shí)現(xiàn) 選題測試模塊( Web)表示層實(shí)現(xiàn)關(guān)鍵代碼如下 : public class thesisRequirementAction extends ActionSupport{ ?? //給學(xué)生推薦課題并查找測試課程成績?yōu)榍?3名的測試成績信息 public String findSupportThesis() throws BadElementException, Exception{ ?? = (stuNum).getTestFlag()。 //查看 是否已 測試標(biāo)記 , 1:已測試 0:未測試 //已經(jīng)完成測試,可以推薦課題及老師 if(1 == ){ = (stuNum)。 //查找成績?yōu)榍?3名的測試記錄 24 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 int courseAmount = ()。 //學(xué)生測試成績前 3名的課程數(shù)量 int[] courseNums = new int[courseAmount]。 //根據(jù)課程號(hào)查找對(duì)該門課程有要求的課題信息 for(int i=0。 i courseAmount。 i++){ if((i).getScores() = 4){ //每門課程測試分?jǐn)?shù)大于等于 4則推薦老師 courseNums[i] = (i).getCourseNum()。 thesisReq = (courseNums[i])。//查找要求了該門課程的課題 for(int j=0。 j ()。 j++){ ((j))。//記錄找到的符合要求的課題 } } } //有符合的課題則根據(jù)課題找到出題老師 if(0 != ()){ //根據(jù)課題號(hào)查找課題名 for(int k=0。 k ()。 k++){ thesisInf = ((k).getThesisNum())。 (thesisInf)。 (stuNum, (stuNum).getStuName(),(), ())。 //添加預(yù)選記錄 } }else if(0 == ()){//所有 課程測試成績不符合推薦要求 (stuNum)。//推薦指導(dǎo)學(xué)生數(shù)未滿的老師給學(xué)生 25 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 } //保存測試結(jié)果 if(1 == saveFlag){ (listStuCourse, listThesisInfor)。 } return SUCCESS。 }else if(0 == ){//未測試 ,不推薦課題及 老 師 return NotTest。 } return SUCCESS。 } } 如果學(xué)生已經(jīng)完成測試,系統(tǒng)查找學(xué)生測試成績排名前 3的課程測試分?jǐn)?shù),如果課程 測試 分?jǐn)?shù)大于等于 4則給學(xué)生推薦對(duì)該課程有要求的課題,根據(jù)課題找到推薦的出題老師。如果測試成績排名前 3的測試課程分?jǐn)?shù)都不大于等于 4,則表示該學(xué)生對(duì)測試課程掌握都 不達(dá)要求 ,系統(tǒng)將不推薦課題給學(xué)生,將查找到的指導(dǎo)學(xué)生數(shù)未滿的老師推薦給學(xué)生。學(xué)生未完成測試則不進(jìn)行推薦 課題及老師操作。 業(yè)務(wù)邏輯層實(shí)現(xiàn) 選題測試模塊業(yè)務(wù)邏輯層實(shí)現(xiàn) 是通過調(diào)用 DAO 層的方法來實(shí)現(xiàn)的, 關(guān)鍵代碼如下: public class stuCourseSI { ?? //按學(xué)號(hào)查找測試成績?yōu)榍?3的測試課程信息 public ListstuCourse searchBestBySN(String stuNum){ stuCourseDI stuCDI = new stuCourseDI()。 return (stuNum)。 26 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 } } public class thesisRequirementSI { //查找要求了該門課程的課題要求信息 public ListthesisRequirement searchAllByCN(int courseNum){ thesisRequirementDI thesisReqDI = new thesisRequirementDI()。 return (courseNum)。 } } public class applyInforSI { ?? //添加學(xué)生預(yù)選信息 public boolean updateStuTea(String stuNum, String stuName,String teacherNum, String teacherName){ applyInforDI applyInfDI = new applyInforDI()。 return (stuNum, stuName,teacherNum, teacherName)。 } //查找沒有選滿學(xué)生的教師預(yù)選信息 public ListapplyInfor wh