




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
學(xué)員管理系統(tǒng)工程需求文檔第一局部需求描述需求描述:為將教務(wù)從繁瑣、無序、低端的工作中解放出來,處理更有價(jià)值、更重要的事務(wù),整體提高教務(wù)辦事效率和對學(xué)員信息的可控性,使學(xué)員管理趨于完善,提高執(zhí)行力,特開放此套學(xué)員管理系統(tǒng)。現(xiàn)在要開發(fā)一套學(xué)員管理系統(tǒng),要求如下:管理員登錄以及驗(yàn)證;管理課程,實(shí)現(xiàn)添加、刪除、批量刪除、修改、查詢以及分頁;管理班級(jí),實(shí)現(xiàn)添加、刪除、批量刪除、修改、查詢以及分頁;管理教師,實(shí)現(xiàn)添加、刪除、批量刪除、修改、查詢以及分頁。第二局部開發(fā)環(huán)境WindowXp;MyEclipseGA;MySql5.0;tomcat6.0第三局部技能點(diǎn)描述會(huì)使用Ext+Spring+Hibernate+Struts搭建框架;會(huì)使用Mysql數(shù)據(jù)庫操作數(shù)據(jù);會(huì)使用Visio進(jìn)行需求分析;會(huì)使用Hibernate對關(guān)系型數(shù)據(jù)庫進(jìn)行持久化操作;會(huì)使用Struts進(jìn)行前臺(tái)頁面交互;會(huì)使用Sring作為控制層會(huì)使用Ext開發(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ì)說明(1)用戶登錄用戶登錄界面,如圖1.1所示:圖1.1用戶登錄用戶登錄驗(yàn)證,如圖1.2所示: 圖1.2用戶登錄驗(yàn)證(2)管理課程查詢所有課程,如圖1.3所示: 圖1.3查詢所有課程 分頁顯示,如圖1.4所示: 圖1.4課程分頁顯示修改課程名稱,如圖1.5所示: 圖1.5修改課程名稱修改是否已選,如圖1.6所示: 圖1.6修改是否已選刪除課程,如圖1.7所示: 圖1.7刪除課程批量刪除課程,如圖1.8所示: 圖1.8批量刪除課程添加課程,如圖1.9所示: 圖1.9添加課程(3)管理班級(jí)分頁查詢班級(jí),如圖1.10所示: 圖1.10分頁查詢班級(jí)修改班級(jí),如圖1.11所示: 圖1.11修改班級(jí)刪除(或批量刪除)班級(jí),如圖1.12所示: 圖1.12刪除班級(jí)添加班級(jí),如圖1.13所示: 圖1.13添加班級(jí)(4)管理教師分頁查詢教師,如圖1.14所示: 圖1.14分頁查詢教師修改教師,如圖1.15所示: 圖1.15修改教師刪除〔或批量刪除〕教師,如圖1.16所示: 圖1.16刪除教師添加教師,如圖1.17所示: 圖1.17添加教師4.3系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)根據(jù)需求設(shè)計(jì)業(yè)務(wù)數(shù)據(jù)庫表。如表1.1:表1.1SCCE協(xié)同工作平臺(tái)系統(tǒng)業(yè)務(wù)表設(shè)計(jì)NameCode賬號(hào)表ACCOUNT課程表COURSE班級(jí)表TEAMS教師表TEACHER各說明細(xì)如下:賬號(hào)表NameCode用戶IDUSER_ID用戶名稱USER_NAME用戶密碼PASSWORD用戶性別SEXEMAILEMAIL注冊時(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ù)庫;數(shù)據(jù)庫見數(shù)據(jù)庫設(shè)計(jì)搭建SSH工程,添加Ext支持編寫基類BaseDAO,代碼如下:publicclassBaseDAOextendsHibernateDaoSupport{//實(shí)體對象全路徑名稱,包括包名privateStringpoName=""; //把實(shí)體對象增加或者修改同步到數(shù)據(jù)庫publicvoidsaveOrUpdate(BasePOpo){ getHibernateTemplate().saveOrUpdate(po); }//根據(jù)實(shí)體對象刪除數(shù)據(jù)記錄publicvoiddelete(BasePOpo){this.getHibernateTemplate().delete(po); }//根據(jù)主鍵ID刪除數(shù)據(jù)記錄publicvoiddelete(Integerid){ BasePOpo=findById(id);this.delete(po); }//根據(jù)主鍵ID值查找實(shí)體對象publicBasePOfindById(Integerid){if(id==null){returnnull; } BasePOpo=null;try{ po=(BasePO)this.getHibernateTemplate().get(poName,id); }catch(Exceptione){ e.printStackTrace(); }returnpo; }//查詢對象的所有記錄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)行分頁查詢,有一個(gè)參數(shù)或者沒有參數(shù)的*@paramhql*@paramparas查詢的參數(shù)*@paramoffset當(dāng)頁的第一條記錄是整個(gè)數(shù)據(jù)第幾條數(shù)據(jù)*@parampagesize每頁顯示的條數(shù)*@return*/publicPageModelsearchByHQL(Stringhql,Objectparas,intoffset,intpageSize){returnsearchByHQL(hql,newObject[]{paras},offset,pageSize); } /***根據(jù)HQL進(jìn)行分頁查詢,有多個(gè)參數(shù)的*@paramhql*@paramparas查詢的參數(shù),用對象數(shù)組表示*@paramoffset當(dāng)頁的第一條記錄是整個(gè)數(shù)據(jù)第幾條數(shù)據(jù)*@parampagesize每頁顯示的條數(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)頁的數(shù)據(jù)集合 pm.setTotal(total);//設(shè)置總的記錄 session.close();returnpm; }//封裝查詢語句,對傳入的HQL語句進(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{/***分頁查詢*@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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 宿州學(xué)院《烏克蘭語語法與寫作》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州南方學(xué)院《軍訓(xùn)(含軍事理論教育)》2023-2024學(xué)年第二學(xué)期期末試卷
- 正德職業(yè)技術(shù)學(xué)院《人工智能基礎(chǔ)與應(yīng)用A》2023-2024學(xué)年第二學(xué)期期末試卷
- 青海交通職業(yè)技術(shù)學(xué)院《寫作(二)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年陜西省安康市高新中學(xué)高二上學(xué)期12月月考?xì)v史試卷
- 周口職業(yè)技術(shù)學(xué)院《EDA技術(shù)及應(yīng)用A》2023-2024學(xué)年第二學(xué)期期末試卷
- 延邊大學(xué)《生態(tài)毒理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津商務(wù)職業(yè)學(xué)院《物理有機(jī)化學(xué)選論》2023-2024學(xué)年第二學(xué)期期末試卷
- 黃河交通學(xué)院《藥學(xué)分子生物學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年貴州省安全員A證考試題庫
- 江西省宜春市豐城市第九中學(xué)2024-2025學(xué)年九年級(jí)上學(xué)期第二次段考化學(xué)試卷(日新班)(無答案)
- 江蘇省2024-2025年跨地區(qū)職業(yè)學(xué)校職教高考一輪聯(lián)考(機(jī)械專業(yè)綜合理論試卷含答案)
- 2024年事業(yè)單位租車服務(wù)滿意度調(diào)查及改進(jìn)協(xié)議3篇
- 露天礦邊坡穩(wěn)定課件所有章節(jié)整合
- 運(yùn)用PDCA提高吞咽障礙患者護(hù)理措施落實(shí)率
- 《法學(xué)概論》課程教學(xué)大綱
- JGJ-T188-2009施工現(xiàn)場臨時(shí)建筑物技術(shù)規(guī)范
- 教師資格考試高級(jí)中學(xué)美術(shù)學(xué)科知識(shí)與教學(xué)能力試題與參考答案(2024年)
- 以諾書-中英對照
- 安徽法院聘用制書記員招聘真題
- 主題班會(huì):小學(xué)生交通安全教育
評論
0/150
提交評論