版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页(共47页)工资管理系统的设计与实现──工资账户管理、请假管理摘要:工资管理是财务管理的一个重要方面,对于任何一个企业或者组织都极其重要,现今社会利用计算机支持企业或组织高效率来完成操作势在必行。我们由一个四人团队来完成了工资管理系统设计与实现。在本工资管理系统中,涉及到最多的就是对数据的增删改查,当然在真正的系统中,对于这些操作要控制在严格的权限中,使用struts2+hibernate+spring实现了简单的CRUD操作。本系统采用三层架构,也就是数据访问层、业务逻辑层、表示层。整个系统包含7个模块(系统管理、人事管理、工资账户管理、工资管理、请假管理、个人信息管理、报表管理),本论文包括其中的两个模块-工资账户管理、请假管理。关键词:工资管理系统;MYSQL数据库;工资账户管理;请假管理Abstract:Salarymanagementisanimportantaspectoffinancialmanagement,itisveryimportanttoanyenterpriseororganization,nowadays,usingcomputerforenterpriseortheorganizationtocompletetheoperationisimperative.Soweareateamoffourhavecompletedthedesignandimplementationofsalarymanagementsystem.Inthesalarymanagementsystem,involvingthemostisthedatacrud,ofcourse,intherealsystem,fortheseoperationstocontrolinstrictaccess.WeusedStruts2andhibernateandspringtoachieveasimpleCRUDoperations.Thesystemusesthreelayerarchitecture,whichisthedataaccesslayer,businesslogiclayerandpresentationlayer.Thewholesystemcontainssevenmodules(systemmanagement,personnelmanagement,wageandsalaryaccountmanagement,salarymanagement,leavemanagement,personalinformationmanagement,reportmanagement),inthispaper,includingtwomodules,theyaresalaryaccountmanagementandleavemanagement.Keywords:Thewagesmanagement;MYSQLdatabase;Salaryaccount;Leavemanagement.前言有效的工资管理对于任何一个单位或者组织都是不可缺少的部分,它的内容对于单位或者组织的决策者和管理者来说都至关重要,所以工资管理系统应该能够为用户提供充足的信息和快捷的查询等手段。但一直以来人们使用传统人工的方式管理文件信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对工资管理信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高单位或者组织信息管理的效率,也是单位或者组织的科学化、正规化管理,与世界接轨的重要条件。随着数据库技术的不断发展及数据库管理系统的广泛应用,数据库中存储的数据量急剧增大,这些数据库中的大量数据隐含着许多有价值的信息,而传统的对数据库的简单操作只能发现表层的知识,不能归纳出隐含的带有结构性的知识,已不能满足人们的需要,人们更希望通过对数据的分析,得到数据更深层次的信息,或者说得到可用于进行决策的知识,也即对数据进行挖掘。数据挖掘,顾名思义就是从大量的数据中挖掘出有用的信息。开发本系统的目的就是帮助单位或者组织的财务主管部门提高工作效率,实现单位或者组织员工工资信息管理的系统化、规范化和自动化。本系统包括七个大功能,使单位或者组织实现工资管理的自动化,无疑会给单位或组织管理部门带来很大方便。系统需求分析范围本次开发的系统为工资管理系统。用于对小型企业的职工基本信息和工资信息的管理。包括工资账户管理(创建工资账户、审批工资账户)、请假管理(个人请假管理、审批请假申请)。1.2定义GZGLXTGongZiGuanLiXiTong(工资管理系统)的缩写。FSFinanceStaff(财务人员)的缩写。NFSNotFinanceStaff(非财务人员)的缩写。JSPJavaServerPage(Java服务器页面)的缩写,一个脚本化的语言。UMLUnified ModelingLanguage的缩写,一个建模语言。1.3功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足其业务需求。工资账户管理:对员工的工资账户进行添加、修改、删除。请假管理:添加请假单,审批请假申请1.4系统优势1)降低财务专员的工作量,提高日常工作效率.2)先进的工资管理系统能够及时准确地收集、管理信息,够有效地在企事业单位的各个部门间架起一个沟通的桥梁,使企事业单位或者组织的各个部门根据相关的信息作出合理高效的操作。3)操作简单易用,能满足企业、学校等组织对员工的工资进行有效管理。1.5开发与运行环境本例的工资管理系统开发与运行环境如下:开发环境:WindowsXP/Windows7开发工具:myeclipse数据库管理系统:MYSQL数据库运行环境:WindowsXP/Windows72系统总体结构设计2.1系统目标本系统要对重庆师大学教职员工的工资进行数据管理,对各项工资条款进行计算。汇总各项数据生成员工个人工资,打印工资报表。采用用户名,密码安全机制,分用户权限登陆访问,保证系统资源不受人为因素的干扰。2.2系统功能结构与分析一个有效的系统要能储存系统中所必须的信息并能对这些信息进行各种操作。例如对信息快速查找以及对数据的增删改查。工资管理系统是帮助企业或者组织管理职工工资的系统,本系统是由系统管理、人事管理、工资账户管理、工资管理、请假管理、个人信息管理、报表管理几个功能模块组成。2.3系统各功能模块设计据以上分析的功能,总结出系统结构图如下:图2.2.3系统结构图2.4工资账户管理模块工资账户工资账户管理创建工资账户审批工资账户查询添加修改删除查询审批修改删除图2.2.4工资管理模块功能示意图2.5请假管理模块请假请假管理个人请假管理审批请假申请修改添加查询删除审批图2.2.4请假管理模块功能示意图数据库设计3.1数据流程图1)工资账户管理工资工资账户管理理创建工资账户审批工资账户图3-1.1工资账户管理流程图2)请假管理请假管理请假管理个人请假管理审批请假申请图3-1.2请假管理流程图3.2数据字典分析1)模块管理表(module)-主要用来管理模块的排列和模块的访问路径。字段名称数据类型字段大小是否主键说明idint11Y模块编号namevarchar500N模块名称snvarchar500N系统标识urlvarchar500N访问路径orderNovarchar500N优先级标识parentIdint11N父亲模块编号2)工资账户表(account)字段名称数据类型字段大小是否主键说明idint11N序号personIdint11Y员工idnumbervarchar255N账户编号statusvarchar255N审批状态opinionvarchar255审批意见createTimedatetimeN创建时间3)请假管理表(leaves)字段名称数据类型字段大小是否主键说明idint11Y请假次数personIdint11N员工idnamevarchar255N员工姓名contentvarchar255N请假内容statusvarchar255N审批状态opinionvarchar255N意见createTimedatetimeN创建时间fristDaydatetimeN开始时间lastDaydatetimeN结束时间详细设计与实现Spring配置:Spring作为业务层,结合hibernateFilter文件处理, <filter> <filter-name>hibernateFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> </filter> <filter-mapping> <filter-name>hibernateFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>4.1工资账户管理实现4.1.1配置在strusts.xml中添加<includefile="cs/xj/action/account/account.xml"/><!--账户管理-->account.xml的配置如下:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><struts> <packagename="account"extends="struts-default"namespace="/account"> <interceptors> <interceptorname="securityInterceptor"class="erceptor.SecurityInterceptor"></interceptor> </interceptors> <global-results> <resultname="error">/pages/pay_main.jsp</result> <resultname="login"type="redirect">/index.jsp</result> </global-results> <actionname="accountAction"class="accountAction"> <resultname="find">/pages/account/account.jsp</result><!--创建工资账户界面--> <resultname="approve">/pages/account/approve_account.jsp</result><!--审批工资账户--> <resultname="add">/pages/account/add_account.jsp</result><!--添加工资账户--> <resultname="saveInput">/pages/account/add_account.jsp</result><!--保存添加工资账户--> <resultname="save"type="redirect">/pages/common/success.jsp</result><!--保存添加工资账户--> <resultname="delete"type="redirect">/pages/common/del_success.jsp</result><!--删除工资账户--> <resultname="app">/pages/account/app_account.jsp</result><!--审批工资账户--> <resultname="approveSuccess"type="redirect">/pages/common/success.jsp</result><!--审批工资账户成功--> <resultname="edit">/pages/account/edit_account.jsp</result><!--修改工资账户--> <resultname="updateInput">/pages/account/edit_account.jsp</result><!--修改工资账户--> <resultname="update"type="redirect">/pages/common/success.jsp</result><!--修改工资账户成功--> <interceptor-refname="paramsPrepareParamsStack"></interceptor-ref> <interceptor-refname="securityInterceptor"></interceptor-ref> </action> </package></struts>模块对应数据库表:4.1.2程序实现(AccountAction.java):@Controller("accountAction")@Scope("prototype")publicclassAccountActionextendsBaseAction{ privatestaticfinallongserialVersionUID=1L; privateAccountaccount; privateIntegerid; privatePagerModel<Person>pagerModel; @Resource(name="personService") privatePersonServicepersonService; privatePersonperson; privateIntegerpersonId; privateStringpersonNumber; @Resource(name="accountService") privateAccountServiceaccountService; privateStringapprove; @Override publicvoidprepare()throwsException{ if(id!=null){ account=accountService.findById(id); }else{ account=newAccount(); } } @Override publicAccountgetModel(){ returnaccount; } publicStringfind()throwsException{ intoffset=0; try{ offset=Integer.parseInt(request.getParameter("pager.offset")); }catch(RuntimeExceptione){ } if(personNumber!=null){ pagerModel=personService.find(newString[]{"number"},newString[]{personNumber} ,newMatchMode[]{MatchMode.ANYWHERE},offset,PageSize.NORMAL); } else{ pagerModel=personService.find(offset,PageSize.NORMAL); } if("true".equals(approve)){ return"approve"; } return"find"; } publicStringadd()throwsException{ person=personService.findById(personId); request.setAttribute("per",person); return"add"; } @InputConfig(resultName="saveInput") publicStringsave()throwsException{ accountService.saveOrUpdate(account,personId); session.put("notice","分配工资账户成功"); return"save"; } publicvoidvalidateSave(){ if(isNull(account.getNumber())){ addFieldError("number","工资账户不能为空"); } else{ Accounta=accountService.findByNumber(account.getNumber()); if(a!=null){ if(account.getNumber().equals(a.getNumber())){ addFieldError("number","工资账户已存在"); } } } } publicStringdelete()throwsException{ accountService.delete(account); session.put("notice","删除工资账户成功"); return"delete"; } publicStringapp()throwsException{ return"app"; } publicStringapprove()throwsException{ accountService.saveOrUpdate(account); session.put("notice","审批工资账户成功"); return"approveSuccess"; } publicStringedit()throwsException{ return"edit"; } @InputConfig(resultName="updateInput") publicStringupdate()throwsException{ account.setStatus(Status.NEW); accountService.saveOrUpdate(account); session.put("notice","修改工资账户成功"); return"update"; } publicvoidvalidateUpdate(){ if(isNull(account.getNumber())){ addFieldError("number","工资账户不能为空"); } else{ Accounta=accountService.findByNumber(account.getNumber()); if(a!=null){ if(account.getNumber().equals(a.getNumber())&&!a.getId().equals(account.getId())){ addFieldError("number","工资账户已存在"); } } } } publicAccountgetAccount(){ returnaccount; } publicvoidsetAccount(Accountaccount){ this.account=account; } publicIntegergetId(){ returnid; } publicvoidsetId(Integerid){ this.id=id; } publicPagerModel<Person>getPagerModel(){ returnpagerModel; } publicvoidsetPagerModel(PagerModel<Person>pagerModel){ this.pagerModel=pagerModel; } publicPersongetPerson(){ returnperson; } publicvoidsetPerson(Personperson){ this.person=person; } publicIntegergetPersonId(){ returnpersonId; } publicvoidsetPersonId(IntegerpersonId){ this.personId=personId; } publicStringgetApprove(){ returnapprove; } publicvoidsetApprove(Stringapprove){ this.approve=approve; } publicStringgetPersonNumber(){ returnpersonNumber; } publicvoidsetPersonNumber(StringpersonNumber){ this.personNumber=personNumber; } }接口AclDaoAclDao操作数据库中的权限控制表acl的方法的接口AccountService用户服务接口AccountDao操作工资账户表的Dao接口调用调用调用图4.1.3工资账户管理模块接口调用图4.1.4运行效果图1)总效果图:2)各个小功能运行效果图:工资账户查询图(成功显示查询数据)添加工资账户图(已存在工资账户的员工不能再进行添加)修改员工的工资账户图(审批通过的员工工资账户不能进行修改和删除操作):删除工作账户图:审批员工的工资账户图:4.2请假管理实现4.2.1配置在strusts.xml中添加 <includefile="cs/xj/action/leave/leave.xml"/><!--请假管理-->leave.xml的配置如下:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><struts> <packagename="leave"extends="struts-default"namespace="/leave"> <interceptors> <interceptorname="securityInterceptor"class="erceptor.SecurityInterceptor"></interceptor> </interceptors> <global-results> <resultname="error">/pages/pay_main.jsp</result> <resultname="login"type="redirect">/index.jsp</result> </global-results> <actionname="leaveAction"class="leaveAction"> <resultname="findMyLeave">/pages/leave/leave.jsp</result><!--个人请假管理界面--> <resultname="find">/pages/leave/approve_leave.jsp</result><!--审批请假申请界面--> <resultname="saveInput">/pages/leave/add_leave.jsp</result><!--添加请假单界面--> <resultname="save"type="redirect">/pages/common/success.jsp</result><!--添加请假单成功界面--> <resultname="edit">/pages/leave/edit_leave.jsp</result><!--修改请假单界面--> <resultname="updateInput">/pages/leave/edit_leave.jsp</result><!--修改请假单界面--> <resultname="update"type="redirect">/pages/common/success.jsp</result><!--修改请假单成功界面--> <resultname="app">/pages/leave/app_leave.jsp</result><!--审批请假单界面--> <resultname="approve"type="redirect">/pages/common/success.jsp</result><!--审批请假单成功界面--> <resultname="delete"type="redirect">/pages/common/del_success.jsp</result><!--删除成功界面--> <interceptor-refname="paramsPrepareParamsStack"></interceptor-ref> <interceptor-refname="securityInterceptor"></interceptor-ref> </action> </package></struts>模块对应数据库表:4.2.1程序实现(LeaveAction.java):publicclassLeaveActionextendsBaseAction{ privatestaticfinallongserialVersionUID=1L; privateLeaveleave; privateIntegerid; privatePagerModel<Leave>pagerModel; privateStringapprove; @Resource(name="leaveService") privateLeaveServiceleaveService; privateStringpersonNumber; @Resource(name="personService") privatePersonServicepersonService; @Override publicvoidprepare()throwsException{ if(id!=null){ leave=leaveService.findById(id); }else{ leave=newLeave(); } } @Override publicLeavegetModel(){ returnleave; } publicStringfindMyLeave()throwsException{ intoffset=0; try{ offset=Integer.parseInt(request.getParameter("pager.offset")); }catch(RuntimeExceptione){ } Personperson=((User)session.get("login")).getPerson(); pagerModel=leaveService.find(newString[]{"person"},newObject[]{person},offset,PageSize.NORMAL); return"findMyLeave"; } @InputConfig(resultName="saveInput") publicStringsave()throwsException{ leaveService.saveOrUpdate(leave,((User)session.get("login")).getPerson().getId()); session.put("notice","添加请假单成功"); return"save"; } publicvoidvalidateSave(){ if(isNull(leave.getName())){ addFieldError("name","请假单名称不能为空"); } if(leave.getFirstDay()==null||leave.getLastDay()==null){ addFieldError("firstDay","请假日期不能为空"); } Calendarc1=Calendar.getInstance(); c1.setTime(leave.getFirstDay()); Calendarc2=Calendar.getInstance(); c2.setTime(leave.getLastDay()); if(!c1.before(c2)){ addFieldError("firstDay","请假日期错误"); } } publicStringedit()throwsException{ return"edit"; } @InputConfig(resultName="updateInput") publicStringupdate()throwsException{ leave.setStatus(Status.NEW); leaveService.saveOrUpdate(leave); session.put("notice","修改请假单成功"); return"update"; } publicvoidvalidateUpdate(){ if(isNull(leave.getName())){ addFieldError("name","请假单名称不能为空"); } if(leave.getFirstDay()==null||leave.getLastDay()==null){ addFieldError("firstDay","请假日期不能为空"); } Calendarc1=Calendar.getInstance(); c1.setTime(leave.getFirstDay()); Calendarc2=Calendar.getInstance(); c2.setTime(leave.getLastDay()); if(!c1.before(c2)){ addFieldError("firstDay","请假日期错误"); } } publicStringfind()throwsException{ intoffset=0; try{ offset=Integer.parseInt(request.getParameter("pager.offset")); }catch(RuntimeExceptione){ } Personperson=null; if(personNumber!=null){ person=personService.findByNumber(personNumber); } pagerModel=leaveService.find(newString[]{"person","status"},newObject[]{person,Status.NEW},offset,PageSize.NORMAL); return"find"; } publicStringapp()throwsException{ return"app"; } publicStringapprove()throwsException{ leaveService.saveOrUpdate(leave); session.put("notice","审批请假单成功"); return"approve"; } publicStringdelete()throwsException{ leaveService.delete(leave); session.put("notice","删除请假单成功"); return"delete"; } publicLeavegetLeave(){ returnleave; } publicvoidsetLeave(Leaveleave){ this.leave=leave; } publicIntegergetId(){ returnid; } publicvoidsetId(Integerid){ this.id=id; } publicPagerModel<Leave>getPagerModel(){ returnpagerModel; } publicvoidsetPagerModel(PagerModel<Leave>pagerModel){ this.pagerModel=pagerModel; } publicStringgetApprove(){ returnapprove; } publicvoidsetApprove(Stringapprove){ this.approve=approve; } publicStringgetPersonNumber(){ returnpersonNumber; } publicvoidsetPersonNumber(StringpersonNumber){ this.personNumber=personNumber; } }4.2.3接口LeaveAction类LeaveAction类用于响应表示层的请假管理AccountAction类用于响应表示层的工资账户管理AclService权限控制服务接口AclService权限控制服务接口AclDao操作数据库中的权限控制表acl的方法的接口调用调用调用LeaveServiceLeaveService用户服务接口LeaveDao操作请假管理表的Dao接口调用调用调用图4.2.3请假管理模块接口调用图4.2.4运行效果图1)总效果图:2)各个小功能运行效果图添加请假单图:修改请假单图:审批请假申请图:删除请假申请图:5系统测试用例5.1工资账户管理-创建工资账户5.1.1查询账户测试用例用例名称/标识查询账户/GZGLXT-GZZHGL-CJ-CX菜单工资账户管理-创建工资账户主要角色管理员目标管理员查询员工工资账户前置条件无—步骤输入/操作期望输出/响应基本场景1工资账户管理页面,在查询栏根据员工编号键入查询所需关键字,点击“查询”列表刷新,正常、正确显示查询结果业务规则无5.1.2添加账户测试用例用例名称/标识添加账户/GZGLXT-GZZHGL-CJ-TJ菜单工资账户管理-创建工资账户主要角色管理员目标管理员对员工进行账户添加操作前置条件员工未有工资账户—步骤输入/操作期望输出/响应基本场景相关操作列点击“添加”弹出添加工资账户窗口输入用户的账户名称(带*项为必填),点击“提交”窗口提示分配工资账户成功,等待3秒,窗口自动关闭返回创建工资账户页面该员工的工资账户成功显示业务规则无5.1.3修改账户测试用例用例名称/标识修改账户/GZGLXT-GZZHGL-CJ-XG菜单工资账户管理-创建工资账户主要角色管理员目标管理员对员工进行账户修改操作前置条件员工已有工资账户并且未激活(即未审批状态)—步骤输入/操作期望输出/响应基本场景相关操作列点击“修改”弹出修改工资账户窗口对用户的账户名称进行修改键入(带*项为必填),点击“提交”窗口提示修改工资账户成功,等待3秒,窗口自动关闭返回创建工资账户页面该员工的工资账户名成功被修改业务规则无5.1.4删除账户测试用例用例名称/标识删除账户/GZGLXT-GZZHGL-CJ-SC菜单工资账户管理-创建工资账户主要角色管理员目标管理员删除员工工资账户前置条件员工信息已存在,并且工资账户处于未激活状态(即未审批状态)—步骤输入/操作期望输出/响应基本场景1相关操作列选择“删除”弹出是否确认删除提示2点击“是”窗口提示删除工资账户成功,等待3秒,窗口自动关闭3返回创建工资账户页面该员工的工资账户被成功删除业务规则无5.2工资账户管理-审批工资账户5.2.1查询账户测试用例用例名称/标识查询账户/GZGLXT-GZZHGL-SP-CX菜单工资账户管理-审批工资账户主要角色管理员目标管理员查询员工工资账户前置条件无—步骤输入/操作期望输出/响应基本场景1审批账户管理页面,在查询栏根据员工编号键入查询所需关键字,点击“查询”列表刷新,正常、正确显示查询结果业务规则无5.2.2审批账户测试用例用例名称/标识审批账户/GZGLXT-GZZHGL-SP-SP菜单工资账户管理-审批工资账户主要角色管理员目标管理员对员工进行账户审批操作前置条件员工已创建工资账户,—步骤输入/操作期望输出/响应基本场景相关操作列点击“审批”弹出审批工资账户窗口输入审批意见,选择是否激账户,点击“提交”窗口提示审批工资账户成功,等待3秒,窗口自动关闭返回审批工资账户页面同意激活的员工账户状态为审批通过,不同意激活的员工账户状态为审批不通过。业务规则无5.2.3修改账户测试用例用例名称/标识修改账户/GZGLXT-GZZHGL-SP--XG菜单工资账户管理-审批工资账户主要角色管理员目标管理员修改员工工资账户前置条件员工已有工资账户—步骤输入/操作期望输出/响应基本场景相关操作列点击“修改”弹出修改工资账户窗口对用户的账户名称进行修改键入(带*项为必填),点击“提交”窗口提示修改工资账户成功,等待3秒,窗口自动关闭返回审批工资账户页面该员工的工资账户名成功被修改,账户状态改为待审批业务规则若审批通过的工资账户在此处进行了修改操作,需要对其再次审批。所以,账号状态会作相应改动。5.2.4删除账户测试用例用例名称/标识删除账户/GZGLXT-GZZHGL-SP-SC菜单工资账户管理-审批工资账户主要角色管理员目标管理员删除员工工资账户前置条件员工信息已存且有工资账户—步骤输入/操作期望输出/响应基本场景1相关操作列选择“删除”弹出是否确认删除提示2点击“是”窗口提示删除工资账户成功,等待3秒,窗口自动关闭3返回审批工资账户页面该员工的工资账户被成功删除业务规则无5.3请假管理-个人请假管理5.3.1添加请假单测试用例用例名称/标识添加请假单/GZGLXT-GZGL-CJD-TJ菜单请假管理-个人请假工资组主要角色员工目标员工添加自己的请假单前置条件无—步骤输入/操作期望输出/响应基本场景点击“添加工资请假单”弹出添加请假单窗口输入请假单名,时间信息(带*项为必填),点击“提交”窗口提示添加请假单成功,等待3秒,窗口自动关闭返回个人请假管理页面添加的请假单成功显示业务规则无5.3.2修改请假单测试用例用例名称/标识修改请假单/GZGLXT-GZGL-CJD-XG菜单请假管理-个人请假工资组主要角色员工目标员工修改自己的请假单前置条件请假单已存在—步骤输入/操作期望输出/响应基本场景1相关操作列选择“修改”弹出修改请假单窗口,该窗口内容与添加请假单页面内容保持一致2修改相应信息,点击“提交”窗口提示修改请假单成功,等待3秒,窗口自动关闭3返回个人请假管理页面修改后的请假单信息成功显示业务规则若修改审批通过的请假单,提交后状态会更改为待审批,此时需要重新审批。5.4请假管理-审批请假申请5.4.1查询请假单测试用例用例名称/标识查询请假单/GZGLXT-GZGL-CJD-TJ菜单请假管理-审批请假申请主要角色管理员目标管理员查询员工的请假单前置条件无—步骤输入/操作期望输出/响应基本场景1审批请假申请页面,在查询栏根据员工编号键入查询所需关键字,点击“查询”列表刷新,正常、正确显示查询结果业务规则无5.4.2审批请假单测试用例用例名称/标识审批请假单/GZGLXT-GZGL-CJD-XG菜单请假管理-审批请假申请主要角色管理员目标管理员查询员工的请假单前置条件存在待审批请假单—步骤输入/操作期望输出/响应基本场景1相关操作列选择“审批”弹出审批请假单窗口2填写审批意见,选择审批结果,点击“提交”窗口提示审批请假单成功,等待3秒,窗口自动关闭3返回审批请假申请页面列表刷新,该待审批项数据被隐藏业务规则无5.4.3删除请假单测试用例用例名称/标识删除请假单/GZGLXT-GZGL-CJD-SC菜单请假管理-审批请假申请主要角色管理员目标管理员删除员工的请假单前置条件请假单已存在—步骤输入/操作期望输出/响应基本场景1相关操作列选择“删除”弹出是否确认删除提示2点击“是”窗口提示请假申请单删除成功,等待3秒,窗口自动关闭3返回页面该请假申请单成功删除业务规则无6结束语经过了将近一个月的努力,以四人团队开发的“工资管理系统”项目成功结束了。在系统的开发过程中,以前感到很抽象的课程,如数据库原理、tomcat发布等变得清晰起来,也切实体会了系统开发过程中的种种艰辛。从总体上纵观本系统,达到了我们所预期的效果,各种在需求阶段所定义的功能也基本实现。通过此系统的开发达到了综合运用所学知识,学以致用的目的,通过系统的开发使我对系统开发有了一个系统的认识。在此项目开发的过程中,我所参与的是其中的两个功能模块开发,使自己的动手能力和综合能力有了新的提高。通过实践,提高了我对系统分析、开发、测试的能力,对数据流图、数据字典、系统流程图等系统设计工具的使用有了更深刻的认识。为以后的工作、学习的进一步提高打下了坚实的基础,真的获益匪浅。7致谢感谢学校以及安博教育集团认真负责的态度为我们组织这次毕业设计以及毕业论文答辩。通过这次煅炼,使我们的系统开发水平各方面都有了较大的进步。由此积累的经验对我们以后的学习和生活产生帮助。感谢我的指导老师-杨讯老师,在毕业设计时的帮助、参考、审查文档,在设计的过程中提出了许多有益的建议和意见,同时他先进的软件开发理念和思维方式也给我很大的启发,特别感谢。参考文献:[1]赵伟,吴冬梅,毛晓东.职工工资管理系统的开发[J].科技信息,2009(09)[2]王先国,李利强.工资管理系统的分析与设计[J].科技资讯,2007,(33).[3]陶国喜.工资管理系统的设计与分析[J].黑龙江科技信息,2007,(24).[4]毕业设计论文JAVA大学工资管理系统(网页资料).[5]工资管理系统需求分析说明.[6]工资管理系统概要设计说明.[7]工资管理系统详细设计说明.[8]工资管理系统数据库设计说明.基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024养殖业产品设计与包装合同
- 2024室内外植物装饰租赁合同
- 2024年广告牌钢结构安装合同模板
- 2024年商用建筑装修分包合同
- 2023年浙江省机关单位遴选和选调公务员考试真题
- 2024年塑料制品研发与技术合作合同
- 2024年加工贸易合同范本
- 2023年福建莆田第五中学附属学校招聘体育教师考试真题
- 2024天然气管道铺设与运营维护合同
- 2024年园林绿化吊车租赁合同
- 篮球队成立策划书-2
- 少数民族阿昌族民俗文化科普介绍教学课件
- JGJT178-2009 补偿收缩混凝土应用技术规程
- 体育学院+体育旅游概论+32学时教学大纲(2018)0514
- 高教社新国规中职教材《英语1基础模块》英语1-U6
- 健身指导知识考试题库及答案(500题)
- YMO青少年数学思维26届1-6年级全国总决赛试卷
- 简笔画(高职学前教育专业)全套教学课件
- (完整)大体积混凝土测温记录表
- 单人徒手心肺复苏操作评分表(医院考核标准版)
- 教育数字化背景下的创新教学方法及效果评估研究
评论
0/150
提交评论