李亚丽, 张国平, 张青苗
(平顶山学院 计算机学院, 平顶山 467000)
随着社会的不断发展,传统的手工统计和核算工资的方法也变得日益繁琐、复杂[1][2]。由于企业的部门及人员不断增多,传统的人工计算工资,不仅工作量巨大,而且会不可避免的出现各种错误[3][4]。为了高效的处理企业中的工资数据信息,随时随地管理和掌握员工信息及工资动态信息,本文采用Spring MVC、Ajax技术和jQUERY等技术,设计并开发一个基于B/S模式的工资管理系统,使企业的管理更加简洁、高效、方便。也使企业有了更加规整、严谨的管理方案。
Spring框架是当前流行的轻量级一站式企业应用程序解决方案,它为应用程序开发提供了许多基础,使开发人员能够更加专注于程序业务逻辑的实现,Spring MVC是Spring框架的一部分,它能与Spring更加有机的结合[5-6]。
Spring MVC实现了MVC的核心概念,它为控制器和处理程序提供了大量与此模式相关的功能[7]。并且当向MVC添加反转控制时,它使应用程序高度解耦,提供了通过简单的配置更改,即可动态更改组件的灵活性。
通过需求分析得出,工资管理系统主要由工资汇总、基本信息管理、工资管理以及系统管理四大模块组成。包含管理员和普通用户两类用户角色。管理员可以对各个模块进行操作,拥有不同权限的用户可以对相应的模块进行操作。
其中,基本信息模块包含员工基本信息管理、部门信息管理、职称级别管理、奖金信息管理、津贴信息管理、保险信息管理以及所得税信息管理。工资管理模块包含考勤数据填报及设置员工奖金信息。工资汇总模块包含工资汇总信息以及员工奖金汇总信息。系统管理模块包含用户管理、修改密码和角色管理。工资管理系统的结构图如图1所示。
图1 工资管理系统结构图
工资管理系统主要实体类的功能描述如下:
(1) User 类是工资管理系统中的用户表,可以对用户的主要信息进行记录、修改和存贮。这个表可以操作用户账号、姓名、密码、类型、Email邮箱、个人联系方式、创建时间、所在单位等信息。
(2) Department类作为工资管理系统中的部门表,对企业的所有部门信息进行管理。这个表可以操作部门的名称、上级单位、单位类型等信息。
(3) Role 类在工资管理系统中作为角色表,对用户或员工所拥有的角色进行管理,这个表可以操作角色名称、角色描述等数据。
工资管理系统的主要核心控制类的功能描述如下:
(1) UserAddAction:管理员可以通过这个类来实现对用户各种信息的添加功能,该类继承于Action,在该类中通过新建一个UserAttr的实例,将表单中获取的参数传到该UserAttr中,然后在UserAddAction中调用UserBean类中的addUser()方法,该方法通过执行新增sql语句,将数据保存到数据库中的用户表里。
(2) UserLoginAction:该类用于实现用户登录工资管理系统的功能,在该类中,将表单中获取的用户的账号和密码传给UserAttr,然后调用getLoginUserInfo()方法,在该方法中,通过sql语句判断数据库中是否有表单中传过来的账号和密码,如果有就保存用户信息并跳转到首页,否则,提示用户登录失败,并重新显示登录页面。
(3) UserPasswordAction:该类实现用户或员工的密码修改功能,在该类中,将表单中获取的原密码和两次新密码数据保存在UserAttr,然后调用getLoginUserInfo()方法,在该方法中,通过sql语句判断数据库中是否和表单中传过来的账号和密码匹配的值,如果有,就将该信息密码重新存入该账户并返回一个list,否则,提示用户修改密码失败。
(4) DepartmentAddAction:该类用于实现对单位部门的添加功能,在该类中通过新建一个DepartmentAttr的实例,用该实例保存表单中传过来的数据信息,然后调用DepartmentBean类中的addDepartment()方法,该方法通过执行新增sql语句,将数据保存到数据库中的用户表里。并将操作的结果展示给用户。
(5) RoleAddAction:该类用于实现对角色信息的添加功能,在该类中通过新建一个RoleAttr的实例,用该实例保存表单中传过来的数据信息,然后调用RoleBean类中的addRole()方法,该方法通过执行新增sql语句,将数据保存到数据库中的用户表里。并将操作的结果展示给用户。
(6) ZggzbkqlrAction:该类用于实现填报和修改员工工资考勤信息、删除考勤信息、导入考勤数据等功能,在该类中,form表单将jsp中的信息通过url传递到Action中,匹配对应的方法,在方法中执行相应操作的sql语句,将数据保存到数据库中的用户表里。并将操作的结果展示给用户。
用户可以对员工信息进行各种操作。在添加员工信息时,需要注意前面标有红星的,这些数据为必填项,下面描述了这个功能的详细实现过程:
具有管理员工信息权限的用户,登录系统后,点击“基本信息管理”按钮,然后点击“员工基本信息管理”图标,进入员工基本信息管理页面,在该页面,用户点击“新增”按钮,进入新增员工信息页面,用户填写员工的基本信息,点击“提交”按钮。
“提交”按钮会触发id为frmUpdate的提交表单事件,在add.js中可以通过id为frmUpdate找到其对应的url为saveAction.gzgl,通过注解映射,在action找到saveAction.gzgl对应的方法,直接调用该方法,在该方法中执行新增员工的sql语句。将这一条信息贮存在数据库里面。添加员工信息界面如图2所示:
用户可以对企业的部门单位信息进行各种操作。在添加单位信息时,需要注意前面标有红星的字段,这些数据是必须填的项,下面描述该功能的详细实现过程:
1.有管理部门信息权限的用户,可先登录系统,然后选择“基本信息管理”的图标,接着可以点击“部门信息管理”图标,进入部门信息管理页面,在该页面,用户选择部门,然后点击“新增”按钮,进入新增员工信息页面,为该部门增加子部门,用户填写部门信息,点击“提交”按钮。
2. “提交”按钮会触发一个departmentAddAction.do的Action,在该Action中调用DepartmentBean类的addDepartment()方法,在该方法中,执行新增部门数据的sql语句,将页面中的部门信息保存在数据库中。
3.返回到部门信息管理页面,并提示添加成功,页面会显示出新添加的部门信息。
拥有职称级别信息管理权限的用户可以对该模块进行操作管理。该模块主要包括对职称信息的新增、修改、删除、查看职称级别的详情、按等级级别、等级名称查询出职称等级信息等。职称级别信息管理的主页面如图3所示。
图2 员工信息添加界面
图3 职称级别信息管理界面
用户可以对员工的工资信息进行各种操作。在填写考勤信息时,需要注意分页保存填写的各项数据信息,考勤数据填报功能的详细实现过程如下:
1. 用户点击菜单项“新增”按钮。
2. “新增”按钮会触发onclick()事件,执行对应js的操作,跳转到ZggzkqlrAdd.jsp页面。
3. 在进入ZggzkqlrAdd.jsp时,调用ZggzbkqlrDao中的getZgjcxxList()方法,获取到员工的基本信息,放在rusult里面,并通过调用result.getString()方法,遍历出所有的员工信息,显示在该页面上。
4. 在考勤信息录入页面,填写考勤部分的信息,系统会自动算出考勤部分的扣款、补贴、实发工资等信息,通过Ajax的局部刷新功能,根据不断的填写及时更新相应的数据。
5. 填写完数据,点击“提交”按钮,触发form表单提交事件,执行frmUpdate对应的js,通过注解映射,找到saveAction.gzgl对应的方法,在该方法中执行插入数据的sql语句,将考勤信息存入数据库中。
6. 返回到考勤信息管理页面,提示用户操作成功,并将填报的数据显示在页面中并算出所有员工的合计工资信息。录入考勤信息页面如图4所示。
用户可以对员工的奖金信息进行不同的操作。在添加员工的奖金信息时,需要注意前面标有红星的字段,这些数据是必须填的项,下面描述了这个功能的详细实现过程:
1. 有管理员工奖金信息权限的用户,可以先登录工资管理系统,然后可以选择员工奖金信息管理页面中的“新增”按钮。
2. 这个“新增”按钮将会触发onclick()事件,跳转到ygjjbAdd.jsp页面。
3. 在该页面点击“选择姓名”按钮,会弹出封装了员工基本信息的div的姓名选择框,员工姓名选择框页面如图5所示。
4. 在姓名选择框中选择相应的员工,将所选员工信息存入result中,该页面采用Ajax局部刷新功能。
5. 用户填写应发金额和扣税,在js中会对所填写的金额正确性进行判断,并算出实发金额,显示在页面。
图4 录入考勤信息管理界面
6. 点击“提交”按钮,该按钮会触发提交表单数据,执行add.js,找到saveAction.gzgl对应的方法,执行该方法中新增数据的sql语句,将填写的信息保存在数据库中。
7. 返回到员工奖金信息管理页面,提示用户添加成功,并将添加的数据展示在该页面。添加员工奖金信息界面如图5所示:
图5 添加员工奖金管理界面
用户或员工登录系统,点击左侧栏中的“工资汇总”按钮,点击“工资汇总”图标,跳转到工资汇总页面。工资汇总页面如图6所示。
工资管理系统的开发与应用,一方面减少了工资管理人员的工作量,方便企业的员工及时查询自己的工资,了解自己的工资详情,企业的领导也能随时了解员工的工资及考勤情况。另一方面利用计算机代替大量的人工统计与计算,完成更多工资信息的处理,同时,也能更完整的保存大量的工资记录信息。满足当前企业公司的需要,使工资管理更加系统化、规范化、自动化。
图6 工资汇总页面