1、VB+SQL 工资管理系统设计报告 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 26 个人收集整理 勿做商业用途 一、问题描述:
2、 设计一个工资管理系统,使其具有以下功能: 1)员工基本信息的管理功能. 2)单位员工变动、奖惩情况的管理功能. 3)工资的计算、修改功能。 4)查询统计功能。 5)报表打印功能。 6)具有数据备份和数据恢复功能。 二、系统总体设计: 1)设计一个登录界面,使该系统具有一定的安全性和通用性,对应的,在数据库里建立一个登录界面表。 2)在数据库内设计三个信息表,分别是员工情况表,员工部门表,工资表。 3)在VB界面内设计窗体,并书写代码,使其与数据库连接起来,并具有相应功能。 三、数据库设计:(由队友负责) 四、详细设计: 1)设计VB登录界面 图像如下
3、 设置身份为管理员,成功登录 相应代码为: Set Conn = New ADODB.Connection ’On Error GoTo MyErr: ConnStr = ”Provider=SQLOLEDB。1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=工资管理系统;Data Source=XGJYJ2OKZYWHIWB” ’这是连接SQL数据库的语句 Conn.Open ConnStr rs.CursorLocation = adUseCl
4、ient rs.Open Trim$(SQL), Conn, adOpenDynamic, adLockOptimistic Set Selectsql = rs 'Exit Function 'MyErr: ’Set rs = Nothing ’Set Conn = Nothing ’释放相关的系统资源 'MsgBox Err.Description, vbInformation, ”系统提示” ’显示出错信息 End Function Private Sub Command1_Click() Dim SQL As St
5、ring Dim rs As ADODB。Recordset If Text1.Text = ”” Then MsgBox "请输入口令!”, 16 Text1。SetFocus Exit Sub End If SQL = "SELECT * FROM 系统登录 WHERE 用户名 ='" & Text1.Text & "' AND 密码=’” & Text2.Text & "' and 身份='” & Combo1。Text & ”’” ’ objcn, adOpenStatic, adLockOptimisti
6、c Set rs = Selectsql(SQL) If rs。RecordCount 〉 0 Then Form2.Show ’想要打开的主窗体 MsgBox "恭喜兄弟,登录成功!”, 64, "提示" Unload Me Else MsgBox ”口令不对,请重新输入!”, 16, ”提示” Text1。Text = "” Text2.Text = "" Combo1.Text = ”" Text1。SetFocus
7、 End If End Sub Private Sub Form_Load() End Sub Private Sub Text2_Change() Text2.PasswordChar = "*” End Sub 将出现此界面,表示成功登录 2)登录成功后,同时出现基本功能界面 3)点击员工信息管理按钮,将出现员工信息表,代码如下: Private Sub Command1_Click() Form2.Hide Form3。Show End Sub 员工信息表将实现以下功能: 1) 员工基本信息的展览 2) 员工基本信息的添加、删除、修改 3) 增加
8、了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。 4) 设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果。 该界面的代码如下: Private Sub Command1_Click() Adodc1.Recordset。AddNew End Sub Private Sub Command2_Click() Form2.Show Unload Me End Sub Private Sub Command3_Click() Adodc1。Recordset("
9、员工编号") = Text1。Text Adodc1.Recordset(”姓名") = Text5.Text Adodc1。Recordset(”性别") = Text4。Text Adodc1.Recordset(”出生年月”) = Text3。Text Adodc1.Recordset("部门编号") = Text2。Text Form4。Adodc1.Recordset("员工编号") = Text1.Text Form5。Adodc1。Recordset(”员工编号") = Text1。Text Form6。Adodc1.Recordset(”员工编号”) = Text
10、1.Text ’Form4。Adodc1.Recordset(”部门编号”) = Text2.Text Adodc1。Recordset。Update MsgBox ("修改成功") End Sub Private Sub Command4_Click() If MsgBox(”确定删除当前记录?”, vbQuestion + vbYesNo, "删除?") = vbYes Then Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.M
11、oveLast End If End Sub 4) 点击单位员工变动管理,将出现员工变动管理界面,代码如下: Private Sub Command2_Click() Form2.Hide Form4。Show End Sub 单位员工变动管理界面将实现以下功能: 1) 员工部门表的展览 2) 员工部门表的添加、删除、修改,解决了员工工作变动的问题。 3) 增加了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章. 4) 设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得
12、到结果. 单位员工变动管理界面代码如下: Private Sub Command1_Click() Adodc1。Recordset。AddNew End Sub Private Sub Command2_Click() If MsgBox(”确定删除当前记录?", vbQuestion + vbYesNo, ”删除?”) = vbYes Then Adodc1。Recordset.Delete Adodc1。Recordset。MoveNext If Adodc1.Recordset.EOF Then Adodc1。Recordset.MoveLast End If
13、 End Sub Private Sub Command3_Click() Adodc1.Recordset(”员工编号") = Text1.Text Adodc1。Recordset(”部门编号") = Text2。Text Adodc1。Recordset("部门名") = Text3。Text Adodc1。Recordset("负责人”) = Text4。Text Form3。Adodc1。Recordset(”员工编号") = Text1.Text Form3。Adodc1。Recordset(”部门编号") = Text2.Text Adodc1.Recordset
14、Update MsgBox ("修改成功”) End Sub Private Sub Command4_Click() Form2。Show Unload Me End Sub 5) 单击奖惩情况管理,将出现工资情况界面,相应代码如下: Private Sub Command3_Click() Form2.Hide Form5。Show End Sub 奖惩情况管理界面将实现以下功能: 1) 工资表的展览 2) 工资表的添加、删除、修改,解决了员工奖惩情况的问题. 3) 增加了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB
15、书最后一章。 4) 设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果. 该界面代码如下: Private Sub Command1_Click() Adodc1。Recordset。AddNew End Sub Private Sub Command2_Click() If MsgBox("确定删除当前记录?", vbQuestion + vbYesNo, ”删除?”) = vbYes Then Adodc1。Recordset。Delete Adodc1。Recordset.MoveNext If Adod
16、c1。Recordset。EOF Then Adodc1.Recordset.MoveLast End If End Sub Private Sub Command3_Click() Adodc1。Recordset(”员工编号”) = Text1。Text Adodc1。Recordset(”奖金") = Str(Text2。Text) Adodc1.Recordset("扣除”) = Str(Text3.Text) Form6。Adodc1.Recordset(”员工编号") = Text1.Text Form6.Adodc1.Recordset("奖金”) = Text2
17、Text Form6.Adodc1.Recordset(”扣除") = Text3。Text Adodc1。Recordset。Update MsgBox ("修改成功”) End Sub Private Sub Command4_Click() Form2。Show Unload Me End Sub 6)单击工资的计算、修改按钮,将出现工资的管理界面,相应代码如下: Private Sub Command4_Click() Form2。Hide Form6。Show End Sub 单位员工变动管理界面将实现以下功能: 1)员工工资表的展览 2)员工工资表
18、的总工资计算功能,解决了员工工作变动的问题。 3)增加了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。 4)设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果 该界面代码如下: Private Sub Command1_Click() Adodc1.Recordset.AddNew End Sub Private Sub Command2_Click() If MsgBox("确定删除当前记录?”, vbQuestion + vbYesNo, ”删除?”) = v
19、bYes Then Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset。EOF Then Adodc1。Recordset.MoveLast End If End Sub Private Sub Command3_Click() MsgBox (”修改成功”) Adodc1。Recordset("员工编号") = Text1.Text Adodc1。Recordset("基本工资”) = Text2.Text Adodc1。Recordset("奖金”) = Str(Text3。Text
20、 Adodc1.Recordset("扣除”) = Str(Text4.Text) Adodc1。Recordset。Update End Sub Private Sub Command4_Click() Form2。Show Unload Me End Sub Private Sub Form_Load() Text5。Text = Val(Text2。Text) + Val(Text3.Text) - Val(Text4.Text) End Sub 7、 单击查询功能,将出现查询管理部门界面,相应代码如下: Private Sub Command5_Click()
21、 Form2。Hide Form8.Show End Sub 查询界面将实现以下功能: 1)将员工所在部门分类 2)将员工按分类进行统计,相应显示 3)增加了两个adodc控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。 4)设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果。 5)增加了一个datalist控件,达到分类的效果。 该界面代码如下: Private Sub Command1_Click() Form2.Show Unload Me End Sub Pr
22、ivate Sub DataList1_Click() Adodc1.RecordSource = "select * from 员工部门表 where 部门名= ’” & DataList1.BoundText & " ’” Adodc1。Refresh End Sub Private Sub Form_Load() 'Dim mpath$, mlink$ 'mpath = App.Path ’If Right(mpath, 1) 〈〉 ”\" Then mpath = mpath + ”\” 'mlink = "provider=microsoft。jet。oledb。4。
23、0;" 'mlink = mlink + ”data source=” + mpath + "工资管理系统。mdb" ’Adodc1。ConnectionString = mlink ’Adodc1。CommandType = adCmdUnknown ' DataList1.ListField= Adodc1.RecordSource = "select * from 员工部门表” ’ where 部门名= '办公室’" '” & DataList1。BoundText& ”'” Adodc1。Refresh End Sub 8、 单击统计功能,将出现统计功能界面,代码如
24、下: Private Sub Command7_Click() Form2。Hide Form7。Show End Sub 统计功能界面将实现以下功能: 1) 将所有员工按性别、年龄、部门分类 2) 对不同的分类进行统计并查询 3)增加了一个adodc控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。 4)设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果。 5)增加了一个datalist控件,达到分类的效果。 该界面代码如下: Private Sub Command1_Cl
25、ick() Adodc1.RecordSource = "select year(出生年月)as 年龄,count(*) as 人数 from 员工情况表 group by year(出生年月)" Adodc1。Refresh End Sub Private Sub Command2_Click() Form2。Show Unload Me End Sub Private Sub Command3_Click() Adodc1.RecordSource = "select 部门名,count(*) as 人数 from 员工部门表 group by 部门名" Adodc1。
26、Refresh End Sub Private Sub Command4_Click() Adodc1.RecordSource = "select 性别,count(*) as 人数 from 员工情况表 group by 性别" Adodc1.Refresh End Sub 9、 单击数据库备份恢复功能按钮,将出现备份恢复界面,代码如下: Private Sub Command7_Click() Form2。Hide Form9.Show End Sub 单击数据库备份及恢复按钮,将实现数据库备份及恢复功能,界面如下: 代码如下: Public cn As
27、 ADODB.Connection Private Sub Command1_Click() cn.Execute ”backup database 工资管理系统 to disk=’d:\工资备份.bak’ with name='工资管理系统 backup all',description=’Full Backup Of pubs'" MsgBox ”数据完全备份已经完成”, vbOKOnly + vbInformation, "提醒” End Sub Private Sub Command2_Click() cn.Execute "restore database 工资管
28、理系统 from disk='d:\工资备份.bak' with FILE=1” MsgBox ”数据恢复已经完成", vbOKOnly + vbInformation, "提醒” End Sub Private Sub Command3_Click() Form2.Show Unload Me End Sub Private Sub Form_Load() Set cn = New ADODB.Connection strcon = "Provider=SQLOLEDB。1;Integrated Security=SSPI;Persist Security In
29、fo=False;Initial Catalog=工资管理系统;Data Source=XGJYJ2OKZYWHIWB;" + _ ”use procedure for prepare=1;auto translate=true;" + _ "use encryption for data=false;tag with column collation when possible=false" cn。ConnectionString = strcon On Error Resume Next cn.Open If cn。Errors。C
30、ount 〉 0 Then For i = 0 To cn。Errors.Count — 1 If cn.Errors(i)。Number = -2147467259 Then MsgBox "网络不通或服务器未开,请确认后再试", vbOKOnly + vbInformation, "提醒" Unload Me Exit Sub Exit For End If Next i End If End Sub 10、 单击报表打印功能按钮,将实现报表打印功能,代码如下: Private Sub Command8_Click()
31、CommonDialog1.Action = 5 Printer.Print DataGrid1。Text End Sub 界面如下: 详细设计结束! 五、课程设计小结及建议: 从此次课程设计中,我们懂得了合作的重要性,我们学会了如何应用VB与数据库连接(adodc),在VB中设计相关界面以达到题目所需要求。同时,运用datagrid及adodc控件来达到统计分类的效果,运用datagrid及datalist控件来达到查询功能.虽然在打印报表和数据库恢复功能上并不完善,但是还是从中学到了不少的知识。我认为,在做实验遇到错误时,最好是自己能将错误找出并将其改正,如果实在不行再找老师,然后再自己琢磨琢磨,这样的话更能提高自己的动手能力及实际操作。 课程设计报告 学生姓名 :******** 专 业:计算机科学与技术 学 号:******** 指导教师:******** 设计部分:VB代码设计 2011年**月***日






