1 需求分析 1.1系统分析
对于一个企业来说,正确、及时而且规范地进行员工工资的管理和发放无疑就是十分重要的。由于工资计算往往涉及多方面的数据,对于每位员工往往需要单独计算,在员工数量较多时,工资管理的工作量就会变得很大,而且在重复的数据输入和计算中容易出错。
利用数据库对企业职工工资进行管理是数据库技术在当代企业管理中的一个重要应用。利用数据库技术,可以保证工资数据的安全完整。
本系统通过对企业基本信息管理、工资管理、奖惩管理3个环节的数据收集,建立现代企业工资管理系统,实现有用数据的快速查询,减少操作中可能出现的错误以及减少数据管理的工作量。 1.2系统功能设计
在本系统中,主要功能包括: (1)保存职工的基本信息资料
(2)根据工资管理数据和员工的奖惩情况对职工每月的工资进行计算。 (3)将职工工资的数据进行保存,便于查找和核实。 (4)对保存的数据,可以根据特殊字段进行查找。 图1.1是本系统的功能模块图。 工资管理系统 用 户 登 录 界 面
基本信息管理 工资管理 奖惩管理
查添修查添修查添修询加改询加改退退询加改员员员工员员退出出 工员员工工工资工工 出 资工工 资资资工工工工料料料资资 资资
退出
图1.1 系统功能模块图 1
2 概要设计 2.1数据库的建立
使用SQL创建一个名为“工资”的数据库。 2.2工资数据表的设计
在本数据库中,将建立3个数据表,其功能如下:
员工基本信息:用于存放员工的基本信息情况,包括员工的民族、出生年月、部门等。
员工工资表:用于存放员工的基本工资、交通补助等。 员工奖惩记录:用于记录员工的奖惩类别和奖惩原因等。 这3个数据表的结构如表2.21至表2.23所示。
图2.21 员工基本信息表设计 2
图2.22 员工工资表的设计
图2.23 员工奖惩记录表的设计 E-R图 3
姓名 编号 部门 日期 性别 编号 姓名 部门 员工 工资 发放 提成 交通职位 补助 包含 职称 奖惩 姓名
聘用入职日期 电话 奖惩奖惩形式 编号 原因 分数 3 详细设计 3.1工程的建立
在“开始”菜单中启动VB,将弹出“新建工程”窗体如图3.1所示。在该窗体的“新建”选项卡中
选择“标准EXE”,单击“打开”按钮,系统将生成一个新工程,默认名称为“工程1”,如图3.1所
示。
图3.1 新建工程的界面 4
3.2登录界面的设计
在登入界面中,创建2个label,2个textbox,2个按钮,其中密码的textbox2的passwordchar
设置为*,防止别人看到输入密码而进入此系统。最后完成登录功能。 表3.21 各个控件的属性 名称 Caption Font Label1 用户名 四号 Label2 密码 四号 Textbox1 空 宋体 Textbox2 空 宋体 Command1 登入 四号 Command2 取消 四号
控件设置完毕后,调整其大小和位置,使整个窗体布局合理。完成后的窗体界面如图3.22所示。
图 3.22 登陆界面 3.3主窗体的设计
在主窗体的界面中,将创建4个按钮,从而完成对整个系统各个功能模块的调用。
表3.31 按钮控件的属性 名称 Caption Font Command1 基本信息管理 小四 Command2 工资管理 小四 Command3 奖惩管理 小四
5
Command4 退出 小四
控件设置完毕后,调整其大小和位置,使整个窗体布局合理。完成后的窗体界面如图3.32所示。
3.4基本信息管理的设计
基本信息管理窗体是本系统的重要窗体之一,其基本功能为显示员工基本信息中保存的数据,并且允许对数据进行添加、删除和修改等操作。
3.4(1基本信息管理窗体的设计
首先对窗体的菜单编辑器进行设置,便于其跳转到各个界面。
在窗体上添加一个Adodc的数据控件和一个dataGrid的控件,便于数据库的连接。其属性如表3.41
6 所示:
名称 RecordSource DataSourse Font Adodc1 员工基本资料$ 宋体 dataGrid1 Adodc1 宋体
在窗体上添加19个Label和19个Textbox,作为数据的显示控件。这些控件的属性如表3.42所示。
控件名称 DataField DataSourse Font Text2(0) 编号 Adodc1 宋体 Text2(1) 姓名 Adodc1 宋体 Text2(2) 性别 Adodc1 宋体 Text2(3) 出生日期 Adodc1 宋体 Text2(4) 婚姻状况 Adodc1 宋体 Text2(5) 民族 Adodc1 宋体 Text2(6) 籍贯 Adodc1 宋体 Text2(7) 电话 Adodc1 宋体 Text2(8) 政治面貌 Adodc1 宋体 Text2(9) 联系地址 Adodc1 宋体 Text2(10) 部门 Adodc1 宋体 Text2(11) 职位 Adodc1 宋体 Text2(12) 职称 Adodc1 宋体 Text2(13) 基本工资 Adodc1 宋体 Text2(14) 聘用形式 Adodc1 宋体 Text2(15) 学历 Adodc1 宋体 Text2(16) 专业 Adodc1 宋体 Text2(17) 入职日期 Adodc1 宋体 Text2(18) 在职状态 Adodc1 宋体 Text2(19) 转正日期 Adodc1 宋体
完成对数据的一系列操作,添加4个按钮。属性如表3.43下: 名称 Caption Font Command1 添加 宋体 Command5 删除 宋体 Command3 修改 宋体 Command8 退出 宋体
此窗体还将完成查询功能,通过输入员工的编号进行查询。在窗体上添加一个label,textbox和一个
command.。其属性如表3.44下: 7
名称 Caption Font
Label1 输入员工编号进行查询 小四 Text1 空 小四 Command4 查询 小四
控件设置完毕后,调整其大小和位置,使整个窗体布局合理。完成后的窗体界面如图4.45所示。
3.4(2添加员工基本信息窗体的设计
在窗体上添加一个Adodc的数据控件和一个dataGrid的控件,便于数据的添加显示和数据更新。添加19个label和19个textbox,并且添加3个按钮:确定,取消和返回。完成的窗体界面如下图所示。
3.5工资管理的设计
工资管理窗体是本系统的重要窗体之一,其基本功能为显示员工工资中保存的数据,并且允许对
8
数据进行添加、删除和修改等操作。 3.5(1工资管理窗体的设计
在窗体上添加一个Adodc的数据控件和一个dataGrid的控件,便于数据库的连接。其属性如表3.41
所示:
名称 RecordSource DataSourse Font Adodc1 员工工资表$ 宋体 dataGrid1 Adodc1 宋体
在窗体上添加9个Label和9个Textbox,作为数据的显示控件。这些控件的属性如表3.42所示。
控件名称 DataField DataSourse Font Text1 日期 Adodc1 宋体 Text2 编号 Adodc1 宋体 Text3 姓名 Adodc1 宋体 Text4 部门 Adodc1 宋体 Text5 提成
Adodc1 宋体 Text6 奖惩 Adodc1 宋体 Text7 交通补助 Adodc1 宋体 Text8 基本工资 Adodc1 宋体 Text9 应发工资 Adodc1 宋体
完成对数据的一系列操作,添加4个按钮。属性如表3.43下: 名称 Caption Font Command1 添加 宋体 Command5 删除 宋体 Command3 修改 宋体 Command8 退出 宋体
此窗体还将完成查询功能,通过输入员工的编号进行查询。在窗体上添加一个label,textbox和一个
command.。其属性如表3.44下:
名称 Caption Font Label1 输入员工编号进行查询 小四 Text1 空 小四 Command4 查询 小四 控件设置完毕后,调整其大小和位置,使整个窗体布局合理。完成后的窗体界面如图4.45所示。
9
图4.45
3.5(2添加员工工资的窗体
在窗体上添加一个Adodc的数据控件和一个dataGrid的控件,便于数据的添加显示和数据更新。添加9个label和9个textbox,并且添加3个按钮:确定,取消和返回。
完成的窗体界面如下图所示。
3.6奖惩管理的设计
奖惩管理窗体是本系统的重要窗体之一,其基本功能为显示员工奖惩中保存的数据,并且允许对数据进行添加、删除和修改等操作。
10
3.6(1奖惩管理窗体的设计
在窗体上添加一个Adodc的数据控件和一个dataGrid的控件,便于数据库的连接。其中奖惩与员
工的工资挂钩,其奖惩分数与工资关系为50元/分~其属性如表3.41所示: 名称 RecordSource DataSourse Font Adodc1 工奖惩记录$ 宋体 dataGrid1 Adodc1 宋体
在窗体上添加10个Label和10个Textbox,作为数据的显示控件。这些控件的属性如表3.42所示。
控件名称 DataField DataSourse Font Text1 编号 Adodc1 宋体 Text2 姓名 Adodc1 宋体 Text3 性别 Adodc1 宋体 Text4 职位 Adodc1 宋体 Text5 部门 Adodc1 宋体 Text6 奖惩日期 Adodc1 宋体 Text7 奖惩类别 Adodc1 宋体 Text8 奖惩原因 Adodc1 宋体 Text9 奖惩分数 Adodc1 宋体 Text10 备注 Adodc1 宋体
完成对数据的一系列操作,添加4个按钮。属性如表3.43下: 名称 Caption Font Command1 添加 宋体 Command5 删除 宋体 Command3 修改 宋体 Command8 退出 宋体
此窗体还将完成查询功能,通过输入员工的编号进行查询。在窗体上添加一个label,textbox和一个
command.。其属性如表3.44下:
名称 Caption Font Label1 输入员工编号进行查询 小四 Text1 空 小四 Command4 查询 小四
控件设置完毕后,调整其大小和位置,使整个窗体布局合理。完成后的窗体界面如图4.45所示。
11
图4.45
3.6(2添加员工奖惩的窗体
在窗体上添加一个Adodc的数据控件和一个dataGrid的控件,便于数据的添加显示和数据更新。添加10个label和10个textbox,并且添加3个按钮:确定,取消和返回。 完成的窗体界面如下图所示。
12
4 程序源代码 4.1登录界面的代码
登陆窗体主要是出于安全考虑,其代码如下: Private Sub Command1_Click() ‘登入按钮
If Text1.Text = \"admin\" And Text2.Text = \"admin\" Then
MsgBox (\"登陆成功\") ‘用户名和密码都是admin时登入成功 Form1.Hide Form2.Show ‘调用主窗体 Else
MsgBox (\"登陆失败\") End If End Sub
Private Sub Command2_Click() ‘取消按钮
Text1.Text = \"\" Text2.Text = \"\" ‘用户名和密码清空 End Sub 4.2主窗体的代码
通过这4个按钮,可以调用各个模块。 Private Sub Command1_Click()
Form8.Show
Form2.Hide ‘调用基本信息管理 End Sub Private Sub Command2_Click() Form3.Show Form2.Hide ‘调用工资管理 End Sub
Private Sub Command3_Click() 13 Form4.Show
Form2.Hide ‘调用奖惩管理 End Sub
Private Sub Command4_Click() MsgBox (\"确定退出本系统~\") ‘退出本系统 End
End Sub
4.3基本信息管理的代码 4.3(1菜单目录的代码
Private Sub 工资管理_Click() Form8.Hide Form3.Show End Sub
Private Sub 基本信息管理_Click() Form8.Show End Sub
Private Sub 奖惩管理_Click() Form8.Hide Form4.Show
End Sub
4.3(2基本信息窗体的代码
Private Sub Command1_Click() Form5.Show ‘调用添加信息的窗体 End Sub Private Sub Command3_Click() ‘修改基本信息 MsgBox (\"修改成功~\") Adodc1.Recordset(\"编号\") = Text2(0).Text Adodc1.Recordset(\"姓名\") = Text2(1).Text
14
Adodc1.Recordset(\"性别\") = Text2(2).Text Adodc1.Recordset(\"出生日期\") = Text2(3).Text Adodc1.Recordset(\"婚姻状况\") = Text2(4).Text
Adodc1.Recordset(\"民族\") = Text2(5).Text Adodc1.Recordset(\"政治面貌\") = Text2(8).Text Adodc1.Recordset(\"转正日期\") = Text2(19).Text
Adodc1.Recordset(\"籍贯\") = Text2(6).Text Adodc1.Recordset(\"电话\") = Text2(7).Text Adodc1.Recordset(\"联系地址\") = Text2(9).Text
Adodc1.Recordset(\"部门\") = Text2(10).Text Adodc1.Recordset(\"职位\") = Text2(11).Text Adodc1.Recordset(\"职称\") = Text2(12).Text
Adodc1.Recordset(\"专业\") = Text2(16).Text Adodc1.Recordset(\"聘用形式\") = Text2(14).Text Adodc1.Recordset(\"学历\") = Text2(15).Text
Adodc1.Recordset(\"基本工资\") = Text2(13).Text Adodc1.Recordset(\"在职状态\") = Text2(18).Text Adodc1.Recordset(\"入职日期\") = Text2(17).Text End Sub
Private Sub Command4_Click() ‘查询
Dim cn As New adodb.Connection Dim rs As New adodb.Recordset cn.ConnectionString = \" Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security
Info=False;Initial Catalog=工资\"
' 用ADODC控件 连接到数据源,获得连接字符串 cn.Open
rs.Open \"select * from 员工基本资料$ where 编号='\" & Trim(Text1.Text) & \"'\1 ‘查
询编号 Set DataGrid1.DataSource = rs DataGrid1.Refresh End Sub
Private Sub Command5_Click() If MsgBox(\"确定删除当前记录,\vbQuestion + vbYesNo, \"删除,\") = vbYes Then
15
Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then
If Adodc1.Recordset.RecordCount <> 0 Then Adodc1.Recordset.MoveLast ‘删除基本信息 End If End If End If End Sub
Private Sub Command8_Click() MsgBox (\"确定退出本系统~\") End
End Sub ‘退出系统
4.3(3添加基本信息窗体的代码
Private Sub Command1_Click() MsgBox (\"添加成功~\")
Adodc1.Recordset.AddNew
Adodc1.Recordset(\"编号\") = Text2(0).Text Adodc1.Recordset(\"姓名\") = Text2(1).Text Adodc1.Recordset(\"性别\") = Text2(2).Text
Adodc1.Recordset(\"出生日期\") = Text2(3).Text Adodc1.Recordset(\"婚姻状况\") = Text2(4).Text Adodc1.Recordset(\"民族\") = Text2(5).Text
Adodc1.Recordset(\"政治面貌\") = Text2(8).Text Adodc1.Recordset(\"转正日期\") = Text2(19).Text Adodc1.Recordset(\"籍贯\") = Text2(6).Text
Adodc1.Recordset(\"电话\") = Text2(7).Text Adodc1.Recordset(\"联系地址\") = Text2(9).Text Adodc1.Recordset(\"部门\") = Text2(10).Text
Adodc1.Recordset(\"职位\") = Text2(11).Text Adodc1.Recordset(\"职称\") = Text2(12).Text Adodc1.Recordset(\"专业\") = Text2(16).Text Adodc1.Recordset(\"聘用形式\") = Text2(14).Text
16
Adodc1.Recordset(\"学历\") = Text2(15).Text Adodc1.Recordset(\"基本工资\") = Text2(13).Text Adodc1.Recordset(\"在职状态\") = Text2(18).Text Adodc1.Recordset(\"入职日期\") = Text2(17).Text Adodc1.Recordset.Update End Sub
Private Sub Command2_Click() ‘清空所有的textbox Text2(0).Text = \" \" Text2(1).Text = \" \" Text2(3).Text = \" \" Text2(4).Text = \" \" Text2(5).Text = \" \" Text2(8).Text = \" \" Text2(19).Text = \" \"
Text2(6).Text = \" \" Text2(7).Text = \" \" Text2(9).Text = \" \" Text2(10).Text = \" \" Text2(11).Text = \" \" Text2(12).Text = \" \" Text2(16).Text = \" \" Text2(14).Text = \" \" Text2(15).Text = \" \" Text2(13).Text = \" \" Text2(18).Text = \" \" Text2(17).Text = \" \" Text2(2).Text = \" \" End Sub
Private Sub Command3_Click() ‘调用基本信息管理窗体 Unload Me Form8.Show End Sub 17
4.4工资管理的代码 4.4(1 菜单目录的代码 Private Sub 工资管理_Click() Form3.Show End Sub
Private Sub 基本信息管理_Click()
Form3.Hide Form8.Show End Sub
Private Sub 奖惩管理_Click() Form3.Hide Form4.Show End Sub
4..4.2工资管理窗体的代码
Private Sub Command1_Click() ‘调用添加工资窗体 Form6.Show End Sub
Private Sub Command3_Click() ‘修改工资信息 MsgBox (\"修改成功~\") Adodc1.Recordset(\"日期\") = Text1.Text Adodc1.Recordset(\"编号\") = Text2.Text Adodc1.Recordset(\"姓名\") = Text3.Text Adodc1.Recordset(\"部门\") = Text4.Text Adodc1.Recordset(\"提成\") = Text5.Text Adodc1.Recordset(\"奖惩\") = Text6.Text Adodc1.Recordset(\"交通补助\") = Text7.Text
Adodc1.Recordset(\"基本工资\") = Text8.Text Adodc1.Recordset(\"应发工资\") = Text9.Text End Sub
18
Private Sub Command4_Click() Dim cn As New adodb.Connection Dim rs As New adodb.Recordset
cn.ConnectionString = \" Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial
Catalog=工资\"
' 用ADODC控件 连接到数据源,获得连接字符串 cn.Open
rs.Open \"select * from 员工工资表$ where 编号='\" & Trim(Text10.Text) & \"'\
Set DataGrid1.DataSource = rs DataGrid1.Refresh End Sub
Private Sub Command5_Click()
If MsgBox(\"确定删除当前记录,\vbYes Then
Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then
If Adodc1.Recordset.RecordCount <> 0 Then Adodc1.Recordset.MoveLast End If End If End If End Sub
Private Sub Command8_Click() MsgBox (\"确定退出本系统~\") End End Sub
4.4.3添加工资窗体的代码 Private Sub Command1_Click() MsgBox (\"添加成功~\")
删除,\") = 19
Adodc1.Recordset.AddNew Adodc1.Recordset(\"日期\") = Text1.Text Adodc1.Recordset(\"编号\") = Text2.Text Adodc1.Recordset(\"姓名\") =
Text3.Text Adodc1.Recordset(\"部门\") = Text4.Text Adodc1.Recordset(\"提成\") = Text5.Text Adodc1.Recordset(\"奖惩\") = Text6.Text Adodc1.Recordset(\"交通补助\") = Text7.Text Adodc1.Recordset(\"基本工资\") = Text8.Text
Adodc1.Recordset(\"应发工资\") = Text9.Text Adodc1.Recordset.Update ‘添加工资的信息,并更新数据 End Sub
Private Sub Command2_Click() Text1.Text = \" \" Text2.Text = \" \" Text3.Text = \" \" Text4.Text = \" \" Text5.Text = \" \" Text6.Text = \" \" Text7.Text = \" \" Text8.Text = \" \"
Text9.Text = \" \" ‘清空所有的textbox End Sub Private Sub Command3_Click() Unload Me Form3.Show ‘调用工资管理窗体 End Sub
4.5奖惩管理的代码 4.5.1 菜单目录的代码 Private Sub 工资管理_Click() 20 Form4.Hide
Form3.Show End Sub
Private Sub 基本信息管理_Click() Form4.Hide Form8.Show End Sub
Private Sub 奖惩管理_Click() Form4.Show End Sub
4..5.2奖惩管理窗体的代码
Private Sub Command1_Click() Form7.Show End Sub
Private Sub Command3_Click() MsgBox (\"修改成功~\")
Adodc1.Recordset(\"编号\") = Text1.Text Adodc1.Recordset(\"姓名\") = Text2.Text Adodc1.Recordset(\"性别\") = Text3.Text Adodc1.Recordset(\"职位\") = Text4.Text Adodc1.Recordset(\"部门\") = Text5.Text Adodc1.Recordset(\"奖惩日期\") = Text6.Text Adodc1.Recordset(\"奖惩类别\") = Text7.Text
Adodc1.Recordset(\"奖惩原因\") = Text8.Text Adodc1.Recordset(\"奖惩分数\") = Text9.Text Adodc1.Recordset(\"备注\") = Text10.Text Adodc1.Recordset.Update End Sub
Private Sub Command4_Click() Dim cn As New adodb.Connection Dim rs As New adodb.Recordset
21
cn.ConnectionString = \" Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial
Catalog=工资\" ' 用ADODC控件 连接到数据源,获得连接字符串 cn.Open
rs.Open \"select * from 员工奖惩记录$ where 编号='\" & Trim(Text11.Text) & \"'\
Set DataGrid1.DataSource = rs DataGrid1.Refresh End Sub
Private Sub Command5_Click() If MsgBox(\"确定删除当前记录,\vbQuestion + vbYesNo, \"删除,\") = vbYes Then
Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then
If Adodc1.Recordset.RecordCount <> 0 Then Adodc1.Recordset.MoveLast End If End If End If End Sub
Private Sub Command8_Click() MsgBox (\"确定退出本系统~\") End End Sub
4.5.3添加奖惩窗体的代码
Private Sub Command1_Click() MsgBox (\"添加成功~\")
Adodc1.Recordset.AddNew
Adodc1.Recordset(\"编号\") = Text1.Text Adodc1.Recordset(\"姓名\") = Text2.Text Adodc1.Recordset(\"性别\") = Text3.Text Adodc1.Recordset(\"职位\") = Text4.Text Adodc1.Recordset(\"部门\") = Text5.Text
22
Adodc1.Recordset(\"奖惩日期\") = Text6.Text Adodc1.Recordset(\"奖惩类别\") = Text7.Text Adodc1.Recordset(\"奖惩原因\") = Text8.Text
Adodc1.Recordset(\"奖惩分数\") = Text9.Text Adodc1.Recordset(\"备注\") = Text10.Text Adodc1.Recordset.Update End Sub
Private Sub Command2_Click() Text1.Text = \" \" Text2.Text = \" \" Text3.Text = \" \" Text4.Text = \" \" Text5.Text = \" \" Text6.Text = \" \" Text7.Text = \" \" Text8.Text = \" \" Text9.Text = \" \" Text10.Text = \" \" End Sub
Private Sub Command3_Click() Unload Me Form4.Show End Sub
5 程序的运行结果
设计好窗体后,按下“F5”或者在“启动”菜单中启动工程。系统第一个显示的窗体,如图5.1所
示。 23
图5.1登入的运行界面 输入正确的用户名和密码admin时,运行如图5.2所示。
图5.2 登入成功的运行界面 登入成功后,主窗体的显示如图5.3所示。 24
图5.3 主窗体的运行界面 点击基本信息管理按钮,如图5.4所示。
图5.4 基本信息管理窗体的运行界面 点击添加,输入相应的数据,点击确定后,如图5.5所示。
25
图5.5 添加成功的运行界面 点击删除,运行的界面如图5.6所示。
图5.6 删除员工信息的运行界面 修改员工的基本信息,点击修改,如图5.7所示。
26
图5.7 修改成功的运行界面 点击菜单下拉中的工资管理,如图5.8所示。
图5.8 工资管理的运行界面 修改工资信息,点击修改按钮,如图5.9所示。 27
图5.9 修改工资的运行窗体 在查询中输入员工的编号进行查询,如图5.10所示。
图5.10 查询窗体的运行界面
点击菜单下拉中的奖惩管理,如图5.11所示。 28
图5.11 奖惩管理的运行界面 点击退出,如图5.12所示
图5.12 退出本系统的运行界面 29
参 考 文 献
1 朱从旭?《VB程序设计综合教程》(第二版)? 清华大学出版社?2009 2 萨师煊,王珊?《数据库系统概论》?高等教育出版社?2003
3 黄俊联,肖国强?《数据库原理与应用实验教程》?北京:国防工业出版社,2006 4 陈世洪?《SQL SERVER 200管理,开发及应用实例》?人民邮电出版社 2008
5 华罗庚,王元.论一致分布与近似分析.中国科学,1973(4):339~357 6 傅承义,陈运泰,祁贵中.地球物理学基础.北京:科学出版社,1985,447 7 Borko H,Bernier C L(Indexing concepts and methods .New York:Academic Pr,1978
30
因篇幅问题不能全部显示,请点此查看更多更全内容