《数据库课程设计工资管理系统1.doc》由会员分享,可在线阅读,更多相关《数据库课程设计工资管理系统1.doc(28页珍藏版)》请在三一办公上搜索。
1、 一、问题描述设计一个工资管理系统,使其具有以下功能: 1)员工基本信息的管理功能。2)单位员工变动、奖惩情况的管理功能。3)工资的计算、修改功能。4)查询统计功能。5)报表打印功能。6)具有数据备份和数据恢复功能。二、系统总体设计:1)设计一个登录界面,使该系统具有一定的安全性和通用性,对应的,在数据库里建立一个登录界面表。2)在数据库内设计三个信息表,分别是员工情况表,员工部门表,工资表。3)在VB界面内设计窗体,并书写代码,使其与数据库连接起来,并具有相应功能。三、数据库设计:使用T-SQL语句创建数据库,表,及所要添加的相应数据1) 创建数据库语句如下: create database
2、 工资管理系统2) 创建员工情况表语句如下: create table 员工情况表(员工编号 char(10) NOT NULL,姓名 varchar(50),性别 char(10),出生年月 datetime,部门编号 char(10) NOT NULL,)向员工情况表添加数据:insert into 员工情况表(员工编号,姓名,性别,出生年月,部门编号)values(01,张三,男,11/23/1991,a)insert into 员工情况表(员工编号,姓名,性别,出生年月,部门编号)values(02,李四,男,5/23/1994,b)insert into 员工情况表(员工编号,姓名,
3、性别,出生年月,部门编号)values(03,王五,男,8/28/1992,c)insert into 员工情况表(员工编号,姓名,性别,出生年月,部门编号)values(04,小红,女,9/07/1992,d)insert into 员工情况表(员工编号,姓名,性别,出生年月,部门编号)values(05,小明,男,10/01/1992,e)添加数据完毕3) 创建工资表语句如下:create table 工资表(员工编号 char(10) NOT NULL,基本工资 char(10) NOT NULL,奖金 char(10),扣除 char(10),)向工资表内添加数据:insert int
4、o 工资表(员工编号,基本工资,奖金,扣除)values(01,4000,300,100)insert into 工资表(员工编号,基本工资,奖金,扣除)values(02,2300,200,50)insert into 工资表(员工编号,基本工资,奖金,扣除)values(03,2500,150,100)insert into 工资表(员工编号,基本工资,奖金,扣除)values(04,3000,220,150)insert into 工资表(员工编号,基本工资,奖金,扣除)values(05,2000,100,0)添加数据完毕4) 创建员工部门表语句如下: create table 员工部
5、门表(员工编号 char(10) NOT NULL,部门编号 char(10) NOT NULL,部门名 varchar(50)NOT NULL,负责人 varchar(50)NOT NULL,)向员工部门表内添加数据: insert into 员工部门表(员工编号,部门编号,部门名,负责人)values(01,a,办公室,张强)insert into 员工部门表(员工编号,部门编号,部门名,负责人)values(02,b,一车间,王强)insert into 员工部门表(员工编号,部门编号,部门名,负责人)values(03,c,销售部,夏雨)insert into 员工部门表(员工编号,部
6、门编号,部门名,负责人)values(04,d,设计部,露露)insert into 员工部门表(员工编号,部门编号,部门名,负责人)values(05,e,管理部,刘伟)添加数据完毕5) 创建系统登录表语句如下:Create table 系统登录(用户名 char(10) not null, 密码 char(10) not null, 身份 varchar(50) not null)向系统登录表内添加数据:Insert into 系统登录Values(123,23,管理员)Insert into 系统登录Values(122,01,普通用户)添加数据完毕数据库创建完毕!4、 详细设计 1)设
7、计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$(SQL)
8、, 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 请输入口令!, 16 T
9、ext1.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 口令不对,请重新输入!, 16,
10、 提示 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) 员工基本信息的展览2) 员工
11、基本信息的添加、删除、修改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.Recordset(员工编号) =
12、 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.Adodc1.Recordset(部门编号) =
13、 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) 点击单位员工变动管理,将出现员工变动管理界面,代码如下:Private Sub
14、Command2_Click()Form2.HideForm4.ShowEnd Sub单位员工变动管理界面将实现以下功能:1) 员工部门表的展览2) 员工部门表的添加、删除、修改,解决了员工工作变动的问题。3) 增加了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。4) 设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果。单位员工变动管理界面代码如下:Private Sub Command1_Click()Adodc1.Recordset.AddNewEnd SubPrivate Su
15、b 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(部门编号) = Text2.TextAdodc1.Re
16、cordset(部门名) = Text3.TextAdodc1.Recordset(负责人) = Text4.TextForm3.Adodc1.Recordset(员工编号) = Text1.TextForm3.Adodc1.Recordset(部门编号) = Text2.TextAdodc1.Recordset.UpdateMsgBox (修改成功)End SubPrivate Sub Command4_Click()Form2.ShowUnload MeEnd Sub5) 单击奖惩情况管理,将出现工资情况界面,相应代码如下:Private Sub Command3_Click()Form2
17、.HideForm5.ShowEnd Sub奖惩情况管理界面将实现以下功能:1) 工资表的展览2) 工资表的添加、删除、修改,解决了员工奖惩情况的问题。3) 增加了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。4) 设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果。该界面代码如下:Private Sub Command1_Click()Adodc1.Recordset.AddNewEnd SubPrivate Sub Command2_Click()If MsgBox(确定删除当前
18、记录?, 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)Adodc1.Recordset(扣除) = Str(Text3.Text)Fo
19、rm6.Adodc1.Recordset(员工编号) = Text1.TextForm6.Adodc1.Recordset(奖金) = Text2.TextForm6.Adodc1.Recordset(扣除) = Text3.TextAdodc1.Recordset.UpdateMsgBox (修改成功)End SubPrivate Sub Command4_Click()Form2.ShowUnload MeEnd Sub6)单击工资的计算、修改按钮,将出现工资的管理界面,相应代码如下:Private Sub Command4_Click()Form2.HideForm6.ShowEnd S
20、ub单位员工变动管理界面将实现以下功能:1)员工工资表的展览2)员工工资表的总工资计算功能,解决了员工工作变动的问题。3)增加了一个adodc1控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。4)设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果该界面代码如下:Private Sub Command1_Click()Adodc1.Recordset.AddNewEnd SubPrivate Sub Command2_Click()If MsgBox(确定删除当前记录?, vbQuestion + vb
21、YesNo, 删除?) = 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.TextAdodc1.Recordset(奖金) = Str(Text3.Text)Adodc1.Recor
22、dset(扣除) = 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 Command5_Click()Form2.HideForm8.ShowEnd Sub查询界面将实现以下功能:
23、1)将员工所在部门分类2)将员工按分类进行统计,相应显示3)增加了两个adodc控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作见VB书最后一章。4)设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果。5)增加了一个datalist控件,达到分类的效果。该界面代码如下:Private Sub Command1_Click()Form2.ShowUnload MeEnd SubPrivate Sub DataList1_Click()Adodc1.RecordSource = select * from 员工部门表 wh
24、ere 部门名= & 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 + 工资管理系统.mdbAdodc1.ConnectionString = mlinkAdodc1.CommandType = adCmdUn
25、known DataList1.ListField=Adodc1.RecordSource = select * from 员工部门表 where 部门名= 办公室 & DataList1.BoundText& Adodc1.RefreshEnd Sub8、 单击统计功能,将出现统计功能界面,代码如下:Private Sub Command7_Click()Form2.HideForm7.ShowEnd Sub统计功能界面将实现以下功能:1) 将所有员工按性别、年龄、部门分类2) 对不同的分类进行统计并查询3)增加了一个adodc控件,通过改变各控件的属性,达到VB与数据库连接的目的,具体操作
26、见VB书最后一章。4)设计了一个datagrid控件,使所以信息以表的信息清楚的展示,如果基本信息有什么变动,那可以在控件里得到结果。5)增加了一个datalist控件,达到分类的效果。该界面代码如下:Private Sub Command1_Click()Adodc1.RecordSource = select year(出生年月)as 年龄,count(*) as 人数 from 员工情况表 group by year(出生年月)Adodc1.RefreshEnd SubPrivate Sub Command2_Click()Form2.ShowUnload MeEnd SubPrivat
27、e 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、 单击数据库备份恢复功能按钮,将出现备份恢复界面,代码如下:Private Sub Command7_Click()Form2.Hi
28、deForm9.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 数据完全备份已经完成, vbOKOnly + vbInformation, 提醒End SubPrivate Sub Command2_
29、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 strcon = Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Sec
30、urity 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 Error Resume Next cn.Open If cn.Errors.Count 0 Then For i = 0 To c
31、n.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()CommonDialog1.Action = 5Printer.Print DataGrid1.TextEnd Sub界面如下:详细设计结束!五、课程设计小结及建议:从此次课程设计中,我们学会了熟练操作VB与数据库的连接,设计相关登录界面以达到系统安全的目的。同时,运用datagrid及datalist控件来达到统计分类的效果。虽然在打印报表和数据库恢复功能上并不完善,但是还是从中学到了不少的知识。我们认为,做课程设计并不需要去网上查询相关资料,只要多看VB书,就可以达到代码的实现。