资源描述
- 第 2 学期
1.总体目标 4
1.1背景 4
1.1.1引言 4
1.2要求 4
1.3目标 4
2.需求分析 5
2.1功效需求描述 5
2.1.1基础功效: 5
2.1.2业务功效: 5
2.2用户需求描述 5
2.2.1学生用户需求描述 5
2.2.2任课老师用户需求描述 5
3.数据库设计 5
4. 功效模块设计 7
4.1系统步骤 8
5. 关键功效具体实现 11
5.1请假功效实现 11
5.2审核功效实现 14
5.3权限修改功效 18
5.4导入功效 20
6.系统运行环境需求 21
6.1硬件环境: 21
6.2.软件环境: 21
7.测试结果和分析 21
7.1关键测试内容 21
7.2软件测试目标 22
7.3软件测试任务 22
7.4.1功效测试 22
7.4.2负载测试 22
7.4.3文档测试 22
7.5 测试环境 23
7.6 系统具体测试 23
8.课程设计总结 24
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
*/
public String addLeave(){
System.out.println("请假表信息:"+leave);
String username = (String) getRequest().getSession().getAttribute("username");
String rootType = (String) getRequest().getSession().getAttribute("rootType");
leaveService.doFirstAudi(leave, username, rootType);
return SUCCESS;
}
Struct.xml:
<action name="leave_*" class="com.qjglms.struts.action.LeaveAction" method="{1}">
<result name="success">${forwardpage}</result>
</action>
LeaveServiceImpl:
/**
* 填写请假表(第一岗)
* @param leave 请假表对象
* @param auditName 审核人,请假学生
* @param auditPosi 审核岗位
* @param auditStatus 审核状态 1-未审核, 2-已审核 , 3-审核不经过
*/
@Override
public void doFirstAudi(Leave leave,String auditName,String auditPosi) {
System.out.println("保留请假表,生成第一岗统计----------");
//0-生成流水号
UUID uuid = UUID.randomUUID();
leave.setLeaveNum(uuid.toString());
//保留请假表
leaveDAO.save(leave);
//3-保留审核表
//1.申请登记(学生自己)
//(1)办结本岗,流水号、审核人、岗位名称、状态=2(已审核)
Audit audit1 = new Audit();
audit1.setLeaveNum(uuid.toString());
audit1.setAuditName(auditName);
audit1.setAuditPosi(auditPosi);
audit1.setStuName(auditName);
audit1.setAuditStatus(2);
auditDAO.save(audit1);
//(2)初始化教导员岗位,流水号、岗位名称、状态=1(未审核)
Audit audit2 = new Audit();
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
*/
public String doSecond(){
System.out.println("审核信息+"+leave);
System.out.println("审核批注+"+leave.getAuditNote());
String username = (String) getRequest().getSession().getAttribute("username");
String rootType = (String) getRequest().getSession().getAttribute("rootType");
leaveService.doSecond(leave, username, rootType);
return null;
}
/**
* 最终一岗
* @return
*/
public String doEnd(){
System.out.println("院领导审核信息+"+leave);
System.out.println("院领导审核批注+"+leave.getAuditNote());
String username = (String) getRequest().getSession().getAttribute("username");
String rootType = (String) getRequest().getSession().getAttribute("rootType");
leaveService.doEnd(leave, username, rootType);
return null;
}
LeaveServiceImpl:
/**
* 办结第二岗
* @param leave 请假表对象
* @param auditNote 审核批注
* @param auditName 审核人
* @param auditPosi 审核人
*/
public void doSecond(Leave leave,String auditName, String auditPosi){
//(1)办结本岗,流水号、审核人、岗位名称、状态=2(已审核)
int days =Integer.parseInt(leave.getLeaveDays());
Audit audit1 = new Audit();
audit1.setLeaveNum(leave.getLeaveNum());
audit1.setAuditName(auditName);
audit1.setAuditPosi("教导员");
audit1.setAuditNote(leave.getAuditNote());
audit1.setAuditStatus(2);
if(days<=3){//小于等于3天,成功标志设置为1
audit1.setAuditEnd(1);
Leave lea = new Leave();
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天,生成下一岗统计
Audit audit2 = new Audit();
audit2.setLeaveNum(leave.getLeaveNum());
audit2.setStuName(leave.getStuName());
audit2.setAuditPosi("院领导");
audit2.setAuditStatus(1);
auditDAO.save(audit2);
}
}
/**
* 办结最终一岗
* @param leave 请假表对象
* @param auditNote 审核批注
* @param auditName 审核人
* @param auditPosi 审核人
*/
public void doEnd(Leave leave,String auditName, String auditPosi){
//(1)办结本岗,流水号、审核人、岗位名称、状态=2(已审核)
Audit audit = new Audit();
audit.setLeaveNum(leave.getLeaveNum());
audit.setAuditName(auditName);
audit.setAuditPosi("院领导");
audit.setAuditNote(leave.getAuditNote());
audit.setAuditStatus(2);
audit.setAuditEnd(1);
Leave lea = new Leave();
lea.setAuditName(auditName);
lea.setAuditNote(leave.getAuditNote());
lea.setLeaveNum(leave.getLeaveNum());
leaveDAO.updateLeave(lea);
auditDAO.updateByLeaveNum(audit);
}
5.3权限修改功效
系统管理员能够经过查询出系统不一样用户类型权限并能够进行多种权限添加或删除进行修改;图:图5-3
图5-3
其部分代码以下
RoleAction:
public String updateRole() throws IOException{
System.out.println("更新权限列表:"+role.getRootList());
roleService.updateUser(role);
setForwardpage(JSP_ROLE_LIST);
tips = "修改成功!";
return SUCCESS;
}
/**
* 依据角色id查找权限列表返回前台设置单选框状态
* @return
* @throws IOException
*/
public String findListByRootID() throws IOException{
String rootType = role.getRootType();
role = roleService.findListByRootID(rootType);
System.out.println("返回数据json:"+role);
return "json2";
}
RoleServiceImpl:
/**
* 依据rootType获取权限对象
* @return Role
*/
@Override
public Role findListByRootID(String rootType) {
return roleDao.findRootListByRoottype(rootType);
}
/**
* 更新角色权限
* @param role 权限对象
*/
@Override
public void updateUser(Role role) {
Role role_1 = null;
List list = 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 (Exception e) {
e.printStackTrace();
}
}
5.4导入功效
学生、老师基础信息能够经过导入excel表格方法进行批量添加,其部分代码以下:
JSP:
<form action="<%=path %>/teacher_importTchExcel.action" method="post" enctype="multipart/form-data">
<a>老师信息导入 </a><br>
ServiceImpl:
/**
* 导入老师信息表格
*/
public void importTchExcel(Teacher teacher,String pwd){
User user = new User();
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) 操作系统:Windows XP/WIndows 7或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负载测试
负载测试关键测试系统在多用户在线登陆操作时候系统运行情况不出现系统故障。负载测试利用自动测试工具开展网络上有很多压力测试工具。
7.4.3文档测试
文档测试关键包含用户文档、需求文档、设计文档测试测试关键在文档内容正确性、正确性确保了文档正确性才能是有效文档正确性是正确表示出文档意思。采取走查方法进行文档测试。
7.5 测试环境
7.5.1硬件环境
1) 内存:需要最少512MHZ
7.5.2软件环境
1) 作系统:Windows xp/Windows 7服务器版本
2) 必装软件:Myeclipse9.0 Mysql5.5 Tomcat 6.0.1
7.6 系统具体测试
在此,因为版面有限,不可能将系统每一个功效测试全部表现出来,下面是用户登录和学生添加请假单及审核功效进行测试。
7.6.1用户登录测试:
测试内容
测试数据
测试结果
用户名
密码
输入有效数据
admin
admin
有效
空数据
空
admin
无效
admin
空
无效
空
空
无效
7.6.2学生添加请假单测试:
填写请假单页面:
点击提交后数据库添加请假单成功:
7.6.3审核功效测试:
请假正常步骤:
学生填写请假单,然后提交给班主任,假如3天以内请假单由班主任直接审批,3天以上请假单,由班主任提交给院长审批,审批经过任课老师能够查询,然后更新学生考勤未经过直接回退给学生,学生重新提交。
1) 提出假设测试
假设学生提交3天以上请假单,如请假一周,不经过院长审批,直接由班主任审批经过,完成请假步骤。3天以上请假班主任无权限审核必需传输给院长由院长审核经过。故假设无效。
2) 假设学生提交请假单
不经过班主任和院长审批,直接经过,完成请假步骤。没有经过班主任或院长审批请假单,是无效请假单,在任课老师页面无法显示,任课老师也不知道学生在校情况。故假设无效。
8.课程设计总结
此次设计系统分为前台和后台两个大模块,采取Spring+Struts2+Hirbernate构架开发,系统视图层和控制层关键经过Struts2标签库和Action相关类设计实现;Hirbernate用于持久层实现,包含数据库访问层和对象模型设计,提升了系统安全性、可维护性、重用性和可扩展性。因为在做这个课程设计题目之前对于Struts2框架和hirbernate框架不怎么了解,平时上课没怎么用心,所以在整个系统实现过程中碰到了很大麻烦。而且,在设计请假管理系统时,需要对功效需求考虑完善。要求利用SSH技术对系统做好整体构架,这对我们小组来说是一个不小难题。伴随设计程度不停深入,又碰到了部分早期没有想到问题。尤其是部分细节问题。为了处理这些问题,有时还要对多个模块进行大幅度修改。在设计中,还需要进行细致测试工作,以发觉程序错误和功效上不足。因为时间和个人技术关系,本系统还有部分不足和值得改善地方比如说请假审核功效细化,需要依据请假时间长短,审核需要不相同级权限用户逐层进行,这么系统灵活性就会有显著提升。 经过这次课程设计,提升了我们小组在系统整体设计上能力,增加了分析、处理问题经验,对部分知识有了更深一步掌握。能够说,这次课程设计既锻炼了我们动脑分析问题能力,又锻炼了我们动手处理实际问题能力,这将对我们以后学习起到不可估量作用。经过课程设计这次磨砺,我们能力也提升了。所以它对于我们来说有着十分关键意义。我们会利用从中得到宝贵经验来指导我们以后学习和工作,不停实践,不停地学习,让自己变得愈加充实自己,更适合于软件行业发展需要。
ه
参考文件
[1]郑阿奇JavaEE项目开发教程[M].北京:电子工业出版社,2.12.26
[2]贾素玲,王强,jsp应用开发技术.北京:清华大学出版社
[3]simoj.Structs 2 关键工作步骤和原理..07.13
4fdb887b010140ef.html
[4]常建功,王向华.J2EE关键技术和企业应用:Ajax,JSP,Struts2, Sring,Hibernarte[M].北京:电子出版社,.22.23
[5]周爱武,汪海威,肖云,数据库课程设计[M].机械工业出版社,.16
展开阅读全文