工资管理系统的设计与实现
摘 要
企业的工资管理是公司管理的一个重要内容。随着企业人员数量增加,企业的工资管理工作也变得越来越复杂。工资管理既涉及到企业劳动人事的管理,同时也是企业财务管理的重要组成部分。工资管理需要和人事管理相联系,同时连接工时考勤和医疗保险等等,来生成企业每个职工的基本工资、津贴、医疗保险、保险费、实际发放工资等。资金是企业生存的主要元素,资金的流动影响到企业的整体运作,企业员工的工资是企业资金管理的一个重要的组成部分。企业工资管理系统是典型的信息管理系统(MIS),本系统采用ASP开发,后台数据库采用Access数据库。工资管理系统能提高了工作效率,节省了人力和物力,最终满足企业财务管理、员工工资发放的需要,同时也成为现代化企业管理的标志。
关键词:工资管理;信息管理; ASP;Access
The Design and Implementation of Salary Management System
Abstract
Salary management of enterprise plays important role in enterprise management. It becomes more and more complex for increasing personnel. Salary management is involved with both the labor resource management and financial management. It is influenced with affair management, attendance and medical insurance. Each employee’s salary comprises base pay, allowance, medical insurance, insurance premium and real pay. Capital as the major element for the existence of enterprise, its current can effect the whole movement of an enterprise. Salary management system is a classic Management Information System (MIS). This system is implemented with ASP and Access database. This system greatly improves the work efficiency, saves labor and material resources, and fits the needs of the requirement for financial management. Meanwhile, it becomes the symbol of modern enterprise management.
Key words: Salary Management; Information Management; ASP; Access
目 录
论文总页数:23页
1 引言
1.1 课题背景
随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现工资的数据库管理势在必行。人员方面:可随时通过工资管理员根据本人需要查阅工资情况,每月可以领取相应的工资报表,以进行检查和核实。财务人员方面:实现工资数据输入、查询、修改和打印的计算机化管理,减轻工作量,使工资管理更加的规范化。单位方面:实现财务管理系统的统一,开发完本系统后,可使财务管理更具有统一性,提高管理效率,增强单位凝聚力。
1.2 国内外研究现状
现在国内外对此类系统的开发与研究也是很有实用性的,基本上能满足各企业的自身特点,来进行工资管理,同时,该类系统又都在不断地深入与发展,来适用更多的企业。但工资管理系统的安全性还有待于今后的进一步开发与实践。
1.3 本课题研究的意义
计算机的应用和普及,使我们可以应用计算机来进行管理,这样,面对大量的管理信息,我们不必再需要人为地管理,我们开发出工资管理软件就可以很轻松的进行管理。工资管理系统是一个协助各单位科学、全面、高效地进行工资管理的系统,在任何一个单位,工资管理是一件非常重要的财务工作,开发工资管理系统是一个通用的管理系统,它是办公自动化系统的基础,是应用计算机进行管理的一种方法。
2 关键技术介绍
系统采用前台使用ASP技术,后台使用ACCESS数据库平台,下面分别介绍一下最好不要在客户端使用VBSCRIPT。而在服务器端,则无需考虑浏览器的支持问题。Netscape浏览器也可以正常显示ASP页面。
2.1 ASP技术
ASP使用了微软的ActiveX技术。ActiveX(COM)技术是现在Microsoft软件的重要基础。它采用封装对象,程序调用对象的技术,简化编程,加强程序间合作。ASP本身封装了一些基本组件和常用组件,有很多公司也开发了很多实用组件。只要你可以在服务器上安装这些组件,通过访问组件,你就可以快速、简易地建立自己的WEB应用。
ASP运行在服务器端。这样就不必担心浏览器是否支持ASP所使用的编程语言。ASP的编程语言可以是VBSCRIPT和JSCRIPT。VBSCRIPT是VB的一个简集,会VB的人可以很方便的快速上手。然而Netscape浏览器不支持客户端的VBSCRIPT,所以时,看到的是ASP生成的HTML代码,而不是ASP程序代码。这样就可以防止别人抄袭程序。
2.2 ACCESS
Access 是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。
2.3 IIS简介
IIS是Internet信息服务(Internet Information Server)的缩写,它是一种Web服务,主要包括WWW服务器、FTP服务器等,使得在Intranet(局域网)或Internet(因特网)上发布信息成了一件很容易的事。WWW服务提供维护网站和网页,并回复基于浏览器的请求。有了WWW服务和它内置的功能,通过Internet信息服务器可以创建各种各样的Internet应用程序,加上其内置的对数据库连接的支持,IIS的功能就更强大了。SQL数据库信息或其他任何符合ODBC的数据库信息都能在Internet/Intranet上灵活应用。
3 系统设计分析
3.1 应用需求分析
本系统模块设计目标是采用后台工资信息录入,前台动态页面显示的形式,适应网站大规模浏览量要求,形成一个系统化、自动化、高效率的工资管理系统。本系统充分考虑了系统的可扩展性和商业性,利用ASP基本知识以及Acess的基本操作,使它具有良好的稳定性并宜于维护。
本系统拥有两个操作用户角色,即员工和管理员。
员工通过输入自己的身份证号和密码登录系统,然后再次输入自己的身份证号以及需要查询的月份便可对自己每个月的工资具体情况有个精确的了解。
同时管理员也能够及时的对员工的工资进行修改、添加、删除等,这样就极大提高了工作效率,节省了人力和物力,最终满足企业财务管理、员工工资查询的需要。
3.2系统功能模块划分
开发这个系统的目的就是帮助企业的财务主管部门提高工作效率,实现企业工资信息管理的系统化、规范化和自动化。能够和认识管理系统、考勤管理系统相结合,真正实现企业高效、科学、现代化的员工管理。系统最终划分为以下四个模块:
(1) 员工登录模块:用于员工登录,通过员工输入身份证号以及密码判断员工身份的有效性,有效的员工根据其角色定向分别选择进入管理界面还是查询界面,无效员工定向到登录失败页面。
(2) 员工注册模块:用于记录员工的资料(姓名、密码、性别、年龄等)。当员工注册后才能登录系统。而注册时必须使用自己的身份证号来注册,体现起唯一性。
(3) 员工查询模块:用于员工通过输入身份证号和月份查询自己每月的具体工资情况(包括岗位工资、技能工资、加班费等)。
(4) 管理员模块:当管理员成功登录后,可通过模糊查询或精确查询对每个员工的工资情况有具体的了解,同时可以删除、修改、添加员工的工资情况,最后管理员能够随时修改自己的密码和帐号,因为管理员是唯一的。
3.3 系统数据库设计
数据库是信息管理系统的后台,存储着所有的信息,在信息管理系统中有着很重要的地位。数据库设计的好与坏,直接影响到这个系统的运行效率。良好的数据库设计,可以提高数据信息的存储效率,确保数据信息的完整性和一致性。
针对企业工资信息管理系统的需求,通过对员工工资计算过程的内容分析,系统E-R图如下:
图2-1 E-R图
数据库表结构设计如下:
(1) 基本工资信息表:管理员在后台编辑时填写的工资信息都将存储在数据库CX表中。表中ID用来唯一标识添加工资信息,每添加一个员工的工资信息,其值自动加一;照表中顺序从上到下依次是:月份、备注、身份证号码、姓名、岗位工资、技能工资、年功工资、降温费、劳保折算、其他津贴、其他补贴、存假结算、加班工资、公积金、储蓄金、养老金、医疗金、应发工资总额和实发工资总额。
具体的表如下:
表2-1 员工信息CX表
字段名称 |
数据类型 |
说明 |
ID |
自动编号 |
员工编号 |
ym |
数字 |
月份 |
others |
文本 |
备注 |
ic |
文本 |
身份证号码 |
name |
文本 |
姓名 |
a |
数字 |
岗位工资 |
b |
数字 |
技能工资 |
c |
数字 |
年功工资 |
d |
数字 |
降温费 |
e |
数字 |
劳保折算 |
f |
数字 |
其他津贴 |
g |
数字 |
其他补贴 |
h |
数字 |
存假结算 |
i |
数字 |
加班工资 |
j |
数字 |
应发工资总额 |
k |
数字 |
公积金 |
l |
数字 |
储蓄金 |
m |
数字 |
养老金 |
n |
数字 |
医疗金 |
o |
数字 |
实发工资总额 |
(2) 用户登陆信息表:员工在前台注册时填写的信息都将存储在数据库MAIN表中。表中ID用来唯一标识注册用户,每注册一个用户,其值自动加一;照表中顺序从上到下依次是:身份证、密码、密码提示问题、密码提示答案、性别、年龄。
具体的表如下:
表2-2 用户资料MAIN表
字段名称 |
数据类型 |
说明 |
id |
文本 |
用户编号 |
user |
文本 |
身份证 |
password |
文本 |
密码 |
question |
文本 |
密码提示问题 |
answer |
文本 |
密码提示答案 |
sex |
文本 |
性别 |
age |
数字 |
年龄 |
(3) 管理员信息:管理员的信息都将存储在数据库REG表中。表中ID用来唯一标识注册管理员,每注册一个管理员,其值自动加一;照表中顺序从上到下依次是:管理员名和密码。
具体的表如下:
表2-3 管理员信息
字段名称 |
数据类型 |
说明 |
Id |
自动编号 |
|
Name |
文本 |
管理员名 |
Password |
文本 |
密码 |
content |
备注 |
备注 |
4 系统实现
4.1登录与注册模块的实现
图3-1 登录模块流程图
登录模块是用来判断用户是否是本企业的员工,当成功登录后进入主界面,可以选择修改自己的资料或者进入自主查询。而注册模块主要是对用户的资料进行记录。
界面的实现由Cc.asp页面体现,主要是由一些文本框以及提交、重置按纽组成。员工在该页面填写的身份证号和密码来登录系统。利用DreamwearMX自动生成的代码来首先判断身份证号、密码是否为空,如果任意一项为空,点击提交便会弹出警告窗口。如果不为空就先检查用户输入的身份证号和密码是否与数据库中的MAIN表的对应项匹配,如果匹配就转到Ccsuccess.asp页面,反之转到Ccfailure.asp页面。
登录的代码如下:
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');
}
图3-2 登录界面
注册界面的实现是由Reg.asp 页面体现,主要由一些文本框以及完成和重置按纽组成。其是通过对数据库中的MAIN表进行查询和插入等操作来实现的。当所有项都符合条件时,转到Regsuccess.asp页面,而由于身份证号重复注册失败时则转到Regfailure.asp页面。Regfailure.asp页面可选择重新注册,而进入Regsuccess.asp页面则可返回登录界面进行登录。
图3-3 注册界面
4.2“用户查询”模块的实现
该模块主要是用户通过自己的身份证号,选择需要查询的工资月份,对自己的工资进行查询。而如果用户是管理员,则可以点击左下角的“进入管理页面”到管理员的界面进行相关操作。
图3-4 用户查询模块流程图
用户查询页面为Index.asp,其中界面包括一些基本的文本框、按纽和菜单。在文本框中输入身份证号,而这个身份证号并不限制只能是员工本人的,只要知道其他员工的身份证号一样可以进行查询。而月份菜单是个静态的,需要管理员自己手动加入新月份。当身份证号输入完成,同时选择了月份后,点击“搜索”按纽后,将会检查输入的身份证号和月份是否与数据库中的表CX的对应项相符合,如果符合就会显示出该员工这个月的工资具体情况,反之出错。
图3-5 查询界面
员工对自己的工资查询后的结果代码如下:
<%
ic=request.form("ic")
ym=request.form("ym")
exec="select * from cx where ic='"+ic+"' and ym="+ym
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
<td class="xl25" width="15" x:num height="42"><font size="2"><%=rs("a")%></font></td>//从记录集得到岗位工资
<td class="xl25" width="15" x:num height="42"><font size="2"><%=rs("b")%></font></td>//从记录集得到技能工资
<td class="xl25" width="15" x:num height="42"><font size="2"><%=rs("c")%></font></td>//从记录集得到年功工资
<td class="xl25" width="15" x:num="0" height="42"><font size="2"><%=rs("d")%></font></td>//从记录集得到降温费
<td class="xl25" width="15" x:num="0" height="42"><font size="2"><%=rs("e")%></font></td>//从记录集得到劳保折算
<td class="xl25" width="15" x:num="0" height="42"><font size="2"><%=rs("f")%></font></td>//从记录集得到其他津贴
<td class="xl25" width="15" x:num height="42"><font size="2"><%=rs("g")%></font></td>//从记录集得到其他补贴
<td class="xl25" width="15" x:num="0" height="42"><font size="2"><%=rs("h")%></font></td>//从记录集得到存假结算
<td class="xl25" width="15" x:num="0" height="42"><font size="2"><%=rs("i")%></font></td>//从记录集得到加班工资</tr>
<tr height="33" style="mso-height-source:userset;height:24.95pt">
<td class="xl25" width="130" style="border-left-style: none; border-left-width: medium; border-top-style: none; border-top-width: medium" x:num height="42"><font size="2"><%=rs("k")%></font></td>//从记录集得到公积金
<td class="xl25" width="130" style="border-left-style: none; border-left-width: medium; border-top-style: none; border-top-width: medium" x:num height="42"><font size="2"><%=rs("l")%></font></td>//从记录集得到储蓄金
<td class="xl26" width="130" style="border-left-style: none; border-left-width: medium; border-top-style: none; border-top-width: medium" x:num height="42"><font size="2"><%=rs("m")%></font></td>//从记录集得到养老金
<td class="xl26" width="131" style="border-left-style: none; border-left-width: medium; border-top-style: none; border-top-width: medium" x:num="0" height="42"><font size="2"><%=rs("n")%> </font></td>//从记录集得到医疗金</tr>
<tr height="33" style="mso-height-source:userset;height:24.95pt">
<td class="xl24" width="173" height="14" align="center"><font size="2"><%=rs("j")%></font></td>//从记录集得到应发工资总额
<td class="xl24" width="182" height="14" align="center"><font size="2"><%=rs("o")%></font></td>//从记录集得到实发工资总额</tr>
<p><font size="2">备注说明:<%=rs("others")%></font></p>//从记录集得到备注说明
图3-6 查询成功界面
4.3 “管理员模块”的实现
管理员模块主要是通过管理员输入帐号和密码进行登录,而为了防止他人盗取资料或者修改资料,这个管理员是唯一的。当管理员登录成功后,便可以对员工的资料进行修改,添加以及删除。管理员登录界面的实现由Login.asp来体现。它由两个文本框以及提交和重置按纽组成。管理员在该页面填写的用户名和密码等信息将提交给Cklogin.asp页面进行处理。该页面首先判断用户名和密码是否为空,如果任一项为空则跳转到error.asp页面,提示用户输入完整信息。如果都不为空则会检查用户名和密码是否与数据库中reg表的对应的项相匹配,如果匹配则进入Login ok.asp,反之跳转error.asp页面。
管理员界面的实现是通过Login ok.asp来体现的。它是由一些文本框、表格、图以及修改、删除、提交按纽组成。表格中都是调用数据库CX表中的每个员工的工资信息中的姓名、身份证号、实发工资总额、月份以及备注。当点击修改按纽时,就会进入xg.asp页面对员工数据进行修改,当修改完成时,会通过xgg.asp来写入数据库CX表的相应项。而当点击删除按纽时,会出现个小窗口提示是否确定删除,防止误删。
图3-7 管理员模块流程图