企业工资管理系统

摘     要

企业的工资管理是公司管理的一个重要内容。随着企业人员数量增加,企业的工资管理工作也变得越来越复杂。工资管理既涉及到企业劳动人事的管理,同时也是企业财务管理的重要组成部分。工资管理需要和人事管理相联系,同时连接工时考勤和医疗保险等等,来生成企业每个职工的基本工资、津贴、医疗保险、保险费、实际发放工资等。资金是企业生存的主要元素,资金的流动影响到企业的整体运作,企业员工的工资是企业资金管理的一个重要的组成部分。早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。早期工资管理多采取纸质材料和具有较强的时间限制。基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。企业工资管理系统是典型的信息管理系统(MIS),前台程序开发工具采用微软的VB6,后台数据库采用Access数据库。VB6是一种面向对象的开发工具,具有组件丰富、语言简单、功能强大的优点。 Access数据库具有与VB6无缝连接、操作简单、易于使用的优点。运行结果证明,本企业工资管理系统极大提高了工作效率,节省了人力和物力,最终满足企业财务管理、员工工资发放的需要,同时也成为现代化企业管理的标志

关键词:工资管理 信息管理 数据查询 数据库

目    录

摘  要 ………………………………………………………………………………第一章  绪  论 …………………………………………………………………… 1.1 数据库管理系统简介 ………………………………………………  

1.2 图书管理系统 ………………………………………………………   

1.3 开发工具简介 ……………………………………………………  

第二章  企业工资管理系统设计分析 …………………………………………

2.1 应用需求分析 ……………………………………………………………

2.2 系统功能模块划分 ………………………………………………………

2.3 系统数据库设计 …………………………………………………………

第三章  企业工资管理系统应用程序设计 ……………………………………

3.1 “登录”模块详细设计…………………………………………………………

3.2 “主窗体”模块详细设计………………………………………………………

3.3  各项子模块详细设计…………………………………………………………

3.4  各项子模块编写要点………………………………………………………

第四章 结束语 ………………………………………………………………  致  谢 ……………………………………………………………………………  

参考书目 ……………………………………………………………………………

  • 绪论

1.1数据库管理系统

数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。MS Access 2000就是一种关系型数据库管理系统。

关系模型主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,每个关系实际上是一张二维表格。关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。SQL语言是关系型数据库的标准化语言,已得到了广泛的应用。

1.2 企业工资管理系统

企业工资管理是一项琐碎、复杂而又十分细致的工作,一般不允许发生差错。最初的工资统计和发放都是使用人工方式处理,工作量大的时候,出现错误的机率也随之升高,不仅花费财务人员大量的时间,而且往往由于抄写不慎,或者由于计算的疏忽,出现工资发放错误的现象。同时工资的发放具有较强的时间限制,必须严格按照单位规定的时间完成计算和发放工作。正是企业工资管理的这种重复性、规律性、时间性,使得企业工资管理计算机化成为可能。企业工资管理系统就是使用电脑代替大量的人工统计和计算,完成众多企业工资信息的处理,同时使用电脑还可以安全地、完整地保存大量的企业工资记录。

1.3 开发工具简介

微软公司的Visual Basic 6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。Visual Basic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。因此,本系统使用MS Visual Basic 6.0开发。

  • 企业工资管理系统设计分析

2.1 应用需求分析

需求分析的过程可以说是一个对具体问题的反复理解和抽象的过程。理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。抽象就是除去问题的表面,提取问题的本质,建立问题的逻辑模型,以便于以后阶段的系统的设计实现。需求分析阶段是软件产品生存命期中的一个重要阶段,其根本任务是确定用户对软件系统的需求。所谓需求是指用户对软件的功能和性能的要求,就是用户希望软件能什么事情,完成什么样的功能,达到什么性能。通常需求分为两种类型:一种是功能性需求,一种是非功能性需求,这一点也需要有一种清楚的认识。功能性需求是指需要计算机系统解决的问题,也就是对数据的处理要求,这是一类最主要的需求。非功能性需求是指实际使用环境所要求的需求,往往是一些限制要求,例如:性能要求,可靠性要求,安全保密要求,等等。

软件需求一般包含三个层次—业务需求、用户需求和功能需求,还包括非功能需求。业务需求:反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。用户需求:描述了用户使用产品必须要完成的任务和具备的功能,这在使用实例文档或方案脚本说明中予以说明。功能需求:定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足其业务需求。

2.2 系统功能模块划分

开发这个系统的目的就是帮助企业的财务主管部门提高工作效率,实现企业工资信息管理的系统化、规范化和自动化。能够和认识管理系统、考勤管理系统相结合,真正实现企业高效、科学、现代化的员工管理。系统最终实现的主要功能如下。

·企业工资信息设置部分:包括设置员工的基本工资和其他项目的金额,如奖金等。并且负责设置员工工资的计算公式。

·企业工资信息管理部分:包括统计出勤、计算工资、查询工资和导出工资表。

·系统部分:包括添加用户和修改密码。

2.3系统数据库设计

数据库是信息管理系统的后台,存储着所有的信息,在信息管理系统中有着很重要的地位。数据库设计的好与坏,直接影响到这个系统的运行效率。良好的数据库设计,可以提高数据信息的存储效率,确保数据信息的完整性和一致性。

针对企业工资信息管理系统的需求,通过对员工工资计算过程的内容分析,为本系统设计如下的数据项和数据结构:

·基本工资信息:包括员工编号和基本工资(元/小时)。

·其他项目信息:包括员工编号、奖金、津贴、福利、扣发等。

·计算公式信息:包括加班费的百分比、出差工资、旷工、迟到早退扣发等。

·出勤统计信息:包括员工编号、姓名、统计日期、出勤天数、迟到早退次数、加班天数、加班天数等。

·工资统计信息:包括员工编号、姓名、统计日期、基本工资、奖金、津贴、福利,加班费、出差费、扣发、总额等。

启动Access 2000,创建新的数据库,命名为Salary.mdb和Person.mdb,保存在要存放这个系统所有工程文件的文件夹中。在使用的时,要把应用程序和这两个数据库保存在同一个文件夹中。

员工出勤统计信息表:

字    段

类    型

长    度

是否空

说   明

id

自动编号

长整型

不能空

记录编号

stuffid

文本

50

不能空

员工编号

stuffname

文本

50

不能空

员工姓名

recordmonth

日期/时间

不能空

统计时间

attendance

数字

长整型

不能空

出勤天数

lateearly

数字

长整型

不能空

迟到早退次数

absent

数字

长整型

不能空

旷工次数

overtimecom

数字

长整型

不能空

正常加班次数

overtimespe

数字

长整型

不能空

特殊加班次数

errand

数字

长整型

不能空

出差次数

员工工资计算公式信息表:

字    段

类    型

长    度

是否空

说   明

overtimecom

数字

长整型

不能空

正常加班工资百分比

overtimespe

数字

长整型

不能空

特殊加班工资百分比

errand

数字

长整型

不能空

出差工资

absent

数字

长整型

不能空

旷工工资

le

数字

长整型

不能空

迟到早退

字    段

类    型

长    度

是否空

说   明

id

自动编号

长整型

不能空

记录编号

stuffid

文本

50

不能空

员工编号

sposition

文本

50

不能空

员工职务

salary

货币

货币

不能空

基本工资

员工其他项目设置:

字    段

类    型

长    度

是否空

说   明

id

自动编号

长整型

不能空

记录编号

stuffid

文本

50

不能空

员工编号

yearmonth

日期/时间

  不能空

年月

type

数字

长整型

  不能空

类型

name

文本

50

  能空

类型

money

货币

货币

  不能空

名称

remark

备注

  能空

备注

员工工资统计信息表:

字    段

类    型

长    度

是否空

说   明

id

自动编号

长整型

不能空

记录编号

stuffid

文本

50

不能空

员工编号

stuffname

文本

50

不能空

员工姓名

yearmonth

日期/时间

不能空

时间

basicsalary

货币

货币

基本工资

bonus

货币

货币

奖金

welfare

货币

货币

福利

allowance

货币

货币

津贴

abatement

货币

货币

扣发

lesub

货币

货币

迟到早退扣发

absentsub

货币

货币

旷工扣发

overtime

货币

货币

加班费

errand

货币

货币

出差费

others

货币

货币

其他金额

total

货币

货币

总额

员工信息表:

字    段

类    型

长    度

是否空

说   明

sid

文本

50

能空

员工编号

sname

文本

50

能空

员工姓名

sgender

文本

50

能空

性别

splace

文本

50

能空

籍贯

sage

数字

长整型

不能空

年龄

sbirthday

日期/时间

不能空

生日

sdegree

文本

50

能空

学历

sspecial

文本

50

能空

专业

saddress

文本

50

能空

住址

scode

文本

50

能空

邮编

stel

文本

50

能空

电话

semail

文本

50

能空

Email

sworkTime

日期/时间

不能空

参加工作时间

sintime

日期/时间

不能空

进入公司时间

sdept

文本

50

能空

部门

spaytime

日期/时间

不能空

起薪时间

sposition

文本

50

能空

职务

sremark

文本

50

能空

备注

用户信息表:

字    段

类    型

长    度

是否空

说   明

userid

文本

50

不能空

用户名称

userpwd

文本

50

不能空

用户密码

第三章企业工资管理系统应用程序设计

3.1 “登录模块”详细设计

    登录模块的详细设计主要是用户登录的一个界面,判断登录的用户是管理员还是普通用户,进入后将面对的是主界面,从而进行相关的操作。

    登录的界面主要由用户名和密码的信息,还有一些标题设置,确定和取消的按钮组成。通过标题可以知道此系统的大概内容,由此,登录界面的设计完成。

3.2 “主窗体”模块详细设计

在这个项目中,选择使用多文档界面。使用这个窗体的好处是可以使程序更加有条理。对于一个多任务的应用程序,使用多文档窗体还可以减少占用的系统资源。

主窗体设计的界面是用菜单编辑器做的,主要由系统、工资信息设置、工资信息管理和关于这四个大模块组成。主窗体是进行相关操作的主界面。在这几个里,管理员有所有的权利进行各种操作。

3.3各项子模块详细设计

选择“系统”—>“添加用户”菜单,在添加用户的窗体里,输入新的用户名称和密码后,单击“确定”按钮,系统将会添加新的用户。

        sql = "insert into userinfo (userid,userpwd) values('" & username

       sql = sql & "','" & password & "')"

       Call transactsql(sql, "salary")

       MsgBox "添加成功", vbOKOnly + vbExclamation, "添加结果"

       username.Text = ""

       password.Text = ""

       confirmpwd.Text = ""

       username.SetFocus  

      

选择“系统”—>“修改密码”菜单,在修改密码的窗体里,输入旧密码和2次输入新密码后,单击“确定”按钮,系统将会更改当前用户的密码。

userpassword = newpwd

sql = "update userinfo set userpwd='" & newpwd & "'where userid='" & strusername & "'"

Call transactsql(sql, "salary")

MsgBox "密码已经修改", vbOKOnly + vbExclamation, "修改结果"

选择“工资信息设置”—>“基本工资设置”菜单设置员工的基本工资,可以根据员工的编号,或者根据员工职务设置基本工资,设置的基本工资为每个小时的工资。

Set rs = getrs(sql, "salary")

If rs.EOF = False Then

sql = "delete from salarysetting where stuffid='" & Me.comstuffid.Text & "'"

Call transactsql(sql, "salary")

End If

rs.Close

id = Me.comstuffid.Text

Call addrecord

MsgBox "已经设置基本工资", vbOKOnly + vbExclamation, "添加结果"

Call init

sql = "select * from salarysetting"

Call frmresult.basictopic

Call frmresult.showbasic(sql)

frmresult.Show

frmresult.ZOrder 0

Me.ZOrder 0

选择“工资信息设置”—>“其他项目设置”菜单,在其他项目设置的窗体中,设置员工当月的奖金、津贴、福利等项目。

sql = "select * from salaryother"

  If ichangeflag = 1 Then

     Call add

     MsgBox "已经添加记录", vbOKOnly + vbExclamation, "提示"

     Call frmresult.othertopic

     Call frmresult.showother(sql)

     frmresult.Show

     Unload Me

  Else

     If Me.optionbonus.Value = True Then

        itype = 1

     ElseIf Me.optionallowance.Value = True Then

        itype = 2

     ElseIf Me.optionwelfare.Value = True Then

        itype = 3

     ElseIf Me.optionabatement.Value = True Then

        itype = 4

     ElseIf Me.optionothers.Value = True Then

        itype = 5

    resumdate = recordtime

        sql = "delete from salaryother where stuffid='" & Me.comid.Text

        sql = sql & "' and YearMonth=#" & recordtime & "# and "

        sql = sql & "Type=" & itype

        Call transactsql(sql, "Salary")

        Call add

        Call frmsumsalary.resumsalary(resumdate)

        sql = "select * from salaryother"

        Call frmresult.othertopic

        Call frmresult.showother(sql)

        frmresult.Show

        Unload Me

     End If

    

选择“工资信息设置”—>“工资计算公式设置”菜单,在这个计算公式窗体中设置员工实际发放工资的计算公式。

If Me.textovertimecom = "" And IsNumeric(Me.textovertimecom) = True Then

      MsgBox "请输入正常加班工资百分比", vbOKOnly + vbExclamation, "提示"

      Me.textovertimecom = ""

      Me.textovertimecom.SetFocus

   ElseIf Me.textovertimespe = "" And IsNumeric(Me.textovertimespe) = False Then

      MsgBox "请输入特殊加班工资百分比", vbOKOnly + vbExclamation, "提示"

      Me.textovertimespe = ""

      Me.textovertimespe.SetFocus

   ElseIf Me.texterrand = "" And IsNumeric(Me.texterrand) = False Then

      MsgBox "请输入出差工资", vbOKOnly + vbExclamation, "提示"

      Me.texterrand = ""

      Me.texterrand.SetFocus

   ElseIf Me.textabsent = "" And IsNumeric(Me.textabsent) = False Then

      MsgBox "请输入旷工扣发工资", vbOKOnly + vbExclamation, "提示"

      Me.textabsent = ""

      Me.textabsent.SetFocus

   ElseIf Me.textle = "" And IsNumeric(Me.textle) = False Then

      MsgBox "请输入迟到早退扣发工资", vbOKOnly + vbExclamation, "提示"

      Me.textle = ""

      Me.textle.SetFocus

   Else

      Call setvalue

      Call init

   End If

选择“工资信息管理”—>“出勤统计”菜单,在统计出勤记录窗体中选择需要统计记录的月份。

firstday = Year(Date) & "-" & Me.commonth.Text & "-1"

days = DateDiff("d", Year(Date) & "-" & Me.commonth.Text & "-1", _

                          Year(Date) & "-" & Me.commonth.Text + 1 & "-1")

lastday = Year(Date) & "-" & Me.commonth.Text & "-" & days

sql = "select * from attendancestatistics where recordmonth between #"

sql = sql & firstday & "# and #" & lastday & "#"

Set rsrecord = getrs(sql, "salary")

If rsrecord.EOF = False Then

    MsgBox "已经统计", vbOKOnly + vbExclamation, "提示"

    frmaresult.Show

    frmaresult.ZOrder 0

    rsrecord.Close

    Unload Me

   Exit Sub

 End If

 sql = "select * from attendanceinfo where adate between #"

 sql = sql & firstday & "# and #" & lastday & "#"

 Set rsrecord = getrs(sql, "person")

 If rsrecord.EOF = False Then

 sql = "select sid,sname from stuffinfo order by sid"

 Set rsperson = getrs(sql, "person")

选择月份后单击“确定”按钮,如果系统已经统计过该月份的记录,那么会出现如下图所示的统计结果信息列表。如果系统没有统计过,那么系统就会开始统计记录,然后显示如图所示的统计结果信息列表。

If strusername <> "admin" Then

sql = "select sid from stuffinfo where sname='" & strusername & "'"

Set rs = getrs(sql, "salary")

sd = rs(0)

sql = "select * from attendancestatistics where stuffid='" & sd & "'"

Me.Adodc1.ConnectionString ="provider=microsoft.jet.oledb.4.0;Datasource="& App.Path & "\salary.mdb"

 Me.Adodc1.RecordSource = sql

Me.Adodc1.Refresh

Set Me.DataGrid1.DataSource = Me.Adodc1.Recordset

Me.DataGrid1.Refresh

Else

sql = "select * from attendancestatistics"

Me.Adodc1.ConnectionString="provider=microsoft.jet.oledb.4.0;Datasource="& App.Path & "\salary.mdb"

Me.Adodc1.RecordSource = sql

Me.Adodc1.Refresh

Set Me.DataGrid1.DataSource = Me.Adodc1.Recordset

Me.DataGrid1.Refresh

  End If

选择“工资信息管理”—>“计算实发工资”菜单,在这个窗体中选择需要统计的月份。选择统计月份后,单击“开始统计”按钮,系统如果已经统计了该月份的工资,系统会显示工资信息列表窗体。如果系统还没有统计工资,那么系统开始统计工资,然后在信息结果列表窗体中显示统计结果。

If Me.commonth.Text = 4 Then

 firstday = Year(Date) & "-" & Me.commonth.Text & "-1"

 days = DateDiff("d", Year(Date) & "-" & Me.commonth.Text & "-1", _

                            Year(Date) & "-" & Me.commonth.Text + 1 & "-1")

 lastday = Year(Date) & "-" & Me.commonth.Text & "-" & days

 Call sumsalary(firstday, lastday)

 sql = "select * from salarystatistics"

 frmresult.SSTab1.Caption = "员工工资统计列表"

 Call frmresult.listtopic

 Call frmresult.showdata(sql)

 frmresult.Caption = "统计结果列表"

 frmresult.ZOrder 0

 Unload Me

Else

 MsgBox "这个月的工资未统计", vbOKOnly + vbExclamation, "提示"

End If

选择“工资信息管理”—>“查询工资”菜单,系统显示如图的查询信息窗体,系统默认的是查询出数据库中所有的记录(当管理员进入的时候),当从“员工编号”下拉列表中选择一个员工编号后,单击“查询单人”按钮,就会查询出符合这个员工编号的记录;如果需要返回查询所有信息,单击“查询所有”按钮,系统就会返回所有员工的信息。在“员工工资统计列表”中单击鼠标右键,会弹出下图的菜单,在“员工其他项目列表”中单击鼠标右键也会出现下图的菜单。

如果要选择“删除基本工资设置”,出现如下的提示:

具体的操作这里就不详细介绍。

选择“工资信息管理”—>“导出工资表”菜单,会出现下图的“导出记录”窗体中选择需要导出工资的月份。选择月份和保存位置后,单击“导出”按钮,系统会开始导出数据。

单击“确定”按钮打开导出的文件,单击“取消”按钮回到系统。

                       导出的工资记录

3.4  各项子模块编写要点

在登录的这个窗体里,我做的特点是:只要在数据库里有用户信息的,都可以登录,然后显示相关自己的信息,而管理员显示所有的信息。当输入的用户名或密码不正确的时候,会出现如下的对话框:

   或者

                      

在主窗体的设计中,我在系统的下拉菜单里包括有添加用户、修改密码和退出系统。在这个模块里普通用户只有修改自己的密码的权利。在添加用户的窗体里:添加3个标签、3个文本框和2个命令按钮,然后设置它们相关的属性。在修改密码的窗体里:添加了3个标签,用来显示信息;3个文本框用来输入用户名称和用户密码;2个按钮用来确定和取消操作,然后设置它们的属性。

在工资信息设置的下拉菜单里包括有基本工资信息设置、其他项目信息设置和计算公式设置。在这个模块里,普通用户没有任何权利进行相关的操作。在基本工资窗体里:添加了2个选项按钮、2个下拉列表、2个标签、1个文本框和2个按钮,然后设置它们的属性。在其他项目设置的窗体里:使用了一个DTPicker控件获得添加记录的时间,要使用这个控件需要添加部件类库,选择“工程—>部件”命令,选择Microsoft Windows Common Controls-2 6.0(sp4)项,然后设置相关的属性。

在工资信息管理的下拉菜单里包括有统计出勤信息、计算实发工资、查询工资和导出工资表。在这个模块里,普通用户有统计出勤信息和查询工资的权利,但是都显示的是自己的信息。在出勤统计窗体里:添加一个下拉列表、一个标签和2个命令按钮,然后设置相关的属性。在出勤结果信息列表的窗体里:使用了Adodc控件和DataGrid控件,控件的Visible属性一定要设置为False。在计算实发工资窗体里添加的控件和统计出勤记录窗体的控件相同。在工资统计列表窗体里:使用了SSTab控件,在每一个标签上添加一个MSFlexGrid控件,然后设置它们的属性。在导出工资表的窗体中使用了CommondDialog控件,要使用这个控件需要在“控件”窗体中,选择Microsoft Common Dialog Control6.0(sp3)项,同时因为数据表格是导出到Excel,所以需要添加引用。选择“工程—>引用”菜单,在“引用”窗体中选择Microsoft Excel 9.0 Object Library项,这样才能够成功导入到Excel。

在这个窗体里,我做的特点是:权利分工明确。当管理员进入的时候他有所有的权利,单击哪个模块就会弹出相对应的窗体。而普通用户则不能,我把它进行了权限设置,会弹出权限的对话框。

                       

在添加用户的窗体里,如果输入的用户密码和确认密码不一致,将出现一个警告对话框:

                   

然后输入与用户密码相同的密码,我这里的密码都是以*的形式表达,是不可见的。添加的用户将保存在数据库的userinfo里。单击“取消”按钮就卸载此窗体,添加用户的过程到此完成。

在修改密码的窗体里,我要注重讲解一下:当输入的旧密码与登录时的密码不一致将出现提示对话框(如图一),当输入的“确认新密码”和“输入新密码”的密码不一致时也将出现警告对话框(如图二)。我在做这个窗体时遇到了一个问题:就是输入的新密码确认后,当你再一次的进入修改密码窗体输入旧密码时,如果输入的是刚刚修改过的密码,就会出现错误。经过一段时间的思考,我发现原因是修改过的密码没有覆盖登录时的密码,所以会出现问题。我觉得这是一个很大的问题,在别的书上可能没注意到这一点,所以我要注重的讲一下,这是我做这个窗体时的最大体会。

 

                         图一

                             图二

在建立基本工资窗体时,这个窗体会在两个地方使用到,一个就是添加,另一个就是修改,在窗体载入时系统应自动判断状态。选择员工编号或选择职务,然后填写工资金额,单击“确定”按钮,系统就会按照选择的方式,设置员工的基本工资。在做基本工资这个窗体时,我的想法是:当你在修改基本工资的信息,首先都要从数据库中调出相关的信息,然后把它删除掉,再从数据库中的员工信息表中调出所要的信息,然后再一次的添加所要设置的信息。当你没输入员工编号的时候,会出现下图的对话框;

                         

当没输入员工的职务时会出现错误的信息。

在建立其他项目设置的窗体时,也在两个地方使用,即添加和修改,在载入时也需要判断状态。选择员工编号,再选择需要添加的项目和进额,单击“确定”按钮,即可添加其他项目。在其他项目设置这个窗体里,我用了一个Frame控件和几个optionButton控件,目的在于:在添加其他项目时,只能有一个设置是有效的,而且还可以添加其他的项目,还有备注等等,这些都便于记录。这里还有一个DTPicker控件是用来记录添加其他项目的时间,我觉得这个控件非常好。还有就是每次添加成功后,系统需要初始化,更新一下。在设置完这个窗体后将会弹出查询工资的窗体。

在建立工资计算公式的窗体时,输入内容后,单击“确定”按钮,设置计算公式中使用的数字。在计算公式设置的窗体里,单击“恢复默认值”按钮系统将会恢复公式中的默认值。这里的恢复默认值功能采用的方法比较简单,就是在一个函数中设置了固定的默认值。如果需要使用可变的默认值,可以在数据库中设置一项默认值字段,这样可以方便的更改默认值。当输入的格式与设定的格式不一致的时候,会弹出相关的对话框。

建立出勤统计窗体,选择月份后,单击“确定”按钮,开始统计出勤记录。在统计出勤信息的窗体里,这要和出勤记录的数据库相连,如果输入的月份没有统计将如下的对话框:

如果输入的月份有统计记录则弹出如下的对话框:

然后弹出出勤结果的窗体,显示数据库中统计信息相关的记录。

                           管理员能看到的界面

                     这是用户登录所显示的用户信息

建立计算实发工资的窗体,这个窗体的建立和统计出勤记录的窗体比较相似,选择月份后,单击“开始统计”按钮,即可统计员工工资。在计算实发工资的窗体里,如果输入的月份的工资没统计会弹出如下的对话框:

否则会出现如下的对话框:

                          

单击“确定”后,就会出现工资信息列表,这时你将看见所有关于你想要的信息。

建立工资查询的窗体,在选择员工编号后,单击“查询单人”按钮,返回选择员工的相关信息。单击“查询全部”按钮,系统返回全部员工的信息。在建立工资查询(即工资统计结果列表)的窗体时,我觉得这是一个最难的窗体。不仅是因为它的设置,还有就是它的代码和数据库相连的操作。在这个窗体中使用了SSTab控件,在每一个标签上添加一个MSFlexGrid控件。当你是管理员登录的时候,他的权限是所有,当你是用户登录的时候,窗体只显示登录用户本人的相关信息。他没有任何权限,只能看到自己的信息,这是我做这个窗体的特色。

        窗体的部分代码为:

If strusername = "admin" Then                            ’管理员的权限

     sql = "select stuffid from salarysetting"

     Set rs = getrs(sql, "salary")

     If rs.EOF = False Then

     While Not rs.EOF

         Me.comid.AddItem rs(0)

         rs.MoveNext

     Wend

     rs.Close

     End If

     Me.comid.ListIndex = 0

     Select Case Me.SSTab1.Tab

         Case 0

             sql = "select * from salarysetting"

             Call basictopic

             Call showbasic(sql)

         Case 1

             sql = "select * from salaryother"

             Call othertopic

             Call showother(sql)

         Case 2

             sql = "select * from salarystatistics order by id desc"

             Call listtopic

             Call showdata(sql)

         End Select

     Else                                                   ’ 用户的权限

      sql = "select sid from stuffinfo where sname='" & strusername & "'"

      Set rs = getrs(sql, "salary")

      While Not rs.EOF

         Me.comid.AddItem rs(0)

         rs.MoveNext

     Wend

     rs.MoveFirst

     sd = rs(0)

     rs.Close

     Me.comid.ListIndex = 0

      Select Case Me.SSTab1.Tab

        Case 0

             sql = "select * from salarysetting where stuffid='" & sd & "'"

             Call basictopic

             Call showbasic(sql)

         Case 1

             sql = "select * from salaryother where stuffid='" & sd & "'"

             Call othertopic

             Call showother(sql)

         Case 2

             sql = "select * from salarystatistics where stuffid='" & sd & "'"

             Call listtopic

             Call showdata(sql)

         End Select

    End If

End Sub

                      这是用户登录所显示的用户信息

建立导出工资表窗体的时候,这是工资管理的最重要的一步。这个窗体中使用了CommondDialog控件,通过设置Flags属性,使CommondDialog控件的对话框中显示一个帮助按钮,但是,程序员必须在这个位置提供相关的帮助主题。对于所有的公共对话框,当CancelError属性为true,而且用户单击了对话框的“取消”按钮时将生成一个错误。可以在显示对话框的同时捕获此错误以检验是否按下了“取消”按钮。这个控件可以显示“打开”和“另存为”对话框,可以在打开对话框之前用Filter属性指定在“文件类型”列表框中显示的文件过滤器列表。这个窗体还引用了Microsoft Excel 9.0 Object Library,目的是为了把建立的工资表导入到Excel表格中。这个窗体的制作是非常复杂的,尤其是从VB导入到表格中。建立导出工资表的窗体,当单击“保存为”文本框右边的按钮,会提示用户选择保存路径,然后单击“导出”,会导到你所要保存的文件夹里。

            

这样就可以在你保存的路径里看到导出的Excel表格了。

第四章  结 束 语

企业工资管理系统是一个典型的信息管理系统,其主要通过软件工程方面的选择课题、需求分析、总体设计、选用工具、程序模块、系统测试等几个步骤来实现。开发本系统的过程中,首先要对企业工资管理进行系统调研,熟悉企业财务、人事、工资发放管理的流程、步骤;其次在系统需求分析过程中,要透过现象看本质,敏锐观察到企业工资管理中存在的各种问题,并在总体设计把握好对问题的分析、理解,进而解决问题;选用开发工具要选用自己最熟悉、应用较多的开发工具,本系统开发选用MS Visual Basic 6.0,其具有语言简单、功能强大、组件众多的优点。程序模块的编制中,重点把握系统内部完整性、功能性、实用性、便捷性,使其能够协调统一、运行无误。运行结果证明,本企业工资管理系统极大提高了工作效率,节省了人力和物力,最终满足企业财务管理、员工工资发放的需要,同时也成为现代化企业管理的标志

参考文献

[1] Visual Basic 6.0 程序设计教程(高等教育出版社)  龚沛曾  陆慰民  杨志强  编著

[2] MSDN - Microstft Developers'NetWork Microstft 1998

Microstft 编著

[3]Visual Basic 企业办公系统开发实例导航(人民邮电出版社)

刘萌 周学明 郭安源 编著

[4]Visual Basic 程序设计教程(北方交通大学出版社)          李振亭   编著

[5]Visual Basic 用户编程手册(人民邮电出版社)      林永  张乐强   编著

[6]数据库系统概论(高等教育出版社)                  萨师煊  王珊  编著

[7]现代软件工程(北京希望电子出版社)        孙涌  编著

[8]Visual Basic数据库系统开发实例导航(人民邮电出版社)

[9]VB控件应用编程实例教程(北京希望电子出版社)  张学忠  王福成  编著

[10]Office 2000中文版(清华大学出版社)           东方人华  编著

[11]VB数据库程序设计高手(科学出版社)             温贤发   编著

[12]软件需求(电子工业出版社)    Soren Lauesen  编著   刘晓晖   译

[13]VB6.0中文版教程(电子工作出版社)            新智工作室       

12.VB编程技巧280例(上海科学普及出版社)              源江科技         

13.数据库设计与编程实例详解——使用Access、SQL与VB

      [英]  John Carter 著    张淮野  袁怡   译

14.VB6.0程序设计教程(青岛出版社)                  韩耀军    编著

15.VB问答式教程(清华大学出版社)                   庞一鸣     编著

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值