学生请假管理系统需求分析设计文档附待部分核心代码ssh框架实现.docx
《学生请假管理系统需求分析设计文档附待部分核心代码ssh框架实现.docx》由会员分享,可在线阅读,更多相关《学生请假管理系统需求分析设计文档附待部分核心代码ssh框架实现.docx(25页珍藏版)》请在冰豆网上搜索。
学生请假管理系统需求分析设计文档附待部分核心代码ssh框架实现
2014-2015学年第2学期
1.总体目标
1.1背景
1.1.1引言
目前高校大部分都还是采用学生写好请假条,然后到辅导员那里申请请假的方式进行请假,这种方式不仅麻烦而且比较费时。
在信息化的今天,能有效地借助网络才能提高办事效率。
因此,请假管理系统能够解决这种请假方式所带来的很多麻烦。
1.2要求
请假管理系统要达到以下功能:
增删查改:
学生信息管理(导入/查/改/删)、老师(含辅导员和系领导)信息管理
业务功能:
学生填写请假事由、提交给辅导员审批、按请假制度超过3天的提交给系领导审批、打印请假条、学生查看历史请假记录、辅导员可按不同筛选条件查看请假记录。
1.3目标
请假管理系统的基本目标是方便学生请假和校方的批假工作,系统实现后,应做该到:
方便学生:
学生可以通过登录本系统填写请假原因向校方申请请假,不用通过手写请假条后找到导员请假。
方便校方:
学生在系统中申请请假后可以进入本系统进行审核,方便了校方很多请假方面的工作。
2.需求分析
2.1功能需求描述
2.1.1基本功能:
学生信息管理(导入/查/改/删)、老师(含辅导员和系领导)信息管理
2.1.2业务功能:
学生填写请假事由、提交给辅导员审批、按请假制度超过3天的提交给系领导审批、打印请假条、学生查看历史请假记录、辅导员可按不同筛选条件查看请假记录。
2.2用户需求描述
2.2.1学生用户需求描述
学生对本系统的主要需求是:
学生填写请假理由进行请假、打印请假条、查看请假记录、修改密码。
2.2.2任课教师用户需求描述
校方对本系统的主要需求是:
学生信息管理(导入/查/改/删)、老师(含辅导员和系领导)信息管理、对学生的请假申请进行审核、打印、和查看请假记录。
3.数据库设计
请假管理系统涉及到学生用户、教师用户和管理员。
根据实际应用的需要,最大限度的提高系统的性能,本系统涉及到8张表,分别是管理员表、学生表、教师表、请假表、审核表、岗位表、管理员表、权限表。
学生表(student):
id
int
50
1
0
id
stu_num
vachar
50
0
0
学号
stu_name
vachar
50
0
0
学生姓名
stu_sex
vachar
50
0
0
性别
stu_class
vachar
50
0
0
班级
leava_times
int
50
0
0
请假次数
stu_phone
vachar
50
0
0
联系电话
stu_yuanxi
vachar
50
0
0
所属院系
root_type
vachar
50
0
0
权限类型(岗位名称)
教师表(teacher):
id
int
50
1
0
id
tch_num
vachar
50
0
0
教师编号
tch_name
vachar
50
0
0
教师姓名
tch_sex
vachar
50
0
0
教师性别
lavel
vachar
50
0
0
级别(辅导员,领导)
yuanxi
vachar
50
0
0
所属院系
tch_phone
vachar
50
0
0
联系电话
root_type
vacahr
50
0
0
权限类型(岗位名称)
请假表(leave):
id
int
50
1
0
id
leave_num
vachar
50
0
0
请假流水号
leave_start
vachar
50
0
0
请假开始时间
leave_end
vachar
50
0
0
请假结束时间
leave_days
vachar
50
0
0
请假天数
leave_reason
vachar
50
0
0
请假原因
stu_num
vachar
50
0
0
请假学号
stu_name
vachar
50
0
0
学生姓名
审核表(audit):
id
int
50
1
0
id
leave_num
vachar
50
0
0
请假流水号
audit_name
vachar
50
0
0
审核人
audit_status
int
50
0
0
审核状态
audit_time
vachar
50
0
0
审核时间
audit_posi
vachar
50
0
0
审核岗位
audit_note
vachar
150
0
0
批注
岗位表(position):
id
int
50
1
0
id
posi_num
vachar
50
0
0
岗位编号
posi_name
vachar
50
0
0
岗位名称
管理员表(admin):
id
int
50
1
0
id
admin_num
vachar
50
0
0
管理员编号
admin_name
vacahr
50
0
0
管理员名字
admin_phone
int
10
0
0
联系电话
权限表(root):
id
int
50
1
0
id
root_type
vachar
50
0
0
权限类型(学生,辅导员,领导)
root_list
vachar
50
0
0
权限集合
root_num
vachar
50
0
0
权限编号
4.功能模块设计
请假管理系统涉及到学生用户、教师用户和管理员,主要的功能模块为学生管理模块、教师管理模块、请假管理模块、角色管理模块。
本系统的功能模块图如图:
4-0
图4-0
4.1系统流程
4.1.1登陆流程:
如图4-1-1
图4-1-1
4.1.2请假流程:
需要请假的学生可以在系统中填写请假条进行请假申请,提交请假申请后,提交到辅导员岗进行审核,如果请假时间小于或等于3天,辅导员审核通过后生成请假记录,未通过,请假流程结束,如果请假时间大于3天,若未审核未通过则请假流程结束,若在辅导员岗审核通过,则提交到院领导岗进行审核,审核通过后生成请假记录,未通过则请假流程结束;如图4-1-2
图4-1-2
4.1.3权限设置流程:
系统管理员可以通过权限设置进行添加不同的登录角色并可以赋予不同的权限;如图4-1-3
图4-1-3
4.1.4修改权限:
系统管理员可以通过查询出系统不同用户类型的权限并可以进行各种权限的添加或者删除进行修改;如图4-1-4
图4-1-4
5.主要功能的具体实现
5.1请假功能的实现
学生在需要请假时,进入系统按照要求填写好请假条的内容确认后则提交请假申请交由辅导员进行审核。
如图所示:
其部分代码如下:
Action:
/**
*保存请假条信息
*@return
*/
publicStringaddLeave(){
System.out.println("请假表信息:
"+leave);
Stringusername=(String)getRequest().getSession().getAttribute("username");
StringrootType=(String)getRequest().getSession().getAttribute("rootType");
leaveService.doFirstAudi(leave,username,rootType);
returnSUCCESS;
}
Struct.xml:
${forwardpage}
LeaveServiceImpl:
/**
*填写请假表(第一岗)
*@paramleave请假表对象
*@paramauditName审核人,请假学生
*@paramauditPosi审核岗位
*@paramauditStatus审核状态1-未审核,2-已审核,3-审核不通过
*/
@Override
publicvoiddoFirstAudi(Leaveleave,StringauditName,StringauditPosi){
System.out.println("保存请假表,生成第一岗记录----------");
//0-生成流水号
UUIDuuid=UUID.randomUUID();
leave.setLeaveNum(uuid.toString());
//保存请假表
leaveDAO.save(leave);
//3-保存审核表
//1.申请登记(学生自己)
//
(1)办结本岗,流水号、审核人、岗位名称、状态=2(已审核)
Auditaudit1=newAudit();
audit1.setLeaveNum(uuid.toString());
audit1.setAuditName(auditName);
audit1.setAuditPosi(auditPosi);
audit1.setStuName(auditName);
audit1.setAuditStatus
(2);
auditDAO.save(audit1);
//
(2)初始化辅导员岗位,流水号、岗位名称、状态=1(未审核)
Auditaudit2=newAudit();
audit2.setLeaveNum(uuid.toString());
audit2.setStuName(auditName);
audit2.setAuditPosi("辅导员");
audit2.setAuditStatus
(1);
auditDAO.save(audit2);
}
5.2审核功能的实现
学生提交请假申请后,提交到辅导员岗进行审核,如果请假时间小于或等于3天,辅导员审核通过后生成请假记录,未通过,请假流程结束,如果请假时间大于3天,若未审核未通过则请假流程结束,若在辅导员岗审核通过,则提交到院领导岗进行审核,审核通过后生成请假记录,未通过则请假流程结束;
如图5-2-0和图5-2-1
图5-1-0
图5-2-1
其部分代码如下
LeaveAction:
/**
*第二岗
*@return
*/
publicStringdoSecond(){
System.out.println("审核信息+"+leave);
System.out.println("审核批注+"+leave.getAuditNote());
Stringusername=(String)getRequest().getSession().getAttribute("username");
StringrootType=(String)getRequest().getSession().getAttribute("rootType");
leaveService.doSecond(leave,username,rootType);
returnnull;
}
/**
*最后一岗
*@return
*/
publicStringdoEnd(){
System.out.println("院领导审核信息+"+leave);
System.out.println("院领导审核批注+"+leave.getAuditNote());
Stringusername=(String)getRequest().getSession().getAttribute("username");
StringrootType=(String)getRequest().getSession().getAttribute("rootType");
leaveService.doEnd(leave,username,rootType);
returnnull;
}
LeaveServiceImpl:
/**
*办结第二岗
*@paramleave请假表对象
*@paramauditNote审核批注
*@paramauditName审核人
*@paramauditPosi审核人
*/
publicvoiddoSecond(Leaveleave,StringauditName,StringauditPosi){
//
(1)办结本岗,流水号、审核人、岗位名称、状态=2(已审核)
intdays=Integer.parseInt(leave.getLeaveDays());
Auditaudit1=newAudit();
audit1.setLeaveNum(leave.getLeaveNum());
audit1.setAuditName(auditName);
audit1.setAuditPosi("辅导员");
audit1.setAuditNote(leave.getAuditNote());
audit1.setAuditStatus
(2);
if(days<=3){//小于等于3天,成功标志设置为1
audit1.setAuditEnd
(1);
Leavelea=newLeave();
lea.setAuditName(auditName);
lea.setAuditNote(leave.getAuditNote());
lea.setLeaveNum(leave.getLeaveNum());
leaveDAO.updateLeave(lea);
}else{
audit1.setAuditEnd(0);
}
auditDAO.updateByLeaveNum(audit1);
if(days>3){//大于3天,生成下一岗记录
Auditaudit2=newAudit();
audit2.setLeaveNum(leave.getLeaveNum());
audit2.setStuName(leave.getStuName());
audit2.setAuditPosi("院领导");
audit2.setAuditStatus
(1);
auditDAO.save(audit2);
}
}
/**
*办结最后一岗
*@paramleave请假表对象
*@paramauditNote审核批注
*@paramauditName审核人
*@paramauditPosi审核人
*/
publicvoiddoEnd(Leaveleave,StringauditName,StringauditPosi){
//
(1)办结本岗,流水号、审核人、岗位名称、状态=2(已审核)
Auditaudit=newAudit();
audit.setLeaveNum(leave.getLeaveNum());
audit.setAuditName(auditName);
audit.setAuditPosi("院领导");
audit.setAuditNote(leave.getAuditNote());
audit.setAuditStatus
(2);
audit.setAuditEnd
(1);
Leavelea=newLeave();
lea.setAuditName(auditName);
lea.setAuditNote(leave.getAuditNote());
lea.setLeaveNum(leave.getLeaveNum());
leaveDAO.updateLeave(lea);
auditDAO.updateByLeaveNum(audit);
}
5.3权限修改功能
系统管理员可以通过查询出系统不同用户类型的权限并可以进行各种权限的添加或者删除进行修改;如图:
图5-3
图5-3
其部分代码如下
RoleAction:
publicStringupdateRole()throwsIOException{
System.out.println("更新的权限列表:
"+role.getRootList());
roleService.updateUser(role);
setForwardpage(JSP_ROLE_LIST);
tips="修改成功!
";
returnSUCCESS;
}
/**
*根据角色id查找权限列表返回前台设置单选框的状态
*@return
*@throwsIOException
*/
publicStringfindListByRootID()throwsIOException{
StringrootType=role.getRootType();
role=roleService.findListByRootID(rootType);
System.out.println("返回数据json:
"+role);
return"json2";
}
RoleServiceImpl:
/**
*根据rootType获取权限对象
*@returnRole
*/
@Override
publicRolefindListByRootID(StringrootType){
returnroleDao.findRootListByRoottype(rootType);
}
/**
*更新角色权限
*@paramrole权限对象
*/
@Override
publicvoidupdateUser(Rolerole){
Rolerole_1=null;
Listlist=roleDao.findByRootType(role.getRootType());
if(list.size()>0){
role_1=(Role)list.get(0);
}
role_1.setRootList(role.getRootList());
try{
roleDao.merge(role_1);
}catch(Exceptione){
e.printStackTrace();
}
}
5.4导入功能
学生、教师基本信息可以通过导入excel表格的方式进行批量添加,其部分代码如下:
JSP:
/teacher_importTchExcel.action"method="post"enctype="multipart/form-data">
教师信息导入
ServiceImpl:
/**
*导入教师信息表格
*/
publicvoidimportTchExcel(Teacherteacher,Stringpwd){
Useruser=newUser();
user.setPassword(pwd);
user.setUsername(teacher.getTchName());
user.setUserNum(teacher.getTchNum());
user.setRootType(teacher.getRootType());
userDAO.save(user);
teacherDAO.save(teacher);
}
6.系统的运行环境需求
6.1硬件环境:
1)内存:
需要至少512MHZ
2)硬盘:
40G以上
6.2.软件环境:
1)操作系统:
WindowsXP/WIndows7或Windows更高服务器版本
2)数据库:
Mysql5.5
3)浏览器:
IE8.0或更高版本、Chrome浏览器等主流浏览器
7.测试结果与分析
7.1主要测试内容
本次测试主要针对本次开发的请假管理信息系统进行系统测试主要包括功能测试、界面测试、负载测试文档测试。
7.2软件测试的目的软件质量是由几个方面来衡量的
1)在有限的时间里有效的把一个工作正确无误完成。
2)符合应用标准的要求不同地区不同国家的用户使用习惯不同项目工程中的可维护性、可测试性等要求。
3)质量就是软件达到了最开始客户所想要的需求而代码的优美或精巧的技巧并不代表软件的高质量。
4)质量也代表着它符合客户的需要。
作为软件测试这个行业最重要的一件事就是从客户的需求出发从客户的角度去看产品客户会怎么去使用这个产品使用过程中会遇到什么样的问题。
7.2软件测试的目的
第一是确认软件的质量能正确的完成任务其一方面是确认软件做了你所期望的事情另一方面是确认软件以正确的方式来做了这个事件。
第二是提供反馈信息比如提供给开发人员或程序经理的反馈信息为风险评估所准备的信息。
7.3软件测试的任务
1)寻找Bug
2)避免软件开发过程中的缺陷
3)衡量软件的品质
4)关注用户的需求。
总的目标是:
确保软件的质量
7.4测试方法整个系统测试方法包括功能测试、负载测试、文档测试。
7.4.1功能测试
对需求规格说明书中描述的所有功能通过配置Tomcat服务器让客服端进行功能测试。
测试中需要考虑恶意测试和正常的测试测试出系统的各种功能死角。
7.4.2负载测试
负载测试主要测试系统在多用户在线登陆操作时候系统的运行情况不出现系统故障。
负载测试利用自动测试工具开展