学员管理系统详细分析文档.docx
《学员管理系统详细分析文档.docx》由会员分享,可在线阅读,更多相关《学员管理系统详细分析文档.docx(27页珍藏版)》请在冰豆网上搜索。
学员管理系统详细分析文档
学员管理系统项目需求文档
第一部分需求描述
1.1需求描述:
为将教务从繁琐、无序、低端的工作中解放出来,处理更有价值、更重要的事务,整体提高教务办事效率和对学员信息的可控性,使学员管理趋于完善,提高执行力,特开放此套学员管理系统。
现在要开发一套学员管理系统,要求如下:
1)管理员登录以及验证;
2)管理课程,实现添加、删除、批量删除、修改、查询以及分页;
3)管理班级,实现添加、删除、批量删除、修改、查询以及分页;
4)管理教师,实现添加、删除、批量删除、修改、查询以及分页。
第二部分开发环境
WindowXp;MyEclipse5.5.1GA;MySql5.0;tomcat6.0
第三部分技能点描述
(1)会使用Ext+Spring+Hibernate+Struts搭建框架;
(2)会使用Mysql数据库操作数据;
(3)会使用Visio进行需求分析;
(4)会使用Hibernate对关系型数据库进行持久化操作;
(5)会使用Struts进行前台页面交互;
(6)会使用Sring作为控制层
(7)会使用Ext开发富客户端。
第四部分概要设计
4.1功能清单
标号(Ref#)
功能
R1.1
用户登录
R1.2
查询课程
R1.3
修改课程
R1.4
添加课程
R1.5
查询班级
R1.6
修改班级
R1.7
添加班级
R1.8
查询教师
R1.9
修改教师
R1.10
添加教师
4.2功能详细说明
(1)用户登录
用户登录界面,如图1.1所示:
图1.1用户登录
用户登录验证,如图1.2所示:
图1.2用户登录验证
(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)管理班级
分页查询班级,如图1.10所示:
图1.10分页查询班级
修改班级,如图1.11所示:
图1.11修改班级
删除(或批量删除)班级,如图1.12所示:
图1.12删除班级
添加班级,如图1.13所示:
图1.13添加班级
(4)管理教师
分页查询教师,如图1.14所示:
图1.14分页查询教师
修改教师,如图1.15所示:
图1.15修改教师
删除(或批量删除)教师,如图1.16所示:
图1.16删除教师
添加教师,如图1.17所示:
图1.17添加教师
4.3系统数据库设计
根据需求设计业务数据库表。
如表1.1:
表1.1SCCE协同工作平台系统业务表设计
Name
Code
账号表
ACCOUNT
课程表
COURSE
班级表
TEAMS
教师表
TEACHER
各表明细如下:
账号表
Name
Code
用户ID
USER_ID
用户名称
USER_NAME
用户密码
PASSWORD
用户性别
SEX
EMAIL
EMAIL
注册时间
REG_DATE
用户组
GRADE
课程表
Name
Code
编号
COURSE_ID
课程名称
COURSE_NAME
是否选择
CHOICES
班级表:
Name
Code
班级ID
TEAM_ID
专业
SPECIALTY
班级名称
TEAM_NAME
老师名称
TEACHER_NAME
老师编号
TEACHER_NUM
教师表:
Name
Code
教师ID
TEACHER_ID
教师编号
TEACHER_NO
教师姓名
TEACHER_NAME
教师性别
SEX
出生日期
TEACHER_DATE
职称
TEACHER_LEVEL
学历
TEACHER_GRADE
工龄
TEACHER_LOS
第五部分实现步骤
(1)建立数据库;
数据库见数据库设计
(2)搭建SSH工程,添加Ext支持
(3)编写基类BaseDAO,代码如下:
publicclassBaseDAOextendsHibernateDaoSupport{
//实体对象全路径名称,包括包名
privateStringpoName="";
//把实体对象增加或者修改同步到数据库
publicvoidsaveOrUpdate(BasePOpo){
getHibernateTemplate().saveOrUpdate(po);
}
//根据实体对象删除数据记录
publicvoiddelete(BasePOpo){
this.getHibernateTemplate().delete(po);
}
//根据主键ID删除数据记录
publicvoiddelete(Integerid){
BasePOpo=findById(id);
this.delete(po);
}
//根据主键ID值查找实体对象
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;iquery.setParameter(i,params[i]);
}
returnquery.list();
}
//HQL,单个条件查询
publicListsearchByHQL(Stringhql,Objectparam){
returnsearchByHQL(hql,newObject[]{param});
}
/**
*根据HQL进行分页查询,有一个参数或者没有参数的
*@paramhql
*@paramparas查询的参数
*@paramoffset当页的第一条记录是整个数据第几条数据
*@parampagesize每页显示的条数
*@return
*/
publicPageModelsearchByHQL(Stringhql,Objectparas,intoffset,intpageSize){
returnsearchByHQL(hql,newObject[]{paras},offset,pageSize);
}
/**
*根据HQL进行分页查询,有多个参数的
*@paramhql
*@paramparas查询的参数,用对象数组表示
*@paramoffset当页的第一条记录是整个数据第几条数据
*@parampagesize每页显示的条数
*@return
*/
publicPageModelsearchByHQL(Stringhql,Object[]paras,intoffset,intpageSize){
PageModelpm=newPageModel();
Sessionsession=this.getSession();//取得session
StringcountHQL=this.getCountQuery(hql);//获得记录总数HQL
Queryquery=session.createQuery(countHQL);
if(paras!
=null){
for(inti=0,j=paras.length;iquery.setParameter(i,paras[i]);
}
}
inttotal=((Long)query.uniqueResult()).intValue();
//获取当前的结果集
query=session.createQuery(hql);
if(paras!
=null){
for(inti=0,j=paras.length;iquery.setParameter(i,paras[i]);
}
}
query.setFirstResult(offset);
query.setMaxResults(pageSize);
Listdatas=query.list();
pm.setDatas(datas);//设置当页的数据集合
pm.setTotal(total);//设置总的记录
session.close();
returnpm;
}
//封装查询语句,对传入的HQL语句进行组装,封装查询所有记录的HQL
privateStringgetCountQuery(Stringhql){
Stringsql="";
intnum=hql.indexOf("from");
if(num!
=-1){
sql="selectcount(*)"+hql;
}
returnsql;
}
publicvoidsetPoName(StringpoName){
this.poName=poName;
}
}
(4)编写课程DAO(教师DAO,班级DAO略),代码如下:
publicclassCourseDAOextendsBaseDAO{
/**
*