1、VB+SQL 工资管理系统设计报告 作者: 日期:26 个人收集整理 勿做商业用途 一、问题描述:设计一个工资管理系统,使其具有以下功能: 1)员工基本信息的管理功能.2)单位员工变动、奖惩情况的管理功能.3)工资的计算、修改功能。4)查询统计功能。5)报表打印功能。6)具有数据备份和数据恢复功能。二、系统总体设计:1)设计一个登录界面,使该系统具有一定的安全性和通用性,对应的,在数据库里建立一个登录界面表。2)在数据库内设计三个信息表,分别是员工情况表,员工部门表,工资表。3)在VB界面内设计窗体,并书写代码,使其与数据库连接起来,并具有相应功能。三、数据库设计:(由队友负责)四、详细设计:
2、 1)设计VB登录界面 图像如下:设置身份为管理员,成功登录相应代码为: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 = adUseClient rs.Open Trim
3、$(SQL), Conn, adOpenDynamic, adLockOptimistic Set Selectsql = rs Exit FunctionMyErr: Set rs = Nothing Set Conn = Nothing 释放相关的系统资源 MsgBox Err.Description, vbInformation, ”系统提示” 显示出错信息End FunctionPrivate Sub Command1_Click() Dim SQL As String Dim rs As ADODB。Recordset If Text1.Text = ” Then MsgBox 请输
4、入口令!”, 16 Text1。SetFocus Exit Sub End If SQL = SELECT FROM 系统登录 WHERE 用户名 = Text1.Text AND 密码=” Text2.Text and 身份=” & Combo1。Text & ” objcn, adOpenStatic, adLockOptimistic Set rs = Selectsql(SQL) If rs。RecordCount 0 Then Form2.Show 想要打开的主窗体 MsgBox 恭喜兄弟,登录成功!”, 64, 提示 Unload Me Else MsgBox ”口令不对,请重新输
5、入!”, 16, ”提示” Text1。Text = ” Text2.Text = Combo1.Text = ” Text1。SetFocus End IfEnd SubPrivate Sub Form_Load()End SubPrivate Sub Text2_Change()Text2.PasswordChar = *”End Sub将出现此界面,表示成功登录2)登录成功后,同时出现基本功能界面3)点击员工信息管理按钮,将出现员工信息表,代码如下:Private Sub Command1_Click()Form2.HideForm3。ShowEnd Sub员工信息表将实现以下功能:1)
6、 员工基本信息的展览2) 员工基本信息的添加、删除、修改3) 增加了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。4) 设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果。该界面的代码如下:Private Sub Command1_Click()Adodc1.Recordset。AddNewEnd SubPrivate Sub Command2_Click()Form2.ShowUnload MeEnd SubPrivate Sub Command3_Click()Adodc1。Re
7、cordset(员工编号) = Text1。TextAdodc1.Recordset(”姓名) = Text5.TextAdodc1。Recordset(”性别) = Text4。TextAdodc1.Recordset(”出生年月”) = Text3。TextAdodc1.Recordset(部门编号) = Text2。TextForm4。Adodc1.Recordset(员工编号) = Text1.TextForm5。Adodc1。Recordset(”员工编号) = Text1。TextForm6。Adodc1.Recordset(”员工编号”) = Text1.TextForm4。Ad
8、odc1.Recordset(”部门编号”) = Text2.TextAdodc1。Recordset。UpdateMsgBox (修改成功)End SubPrivate Sub Command4_Click()If MsgBox(”确定删除当前记录?”, vbQuestion + vbYesNo, 删除?) = vbYes ThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLastEnd IfEnd Sub4) 点击单位员工变动管理,将出现
9、员工变动管理界面,代码如下:Private Sub Command2_Click()Form2.HideForm4。ShowEnd Sub单位员工变动管理界面将实现以下功能:1) 员工部门表的展览2) 员工部门表的添加、删除、修改,解决了员工工作变动的问题。3) 增加了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章.4) 设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果.单位员工变动管理界面代码如下:Private Sub Command1_Click()Adodc1。Records
10、et。AddNewEnd SubPrivate Sub Command2_Click()If MsgBox(”确定删除当前记录?, vbQuestion + vbYesNo, ”删除?”) = vbYes ThenAdodc1。Recordset.DeleteAdodc1。Recordset。MoveNextIf Adodc1.Recordset.EOF Then Adodc1。Recordset.MoveLastEnd IfEnd SubPrivate Sub Command3_Click()Adodc1.Recordset(”员工编号) = Text1.TextAdodc1。Records
11、et(”部门编号) = Text2。TextAdodc1。Recordset(部门名) = Text3。TextAdodc1。Recordset(负责人”) = Text4。TextForm3。Adodc1。Recordset(”员工编号) = Text1.TextForm3。Adodc1。Recordset(”部门编号) = Text2.TextAdodc1.Recordset。UpdateMsgBox (修改成功”)End SubPrivate Sub Command4_Click()Form2。ShowUnload MeEnd Sub5) 单击奖惩情况管理,将出现工资情况界面,相应代码如
12、下:Private Sub Command3_Click()Form2.HideForm5。ShowEnd Sub奖惩情况管理界面将实现以下功能:1) 工资表的展览2) 工资表的添加、删除、修改,解决了员工奖惩情况的问题.3) 增加了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。4) 设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果.该界面代码如下:Private Sub Command1_Click()Adodc1。Recordset。AddNewEnd SubPrivate S
13、ub Command2_Click()If MsgBox(确定删除当前记录?, vbQuestion + vbYesNo, ”删除?”) = vbYes ThenAdodc1。Recordset。DeleteAdodc1。Recordset.MoveNextIf Adodc1。Recordset。EOF Then Adodc1.Recordset.MoveLastEnd IfEnd SubPrivate Sub Command3_Click()Adodc1。Recordset(”员工编号”) = Text1。TextAdodc1。Recordset(”奖金) = Str(Text2。Text)
14、Adodc1.Recordset(扣除”) = Str(Text3.Text)Form6。Adodc1.Recordset(”员工编号) = Text1.TextForm6.Adodc1.Recordset(奖金”) = Text2。TextForm6.Adodc1.Recordset(”扣除) = Text3。TextAdodc1。Recordset。UpdateMsgBox (修改成功”)End SubPrivate Sub Command4_Click()Form2。ShowUnload MeEnd Sub6)单击工资的计算、修改按钮,将出现工资的管理界面,相应代码如下:Private
15、Sub Command4_Click()Form2。HideForm6。ShowEnd Sub单位员工变动管理界面将实现以下功能:1)员工工资表的展览2)员工工资表的总工资计算功能,解决了员工工作变动的问题。3)增加了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。4)设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果该界面代码如下:Private Sub Command1_Click()Adodc1.Recordset.AddNewEnd SubPrivate Sub Command
16、2_Click()If MsgBox(确定删除当前记录?”, vbQuestion + vbYesNo, ”删除?”) = vbYes ThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIf Adodc1.Recordset。EOF Then Adodc1。Recordset.MoveLastEnd IfEnd SubPrivate Sub Command3_Click()MsgBox (”修改成功”)Adodc1。Recordset(员工编号) = Text1.TextAdodc1。Recordset(基本工资”) = Text2.Tex
17、tAdodc1。Recordset(奖金”) = Str(Text3。Text)Adodc1.Recordset(扣除”) = Str(Text4.Text)Adodc1。Recordset。UpdateEnd SubPrivate Sub Command4_Click()Form2。ShowUnload MeEnd SubPrivate Sub Form_Load()Text5。Text = Val(Text2。Text) + Val(Text3.Text) - Val(Text4.Text)End Sub7、 单击查询功能,将出现查询管理部门界面,相应代码如下:Private Sub Co
18、mmand5_Click()Form2。HideForm8.ShowEnd Sub查询界面将实现以下功能:1)将员工所在部门分类2)将员工按分类进行统计,相应显示3)增加了两个adodc控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。4)设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果。5)增加了一个datalist控件,达到分类的效果。该界面代码如下:Private Sub Command1_Click()Form2.ShowUnload MeEnd SubPrivate Sub DataList
19、1_Click()Adodc1.RecordSource = select * from 员工部门表 where 部门名= ” DataList1.BoundText & ”Adodc1。RefreshEnd SubPrivate Sub Form_Load()Dim mpath, mlink$mpath = App.PathIf Right(mpath, 1) ” Then mpath = mpath + ”mlink = provider=microsoft。jet。oledb。4。0;mlink = mlink + ”data source=” + mpath + 工资管理系统。mdbA
20、dodc1。ConnectionString = mlinkAdodc1。CommandType = adCmdUnknown DataList1.ListField=Adodc1.RecordSource = select * from 员工部门表” where 部门名= 办公室” DataList1。BoundText& ”Adodc1。RefreshEnd Sub8、 单击统计功能,将出现统计功能界面,代码如下:Private Sub Command7_Click()Form2。HideForm7。ShowEnd Sub统计功能界面将实现以下功能:1) 将所有员工按性别、年龄、部门分类2
21、) 对不同的分类进行统计并查询3)增加了一个adodc控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。4)设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果。5)增加了一个datalist控件,达到分类的效果。该界面代码如下:Private Sub Command1_Click()Adodc1.RecordSource = select year(出生年月)as 年龄,count(*) as 人数 from 员工情况表 group by year(出生年月)Adodc1。RefreshEnd SubP
22、rivate Sub Command2_Click()Form2。ShowUnload MeEnd SubPrivate Sub Command3_Click()Adodc1.RecordSource = select 部门名,count() as 人数 from 员工部门表 group by 部门名Adodc1。RefreshEnd SubPrivate Sub Command4_Click()Adodc1.RecordSource = select 性别,count(*) as 人数 from 员工情况表 group by 性别Adodc1.RefreshEnd Sub9、 单击数据库备份
23、恢复功能按钮,将出现备份恢复界面,代码如下:Private Sub Command7_Click()Form2。HideForm9.ShowEnd Sub单击数据库备份及恢复按钮,将实现数据库备份及恢复功能,界面如下:代码如下:Public cn As ADODB.ConnectionPrivate Sub Command1_Click()cn.Execute ”backup database 工资管理系统 to disk=d:工资备份.bak with name=工资管理系统 backup all,description=Full Backup Of pubsMsgBox ”数据完全备份已经
24、完成”, vbOKOnly + vbInformation, 提醒”End SubPrivate Sub Command2_Click() cn.Execute restore database 工资管理系统 from disk=d:工资备份.bak with FILE=1” MsgBox ”数据恢复已经完成, vbOKOnly + vbInformation, 提醒”End SubPrivate Sub Command3_Click()Form2.ShowUnload MeEnd SubPrivate Sub Form_Load()Set cn = New ADODB.Connection
25、strcon = Provider=SQLOLEDB。1;Integrated Security=SSPI;Persist Security Info=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
26、Error Resume Next cn.Open If cn。Errors。Count 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 IfEnd Sub10、 单击报表打印功能按钮,将实现报表打印功能,代码如下:Private Sub Command8_Click()CommonD
27、ialog1.Action = 5Printer.Print DataGrid1。TextEnd Sub界面如下:详细设计结束!五、课程设计小结及建议:从此次课程设计中,我们懂得了合作的重要性,我们学会了如何应用VB与数据库连接(adodc),在VB中设计相关界面以达到题目所需要求。同时,运用datagrid及adodc控件来达到统计分类的效果,运用datagrid及datalist控件来达到查询功能.虽然在打印报表和数据库恢复功能上并不完善,但是还是从中学到了不少的知识。我认为,在做实验遇到错误时,最好是自己能将错误找出并将其改正,如果实在不行再找老师,然后再自己琢磨琢磨,这样的话更能提高自己的动手能力及实际操作。课程设计报告学生姓名 :*专 业:计算机科学与技术学 号:* 指导教师:* 设计部分:VB代码设计2011年*月日