毕业设计设计题目:企业工资管理系统
完成时间:
设计作者:
学号:
学校班级:
联系电话:
摘要
企业的工资管理是公司管理的一个重要内容。随着企业人员数量增加,企业的工资管理工作也变得越来越复杂。工资管理既涉及到企业劳动人事的管理,同时也是企业财务管理的重要组成部分。工资管理需要和人事管理相联系,同时连接工时考勤和医疗保险等等,来生成企业每个职工的基本工资、津贴、医疗保险、保险费、实际发放工资等。资金是企业生存的主要元素,资金的流动影响到企业的整体运作,企业员工的工资是企业资金管理的一个重要的组成部分。早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。早期工资管理多采取纸质材料和具有较强的时间限制。基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。企业工资管理系统是典型的信息管理系统(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,保存在要存放这个系统所有工程文件的文件夹中。在使用的时,要把应用程序和这两个数据库保存在同一个文件夹中。
员工工资统计信息表:
员工信息表:
用户信息表:
第三章企业工资管理系统应用程序设计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='" & https://www.doczj.com/doc/c95112719.html,stuffid.Text & "'"
Call transactsql(sql, "salary")
End If
rs.Close
id = https://www.doczj.com/doc/c95112719.html,stuffid.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='" & https://www.doczj.com/doc/c95112719.html,id.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) & "-" & https://www.doczj.com/doc/c95112719.html,month.Text & "-1"
days = DateDiff("d", Year(Date) & "-" & https://www.doczj.com/doc/c95112719.html,month.Text & "-1", _
Year(Date) & "-" & https://www.doczj.com/doc/c95112719.html,month.Text + 1 & "-1")
lastday = Year(Date) & "-" & https://www.doczj.com/doc/c95112719.html,month.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
="prov
ider=m
icroso
ft.jet