时间:2022-08-23 08:46:18
[摘 要] 本文使用Visual Basic编程语言,开发和设计了工资管理系统。该系统实现了一般工资管理系统对员工工资信息的浏览、添加、删除、修改和查询功能,能够完成对员工工资的结算,减少大量的人工操作的工作量,降低数据出现错误的概率,加强工资记录的安全性和完整性。
[关键词] 工资管理;VB;设计;开发
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2013 . 17. 013
[中图分类号] F232 [文献标识码] A [文章编号] 1673 - 0194(2013)17-0026-04企业职工工资关系到每一个职工的切身利益,是保障企业稳健运行的重要环节。工资核算是所有单位财务部门最基本的业务之一,是一项重要的经常性的工作。在传统的手工方式下,为了完成工资核算,需要财务人员花费大量的时间和精力,并且在计算过程中非常容易出错。本文基于Visual Basic语言开发的工资管理系统采用计算机处理,保证了工资核算的准确性和及时性。
1 系统功能与可行性分析
工资管理系统的基本功能就是为企业提供工资核算和管理的有关信息,附带提供有关职工个人档案的基本资料,一方面,通过各种资料和计算公式得到每名职工工资数据;另一方面,通过工资分摊将工资分配到各种费用中去。
1.1 系统功能分析
为完成工资管理功能,系统应完成的主要功能包括:
1.1.1 系统管理
系统管理包括操作员管理、权限管理、安全管理等功能,这些功能主要通过操作员编码、姓名、权限以及登录密码等来实现。
1.1.2 档案管理
档案管理包括员工信息管理和部门信息管理。应实现对员工和部门的基本信息的浏览、添加、删除和修改。
1.1.3 工资管理
(1)基本工资设置:对员工的基本工资信息进行添加、删除和修改。
(2)考勤信息统计:对员工的考勤信息进行添加、删除和修改。
(3)工资结算:根据员工的基本工资信息和考勤信息,以及本月奖金和补助等的输入金额,计算出员工的个人所得税并结算出该月的工资。
(4)固定工资调整:对于企业员工的固定工资,进行统一的调整。
1.1.4 信息查询
(1)查询员工工资信息:按照员工编号或员工姓名,或二者组合查询员工的工资信息。
(2)查询部门工资信息:按照部门编号或部门名称,或二者组合查询工资信息。
系统功能模块图如图1所示。
1.2 系统设计可行性分析
1.2.1 经济可行性
利用VB语言开发的工资管理系统成本低,时间短,符合现代企业财务管理的利润最大化的目标。应用工资管理系统,节省了许多人力、物力上的开支,使工资管理工作更加简化,使其更加合理化、规范化。
1.2.2 操作可行性
系统是使用VB语言开发的,易于操作。而且系统还采用了可视化面向对象的开发工具,其窗口、界面简洁易懂,所以系统在操作上是可行的。
1.2.3 技术可行性
从目前IT业界比较流行的数据库开发、管理软件来看,对于比较简单的中小型数据库,Visual Basic 6.0和Access 2007的结合无疑是在实际应用中较为成功的一种解决方案。为用户提供了非常友好、操作简单的用户界面,完善强大的数据库操作功能和简洁明了的数据库接口,所以技术应用相对容易。
2 系统详细设计与实现
本系统的数据库设计如下数据项和数据结构。
2.1 主要数据库表
要进行工资系统的设计,首先设计好数据库表,主要的数据库表包括:用户信息表,主要用来存储用户的信息;部门信息表,主要用来存储各个部门的信息;职工信息表,主要用来存储职工的详细信息;职工工资明细表,主要用来存储职工工资的详细信息;职工工资结算表;主要用来存储职工工资结算的详细信息等。其中,职工工资明细表如表1所示。
2.2 系统登录界面设计
系统登录主要用于验证工作人员登录系统时的用户名称、密码是否正确。系统登录窗体运行图如图2所示。
2.3 系统主界面的设计
经过用户身份验证后,进入系统主界面,系统主界面有系统管理、档案管理、工资管理、查询、打印报表5个模块。
系统主界面如图3所示。
2.4 系统设计
系统功能主要包括系统管理、档案管理、工资管理、查询、打印报表,部分功能的实现如下:
2.4.1 建立员工基本工资设置窗体
添加一个普通窗体,caption属性设置为“基本工资设置”,其窗体运行如图4所示。
其窗体命令按钮的增加、删除、保存的部分代码如下:
增加按钮代码:
Private Sub Command1_Click()
Adodc1.Recordset.AddNew
Text1(0).SetFocus
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = True
End Sub
删除按钮代码:
Private Sub Command2_Click()
If MsgBox("确定删除当前资料吗?", vbInformation + vbYesNo, "删除资料?") = vbYes Then
Adodc1.Recordset.Delete
Adodc1.Recordset.MovePrevious
End If
End Sub
保存:
Private Sub Command4_Click()
For i = 0 To 11
If Text1(i) = "" Then
MsgBox "输入不完整!", vbOKOnly + vbExclamation, "警告"
Text1(i).SetFocus
Exit Sub
End If
Next i
If MsgBox("确定保存当前资料吗?", vbInformation + vbYesNo, "保存资料?") = vbYes Then
Adodc1.Recordset.Update
Adodc1.Recordset.MovePrevious
End If
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = False
Command7.Enabled = True
End Sub
2.4.2 建立考勤信息统计窗体
添加一个普通窗体,Caption属性设为“考勤信息统计”,其窗体运行如图5所示。
考勤信息统计代码如下:
Private Sub Form_Load()
Command1.Enabled = True
Command2.Enabled = True
Command4.Enabled = True
Command7.Enabled = True
Combo1.AddItem "1"
Combo1.AddItem "2"
Combo1.AddItem "3"
Combo1.AddItem "4"
Combo1.AddItem "5"
Combo1.AddItem "6"
Combo1.AddItem "7"
Combo1.AddItem "8"
Combo1.AddItem "9"
Combo1.AddItem "10"
Combo1.AddItem "11"
Combo1.AddItem "12"
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database\企业工资管理系统.mdb;Persist Security Info=False"
conn.Open connstr
mysql = "select * from 考勤信息表"
End Sub
2.4.3 建立工资结算窗体
普通窗体,Caption属性设为“工资结算”。其窗体运行图如图6所示。
其工资的结算的部分代码如下:
Private Sub Command2_Click() '计算
If Text4(2) = "" Then
MsgBox "请输入奖金金额!", vbOKOnly + vbExclamation, "提示"
Text4(2).SetFocus
Else
If Text4(3) = "" Then
MsgBox "请输入其他补助金额!", vbOKOnly + vbExclamation, "提示"
Text4(3).SetFocus
Else
Text4(11) = Date
Dim GL As Integer
GL = Val(Year(Date) - Year(Label1(10).Caption)) '计算工龄
Label2(8).Caption = Val(Label2(11).Caption)*GL '计算工龄工资
Text4(1).Text = Val(Label2(12).Caption)*Val(Label3(10).Caption) '计算加班工资
Text4(4).Text = Val(Label2(15).Caption)*Val(Label3(11).Caption) '计算迟到扣款
Text4(5).Text = Val(Label2(13).Caption)*Val(Label3(9).Caption) '计算病假扣款
Text4(6).Text = Val(Label2(14).Caption)*Val(Label3(8).Caption) '计算事假扣款
Text4(0).Text = Val(Text4(4).Text) + Val(Text4(5).Text) + Val(Text4(6).Text) 计算考勤扣款
Dim money As Integer '应发金额
money = Val(Label2(9).Caption) + Val(Label2(10).Caption) + Val(Label2(8).Caption) _
+ Val(Text4(1).Text) + Val(Text4(2).Text) + Val(Text4(3).Text) - Val(Text4(0).Text) - Val(Text4(7).Text)
计算实发金额:
Text4(9).Text = money - Val(Text4(8).Text)
计算基本工资额,包括职务津贴、基本工资、工龄工资:
JBGZE = Val(Label2(10).Caption) + Val(Label2(9).Caption) + Val(Label2(8).Caption)
计算本月补助,包括加班工资、奖金、其他补助:
BYBZ = Val(Text4(1).Text) + Val(Text4(2).Text) + Val(Text4(3).Text)
计算其他扣款,包括违纪罚款和个人所得税:
QTKK = Val(Text4(7).Text) + Val(Text4(0).Text)
End Sub
2.4.4 建立员工固定工资调整窗体
重点描述确定按钮的代码如下:
Private Sub Command1_Click()
Dim m As Integer
If Combo1.Text = "基本工资" Then m = 1
If Combo1.Text = "职务津贴" Then m = 2
If Combo1.Text = "工龄津贴/年" Then m = 3
If Combo1.Text = "加班工资/天" Then m = 4
If Combo1.Text = "事假扣款/天" Then m = 5
If Combo1.Text = "病假扣款/天" Then m = 6
If Combo1.Text = "迟到扣款/天" Then m = 7
If Combo1.Text = "" Then
MsgBox "请选择需调整的工资项目!", vbOKOnly + vbExclamation, "提示"
Else
If Combo2.Text = "" Then
MsgBox "请选择调整的条件!", vbOKOnly + vbExclamation, "提示"
Else
If Text1.Text = "" Then
MsgBox "请输入调整值!", vbOKOnly + vbExclamation, "提示"
Exit Sub
End If
Adodc1.Recordset.MoveFirst
Do While Not Adodc1.Recordset.EOF
if adodc1.Recordset.Fields("职务")=Combo2.Text then
Adodc1.Recordset.Fields(Combo1.Text) = Text1.Text
dodc1.Recordset.MoveNext '职工工资明细表
Loop
End If
End If
MsgBox "修改成功!", vbOKOnly + vbExclamation , "信息"
End Sub
2.4.5 建立查询员工工资窗体
查询员工工资窗体运行如图7所示:
该窗体是一个职工工资查询窗体,表示当符合某一查询条件时所进行的查询操作,部分代码如下:
If flag = 1 Then Adodc2.RecordSource = " select*from 职工工资结算表 where 员工编号=” & Text1.Text & "'"
If flag = 2 Then Adodc2.RecordSource = " select*from 职工工资结算表 where 员工姓名=" & Text2.Text & "'"
If flag = 3 Then Adodc2.RecordSource = " select*from 职工工资结算表 where 员工编号=" & Text1.Text & " and 员工姓名=" & Text2.Text & "'"
输入查询条件后,单击“查询”按钮,显示查询结果,代码(部分)如下:
以员工编号和员工姓名查询
Adodc1.Recordset.MoveFirst
Do While Adodc1.Recordset.EOF True
If Text1.Text = Adodc1.Recordset.Fields("员工编号").Value _
And Text2.Text = Adodc1.Recordset.Fields("员工姓名").Value Then
i = 1
flag = 3
Exit Do
End If
Adodc1.Recordset.MoveNext
Loop