1、 - 第 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.
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、统要达成以下功效: 增删查改:学生信息管理(导入/查/改/删)、老师(含教导员和系领导)信息管理 业务功效:学生填写请假事由、提交给教导员审批、按请假制度超出3天提交给系领导审批、打印请假条、学生查看历史请假统计、教导员可按不一样筛选条件查看请假统计。 1.3目标 请假管理系统基础目标是方便学生请假和校方批假工作,系统实现后,应做该到: 方便学生:学生能够经过登录本系统填写请假原因向校方申请请假,不用经过手写请假条后找到导员请假。 方便校方:学生在系统中申请请假后能够进入本系统进行审核,方便了校方很多请假方面工作。 2.需求分析 2.1功效需求描述 2.1.1基础功效:
4、 学生信息管理(导入/查/改/删)、老师(含教导员和系领导)信息管理 2.1.2业务功效: 学生填写请假事由、提交给教导员审批、按请假制度超出3天提交给系领导审批、打印请假条、学生查看历史请假统计、教导员可按不一样筛选条件查看请假统计。 2.2用户需求描述 2.2.1学生用户需求描述 学生对本系统关键需求是:学生填写请假理由进行请假、打印请假条、查看请假统计、修改密码。 2.2.2任课老师用户需求描述 校方对本系统关键需求是:学生信息管理(导入/查/改/删)、老师(含教导员和系领导)信息管理、对学生请假申请进行审核、打印、和查看请假统计。 3.数据库设计 请假管理系统包含到学
5、生用户、老师用户和管理员。依据实际应用需要,最大程度提升系统性能,本系统包含到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
6、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 vacha
7、r 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
8、 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_stat
9、us 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): 字段 类型 长度
10、主键 是否为空 注释 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
11、 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天,若未审核未经过则请假步骤结束,若在教导员岗审核经过,则提交到院领导
12、岗进行审核,审核经过后生成请假统计,未经过则请假步骤结束;图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: /** * 保留请假条信息
13、 * @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, rootT
14、ype);
return SUCCESS;
}
Struct.xml:
15、m 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());
16、 //保留请假表 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
17、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审核功效实现 学生提交请假申请后,提交到教导员岗进行审核,假如请假时
18、间小于或等于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("审核批注+"+leav
19、e.getAuditNote()); String username = (String) getRequest().getSession().getAttribute("username"); String rootType = (String) getRequest().getSession().getAttribute("rootType"); leaveService.doSecond(leave, username, rootType); return null; } /** * 最终一岗 * @return */ public
20、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(l
21、eave, username, rootType); return null; } LeaveServiceImpl: /** * 办结第二岗 * @param leave 请假表对象 * @param auditNote 审核批注 * @param auditName 审核人 * @param auditPosi 审核人 */ public void doSecond(Leave leave,String auditName, String auditPosi){ //(1)办结本岗,流水号、审核人、岗位名称、状态=2(已审核)
22、 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){//小
23、于等于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.upda
24、teByLeaveNum(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); } } /** * 办结最终
25、一岗 * @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()); a
26、udit.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.setLeaveN
27、um(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());
28、 roleService.updateUser(role); setForwardpage(JSP_ROLE_LIST); tips = "修改成功!"; return SUCCESS; } /** * 依据角色id查找权限列表返回前台设置单选框状态 * @return * @throws IOException */ public String findListByRootID() throws IOException{ String rootType = role.getRootType(); role =
29、 roleService.findListByRootID(rootType); System.out.println("返回数据json:"+role); return "json2"; } RoleServiceImpl: /** * 依据rootType获取权限对象 * @return Role */ @Override public Role findListByRootID(String rootType) { return roleDao.findRootListByRoottype(rootType); } /** *
30、 更新角色权限 * @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(r
31、ole_1); } catch (Exception e) { e.printStackTrace(); } } 5.4导入功效 学生、老师基础信息能够经过导入excel表格方法进行批量添加,其部分代码以下: JSP:






