工资管理系统软件工程设计.docx
《工资管理系统软件工程设计.docx》由会员分享,可在线阅读,更多相关《工资管理系统软件工程设计.docx(34页珍藏版)》请在冰豆网上搜索。
![工资管理系统软件工程设计.docx](https://file1.bdocx.com/fileroot1/2023-5/20/1832d797-f98c-4eb7-aad6-f45fd4394884/1832d797-f98c-4eb7-aad6-f45fd43948841.gif)
工资管理系统软件工程设计
第1章绪论
1.1任务概述
企业的工资管理是公司管理的一个重要内容。
随着企业人员数量增加,企业的工资管理工作也变得越来越复杂。
工资管理既涉及到企业劳动人事的管理,同时也是企业财务管理的重要组成部分。
工资管理需要和人事管理相联系,同时连接工时考勤和医疗保险等等,来生成企业每个职工的基本工资、津贴、医疗保险、保险费、实际发放工资等。
早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。
早期工资管理多采取纸质材料和具有较强的时间限制。
基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。
企业工资管理系统是典型的信息管理系统(MIS),前台程序开发工具采用微软的VB6,后台数据库采用SQLServer2000数据库。
VB6是一种面向对象的开发工具,具有组件丰富、语言简单、功能强大的优点。
SQLServer2000数据库具有与VB6无缝连接、操作简单、易于使用的优点
1.2开发工具
微软公司的VisualBasic6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。
VisualBasic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。
因此,本系统前台使用MSVisualBasic6.0开发,后台数据库采用SQLServer2000数据库。
第2章系统设计
2.1可行性分析
(1)技术上的可行性
硬件要求:
主要配置为CPU(PII300以上)、内存(128MB以上)、显卡(64MB以上)以及硬盘(10GB以上)等。
软件要求:
系统采用VisualBasic6.0和SQLServer2000
开发工具:
用VB制作系统的用户界面,SQLServer2000制作后台数据库,两者结合完成系统功能,可运行在Windows系列操作系统上。
(2)经济上的可行性
由于工资管理系统是一个比较小型的系统,所以从人力、物力、财力方面来说都是可行的。
(3)社会可行性
员工的工资管理工作变得越来越复杂,工资管理既涉及到劳动人事的管理,同时也是财务管理的重要组成部分。
早期的工资统计和发放都是使用人工方式处理纸质档案,不仅花费财务人员大量的时间,且不易于保存,往往由于个人原因,抄写不慎或者计算疏忽等,出现工资发放错误的现象。
基于以上原因,学校工资管理系统使用电脑安全保存,快速计算,全面统计,实现工资管理的系统化,规范化,自动化。
因此,建立本系统具体有现实意义。
(4)操作可行性
本系统运行在通用的Windows操作系统上,具有Windows相似的操作界面。
具有简单易学,使用方便等特点,只需在计算机上进行相关的简单的设置即可,懂得计算机基本操作的人员经过短期培训培训即可熟练操作,熟悉计算机操作的人员不需要再经过专门的培训即可熟练操作。
2.2需求规定
2.2.1对功能的规定
基本信息的添加、修改、删除和查询。
基本信息包括项目类型信息,项目状态信息,模块状态信息和缺陷级别信息等。
此功能为项目组管理和软件项目管理模块提供数据。
项目组信息的添加、修改、删除和查询。
项目组信息包括收员工信息和角色信息。
软件项目管理模块包括项目基本信息管理、软件模块管理和软件缺陷管理等功能
2.2.2对性能的规定
a.精度
本系统所需要的数据比较简单,基本不存在精度的问题。
b.时间特性要求
要求本系统对于事务的处理有较高的响应,如数据库的更新操作等响应时间应限定在一定范围。
2.2.3输入输出的要求
该系统输入数据由管理员操作,其输出数据用于显示给用户查看。
2.3运行环境
硬件环境:
学校需配备数据库服务器,本系统对个人计算机无特殊硬件要求,普通个人PC均能运行。
软件环境:
本系统是基于WINDOWS系统开发的,因此windows2000以上的个人PC都能较好的运行本系统。
学校主机建议安装windows2000或windows2003server。
2.4人工处理过程
本系统在实际运用中,有时需要人工来调整,员工工资发放的时间等。
2.5尚未解决的问题
调试运行未出现问题,有待继续发现。
2.6概念模型(整个工资管理系统的E-R图)
2.7接口设计
(1)用户接口
用户可以根据用户名和密码进行查询自己的相关信息。
(2)外部接口
软件接口:
通过ODBC与数据库之间进行连接;
硬件接口:
鼠标、键盘。
(3)内部接口
模块间采取数据耦合方式,通过参数表传递数据,交换信息。
2.8运行设计
(1)运行控制
用户只需要通过鼠标以及键盘就可以实现查询等本系统所包含的一切操作;
(2)运行时间
查询时间<2s;登陆系统时间<30minutes;
2.9应用需求与分析
基本信息的添加、修改、删除和查询。
基本信息包括项目类型信息,项目状态信息,模块状态信息和缺陷级别信息等。
此功能为项目组管理和软件项目管理模块提供数据。
项目组信息的添加、修改、删除和查询。
项目组信息包括收员工信息和角色信息。
软件项目管理模块包括项目基本信息管理、软件模块管理和软件缺陷管理等功能
2.10系统模块划分
开发这个系统的目的就是帮助企业的财务主管部门提高工作效率,实现企业工资信息管理的系统化、规范化和自动化。
能够和认识管理系统、考勤管理系统相结合,真正实现企业高效、科学、现代化的员工管理。
系统最终实现的主要功能如下。
·企业工资信息设置部分:
包括设置员工的基本工资和其他项目的金额,如奖金等。
·企业工资信息管理部分:
包括统计出勤、计算工资、查询工资和导出工资表等。
·系统部分:
包括添加用户和修改密码。
2.11系统数据库设计
数据库是信息管理系统的后台,存储着所有的信息,在信息管理系统中有着很重要的地位。
数据库设计的好与坏,直接影响到这个系统的运行效率。
良好的数据库设计,可以提高数据信息的存储效率,确保数据信息的完整性和一致性。
针对企业工资信息管理系统的需求,通过对员工工资计算过程的内容分析,为本系统设计如下的数据项和数据结构:
·基本工资信息:
包括工资级别和工资金额。
·岗位工资信息:
包括工资级别和工资金额。
·工资信息:
包括员工编号、基本工资、岗位工资、水电费、津贴工资、扣除薪水、实发金额。
·部门信息:
包括部门编号、部门名称、部门负责人、部门人数。
·工资统计信息:
包括员工编号、姓名、出生年月、所属部门、文化程度、职称。
·考勤信息:
包括员工编号、姓名、性别、迟到次数、缺席次数。
·津贴信息:
包括员工编号、姓名、性别、加班时间、加班天数、加班类型、津贴情况。
·用户信息:
包括用户名、密码和权限。
员工信息表
员工编号
char(8)
主键,不允许重复
姓名
char(8)
性别
char
(2)
出生年月
datetime
所属部门
char(4)
外键
文化程度
char(4)
职称
char(12)
部门信息
部门编号
char(4)
主键,不允许重复
部门名称
char(20)
部门负责人
char(8)
部门人数
int
基本工资
工资级别
char
(2)
主键,不允许重复
工资金额
numeric(8,2)
岗位工资
工资级别
char
(2)
主键,不允许重复
工资金额
numeric(8,2)
工资信息
员工编号
char(8)
主键,不允许重复;外键
基本工资
numeric(8,2)
岗位工资
numeric(8,2)
水电费
numeric(8,2)
津贴工资
numeric(8,2)
加班工资
扣除薪酬
numeric(8,2)
迟到、缺席扣薪
实发金额
numeric(8,2)
考勤信息
员工编号
char(8)
主键不允许重复
姓名
Char(8)
性别
Char
(2)
迟到次数
Numeric(3)
缺席次数
Numeric(3)
津贴信息
员工编号
char(8)
主键不允许重复
姓名
Char(8)
性别
Char
(2)
加班时间
numeric(8,1)
加班天数
numeric
(2)
加班类型
Char(8)
津贴情况
numeric(8,2)
用户表
用户名
char(8)
主键,不允许重复
密码
char(20)
权限
char(20)
第3章:
详细设计
3.1操作流程图
初始登入用户:
123密码为:
123
3.2“登录模块”详细设计
登录模块的详细设计主要是用户登录的一个界面,判断登录的用户是管理员还是普通用户,进入后将面对的是主界面,从而进行相关的操作。
登录的界面主要由用户名和密码的信息,还有一些标题设置,确定和取消的按钮组成。
通过标题可以知道此系统的大概内容,由此,登录界面的设计完成。
窗体及核心代码如下:
PrivateSubcmd_cancel_Click()
txt_key.Text=""
cmo_user.Text="请选择"
UnloadMe
EndSub
PrivateSubcmd_ok_Click()
Dimtry_timesAsString
DimsqlAsString
DimrstAsADODB.Recordset
try_times=0
If(Trim(txt_key.Text)="")Then
MsgBox"请输入密码",vbOKOnly+vbExclamation,"提示"
Else
sql="select*from用户表where用户名='"&Trim(cmo_user.Text)&"'"
Setrst=ExecuteSQL(sql,"")
IfTrim(rst.Fields
(1))=Trim(txt_key.Text)Then
IfTrim(rst.Fields
(2))<>"管理员"Then
frm_main.xitong.Enabled=False'在这里设计非管理员用户的权限,这里我假设让非管理员用户不能用菜单中的‘系统’
frm_main.shezhi.Enabled=False
frm_main.xinxiweihu.Enabled=False
EndIf
rst.Close
UserName=Trim(cmo_user.Text)
frm_main.Show
UnloadMe
Else
MsgBox"密码不正确,请重新输入",vbOKOnly+vbExclamation,"警告"
txt_key.SetFocus
txt_key.Text=""
try_times=try_times+1
ExitSub'在这里若密码错了应该跳出该过程,否则下面的语句还会执行,这不是你想要的
EndIf
'try_times=try_times+1'个人认为密码输入错了才加一,你这样的话,用户名错了也会加一,当然你这里用户名不会错是吧,改得多余了
Iftry_times=3Then
UnloadMe
EndIf
EndIf
EndSub
PrivateSubForm_Load()
DimiAsInteger
DimsqlAsString
DimrstAsADODB.Recordset
sql="select用户名from用户表"
Setrst=ExecuteSQL(sql,"")
Fori=1Torst.RecordCount
cmo_user.AddItem(rst.Fields(0))
rst.MoveNext
Nexti
EndSub
主窗体:
PrivateSubbumenxinxi_Click()
DimsqlAsString
DimrstAsNewADODB.Recordset
sql="select*from用户表"
Setrst=ExecuteSQL(sql,"")
power=rst.Fields
(2)
IfTrim(power)<>"管理员"Then
MsgBox"您无权进行该操作!
",vbOKOnly+vbExclamation,"警告"
Else
IfTrim(power)="管理员"Then
frm_bumenxinxi.Show
UnloadMe
EndIf
EndIf
EndSub
PrivateSubgangweigongzi_Click()
DimsqlAsString
DimrstAsNewADODB.Recordset
sql="select*from用户表"
Setrst=ExecuteSQL(sql,"")
power=rst.Fields
(2)
IfTrim(power)<>"管理员"Then
MsgBox"您无权进行该操作!
",vbOKOnly+vbExclamation,"警告"
Else
IfTrim(power)="管理员"Then
frm_gangweigongzi.Show
UnloadMe
EndIf
EndIf
EndSub
PrivateSubjiben_Click()
DimsqlAsString
DimrstAsNewADODB.Recordset
sql="select*from用户表"
Setrst=ExecuteSQL(sql,"")
power=rst.Fields
(2)
IfTrim(power)<>"管理员"Then
MsgBox"您无权进行该操作!
",vbOKOnly+vbExclamation,"警告"
Else
IfTrim(power)="管理员"Then
frm_jiben.Show
UnloadMe
EndIf
EndIf
EndSub
PrivateSubyonghushanchu_Click()
DimsqlAsString
DimrstAsNewADODB.Recordset
sql="select*from用户表"
Setrst=ExecuteSQL(sql,"")
power=rst.Fields
(2)
IfTrim(power)<>"管理员"Then
MsgBox"您无权进行该操作!
",vbOKOnly+vbExclamation,"警告"
Else
IfTrim(power)="管理员"Then
frm_tianjiayushanchu.Show
UnloadMe
EndIf
EndIf
EndSub
PrivateSubyonghutianjia_Click()
DimsqlAsString
DimrstAsNewADODB.Recordset
sql="select*from用户表"
Setrst=ExecuteSQL(sql,"")
power=rst.Fields
(2)
IfTrim(power)<>"管理员"Then
MsgBox"您无权进行该操作!
",vbOKOnly+vbExclamation,"警告"
Else
IfTrim(power)="管理员"Then
frm_tianjiayushanchu.Show
UnloadMe
EndIf
EndIf
EndSub
PrivateSubForm_Load()
DimiAsInteger
DimsqlAsString
DimrstAsADODB.Recordset
sql="select权限from用户表"
Setrst=ExecuteSQL(sql,"")
Fori=1Torst.RecordCount
rst.MoveNext
Nexti
3.3“主窗体”模块详细设计
在这个项目中,选择使用多文档界面。
使用这个窗体的好处是可以使程序更加有条理。
对于一个多任务的应用程序,使用多文档窗体还可以减少占用的系统资源。
主窗体设计的界面是用菜单编辑器做的,主要由系统、工资信息设置、工资信息管理和关于这四个大模块组成。
主窗体是进行相关操作的主界面。
在这几个里,管理员有所有的权利进行各种操作。
PrivateSubbumenxinxi_Click()
DimsqlAsString
DimrstAsNewADODB.Recordset
sql="select*from用户表"
Setrst=ExecuteSQL(sql,"")
power=rst.Fields
(2)
IfTrim(power)<>"管理员"Then
MsgBox"您无权进行该操作!
",vbOKOnly+vbExclamation,"警告"
Else
IfTrim(power)="管理员"Then
frm_bumenxinxi.Show
UnloadMe
EndIf
EndIf
EndSub
PrivateSubgangweigongzi_Click()
DimsqlAsString
DimrstAsNewADODB.Recordset
sql="select*from用户表"
Setrst=ExecuteSQL(sql,"")
power=rst.Fields
(2)
IfTrim(power)<>"管理员"Then
MsgBox"您无权进行该操作!
",vbOKOnly+vbExclamation,"警告"
Else
IfTrim(power)="管理员"Then
frm_gangweigongzi.Show
UnloadMe
EndIf
EndIf
EndSub
PrivateSubjiben_Click()
DimsqlAsString
DimrstAsNewADODB.Recordset
sql="select*from用户表"
Setrst=ExecuteSQL(sql,"")
power=rst.Fields
(2)
IfTrim(power)<>"管理员"Then
MsgBox"您无权进行该操作!
",vbOKOnly+vbExclamation,"警告"
Else
IfTrim(power)="管理员"Then
frm_jiben.Show
UnloadMe
EndIf
EndIf
EndSub
PrivateSubyonghushanchu_Click()
DimsqlAsString
DimrstAsNewADODB.Recordset
sql="select*from用户表"
Setrst=ExecuteSQL(sql,"")
power=rst.Fields
(2)
IfTrim(power)<>"管理员"Then
MsgBox"您无权进行该操作!
",vbOKOnly+vbExclamation,"警告"
Else
IfTrim(power)="管理员"Then
frm_tianjiayushanchu.Show
UnloadMe
EndIf
EndIf
EndSub
PrivateSubyonghutianjia_Click()
DimsqlAsString
DimrstAsNewADODB.Recordset
sql="select*from用户表"
Setrst=ExecuteSQL(sql,"")
power=rst.Fields
(2)
IfTrim(power)<>"管理员"Then
MsgBox"您无权进行该操作!
",vbOKOnly+vbExclamation,"警告"
Else
IfTrim(power)="管理员"Then
frm_tianjiayushanchu.Show
UnloadMe
EndIf
EndIf
EndSub
PrivateSubForm_Load()
DimiAsInteger
DimsqlAsString
DimrstAsADODB.Recordset
sql="select权限from用户表"
Setrst=ExecuteSQL(sql,"")
Fori=1Torst.RecordCount
rst.MoveNext
Nexti
EndSub
3.4各项子模块详细设计
3.4.1添加用户与删除
选择“系统”—>“添加用户与删除”菜单,在添加用户的窗体里,输入新的用户名称和密码后,单击“添加”按钮,系统将会添加新的用户。
在窗体里输入用户名称和密码,单击“删除”按钮,系统将会删除原来用户。
主窗体及核心代码如下:
PrivateSubcmd_adduser_Click()
DimnewrstAsADODB.Recordset
DimsqlAsString
sql="insertinto用户表values("&"'"&Trim(txt_username.Text)&"',"_&"'"&Trim(txt_password.Text)&"',"_&"'"&Trim(txt_power)&"'"&")"
Setnewrst=execute_sql(sql)
sql="select*from用户表"
Setnewrst=select_sql(sql)
SetDataGrid1.DataSource=newrst
EndSub
PrivateSubcmd_cancel_Click()
UnloadMe
EndSub
PrivateSubcmd_delete_Click()
DimsqlAsString
sql="select*from用户表"
Iftxt_username<>""The