工资信息管理系统6.docx
《工资信息管理系统6.docx》由会员分享,可在线阅读,更多相关《工资信息管理系统6.docx(25页珍藏版)》请在冰豆网上搜索。
工资信息管理系统6
工资管理系统
目次
摘要1
Abstract2
1引言3
1.1课题来源及其在国内外的发展概况3
1.2课题的目的、意义和应解决的问题3
1.3相关知识点介绍3
1.3.1VisualBasic6.0介绍3
1.3.2Access数据库介绍3
2系统需求分析4
2.1功能需求4
2.2性能需求4
3系统总体设计5
3.1功能模块划分5
3.2系统流程分析6
3.3数据库设计7
3.3.1创建数据库7
3.3.2设计表结构7
3.4设计工程框架8
3.4.1创建工程8
3.4.2添加模块9
3.4.3添加类模块9
4系统详细设计11
4.1登录模块及系统主界面设计11
4.2部门管理模块设计13
4.3员工管理模块设计16
4.4考勤管理模块设计18
4.5工资管理模块设计18
4.6用户管理模块设计18
4.7密码修改模块设计21
结论23
致谢24
参考文献25
毕业论文中文摘要
摘要
由于计算机技术的飞速发展,数据库技术作为数据管理的一个有效的手段,在各行各业中得到越来越广泛的应用。
因此,本文围绕一个”人事管理系统”程序的设计和应用系统的开发课题为背景,详细介绍了以VB为语言编写管理信息系统的过程。
该程序通过VB的ADO数据对象来实现VB与ACCESS数据库的连接,并具有典型的数据库应用系统的特征,完成了系统结构与现实生活的紧密结合。
管理系统的开发不仅是一个应用程序编写的过程,更重要的是在系统分析和设计阶段所做的工作。
该程序主要讲述了程序的总体设计、详细设计阶段,对程序进行需求迭代,不断修正和改进,直到形成一个完善的可行性系统。
关键词VB;ACCESS;数据库;管理信息系统
毕业论文外文摘要
Abstract
Becauseoftherapiddevelopmentofcomputertechnology,databasetechnologyasaneffectivemeansofdatamanagement,inallwalksoflifeareincreasinglywideapplication.Therefore,thisarticleona"personnelmanagementsystem"designandproceduresforapplicationsdevelopmenttopicsbackground,detailsVBtoaddlanguagetotheprocessofpreparingmanagementinformationsystems.TheprocedureadoptedtoachievethetargetdataaddtheadowithVBprospectsACCESSdatabaseanddatabaseapplicationswithtypicalcharacteristics,andcompletedthestructureandsystemcombiningreallife.
Managementsystemapplicationsdevelopmentisnotonlyapreparationprocess,butmoreimportantlyintheanalysisanddesignphasework.Theprocedureonthemainproceduresdesigned,detaileddesignstage,thedemandforcomputationprocedures,andconstantlyrevisedandimproved,Untilthefeasibilityofformingaperfectsystem.
KeywordsVB;ACCESS;Database;ManagementInformationSystems
1引言
该章将说明本设计课题的来源、目的、意义、应解决的主要问题,简述本课题在国内外的发展概况,以及相关知识点介绍。
1.1课题来源及其在国内外的发展概况
随着计算机应用在社会的普及,信息技术的高速发展,人们已经越来越认识到信息处理在社会工作、生活、生产、管理等方面的强大作用。
公司信息管理系统,公司人事管理、工资管理系统,也越来越引起各方面企事业单位、公司的高度重视。
先前公司的资料多是基于FOXBASE下的文字操作界面,不能提供一个良好人机交互接口,操作繁琐,为工作人员的实际操作带来了难度,面对目前的实际状况,迫切需要开发一个新系统来适应这一些工作。
1.2课题的目的、意义和应解决的问题
本课题在了解公司人事、工资管理的基本情况下,在对先前的信息管理系统的研究后,采用可视化的、面对对象和调用事件驱动方式的结构化高级程序设计VisualBasic,解决以前信息管理系统中存在的不足,使公司管理人员能够更容易、更方便的用计算机进行对人事、工资的管理,以实现无纸化操作。
1.3相关知识点介绍
1.3.1VisualBasic6.0介绍
VisualBasic6.0是一种可视化的、面对对象和调用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。
它简单易学、效率高,且功能强大,而且程序开发人员不必具有C/C++编程基础。
在VisualBasic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
总的来说,VisualBasic具有以下特点:
可视化编程、面向对象的程序设计、事件驱动编程机制、访问数据库、动态数据交换、对象的链接与嵌入、动态链接库、结构化程序设计语言。
1.3.2Access数据库介绍
Access是微软公司发布的Office软件包中的关系型数据库软件,具有功能灵活,界面友好,易于学习和操作等特点,Access是开发单机小型数据库应用系统的理想工具,可以独立开发数据库应用系统,也可以作为后台数据库与VB等高级语言结合使用。
2系统需求分析
本章将介绍系统需求分析,它分为功能需求和性能需求这两个方面。
2.1功能需求
1.部门管理
●在表格中显示表Departments中所有部门数据
●添加部门数据
●修改部门数据
●删除部门数据
2.员工管理
●表格中显示表Employees中所有员工数据
●添加员工数据
●修改员工数据
●删除员工数据
3.考勤管理
●在表格中显示表Checkin中所有考勤数据
●添加考勤数据
●修改考勤数据
●删除考勤数据
4.工资管理
●在表格中显示表gongzi中的所有工资数据
●添加工资数据
●修改工资数据
●删除工资数据
5.系统用户信息管理
●添加系统用户信息
●修改系统用户信息
●删除系统用户信息
●查看系统用户信息
2.2性能需求
1.硬件环境一般配置就行,要求不高
2.软件环境
●操作系统:
Windows98/me/2000/xp.
●数据库:
MicrosoftAccess2003.
3系统总体设计
本章将对人事工资管理系统进行总体设计,介绍系统的功能模块划分、系统流程分析、数据库设计和工程框架设计。
3.1功能模块划分
人事工资管理系统功能模块如图3-1所示。
图3-1人事工资管理系统功能模块示意图
可以看到,本系统划分为3个功能模块,基本信息管理模块用于管理部门及员工的基本信息,考勤工资管理模块用于管理员工考勤及工资的基本信息,系统用户管理模块用于管理系统用户信息。
下面分别介绍这3个功能模块的基本功能。
基本信息管理模块的基本功能图3-2所示。
图3-2基本信息管理模块功能图
员工基本信息管理模块是整个系统的核心。
除了部门管理模块外,其它各个模块都针对每个员工的某个方面进行管理,都需要提供员工编号等基本信息作为索引。
考勤工资管理模块的基本功能图3-3所示。
图3-3考勤工资管理模块功能图
系统用户管理模块包括用户信息管理、权限控制等功能。
权限控制虽然不是一个独立存在的模块,但是它却贯穿在整个系统的运行过程当中。
本系统将用户划为两种类型,即系统管理员和普通用户。
系统管理员用户拥有所有的管理权限,普通用户在基本信息管理模块和考勤工资管理模块中只能有查看的权限。
在系统初始化时创建一个默认的系统管理员用户Admin,由程序设计人员动手地添加到数据库中。
Admin用户可以创建和管理其他管理员用户和普通用户,其他管理员用户可以创建和管理普通用户。
所有用户都可以管理自己地用户信息。
3.2系统流程分析
所谓系统流程就是用户在使用系统时的工作过程。
对于多类型用户的管理系统来说,每一类用户的工作流程都是部相同的。
多用户系统的工作流程都从用户登录模块开始,对用户的身份进行认证。
身份认证可以分为以下两个过程:
●确认用户是否是有效的系统用户。
●确定用户的类型。
第一个过程决定用户能否进入系统。
第二个过程根据用户的类型决定用户的操作权限,从而决定用户的工作界面。
在系统的工作流程图中,还将体现各个功能模块之间的依存关系。
本系统的流程分析图如图3-4所示。
图3-4系统流程分析图
进入系统之后,不同类型的用户所能进行的操作也不同。
这些操作可以笼统地为用户管理模块和人事管理模块。
3.3数据库设计
3.3.1创建数据库
在设计数据库表结构之前,首先要创建一个数据库。
本系统使用的数据库为“人事工资.mdb”。
3.3.2设计表结构
数据库包含以下5张表:
部门表Departments、员工基本信息表Employees、员工考勤表Checkin、工资表gongzi和用户信息表Users。
下面分别介绍这些表的结构。
1.部门表Departments
部门表Departments用来保存企业部门的信息。
本系统采用树状结构来管理部门数据,也就是在部门之间建立从属关系。
表Departments的结构如表3-1所示。
表3-1Departments的结构
2.员工基本信息表Employees
员工基本信息表Employees用来保存员工的基本信息。
表Employees的结构如表3-2所示。
表3-2Employees的结构
3.员工考勤表Checkin
员工考勤表Checkin用来保存员工考勤的基本信息。
表Checkin的结构如表3-3所示。
表3-3Checkin的结构
表中出勤天数、病假天数等字段要考虑到半天的情形,所以使用了“数字/小数”数据类型。
4.工资表gongzi
工资表gongzi用来保存员工工资的基本信息。
表gongzi的结构如表3-4所示。
表3-4gongzi的结构
5.用户信息表Users
用户信息表Users用来保存系统用户信息。
表Users的结构如表3-5所示。
表3-5Users的结构
用户信息表users中有一条默认记录,用户名为Admin,密码为888888,用户类型为1。
3.4设计工程框架
设计工程框架,包括创建工程、在工程中添加和注册数据库访问控件、添加数据库访问类、为每个表创建对应的类、设计系统主界面、设计登录对话框等。
3.4.1创建工程
运行VisualBasic6.0主程序,并选择新建“标准EXE”,新建工程后,在VisualBasic窗口中有一个缺省的窗体Form1,在这上设计系统主界面。
选择“工程”菜单中的“工程1属性”命令,在“工程属性”对话框中,将工程名设置为Manager。
单击“保存”按钮,将工程存储为Manager.vbp。
3.4.2添加模块
根据VisualBasic功能模块的划分原则,将分别创建以下几个模块:
●Const用来管理工程中的常量。
●DbFunc用来管理工程中与数据库操作相关的声明、变量和函数。
●GeneralFunc用来管理工程中一些通用的自定义函数。
●Variable用来管理工程中的全局变量。
在GeneralFunc模块中,需要添加一个自定义过程Add_DepToTree()。
它的功能是把所有的部门名称按照上下级添加到TreeView控件中。
在应用程序目录下创建模块目录Modules,然后单击“保存”按妞,将分别使用默认的名称保存模块。
3.4.3添加类模块
根据VisualBasic功能模块的划分原则,为每个表创建一个类模块,将对此表的所有数据库操作封装在类中。
在通常情况下,类的成员变量与对应的表中的字段名相同。
由于绝大多数成员函数的编码格式都是非常相似的,只是使用的SQL语句不同,所以本小节将只说明每个类中成员函数的功能,并不对所有的成员函数进行具体的代码分析。
1.Departments类
Departments类用来管理表Departments的数据库操作,它保存为Departments.cls。
Departments类的成员函数如表3-6所示。
函数名
具体说明
Init
初始化成员变量
Delete
删除指定的部门记录。
参数TmpId表示要删除的部门的编号
GetInfo
读取指定的部门记录。
参数TmpId表示要读取的部门的编号
GetName
根据指定的部门编号读取部门名称。
参数TmpId表示指定的部门编号
GetNewId
生成新记录的部门编号。
如果要将编号字段定义为“自动编号”类型,字段值会自动体递增。
但是在本系统中,需要在插入记录后马上得到新记录的部门编号,所有采用程序控制的方法生成部门编号
HaveEmp
判断指定部门中是否存在员工。
参数TmpDepid表示指定的部门的编号。
此函数将在删除部门数据之前调用,如果返回True,则不能删除指定的部门
HaveSon
判断指定部门中是否存在下级部门。
参数TmpUpperId表示指定的部门的编号。
此函数将在删除部门数据之前调用,如果返回True,则不能删除指定的部门
In_DB
判断指定的部门名称是否已经在数据库中。
参数DepName表示指定的部门名称,DepUpper表示上一级部门的编号
Insert
插入新的部门记录。
插入数据前首先调用GetNewId函数生成新记录的部门编号
Load_Departments_ByUpper
根据指定的上级部门编号,读取所有下一级部门的名称。
此函数在把部门装入到树状结构的过程中将起到重要的作用
Update
修改指定的部门记录。
参数TmpId表示要修改的部门的编号
表3-6Departments类的成员函数
2.Employees类
Employees类用来管理表Employees的数据库操作,它保存为Employees.cls。
它的成员函数类似Departments类中的成员函数。
3.Checkin类
Checkin类用来管理表Checkin的数据库操作,它保存为Checkin.cls。
它的成员函数类似Departments类中的成员函数。
4.gongzi类
gongzi类用来管理表gongzi的数据库操作,它保存为gongzi.cls。
它的成员函数类似Departments类中的成员函数。
5.Users类
Users类用来管理表Users的数据库操作,它保存为Users.cls。
它的成员函数类似Departments类中的成员函数。
4系统详细设计
整个人事工资管理系统主要是由3个部分组成:
基本信息管理、考勤工资管理和系统用户管理。
本章将介绍登录模块及系统主界面、部门管理、员工管理、考勤管理、工资管理、用户管理和密码修改等模块的详细设计。
4.1登录模块及系统主界面设计
根据系统的要求,登录过程需要完成的任务:
●根据用户名和密码来判断是否可能进入系统;
●根据用户类型决定用户拥有的权限。
登录窗体的名称为FrmLogin,它的界面布局如图4-1所示。
图4-1登录窗体的界面布局
程序的运行过程如下:
●判断是否输入了用户名和密码,如果没有输入,则返回,要求用户输入。
代码如下:
IfTrim(txtUser)=""Then
MsgBox"请输入用户名"
txtUser.SetFocus
ExitSub
EndIf
IfTrim(txtPwd)=""Then
MsgBox"请输入密码"
txtPwd.SetFocus
ExitSub
EndIf
●将输入的用户名和密码赋值到变量NameKey和PasswordKey中,便于处理。
●调用MyUser.In_DB()函数,判断当前用户名是否存在。
如果不存在,则返回,要求用户重新输入,同时将计数变量Try_times加1。
代码如下:
IfMyUser.In_DB(NameKey)=FalseThen
MsgBox"用户名不存在"
Try_times=Try_times+1
Endif
●如果用户名存在,则调用MyUsers.GetInfo()函数,读取此用户的数据,并将用户密码与输入的密码进行比较。
如果密码不同,则返回,要求用户重要输入,同时将计数变量Try_times加1。
代码如下:
MyUser.GetInfo(NameKey)
IfMyUser.Pwd<>PasswordKeyThen
MsgBox"密码错误"
Try_times=Try_times+1
Endif
●如果Try_times大于或等于3,则退出系统。
代码如下:
IfTry_times>=3Then
MsgBox"您已经三次尝试进入本系统,均不成功,系统将关闭"
DBapi_Disconnect
End
Else
ExitSub
EndIf
●如果通过密码验证,将当前用户的信息保存到CurUser对象中,以便后面使用。
●关闭登录窗体。
设计主界面
主窗体是工程的启动对象,可以在系统菜单中选择“工程”/“属性”,打开属性窗口设置启动对象,主窗体名为FrmMain.
打开主窗体的设计窗口,选择“工具”菜单项中的“菜单编辑器”,对菜单内容进行编辑。
主界面的布局如图4-2所示。
图4-2人事工资管理系统主界面
在主界面中有基本信息管理、考勤工资管理和系统用户管理这三个主菜单。
其中在基本信息管理菜单中有部门管理、员工管理和退出系统这三个子菜单;在考勤工资菜单中有考勤和工资两个子菜单;在系统用户管理有用户管理和修改密码两个子菜单。
当主窗体启动时,首先打开“登录”对话框。
如果不能通过身份验证,则不能进入系统。
代码如下:
PrivateSubForm_Load()
FrmLogin.Show1
EndSub
当选择“退出系统”菜单项时,触发mn_exit_Click事件,代码如下:
PrivateSubmn_exit_Click()
DBapi_Disconnect
End
EndSub
4.2部门管理模块设计
部门管理模块可以实现以下功能:
●系统用户可以添加部门记录、修改部门记录、删除部门记录和查看部门记录
●普通用户只能查看部门数据
设计思想
在本模块中设计了FrmDepMan、FrmDepEdit和FrmDepSel这三个窗体来实现模块的功能。
在FrmDepMan和FrmDepSel这两个窗体中使用了TreeView控件来表现部门间的层次结构,使用ImageList控件来管理TreeView控件中的图像信息。
为了把所有的部门名称按照上下级关系添加到TreeView控件中,在GeneralFunc模块中自定义了Add_DepToTree()。
只有系统管理用户才能添加、修改和删除数据。
FrmDepMan的界面布局如图4-3所示。
图4-3部门管理窗体布局
具体实现
●根据用户类型的不同决定显示的界面,只有系统管理用户才能看到添加、修改和删除等按钮。
根结点的关键字为a0,显示文本为“部门信息”,代码如下:
IfCurUser.User_type=2Then
Cmd_Add.Visible=False
Cmd_Modi.Visible=False
Cmd_Del.Visible=False
Cmd_Back.Left=2400
EndIf
SetTmpNode=TreeView1.Nodes.Add(,,"a0","部门信息",1,1)
●当用户单击“添加”按钮时,程序将会先初始化FrmDepEdit信息,并将FrmDepEdit.Modify设置为False,表示当前状态为插入数据,然后启动FrmDepEditEdit窗体,代码如下:
PrivateSubCmd_Add_Click()
FrmDepEdit.lblUpper=CurDep.DepName
FrmDepEdit.txtDep=""
FrmDepEdit.txtDescribe=""
FrmDepEdit.Modify=False
FrmDepEdit.Show1
TreeView1_Click
EndSub
●当用户单击“修改”按钮时,程序将判断是否是根结点,因为根结点不能修改。
如果不是根结点,程序将会把当前的信息赋值到编辑部门信息的窗口中进行修改。
代码如下:
PrivateSubCmd_Modi_Click()
IfTreeView1.SelectedItem.Key="a0"Then
MsgBox"此项不能修改"
ExitSub
EndIf
FrmDepEdit.lblUpper=MyDep.GetName(CurDep.UpperId)
FrmDepEdit.txtDep=CurDep.DepName
FrmDepEdit.txtDescribe=CurDep.Describes
FrmDepEdit.Modify=True
FrmDepEdit.Show1
TreeView1_Click
EndSub
●当用户单击“删除”时,程序将判断要删除的部门是否是根结点、是否包含下一级部门和是否包含员工,因为这些不能删除。
如果不是这些将删除,并调用MsgBox()函数提示用户确认是否删除当前记录。
代码如下:
IfTreeView1.SelectedItem.Key="a0"Then
MsgBox"此项不能删除"
ExitSub
EndIf
IfCurDep.Haveson(CurDep.DepId)=TrueThen
MsgBoxCurDep.DepName+"包含下级部门,不能删除"
ExitSub
EndIf
IfMyDep.HaveEmp(CurDep.DepId)=Tru