學(xué)員管理系統(tǒng)詳細(xì)分析文檔_第1頁(yè)
學(xué)員管理系統(tǒng)詳細(xì)分析文檔_第2頁(yè)
學(xué)員管理系統(tǒng)詳細(xì)分析文檔_第3頁(yè)
學(xué)員管理系統(tǒng)詳細(xì)分析文檔_第4頁(yè)
學(xué)員管理系統(tǒng)詳細(xì)分析文檔_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

學(xué)員管理系統(tǒng)工程需求文檔第一局部需求描述需求描述:為將教務(wù)從繁瑣、無(wú)序、低端的工作中解放出來(lái),處理更有價(jià)值、更重要的事務(wù),整體提高教務(wù)辦事效率和對(duì)學(xué)員信息的可控性,使學(xué)員管理趨于完善,提高執(zhí)行力,特開(kāi)放此套學(xué)員管理系統(tǒng)。現(xiàn)在要開(kāi)發(fā)一套學(xué)員管理系統(tǒng),要求如下:管理員登錄以及驗(yàn)證;管理課程,實(shí)現(xiàn)添加、刪除、批量刪除、修改、查詢以及分頁(yè);管理班級(jí),實(shí)現(xiàn)添加、刪除、批量刪除、修改、查詢以及分頁(yè);管理教師,實(shí)現(xiàn)添加、刪除、批量刪除、修改、查詢以及分頁(yè)。第二局部開(kāi)發(fā)環(huán)境WindowXp;MyEclipseGA;MySql5.0;tomcat6.0第三局部技能點(diǎn)描述會(huì)使用Ext+Spring+Hibernate+Struts搭建框架;會(huì)使用Mysql數(shù)據(jù)庫(kù)操作數(shù)據(jù);會(huì)使用Visio進(jìn)行需求分析;會(huì)使用Hibernate對(duì)關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行持久化操作;會(huì)使用Struts進(jìn)行前臺(tái)頁(yè)面交互;會(huì)使用Sring作為控制層會(huì)使用Ext開(kāi)發(fā)富客戶端。第四局部概要設(shè)計(jì)4.1功能清單標(biāo)號(hào)〔Ref#〕功能R1.1用戶登錄R1.2查詢課程R1.3修改課程R1.4添加課程R1.5查詢班級(jí)R1.6修改班級(jí)R1.7添加班級(jí)R1.8查詢教師R1.9修改教師R1.10添加教師4.2功能詳細(xì)說(shuō)明(1)用戶登錄用戶登錄界面,如圖1.1所示:圖1.1用戶登錄用戶登錄驗(yàn)證,如圖1.2所示: 圖1.2用戶登錄驗(yàn)證(2)管理課程查詢所有課程,如圖1.3所示: 圖1.3查詢所有課程 分頁(yè)顯示,如圖1.4所示: 圖1.4課程分頁(yè)顯示修改課程名稱,如圖1.5所示: 圖1.5修改課程名稱修改是否已選,如圖1.6所示: 圖1.6修改是否已選刪除課程,如圖1.7所示: 圖1.7刪除課程批量刪除課程,如圖1.8所示: 圖1.8批量刪除課程添加課程,如圖1.9所示: 圖1.9添加課程(3)管理班級(jí)分頁(yè)查詢班級(jí),如圖1.10所示: 圖1.10分頁(yè)查詢班級(jí)修改班級(jí),如圖1.11所示: 圖1.11修改班級(jí)刪除(或批量刪除)班級(jí),如圖1.12所示: 圖1.12刪除班級(jí)添加班級(jí),如圖1.13所示: 圖1.13添加班級(jí)(4)管理教師分頁(yè)查詢教師,如圖1.14所示: 圖1.14分頁(yè)查詢教師修改教師,如圖1.15所示: 圖1.15修改教師刪除〔或批量刪除〕教師,如圖1.16所示: 圖1.16刪除教師添加教師,如圖1.17所示: 圖1.17添加教師4.3系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)根據(jù)需求設(shè)計(jì)業(yè)務(wù)數(shù)據(jù)庫(kù)表。如表1.1:表1.1SCCE協(xié)同工作平臺(tái)系統(tǒng)業(yè)務(wù)表設(shè)計(jì)NameCode賬號(hào)表ACCOUNT課程表COURSE班級(jí)表TEAMS教師表TEACHER各說(shuō)明細(xì)如下:賬號(hào)表NameCode用戶IDUSER_ID用戶名稱USER_NAME用戶密碼PASSWORD用戶性別SEXEMAILEMAIL注冊(cè)時(shí)間REG_DATE用戶組GRADE課程表NameCode編號(hào)COURSE_ID課程名稱COURSE_NAME是否選擇CHOICES班級(jí)表:NameCode班級(jí)IDTEAM_ID專業(yè)SPECIALTY班級(jí)名稱TEAM_NAME老師名稱TEACHER_NAME老師編號(hào)TEACHER_NUM教師表:NameCode教師IDTEACHER_ID教師編號(hào)TEACHER_NO教師姓名TEACHER_NAME教師性別SEX出生日期TEACHER_DATE職稱TEACHER_LEVEL學(xué)歷TEACHER_GRADE工齡TEACHER_LOS第五局部實(shí)現(xiàn)步驟建立數(shù)據(jù)庫(kù);數(shù)據(jù)庫(kù)見(jiàn)數(shù)據(jù)庫(kù)設(shè)計(jì)搭建SSH工程,添加Ext支持編寫基類BaseDAO,代碼如下:publicclassBaseDAOextendsHibernateDaoSupport{//實(shí)體對(duì)象全路徑名稱,包括包名privateStringpoName=""; //把實(shí)體對(duì)象增加或者修改同步到數(shù)據(jù)庫(kù)publicvoidsaveOrUpdate(BasePOpo){ getHibernateTemplate().saveOrUpdate(po); }//根據(jù)實(shí)體對(duì)象刪除數(shù)據(jù)記錄publicvoiddelete(BasePOpo){this.getHibernateTemplate().delete(po); }//根據(jù)主鍵ID刪除數(shù)據(jù)記錄publicvoiddelete(Integerid){ BasePOpo=findById(id);this.delete(po); }//根據(jù)主鍵ID值查找實(shí)體對(duì)象publicBasePOfindById(Integerid){if(id==null){returnnull; } BasePOpo=null;try{ po=(BasePO)this.getHibernateTemplate().get(poName,id); }catch(Exceptione){ e.printStackTrace(); }returnpo; }//查詢對(duì)象的所有記錄publicListgetObjects(){ ListpoList=null;try{ Stringhql="from"+poName; poList=this.getHibernateTemplate().find(hql); }catch(Exceptione){ e.printStackTrace(); }returnpoList; }//HQL,多條件查詢publicListsearchByHQL(Stringhql,Object[]params){ Queryquery=this.getSession().createQuery(hql);for(inti=0;i<params.length;i++){ query.setParameter(i,params[i]); }returnquery.list(); }//HQL,單個(gè)條件查詢publicListsearchByHQL(Stringhql,Objectparam){returnsearchByHQL(hql,newObject[]{param}); }/***根據(jù)HQL進(jìn)行分頁(yè)查詢,有一個(gè)參數(shù)或者沒(méi)有參數(shù)的*@paramhql*@paramparas查詢的參數(shù)*@paramoffset當(dāng)頁(yè)的第一條記錄是整個(gè)數(shù)據(jù)第幾條數(shù)據(jù)*@parampagesize每頁(yè)顯示的條數(shù)*@return*/publicPageModelsearchByHQL(Stringhql,Objectparas,intoffset,intpageSize){returnsearchByHQL(hql,newObject[]{paras},offset,pageSize); } /***根據(jù)HQL進(jìn)行分頁(yè)查詢,有多個(gè)參數(shù)的*@paramhql*@paramparas查詢的參數(shù),用對(duì)象數(shù)組表示*@paramoffset當(dāng)頁(yè)的第一條記錄是整個(gè)數(shù)據(jù)第幾條數(shù)據(jù)*@parampagesize每頁(yè)顯示的條數(shù)*@return*/publicPageModelsearchByHQL(Stringhql,Object[]paras,intoffset,intpageSize){ PageModelpm=newPageModel(); Sessionsession=this.getSession();//取得session StringcountHQL=this.getCountQuery(hql);//獲得記錄總數(shù)HQL Queryquery=session.createQuery(countHQL);if(paras!=null){for(inti=0,j=paras.length;i<j;i++){ query.setParameter(i,paras[i]); } }inttotal=((Long)query.uniqueResult()).intValue(); //獲取當(dāng)前的結(jié)果集 query=session.createQuery(hql);if(paras!=null){for(inti=0,j=paras.length;i<j;i++){ query.setParameter(i,paras[i]); } } query.setFirstResult(offset); query.setMaxResults(pageSize); Listdatas=query.list(); pm.setDatas(datas);//設(shè)置當(dāng)頁(yè)的數(shù)據(jù)集合 pm.setTotal(total);//設(shè)置總的記錄 session.close();returnpm; }//封裝查詢語(yǔ)句,對(duì)傳入的HQL語(yǔ)句進(jìn)行組裝,封裝查詢所有記錄的HQLprivateStringgetCountQuery(Stringhql){ Stringsql="";intnum=hql.indexOf("from");if(num!=-1){ sql="selectcount(*)"+hql; }returnsql; }publicvoidsetPoName(StringpoName){this.poName=poName; }}編寫課程DAO〔教師DAO,班級(jí)DAO略〕,代碼如下:publicclassCourseDAOextendsBaseDAO{/***分頁(yè)查詢*@paramstart*@parampageSize*@return*/publicStringqueryCourse(intstart,intpageSize){ Stringhql="fromCourse"; PageModelpm=this.searchByHQL(hql,null,start,pageSize); Stringjson="{totalProperty:"+pm.getTotal()+",root:["; List<Course>courseList=pm.getDatas();for(Coursecourse:courseList){ json+="{courseId:"+course.getCourseId()+",courseName:'"+course.getCourseName()+"',choices:'"+course.getChoices()+"'},"; } json=json.substring(0,json.length()-1); json+="]}";returnjson; }/***添加課程*@paraminsertsql*@return*/publicbooleansaveCourse(StringinsertSql){booleanflag=false; Coursecourse=newCourse(); JSONArrayjsonarray=JSONArray.fromObject(insertSql); Stringselsql="";for(Objectobj:jsonarray){ JSONObjectjson=JSONObject.fromObject(obj); course.setCourseName(json.getString("courseName")); course.setChoices(json.getString("choices")); }try{this.saveOrUpdate(course); flag=true; }catch(Exceptione){ e.printStackTrace(); }returnflag; }/***修改課程*@paramupdateSql*@return*@throwsException*/publicbooleanupdateCourse(StringupdateSql)throwsException{booleanflag=false; Coursecourse=newCourse(); JSONArrayjsonarray=JSONArray.fromObject(updateSql); Stringupsql="";for(Objectobj:jsonarray){ JSONObjectjson=JSONObject.fromObject(obj); course.setCourseId(json.getInt("courseId")); course.setCourseName(json.getString("courseName")); course.setChoices(json.getString("choices")); }try{this.saveOrUpdate(course); flag=true; }catch(Exceptione){ e.printStackTrace(); flag=false; }returnflag; }/***刪除課程*@paramdeleteSql*@return*@throwsException*/publicbooleandelCourse(StringdeleteSql)throwsException{booleanflag=false; String[]arraycourseid=deleteSql.split(",");try{for(inti=0;i<arraycourseid.length;i++){this.delete(Integer.parseInt(arraycourseid[i])); } flag=true; }catch(Exceptione){ e.printStackTrace(); flag=false; }returnflag; }/***檢查課程名稱*@paramcourseName*@return*/publicbooleancheckCourseName(StringcourseName){ booleanflag=false;try{ Stringhql="selectcount(*)fromCourseasmodelwheremodel.courseName="+courseName; Queryquery=this.getSession().createQuery(hql); List<Course>courseList=query.list();if(courseList.size()==0){ flag=true; } }catch(Exceptione){ e.printStackTrace(); flag=false; }returnflag; }}編寫課程Action〔教師Action,班級(jí)Action略〕,代碼如下:publicclassCourseActionextendsDispatchAction{privateStuHandlerstuHandler;publicvoidsetStuHandler(StuHandlerstuHandler){this.stuHandler=stuHandler; }/***查詢所有課程*@throwsIOException*/publicActionForwardqueryCourse(ActionMappingmapping,ActionFormform, ServletRequestrequest,ServletResponseresponse)throwsIOException{intstart=Integer.parseInt(request.getParameter("start"));intpageSize=Integer.parseInt(request.getParameter("limit")); response.setContentType("text/json;charset=UTF-8"); Stringjson=stuHandler.getCourseDAO().queryCourse(start,pageSize);// System.out.println(json); response.getWriter().write(json); response.getWriter().close();returnnull; }/***添加課程*@throwsIOException*/publicActionForwardsaveCourse(ActionMappingmapping,ActionFormform, ServletRequestrequest,ServletResponseresponse)throwsIOException{ response.setContentType("text/json;charset=UTF-8"); Stringjsoncourse=request.getParameter("jsoncourse"); jsoncourse=newString(jsoncourse.getBytes("ISO-8859-1"),"GB2312");booleanflag=stuHandler.getCourseDAO().saveCourse(jsoncourse);if(flag){ response.getWriter().write("添加成功!"); } response.getWriter().close();returnnull; }/***修改課程*@throwsException*/publicActionForwardupdateCourse(ActionMappingmapping,ActionFormform, ServletRequestrequest,ServletResponseresponse)throwsException{ response.setContentType("text/json;charset=UTF-8"); Stringjsoncoures=request.getParameter("jsoncoures"); jsoncoures=newString(jsoncoures.getBytes("ISO-8859-1"),"GB2312");booleanflag=stuHandler.getCourseDAO().updateCourse(jsoncoures);if(flag){ response.getWriter().write("修改成功!"); } response.getWriter().close();returnnull; }/***刪除課程*@throwsException*/publicActionForwarddelCourse(ActionMappingmapping,ActionFormform, ServletRequestrequest,ServletResponseresponse)throwsException{ response.setContentType("text/json;charset=UTF-8"); Stringcourseid=(String)request.getParameter("arraycourseid");booleanflag=stuHandler.getCourseDAO().delCourse(courseid);if(flag){ response.getWriter().write("刪除成功!"); } response.getWriter().close();returnnull; }/***檢查課程*@throwsException*/publicActionForwardcheckCourse(ActionMappingmapping,ActionFormform, ServletRequestrequest,ServletResponseresponse)throwsException{ response.setContentType("text/json;charset=UTF-8"); StringcourseName=(String)request.getParameter("coursename").trim(); courseName=newString(courseName.getBytes("ISO-8859-1"),"GB2312"); booleanflag=stuHandler.getCourseDAO().checkCourseName(courseName);if(flag){ response.getWriter().write("true"); }else{ response.getWriter().write("false"); } response.getWriter().close();returnnull; }}編寫課程Ext客戶端代碼〔教師JS,班級(jí)JS略〕,1、查詢課程JS文件代碼如下:Ext.onReady(function(){varsm=newExt.grid.CheckboxSelectionModel();varcm=newExt.grid.ColumnModel([newExt.grid.RowNumberer(), sm,{header:'編號(hào)',dataIndex:'courseId',sortable:true,width:80}, {header:'課程名',dataIndex:'courseName',sortable:true,width:80}, {header:'是否已選',dataIndex:'choices',sortable:true,width:80}]);vards=newExt.data.Store({proxy:newExt.data.Proxy({url:'://localhost:8989/stuManager/course.do?method=queryCourse'}),reader:newExt.data.JsonReader({ totalProperty:'totalProperty', root:'root'}, [ {name:'courseId',type:'int'}, {name:'courseName',type:'string'},{name:'choices',type:'string'} ]), remoteSort:false//如果設(shè)為TRUE的話,就不可以排序,如想排序的話必須設(shè)為FALSE。});varviewport=newExt.Vie

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論