VB6.0课程设计职工工资管理系统.doc
课程设计任务书学 院信息科学与工程学院专 业计算机科学与技术学 生 姓 名学 号设 计 题 目职工工资管理系统内容及要求:内容:利用VB6.0及SQL Server2000自行设计一个职工工资管理系统,数据库里至少包括3个表:用户表、职工基本信息表、职工工资信息表。用户表用于记录用于登录系统的用户名及密码;职工基本信息表用于记录职工的基本信息;职工工资信息表用于记录职工的工资信息。要求:1.拥有用户登录窗体、主窗体2.能够进行对职工基本信息的浏览、编辑3.能够进行对职工工资信息的浏览、编辑4.能够实现按某个字段查询职工的基本信息及工资信息5.能够显示打印报表进度安排:第19周:系统需求分析,设计E-R图数据库设计和模块设计进行软件编码设计,实现各模块功能第20周:继续完成软件设计,调试与完善系统的各项功能书写课程设计报告。验收程序,答辩。指导教师(签字):年 月 日学院院长(签字):年 月 日目 录第1章 系统功能概述.21.1 系统功能.21.2 系统层次图.2第2章 数据库设计.32.1 需求分析.32.2 E-R模型42.3 关系模型.52.4 表结构设计.5第3章 系统各功能模块的详细设计.73.1 系统界面.73.2 主窗体界面.73.3 登录模块.83.3.1 用户登录83.3.2 用户注册93.4 用户管理模块.103.5 数据管理模块.113.5.1 职工基本信息浏览.113.5.2 职工基本信息录入.133.6 数据查询模块.163.7 打印报表模块.17第4章 课设总结.18参考文献.18第1章 系统功能概述1.1 系统功能职工工资管理系统是针对系统服务对象的具体要求设计的,其主要任务是用计算机对企业内部各职工的基本信息、工资信息进行日常管理,如查询、修改、添加、删除等操作。职工工资管理系统的目标是能迅速并且准确地完成对职工基本信息及工资信息的查询、录入、修改,以及对工资信息的统计计算及汇总工作。本系统运用VB 6.0及SQL Server2000实现,主要设计了以下几大功能:(1)按某字段对职工基本信息的录入、查询及更新(2)按某字段对职工工资信息的录入、查询及更新(3)系统自动根据所输入的工资信息进行统计计算 应发工资基本工资+补助+奖金 缴税基本工资×10%实发工资应发工资缴税水电费保险费(4)利用DataReport设计器实现对职工基本信息及工资信息的打印预览1.2 系统层次图职工工资管理系统用户管理数据管理数据查询打印报表修改密码退出职工基本信息浏览职工基本信息录入职工工资浏览职工工资录入打印职工信息报表打印职工工资报表查询职工信息查询工资信息图1.1系统层次图第2章 数据库设计2.1 需求分析本系统运用VB 6.0及SQL Server2000实现,拥有1个登录窗体、1个主窗体、10个子窗体、1个数据环境设计器及2个数据报表设计器。登录窗体里可以由单击事件调用注册窗体,登录成功后进入主窗体,主窗体有4个主菜单:用户管理、数据管理、数据查询、打印报表。1. 用户管理:用户管理包括修改密码及退出2项子菜单。2. 数据管理:数据管理有4个子菜单,可实现对职工基本信息、职工工资信息的浏览及录入功能。3. 数据查询:数据查询中应用了DataGrid控件,用来查询职工基本信息及工资信息。4. 打印报表:打印报表调用DataReport设计器,实现对职工基本信息表、职工工资信息表的打印预览。本系统在SQL Server2000数据库里设计了3个数据表:用户表:(用户名,密码) 用于记录注册过的用户名及密码职工基本信息表:(职工编号,姓名,性别,出生日期,职称,部门,入职时间)职工工资信息表:(职工编号,年份,月份,基本工资,补助,奖金,应发工资,缴税,水电费,保险费,实发工资)应发工资基本工资+补助+奖金 缴税基本工资×10%实发工资应发工资缴税水电费保险费2.2 E-R模型1.用户实体:密码用户名用户图2.1 用户实体及其属性2.职工实体与工资实体的E-R模型:职 工出生日期入职时间部门性别姓名职称职工编号 1发放 1工 资补助水电费缴税基本工资年份月份职工编号奖金应发工资实发工资保险费图2.2 职工实体与工资实体的E-R模型2.3 关系模型本系统设计了3个实体,用户实体,职工实体,工资实体,其中用户实体是相对独立的,与另外两个实体不存在联系;职工实体与工资实体存在着1:1的联系,且两个实体取决于同一个属性职工编号。因此可将本系统的E-R模型转化为下述关系模型:用户:(用户名,密码) 职工:(职工编号,姓名,性别,出生日期,职称,部门,入职时间)工资:(职工编号,年份,月份,基本工资,补助,奖金,应发工资,缴税,水电费,保险费,实发工资)2.4 表结构设计本系统在SQL Server2000数据库里共设计了3个数据表来记录数据:用户表,职工基本信息表,职工工资表。1.用户表:表2.1用户表的结构列名数据类型长度约束用户名char10主键密码char6不为空2.职工基本信息表:表2.2 职工基本信息表的结构列名数据类型长度约束职工编号char10主键姓名char10不为空性别char2不为空出生日期datetime8不为空职称char10允许空部门char10允许空入职时间datetime8不为空3.职工工资表:表2.3 职工工资表的结构列名数据类型长度约束职工编号char10主键年份char4不为空月份char2不为空基本工资int4不为空补助int4允许空奖金int4允许空应发工资int4不为空缴税int4不为空水电费int4不为空保险费int4不为空实发工资int4不为空第3章 系统各功能模块的详细设计3.1 系统界面设计有定时器实现滚动字幕效果,单击“点击进入”会弹出用户登录窗口。图3.1 系统界面3.2 主窗体界面主窗体设计了四个主菜单:用户管理,数据管理,数据查询,打印报表。用户管理可以实现用户密码的修改;数据管理可对数据库里的信息进行浏览、录入;数据查询可按某个字段查询数据;打印报表实现对数据的打印预览。图3.2 系统主窗体3.3 登录模块3.3.1 用户登录在正确输入用户表里的用户名以及对应的密码后,点击“登录”,才能进入主窗体,否则会提示相关的警告信息;按“取消”则退回系统界面。图3.3 用户登录窗体Private Sub CommandLand_Click()Dim sqlstr As StringIf Text1 = "" Then MsgBox "请输入用户名!", vbExclamation, "确认用户名" Text1.SetFocus Exit SubElsesqlstr = "select * from 用户表 where 用户名='" & Text1 & "'"Adodc1.RecordSource = sqlstrAdodc1.RefreshIf Adodc1.Recordset.BOF Then MsgBox "用户名不存在,请重新输入", vbExclamation, "警告" Text1.Text = "" Text1.SetFocusElse If Adodc1.Recordset.Fields("密码") = Text2 Then Form3.Show Form3.Label2.Caption = Adodc1.Recordset.Fields("用户名") Unload Me Else MsgBox "密码错误,请重新输入", vbExclamation, "警告" Text2.Text = "" Text2.SetFocus End IfEnd IfEnd IfEnd SubPrivate Sub CommandCancel_Click()Unload MeForm1.ShowEnd Sub3.3.2 用户注册本模块提供用户注册功能,并把文本框里的用户名、密码录入用户表里。图3.4 用户注册窗体Private Sub CommandOK_Click()Dim sqlstr As StringIf Text1 = "" Then MsgBox "请输入用户名!", vbExclamation, "确认用户名" Text1.SetFocus Exit SubElse sqlstr = "select * from 用户表 where 用户名= '" & Text1 & "'" Adodc1.RecordSource = sqlstr Adodc1.RefreshIf Adodc1.Recordset.EOF = False Then MsgBox "用户已存在,请重新输入!", vbExclamation, "检验用户名" Text1 = "" Text1.SetFocus Exit SubEnd IfEnd IfIf Text2 <> Text3 Then MsgBox "两次输入的密码不一致,请重新输入", vbExclamation, "检验密码" Text2 = "": Text3 = "" Text2.SetFocus Exit SubElse Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("用户名") = Trim(Text1) Adodc1.Recordset.Fields("密码") = Trim(Text2) Adodc1.Recordset.Update Me.Hide MsgBox "成功注册新用户!", vbInformation, "添加用户"End IfUnload MeForm2.ShowEnd Sub3.4 修改密码模块本模块可对登录成功的用户实现修改密码的功能,并用新密码替换原来的密码。图3.5 修改密码窗体Private Sub CommandOK_Click()Dim sqlstr As Stringsqlstr = "select * from 用户表 where 用户名= '" & Form3.Label2.Caption & "'"Adodc1.RecordSource = sqlstrAdodc1.RefreshIf Text1 = "" Then MsgBox "请输入原密码!", vbExclamation, "输入原密码" Text1.SetFocus Exit SubElse If Text1 <> Adodc1.Recordset.Fields("密码") Then MsgBox "密码错误,请重新输入!", vbExclamation, "密码错误" Text1 = "" Text1.SetFocus Exit Sub End IfEnd IfIf Text2 = "" Then MsgBox "新密码不能为空,请重新输入!", vbExclamation, "密码不能为空" Text2.SetFocus Exit SubElse If Text2 <> Text3 Then MsgBox "两次输入的密码不一致,请重新输入", vbExclamation, "检验密码" Text2 = "": Text3 = "" Text2.SetFocus Exit Sub Else Adodc1.Recordset.Fields("密码") = Text2.Text Adodc1.Recordset.Update Form5.Adodc1.Refresh Me.Hide MsgBox "密码修改成功!", vbInformation, "修改成功" End IfEnd IfUnload MeForm3.ShowEnd Sub3.5 数据管理模块 (以职工基本信息的浏览及录入为例)3.5.1 职工基本信息浏览本模块可对职工基本信息表里的内容按“编号”一条一条地浏览,点击移动按钮可以移动记录指针,也可点击“表格显示”查看全部信息。图3.6 职工基本信息浏览窗体Private Sub CommandFirst_Click()Adodc1.Recordset.MoveFirstCommandFirst.Enabled = FalseCommandPre.Enabled = FalseCommandNext.Enabled = TrueCommandLast.Enabled = TrueLabel9.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & _Adodc1.Recordset.RecordCountEnd SubPrivate Sub CommandLast_Click()Adodc1.Recordset.MoveLastCommandFirst.Enabled = TrueCommandPre.Enabled = TrueCommandNext.Enabled = FalseCommandLast.Enabled = FalseLabel9.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & _Adodc1.Recordset.RecordCountEnd SubPrivate Sub CommandNext_Click()Adodc1.Recordset.MoveNextCommandFirst.Enabled = TrueCommandPre.Enabled = TrueIf Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast CommandNext.Enabled = False CommandLast.Enabled = FalseEnd IfLabel9.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & _Adodc1.Recordset.RecordCountEnd SubPrivate Sub CommandPre_Click()Adodc1.Recordset.MovePreviousCommandNext.Enabled = TrueCommandLast.Enabled = TrueIf Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveFirst CommandFirst.Enabled = False CommandPre.Enabled = FalseEnd IfLabel9.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & _Adodc1.Recordset.RecordCountEnd SubPrivate Sub Form_Load()CommandFirst.Enabled = FalseCommandPre.Enabled = FalseCommandNext.Enabled = TrueCommandLast.Enabled = TrueLabel9.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & _Adodc1.Recordset.RecordCountEnd Sub3.5.2 职工基本信息录入本模块可对职工基本信息表已有的数据按“编号”进行删除及修改,也可输入新的“编号”添加新的职工信息。图3.7 职工基本信息录入窗体Private Sub Form_Load()CommandOK.Enabled = FalseCommandCancel.Enabled = FalseCombo1.AddItem "实习生"Combo1.AddItem "程序员"Combo1.AddItem "工程师"Combo1.AddItem "架构师"Combo1.Text = Combo1.List(0)With Combo2 .AddItem "培训部" .AddItem "政府部" .AddItem "技术部" .Text = Combo2.List(0)End WithEnd SubPrivate Sub Command1_Click()Text1.SetFocusCommand1.Enabled = FalseCommand2.Enabled = FalseCommand3.Enabled = FalseCommandOK.Enabled = TrueCommandCancel.Enabled = TrueEnd SubPrivate Sub command2_click()X = MsgBox("确定要删除当前记录吗?", vbYesNo + vbQuestion, "确认删除")If X = vbYes Then Adodc1.Recordset.Delete MsgBox "成功删除记录!", vbInformation, "删除成功" Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End IfElse Adodc1.RefreshEnd IfEnd SubPrivate Sub Command3_Click()If Text1 = "" Then MsgBox "请输入职工编号!", vbExclamation, "输入编号" Text1.SetFocus Exit SubElse sqlstr = "select * from 职工基本信息表 where 编号= '" & Text1 & "'" Adodc1.RecordSource = sqlstr Adodc1.RefreshIf Adodc1.Recordset.BOF Then MsgBox "该编号不存在,请重新输入!", vbExclamation, "检验编号" Text1 = "" Text1.SetFocus Exit SubElseX = MsgBox("确定要修改当前记录吗?", vbYesNo + vbQuestion, "确认修改") If X = vbYes Then Adodc1.Recordset.Fields("编号") = Text1 Adodc1.Recordset.Fields("姓名") = Text2 Adodc1.Recordset.Fields("性别") = Text3 Adodc1.Recordset.Fields("出生日期") = Text4 Adodc1.Recordset.Fields("职称") = Combo1.Text Adodc1.Recordset.Fields("部门") = Combo2.Text Adodc1.Recordset.Fields("入职时间") = Text5 Adodc1.Recordset.Update MsgBox "成功修改记录!", vbInformation, "修改成功" Else Adodc1.Refresh End IfEnd IfEnd IfEnd SubPrivate Sub CommandOK_Click()Dim sqlstr As StringIf Text1 = "" Then MsgBox "请输入职工编号!", vbExclamation, "输入编号" Text1.SetFocus Exit SubElse sqlstr = "select * from 职工基本信息表 where 编号= '" & Text1 & "'" Adodc1.RecordSource = sqlstr Adodc1.RefreshIf Adodc1.Recordset.EOF = False Then MsgBox "该编号已存在,请重新输入!", vbExclamation, "检验编号" Text1 = "" Text1.SetFocus Exit SubElseAdodc1.Recordset.AddNew Adodc1.Recordset.Fields("编号") = Text1 Adodc1.Recordset.Fields("姓名") = Text2 Adodc1.Recordset.Fields("性别") = Text3 Adodc1.Recordset.Fields("出生日期") = Text4 Adodc1.Recordset.Fields("职称") = Combo1.Text Adodc1.Recordset.Fields("部门") = Combo2.Text Adodc1.Recordset.Fields("入职时间") = Text5Adodc1.Recordset.UpdateAdodc1.RefreshMsgBox "成功添加新记录!", vbInformation, "添加成功"End IfEnd IfEnd Sub3.6 数据查询模块本模块用于对职工基本信息表、职工工资表的数据按某个特定的字段进行精确查询或者模糊查询。以查询职工信息为例:图3.8 查询职工信息窗体Private Sub Form_Load()With Combo1.AddItem "编号": .AddItem "姓名": .AddItem "职称": .AddItem "部门".Text = Combo1.List(0)End WithEnd SubPrivate Sub Command1_Click()Dim str As Stringstr = "select * from 职工基本信息表 " _ & "where " & Combo1.Text & " like '" & Text1 & "%'"Adodc1.RecordSource = strAdodc1.RefreshEnd SubPrivate Sub command2_click()Unload MeForm3.ShowEnd Sub3.7 打印报表模块本模块利用数据环境设计器和数据报表设计器来实现对职工基本信息、职工工资信息的打印预览以职工基本信息报表为例:先在数据环境设计器中添加连接对象连接到相应的数据库,然后添加命令对象返回所有职工信息,在DataReport1的属性窗口中绑定数据源后将该命令对象拖放到报表设计器的细节区即可。图3.9 职工基本信息报表设计第4章 课设总结通过一周时间的努力,终于完成了本次VB数据库课程设计,这次课程设计让我学到了很多东西,比如对整体结构的设计,对细节的把握以及对全局的掌控等。经过几天的自学、查阅书籍、自我摸索及实践,让我掌握了VB数据库设计的基本思想,也学会了对VB 6.0的基本使用。同时我也对VB有了更深入的了解,对VB事件驱动的编程机制有了更熟练的运用。要做一个项目,首先要学会根据实际的问题抽象出概念模型和系统中各个实体的E-R模型;然后将其进行转化为与之相应的关系模型;再由此模型进行数据库的设计以及数据库的检测;有了这几道工序作铺垫,才能够尽善尽美地去编写程序代码来实现系统具体的功能。总之,这次VB课程设计让我收获颇多,相信这对于我今后工作和学习上的帮助也是不可估量的。参考文献1 刘志妩,张焕君,马秀丽等著. 基于VB和SQL的数据库编程技术. 北京:清华大学出版社. 20082 杨志强著. Visual Basic 6.0 程序设计教程. 北京:高等教育出版社. 20083 赵斯思著. Visual Basic 数据库编程与实例. 北京:人民教育出版社. 2009