工资管理系统设计与实现工资管理、工资组、工资单-学位论文.doc
-
资源ID:93225055
资源大小:1.55MB
全文页数:53页
- 资源格式: DOC
下载积分:12金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
工资管理系统设计与实现工资管理、工资组、工资单-学位论文.doc
工资管理系统设计与实现工资管理、工资组、工资单摘 要:传统的工资管理系统通常采用固定的工资计算公式和固定的工资项目,难以适应市场经济条件下工资政策和工资制度的变化。同时工资的发放具有较强的时间限制,必须严格按照单位规定的时间完成计算和发放工作。正是企业工资管理的这种重复性、规律性、时间性使得企业工资管理计算机化成为可能。企业工资管理系统使企业运用现代化技术创造更多更高经济效益的主要因素之一。良好的薪资管理模式可以规范薪酬管理流程,提高薪酬管理工作效率,对于企业的科学化管理和集团的不断壮大发展都是至关重要的。关键词:工资管理;信息管理;管理信息系统Abstract:The traditional salary management system usually uses the fixed salary item, it is difficult to adapts that the change of salarys policy and the salarys system under the market economys condition. Salary distribution is a time limited work, which means the salary calculation and distribution must be finished according to a strict schedule set by the company. It is the repeatability, regularity and time limitation of the enterprise salary management that makes it possible to realize the automatic management. Wage management is to use system modern technology to create higher economic benefit of main factors of. The good salary management mode can regulate the compensation management process, improve the compensation management efficiency, for enterprises scientific management and the groups development is important.Key words:Salary management; Information management; Management information system1 引言 1.1 编写目的 编写这份详细设计说明书是为了让公司合理高效的进行工资管理,其读者包括项目小组老师、公司财务部、公司人事管理部等。1.2 背景1.2.1 开发的软件系统的名称:工资管理系统设计与实现1.2.2 任务提出者:安博计算机教师;项目的开发者:该小组的全体成员;用户以及将运行该项软件的单位:财务科会计、财务科长、财务部。1.3 内容随着现代信息技术和管理理论,建立企业管理信息系统是当今社会的重要趋势。“用信息化带动工业化”的指导思想的提出更是中国走向互联网时代的口号。对企业而言,全面开发和应用计算机管理信息系统就是近期不能回避的问题。在企业管理中,人力资源是企业最宝贵的资源,也是企业的“生命线”,因此人事管理是企业的计算机管理信息系统重要组成部分。而工资管理又是人力资源管理的重中之重。实行电子化的工资管理,可以让人力资源管理人员从繁重琐碎的案头工作解脱出来,去完成更重要的工作。工资管理信息系统的实现可以减轻比较繁琐的手工工资管理。现在应用在大中型企业的管理信息系统中,几乎都包括了工资管理模块。有些环境中是由作为大型ERP软件中的一个模块引进的,有些是作为企业的财务系统的一部分。这些根据规范的西方的管理制度设计的工资管理软件,在很多时候还不能完全解决中国特色的中小企业的问题,本文介绍的毕业设计的研究工作就是要为这些具有中国特色的中小企业解决他们在工资管理方面的问题。通过在本单位经过一周的调研,并参考其他同行设计工资管理软件,我基本上搞清楚了像我们单位这样的小型企业对系统的需求,如果能够设计一套针对类似本单位的小型国有企业的工资管理系统特别有意义,并且是现行的财务管理软件代替不了的。在和指导老师多次交流后,确定实现方案的要点和工作计划。本系统的实现的主要功能有: (1)对系统进行管理。用户的添加修改以及权限授予都是管理员操作的 (2) 对单位人员的变动进行处理。一个单位的职工不会是一成不变的,总是在不断的变化:有调出、有调入、也有职工在本单位内部调动。因此,设计系统是应考虑到这些情况。(3)对工资账户的创建,修改,删除。 (4) 对职工的工资进行计算、修改。能对各职工的工资进行计算,即计算应发金额、应扣金额及实发金额等。 (5) 查询统计功能。要求即可以单项查询,比如查看某个职工的工资情况等;也可以查询全部。 (6)员工个人信息的查询,修改与管理。(7) 报表打印功能。每月发放工资时,要求能够打印本月的工资表、随工资发给每个职工的工资条以及工资统计表。1.4 定义HR Salary Management System(工资管理系统)的缩写。FSFinance Staff(财务人员)的缩写。NFSNor Finance Staff(财务人员)的缩写。JSPJava Server Page(Java服务器页面)的缩写,一个脚本化的语言。UMLJava Server Page(Java服务器页面)的缩写,一个脚本化的语言。 2 程序系统的结构 2.1 程序逻辑与其它任何研究软件的项目一样,本次毕业设计也经历了从选题、调研、熟悉开发环境、实验等关键性技术,到查找类似的相关系统的资料。最后,编写和完善系统概要设计、数据库结构设计、功能模块开发、功能模块测试、系统调试和系统试运行和修改。 选题调查研究资料查询开发环境熟悉学习ssh技术概要设计数据库的设计功能模块开发和详细设计功能模块测试系统调试和修改需求分析图2-1 开发计划图图2-2 工资管理图表2.2 产品约束根据用户对本系统的要求,确定系统在响应时间、可靠性、安全等方面有较高的性能要求。系统的界面要求如下:()页面内容:主题突出,站点定义、术语和行文格式统一、规范、明确,栏目、菜单设置和布局合理,传递的信息准确、及时。内容丰富,文字准确,语句通顺;专用术语规范,行文格式统一规范。()导航结构:页面具有明确的导航指示,且便于理解,方便用户使用。()技术环境:页面大小适当,能用各种常用浏览器以不同分辨率浏览;无错误链接和空链接;采用CSS处理,控制字体大小和版面布局。()艺术风格:界面、版面形象清新悦目、布局合理,字号大小适宜、字体选择合理,前后一致,美观大方;动与静搭配恰当,动静效果好;色彩和谐自然,与主题内容相协调。响应时间要求:无论是客户端和管理端,当用户登录,进行任何操作的时候,系统应该及时的进行反应,反应的时间在5秒以内。系统应能监测出各种非正常情况,如与设备的通信中断,无法连接数据库服务器等,避免出现长时间等待甚至无响应。可靠性需求:系统应保证7X24内不当机,保证20人可以同时在客户端登录,系统正常运行,正确提示相关内容。开放性需求:系统应具有十分的灵活性,以适应将来功能扩展的需求。可扩展性需求:系统设计要求能够体现扩展性要求,以适应将来功能扩展的需求。系统安全性需求:系统有严格的权限管理功能,各功能模块需有相应的权限方能进入;系统需能够防止各类误操作可能造成的数据丢失,破坏;防止用户非法获取网页以及内容。操作系统:windows XP /windows7及其以上;开发工具:My Eclipse(web前端服务);Web服务器:Apache Tomcat ;数据库:mysql-5.5.28-win32+SQLyog-8.7.1破解版;根据用户对本系统的要求,确定系统在响应时间、可靠性、安全等方面有较高的性能要求。2.3 功能需求2.3.1 创建工资组具有创建工资组权限的(财务部门)人员,可添加工资组(需输入工资组名称、工资组描述、项目、金额),可修改工资组的信息(包括工资组名称、工资组描述、项目、金额),也可以删除某个不需要的工资组。2.3.2 审批工资组审批工资组的功能是对未审批的工资组进行审批。需输入审批意见(选择性填写),选择审批结果。2.3.3 创建工资单创建工资单的功能需求是根据员工编号查询员工的工资单信息(姓名、员工编号、职务、部门、工资组),可对员工添加工资单(需输入增加、扣除、发薪时间、备注),也可查看请假信息。可对已存在但未审核的工资单进行修改,可删除不需要的工资单。2.3.4 审批工资单审批工资单的功能需求是可对已添加但未审核的工资单进行审批,需填写审批意见(选择性填写),选择审批结果。 3 数据库设计3.1 数据流程图3.1.1 系统管理 部门管理用户管理角色管理系统管理 图3-1系统管理流程图3.1.2 报表管理 报表管理员工报表管理工资报表管理图3-2报表流程图3.2 数据字典分析3.2.1 模块管理表(module)-主要用来管理模块的排列和模块的访问路径。字段名称数据类型字段大小是否主键说明idint11Y模块编号namevarchar500N模块名称snvarchar500N系统标识urlvarchar500N访问路径orderNovarchar500N优先级标识parentIdint11N父亲模块编号3.2.2 用户表(user)-登录系统的用户定义字段名称数据类型字段大小是否主键说明Idint11Y用户idusernamevarchar500N用户名称passwordvarchar500N密码personIdint11N员工idcreateTimedatetimeN/YN创建时间3.2.3 角色类型表(role)-用户访问系统的权限通过用户角色所授予的权限获得。字段名称数据类型字段大小是否主键说明Idint11Y角色idNamevarchar500N角色类型id3.2.4 用户角色(user_role)-该表通过用户控制角色和权限优先级 字段名称数据类型字段大小是否主键说明Idint11Y用户角色iduserIdvarchar500N用户idroleIdvarchar500N角色类型idorderNovarchar500N优先级标识3.2.5 访问控制表(acl)-访问控制表是应用层在服务器接口的指令列表,这些指令列表通过数字标识确定优先级和告诉服务器允许访问的模块。字段名称数据类型字段大小是否主键说明Idint11Y权限idprincipalTypevarchar500N授权角色类型principalSnint11N权限优先级标识resourceSnint11N授权模块序号aclStateint11N授权状态aclTriStateint11N启用状态3.2.6 员工个人信息报表设计所涉及的表(person)字段名称数据类型字段大小是否主键说明idint11Y员工idnamevarchar500N员工姓名sexvarchar500N性别ageint11N年龄addressvarchar500N地址phoneint11N电话numberint11N员工编号dutyint11N职务departmentidint11N部门编号groupIdint11N工资组编号descriptiontextY/NN个人简历createTimedatetimeY/NN入职时间3.2.7 员工工资报表设计所涉及的表(payroll)字段名称数据类型字段大小是否主键说明idint11Y序号personIdint11N员工idgroupIdint11N所属工资组号increaseint11N额外奖金reduceint11N扣除费用statusvarchar500N审批状态remarkvarchar500N备注baseint11N应发总薪资opinionvarchar500N审批意见totalint11N实发总薪资payTimedatetimeY/NN发薪资时间createTimedatetimeY/NN添加工资单时间3.3 数据库关系模型图3-3 数据库关系模型图4 设计说明4.1 系统概述 在本工资管理系统中,涉及到最多的就是对数据的增删改查,当然在真是的系统中,对于这些操作要控制在严格的权限中,使用struts2hibernatespring实现了简单的CRUD操作。在mvc与三层架构之间我们选择了三层架构,当然他们本质相同。这里采用三层架构,也就是数据访问层、业务逻辑层、表示层。这样有利于分工和标准化。增加代码的复用性。但由于业务无法直接访问数据库必须通过中间层完成。反映时间间隔用操作是否成功界面代替。4.2 数据源的配置 为了防止中文乱码的产生我们将整个项目改为UTF-8,数据库设为UTF-8,由于HTML页面参数以浏览器的编码方式发送>JSP页面以JSP定义的编码方式被编译>被JSP引擎编译为*.class文件>在JSP容器中运行>传递给Mysql数据库>以数据库的编码方式读取数据并存储>读取Mysql以数据库的编码方式读取>JSP页面接受后在浏览器中显示(以浏览器编码方式解码显示);我们需要解决问题有:(1)所有*.jsp的头文件设置为<% page language="java" pageEncoding="UTF-8"%>以至于在浏览器中直接访问此页面时无乱码。数据库设置的是全部使用UTF-8编码,乱码问题归根到底是字符集的问题,查看mysql字符集如下:mysql> show variables like 'character%'+-+-+| Variable_name | Value |+-+-+| character_set_client | latin1 | character_set_connection | latin1 | character_set_database | utf8 | character_set_filesystem | binary | character_set_results | latin1 | character_set_server | latin1 | character_set_system | utf8 | character_sets_dir | C:Program FilesMySQLMySQL Server 5.5sharecharsets |+-+-+修改 my.ini(MySQL Server Instance Configuration 文件)# CLIENT SECTION client port=3306 MySQL default-character-set=utf-8 # SERVER SECTION MySQLd default-character-set=utf-8 (2)修改data目录中相应数据库目录下的db.opt配置文件default-character-set=utf-8 default-collation=utf8_general_ci 修改后查看mysql字符集如下:mysql> show variables like 'character%'+-+-+| Variable_name | Value |+-+-+| character_set_client | utf8 | character_set_connection | utf8 | character_set_database | utf8 | character_set_filesystem | binary | character_set_results | utf8 | character_set_server | utf8 | character_set_system | utf8 | character_sets_dir | C:Program FilesMySQLMySQL Server 5.5sharecharsets |+-+-+8 rows in set (0.00 sec)(3)数据库连接串中指定字符集URL=jdbc:MySQL:/yourIP/college?user=root&password=123&useUnicode=true&characterEncoding=utf-8 (4)在创建数据库时指定字符集create database gzglxt CHARACTER SET utf-8; 根据数据库设计建表,使用Mysql界面软件SQLyog-8.7.1。并做POJO持久化的数据库的映射对象,并实现序列化。以便扩展,当然而在Struts2中的Action由于可以不继承任何的接口,所以在这种情况下Action是POJO,但是Struts2中的Action也可以继承ActionSupport类就不再属于POJO了。POJO里面是可以包含业务逻辑处理和持久化逻辑,也可以包含类似与JavaBean属性和对属性访问的set和get方法的。图4-1 配置图对hibernate.cfg.xml做如下配置:图4-2 配置图<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC "-/Hibernate/Hibernate Configuration DTD 3.0/EN" "<!- Generated by MyEclipse Hibernate Tools. -><hibernate-configuration><session-factory><property name="connection.username">root</property><property name="connection.password">123</property><property name="connection.url">jdbc:mysql:/127.0.0.1:3306/gzglxt</property><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="myeclipse.connection.profile">mysql</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="show_sql">true</property><property name="c3p0.max_size">30</property><property name="c3p0.min_size">5</property><property name="c3p0.timeout">3000</property><property name="c3p0.max_statements">100</property><mapping class="cs.xj.pojo.Department" /><mapping class="cs.xj.pojo.Role" /><mapping class="cs.xj.pojo.Payroll" /><mapping class="cs.xj.pojo.UserRole" /><mapping class="cs.xj.pojo.Group" /><mapping class="cs.xj.pojo.Change" /><mapping class="cs.xj.pojo.User" /><mapping class="cs.xj.pojo.Person" /><mapping class="cs.xj.pojo.GroupDetail" /><mapping class="cs.xj.pojo.Leave" /><mapping class="cs.xj.pojo.Account" /><mapping class="cs.xj.pojo.Module" /><mapping class="cs.xj.pojo.ACL" /></session-factory></hibernate-configuration>1) Hibernate与POJO对像的交互流程图如下: 数据库Hibernate业务逻辑层业务逻辑层表示层JDBC 图4-3 Hibernate与POJO对像的交互流程图图4.3 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.4 Struts2配置 为了简化Struts2的配置,是编程更容易模块化进行,可以通过对各个Action对应的xml文件的调度,对各个Action进行调度。<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/Apache Software Foundation/DTD Struts Configuration 2.0/EN" "http:/struts.apache.org/dtds/struts-2.0.dtd"><struts><constant name="devMode" value="true" /><package name="base" extends="struts-default" namespace="/"><!- 退出登录配置 -> <action name="zhuXiao" class="zhuxiao.ZhuXiaoAction"> <result name="success">/index.jsp</result> </action> </package> <include file="cs/xj/action/login/login.xml"/> <!-登录管理 -><include file="cs/xj/action/department/department.xml"/> <!-部门管理 -><include file="cs/xj/action/role/role.xml"/> <!- 角色管理 -><include file="cs/xj/action/user/user.xml"/> <!- 用户管理 -><include file="cs/xj/action/acl/acl.xml"/> <!-权限分配管理 -> <include file="cs/xj/action/personReport/personReport.xml"/><!- 生成员工信息报表管理 -><include file="cs/xj/action/payrollReport/payrollReport.xml"/><!-生成 工资信息报表管理 -></struts>5 工资组模块设计5.1 工资组配置在Strusts.xml中添加<include file="cs/xj/action/group/group.xml"/><!- 工资管理 ->group.xml的配置如下: <struts><package name="group" extends="struts-default" namespace="/group"> <interceptors><interceptor name="securityInterceptor" class="cs.xj.interceptor.SecurityInterceptor"></interceptor></interceptors><global-results><result name="error">/pages/pay_main.jsp</result><result name="login" type="redirect">/index.jsp</result></global-results><action name="groupAction" class="groupAction"><result name="find">/pages/group/group.jsp</result><!- 创建工资组 -><result name="saveInput">/pages/group/add_group.jsp</result><!- 添加工资组 -><result name="save" type="redirect">/pages/common/success.jsp</result><!- 添加工资组提交成功 -><result name="approve">/pages/group/approve_group.jsp</result><!-审批工资组 -><result name="select">/pages/group/select_group.jsp</result><!-工资组信息 -><result name="app">/pages/group/app_group.jsp</result><!- 审批工资组 -><result name="approveSuccess" type="redirect">/pages/common/success.jsp</result><!- 审批工资组成功 -><result name="edit">/pages/group/edit_group.jsp</result><!- 修改工资组 -><result name="updateInput">/pages/group/edit_group.jsp</result><!- 修改工资组 - -><result name="update" type="redirect">/pages/common/success.jsp</result><!- 修改工资组成功 -><result name="delete" type="redirect">/pages/common/del_success.jsp</result><!- 删除记录成功 -><interceptor-ref name="paramsPrepareParamsStack"></interceptor-ref><interceptor-ref name="securityInterceptor"></interceptor-ref> </action5.2 工资组功能5.2.1 创建工资组在本系统中工资组主要用来管理公司不同工中的底薪(基本工资)包括各种津贴或补助。创建工资组修改删除添加工资组图5-1 创建工资组模块E-R图5.2.2 审批工资组当财务部门创建工资组模块添加或修改工资组时,需要总经理审批。 审批审批意见是否同意激活图5-2 审批工资组模块E-R图5.3 性能这里采用三层架构,也就是数据访问层、业务逻辑层、表示层。这样有利于分工和标准化。增加代码的复用性。但由于业务无法直接访问数据库必须通过中间层完成。反映时间间隔用操作是否成功代替。5.4 输入项对应操作的数据库表:5.4.1 账户表图5-3 工资组模块账户表图5.4.2 工资组表图5-4 工资组模块工资组表图5.4.3 员工工资表图5-5 工资组模块员工工资表图5.5 输出项/*Table: groups*/-/*Column Information*/-FIELD TYPE COLLATION NULL KEY DEFAULT Extra PRIVILEGES COMMENT - - - - - - - - -id INT(11) (NULL) NO PRI (NULL) AUTO_INCREMENT SELECT,INSERT,UPDATE,REFERENCES 序号 NAME VARCHAR(500) utf8_general_ci NO