1、数据库课程设计人事管理系统一课程设计计划1. 设计概述 设计名称:人事管理系统使用语言:Access+Visual Basic 6.0 硬件要求:P 900MHz以上处理器,最低 128M 内存,300M 以上硬盘剩余空间。 运行环境: Windows XP 2.实施计划 1 任务安排: xx:安排各个功能模块分工,编写文档,系统实现,界面设计及数据库设计。xx.xx.xx.xx:人事信息维护模块,包括人事信息的录入,修改,删除操作 xx.xx.xx.xx:人事信息查询模块,包括按姓名查询,按员工号查询等功能 xx.xx.xx:需求分析及数据库概念设计和E-R 图绘制 xx.xx:数据字典编写
2、,系统流程图绘制 2. 2 进度:前一周半完成概要设计,再用半周时间完成详细设计,代码设计不超过一周,最后进行系统测试以及试运行。 3.完成时间 最迟完成日期:2006 年 6 月 12 日。3. 二需求分析 4. 1 设计简介 5. 1 编写目的在现实世界和设计人员间架起沟通的桥梁,使实际使用者和软件设计人员双方一起来充分地理解使用者的要求,并开发出一个能够反映要完成工作的新系统的逻辑模型。6. 2 系统要求:本系统是商丘师范学院计算机科学系计算机科学与技术 03 级的数据库课程设计题目,由陈树平老师提出,由本组成员联合开发,实现的是管理系统中关于人事资源管理的功能。7. 2 任务概述8.
3、1 目标提供企业高效率完成劳动人事管理的日程业务,包括新员工的加入时人事档案的建立,包括员工基本信息、配偶信息、员工学历信息等,对基本信息的查询,员工调入信息,老员工转出,辞职,退休等,以及各种查询的打印输出。将人事管理系统划分为两个子系统:前台操作界面和后台数据库。9. 3 数据字典 系统中的数据元素 10. 1) 数据流名:员工档案描述:员工个人的基本信息组成:员工编号、员工姓名、性别、籍贯、出生年月、学历、专业、身份证号、婚姻状况、政治面貌、电话号码、邮政编码、电子邮箱、家庭住址、进入公司时间、起薪时间、所在部门、调入部门时间、职称、职称时间、原身份、原职务、原工作单位、参加工作时间、工
4、作经验、其它备注;11. 2)数据流名:部门信息 描述:部门信息 组成:部门名称 12. 3)数据流名:调动信息 描述:员工的部门间调动信息 组成:员工编号、员工姓名、原部门名称、新部门名称、原职务、新职务、调出时间、调入时间、备注;13. 4)数据流名:员工职务 描述:公司职位信息 组成:职务名称14. 5)数据流名:管理用户 描述:系统管理员信息 组成:用户名称、用户口令、用户权限15. 6)数据流名:查询 输入:查询内容; 输出:查询结果; 逻辑关系:根据查询信息在相关数据库中查找符合符合条件的信息;16. 7)数据流名:修改; 输入:原始数据; 输出:更新数据; 逻辑关系:按照要求对员
5、工相关信息进行修改;17. 8)数据流名:删除; 输入:原始数据库; 输出:更新后的数据库; 逻辑关系:按照要求对员工相关信息进行修改; 18. .4 功能需求 增加:员工各种信息的输入,包括员工基本信息,学历信息,职称等。修改:员工的各种信息的修改。删除:对于转出,辞职,退休员工信息的删除。查询:按照某种条件,查询,统计符合条件的员工信息。输出:对查询,统计的结果打印输出。19. 三概念结构设计本阶段已在系统的需求分析的基础上,对人事管理系统做概要设计。主要解决实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结
6、构的设计等。在以下的概要设计报告中将对在本阶段中对系统所做的所有概要设计进行详细的说明。 20. 1. 数据流图 根据系统要求,绘制的数据流图如下: 图 1 数据流图 2.E-R 图绘制 根据需求分析阶段的调查数据以及系统要求,绘制的 E-R 图,由于篇幅所限,分 E-R 图未添加: 图 2 E-R图21. 四逻辑结构设计22. 1E-R 图向关系模型的转化 员工档案(员工编号、员工姓名、性别、籍贯、出生年月、学历、专业、身份证号、婚姻状况、政治面貌、电话号码、邮政编码、电子邮箱、家庭住址、进入公司时间、起薪时间、所在部门、调入部门时间、职称、职称时间、原身份、原职务、原工作单位、参加工作时间
7、、工作经验、其它备注) 部门管理(部门名称) 调动信息(员工编号、调出时间、员工姓名、原部门名称、新部门名称、原职务、新职务、调入时间、备注)员工职务(职务名称) 2数据库数据结构设计 系统将采用 Access 对数据库进行设计, 主要需要维护5 张数据表:部门管理表: 字段名称 数据类型 大小部门名称 文本 50 调动信息 字段名称 数据类型 大小员工编号 文本 10 调出时间 日期 员工姓名 文本 10 原部门名称 文本 50 新部门名称 文本 50 原职务 文本 50 新职务 文本 50 调入时间 日期 备注 文本 50 管理用户 字段名称 数据类型 大小用户名称 文本 15 用户口令
8、文本 10 用户权限 文本 15 员工档案表 字段名称 数据类型 大小员工编号 文本 10 员工姓名 文本 10 性别 文本 4 籍贯 文本 50 出生年月 日期时间 学历 文本 10 专业 文本 20 身份证号 文本 20 婚姻状况 文本 10 政治面貌 文本 20 电话号码 文本 15 邮政编码 文本 10 电子邮箱 文本 50 家庭住址 文本 255 进入公司时间 日期时间 起薪时间 文本 50 所在部门 文本 20 调入部门时间 日期时间 职称 文本 20 职称时间 日期时间 原身份 文本 50 原职务 文本 50 原工作单位 文本 50 参加工作时间 日期时间 工作经验 备注 其它备
9、注 备注 员工职务表 字段名称 数据类型 大小职务名称 文本 20 23. 五系统设计系统功能模块 根据课程设计要求,此人事管理系统主要要实现以下功能:24. 1 员工各种信息的输入,包括员工的基本信息、学历信息、婚姻状况信息、职称等 25. 2 员工各种信息的修改 26. 3 对于转出、辞退、退休员工的信息删除 27. 4 按照一定条件,查询、统计符合条件的员工信息;至少包括每个员工详细信息查询 为了实现这些功能,我们把此系统分为三个主要模块,分别是: 1 系统设置模块,包括用户的添加和删除、密码管理、部门管理 2 员工档案管理模块,包括对员工各种档案信息的删除、添加和修改功能 3 员工调动
10、信息管理模块,包括对员工转出、调入信息的管理 由于时间的关系,其它模块没有实现,留待后续开发。系统总的功能图入下图所示: 图 3 系统功能模块 28. 六系统模块实现 29. 一系统设置模块 30. 1添加用户 程序描述: Private Sub cmdcancel_Click() Unload Me End Sub Private Sub cmdOK_Click() If Trim(TxtUserName.Text) Empty And Trim(TxtOkPwd.Text) Empty Then If RsDelUser.RecordCount Empty And Trim(TxtForP
11、WD.Text) Empty Then If RsModPwd.State = adStateClosed Then RsModPwd.Open StrSQL, DBCON, adOpenKeyset, adLockPessimistic, adCmdText /打开记录集 End If If RsModPwd.RecordCount 0 Then Call FormTxtValue1 Else Call FormTxtValue2 End If End Sub Private Sub CmdAdd_Click() RsRecord.AddNew /在记录集中添加一条新记录 Call Form
12、TxtValue2 /调用给文本框赋空值的过程 Call TxtState /调用启用文本框的 Enabled 属性过程 Call CmdState1 /调用命令按钮 Visible 属性为隐藏的过程 If RsBranch.State = adstateclsed Then RsBranch.Open “部门管理“, DBCON, adOpenKeyset, adLockPessimistic, adCmdTable End If Set TxtBranch.RowSource = RsBranch TxtBranch.BoundColumn = “部门名称“ TxtBranch.ListF
13、ield = “部门名称“ If RstTitle.State = adStateClosed Then RstTitle.Open “员工职务“, DBCON, adOpenKeyset, adLockPessimistic, adCmdTable End If Set TxtTiltle.RowSource = RstTitle TxtTiltle.BoundColumn = “员工职务“ TxtTiltle.ListField = “员工职务“ End Sub Private Sub CmdDel_Click() If MsgBox(“确定要删除吗?“, vbInformation +
14、vbYesNo, “删除信息“) = vbYes Then If RsRecord.RecordCount 0 Then RsRecord.MoveNext If RsRecord.EOF Then RsRecord.MoveFirst End If Call FormTxtValue1 Else MsgBox “当前没有任何记录“, , “移动记录“ End If End Sub Private Sub CmdPrint_Click() DataRepRecord.Show End Sub Private Sub CmdRefresh_Click() Set VSDateRecord.Dat
15、aSource = RsRecord.DataSource End Sub Private Sub CmdRetrun_Click() Unload Me End Sub Private Sub CmdSave_Click() Dim StrSQL As String StrSQL = “select 员工编号 from 员工档案 where 员工编号=“ & Trim(TxtCode.Text) & “ If Trim(TxtForID.Text) 0 Then MsgBox “员工编号已存在“, vbInformation + vbOKOnly, “验证错误“ RsCheckCode.Cl
16、ose SSTRecord.Tab = 0 TxtCode.Text = “ TxtCode.SetFocus Else RsRecord.Update Call CmdMove_Click MsgBox “数据已保存“, , “保存成功 “ SSTRecord.Tab = 0 Call CmdState2 Call TxtState1 End If Else MsgBox “原身份不能为空“, , “验证失败“ SSTRecord.Tab = 1 End If Exit Sub ErrSave: Select Case Err.Number Case -2147217887 MsgBox “
17、员工编号已存在,“ & vbCrLf & “或性别、婚姻状况、部门、职称有空选项!“, vbInformation + vbOKOnly, “输入错误“ RsRecord.CancelUpdate Case Else MsgBox “错误描述:“ & Err.Description & vbCrLf & “错误代码:“ & Err.Number, vbCritical + vbOKOnly, “非法操作“ Unload Me End Select End Sub Private Sub FormTxtValue1() TxtCode.Text = RsRecord.Fields(0).Valu
18、e TxtName.Text = RsRecord.Fields(1).Value CmbSex.Text = RsRecord.Fields(2).Value TxtPlace.Text = RsRecord.Fields(3).Value DTPBrithday.Value = RsRecord.Fields(4).Value TxtEdu.Text = RsRecord.Fields(5).Value TxtSubject.Text = RsRecord.Fields(6).Value TxtIDCard.Text = RsRecord.Fields(7).Value CmbMarrag
19、eState.Text = RsRecord.Fields(8).Value TxtPolity.Text = RsRecord.Fields(9).Value TxtTel.Text = RsRecord.Fields(10).Value TxtPostCode.Text = RsRecord.Fields(11).Value TxtEmail.Text = RsRecord.Fields(12).Value TxtAddress.Text = RsRecord.Fields(13).Value DTPInCompanyDate.Value = RsRecord.Fields(14).Val
20、ue DTPRiceDate.Value = RsRecord.Fields(15).Value TxtBranch.Text = RsRecord.Fields(16).Value DTPInBranchDate.Value = RsRecord.Fields(17).Value TxtTiltle.Text = RsRecord.Fields(18).Value DTPTitleDate.Value = RsRecord.Fields(19).Value TxtForID.Text = RsRecord.Fields(20).Value TxtForTitle.Text = RsRecor
21、d.Fields(21).Value TxtForUnit.Text = RsRecord.Fields(22).Value DTPForInToWork.Value = RsRecord.Fields(23).Value TxtWork.Text = RsRecord.Fields(24).Value TxtBeiZhu.Text = RsRecord.Fields(25).Value LblCount.Caption = RsRecord.RecordCount End Sub Private Sub FormTxtValue2() TxtCode.Text = Empty TxtName
22、.Text = Empty CmbSex.Text = Empty TxtPlace.Text = Empty DTPBrithday.Value = Date TxtEdu.Text = Empty TxtSubject.Text = Empty TxtIDCard.Text = Empty CmbMarrageState.Text = Empty TxtPolity.Text = Empty TxtTel.Text = Empty TxtPostCode.Text = Empty TxtEmail.Text = Empty TxtAddress.Text = Empty DTPInComp
23、anyDate.Value = Date DTPRiceDate.Value = Date TxtBranch.Text = Empty DTPInBranchDate.Value = Date TxtTiltle.Text = Empty DTPTitleDate.Value = Date TxtForID.Text = Empty TxtForTitle.Text = Empty TxtForUnit.Text = Empty DTPForInToWork.Value = Date TxtWork.Text = Empty TxtBeiZhu.Text = Empty LblCount.C
24、aption = RsRecord.RecordCount End Sub Private Sub TxtState() TxtCode.Enabled = True TxtName.Enabled = True CmbSex.Enabled = True TxtPlace.Enabled = True DTPBrithday.Enabled = True TxtEdu.Enabled = True TxtSubject.Enabled = True TxtIDCard.Enabled = True CmbMarrageState.Enabled = True TxtPolity.Enable
25、d = True TxtTel.Enabled = True TxtPostCode.Enabled = True TxtEmail.Enabled = True TxtAddress.Enabled = True DTPInCompanyDate.Enabled = True DTPRiceDate.Enabled = True TxtBranch.Enabled = True DTPInBranchDate.Enabled = True TxtTiltle.Enabled = True DTPTitleDate.Enabled = True TxtForID.Enabled = True
26、TxtForTitle.Enabled = True TxtForUnit.Enabled = True DTPForInToWork.Enabled = True TxtWork.Enabled = True TxtBeiZhu.Enabled = True End Sub Private Sub TxtState1() TxtCode.Enabled = False TxtName.Enabled = False CmbSex.Enabled = False TxtPlace.Enabled = False DTPBrithday.Enabled = False TxtEdu.Enable
27、d = False TxtSubject.Enabled = False TxtIDCard.Enabled = False CmbMarrageState.Enabled = False TxtPolity.Enabled = False TxtTel.Enabled = False TxtPostCode.Enabled = False TxtEmail.Enabled = False TxtAddress.Enabled = False DTPInCompanyDate.Enabled = False DTPRiceDate.Enabled = False TxtBranch.Enabl
28、ed = False DTPInBranchDate.Enabled = False TxtTiltle.Enabled = False DTPTitleDate.Enabled = False TxtForID.Enabled = False TxtForTitle.Enabled = False TxtForUnit.Enabled = False DTPForInToWork.Enabled = False TxtWork.Enabled = False TxtBeiZhu.Enabled = False End Sub Private Sub CmdState1() CmdAdd.Vi
29、sible = False CmdEdit.Visible = False CmdDel.Visible = False CmdMove.Visible = False CmdSave.Visible = True CmdRetrun.Enabled = False End Sub Private Sub CmdState2() CmdAdd.Visible = True CmdEdit.Visible = True CmdDel.Visible = True CmdMove.Visible = True CmdSave.Visible = False CmdRetrun.Enabled =
30、True End Sub Private Sub UpRsValue() RsRecord.Fields(0).Value = TxtCode.Text RsRecord.Fields(1).Value = TxtName.Text RsRecord.Fields(2).Value = CmbSex.Text RsRecord.Fields(3).Value = TxtPlace.Text RsRecord.Fields(4).Value = DTPBrithday.Value RsRecord.Fields(5).Value = TxtEdu.Text RsRecord.Fields(6).
31、Value = TxtSubject.Text RsRecord.Fields(7).Value = TxtIDCard.Text RsRecord.Fields(8).Value = CmbMarrageState.Text RsRecord.Fields(9).Value = TxtPolity.Text RsRecord.Fields(10).Value = TxtTel.Text RsRecord.Fields(11).Value = TxtPostCode.Text RsRecord.Fields(12).Value = TxtEmail.Text RsRecord.Fields(1
32、3).Value = TxtAddress.Text RsRecord.Fields(14).Value = DTPInCompanyDate.Value RsRecord.Fields(15).Value = DTPRiceDate.Value RsRecord.Fields(16).Value = TxtBranch.Text RsRecord.Fields(17).Value = DTPInBranchDate.Value RsRecord.Fields(18).Value = TxtTiltle.Text RsRecord.Fields(19).Value = DTPTitleDate
33、.Value RsRecord.Fields(20).Value = TxtForID.Text RsRecord.Fields(21).Value = TxtForTitle.Text RsRecord.Fields(22).Value = TxtForUnit.Text RsRecord.Fields(23).Value = DTPForInToWork.Value RsRecord.Fields(24).Value = TxtWork.Text RsRecord.Fields(25).Value = TxtBeiZhu.Text End Sub Private Sub Tmr_Timer
34、() Call CmdRefresh_Click VSDateRecord.Refresh End Sub 35. 三调动信息模块36. 1调动信息修改 程序描述: Private Sub cmbmove_Click() If RsModMove.RecordCount 0 Then RsModMove.MoveNext If RsModMove.EOF Then RsModMove.MoveFirst End If Call FormTxtValue1 Else MsgBox “当前没有任何记录“, , “移动记录“ End If End Sub Private Sub cmdcancel_
35、Click() Unload Me End Sub Private Sub CmdDel_Click() If MsgBox(“确定要删除吗?“, vbInformation + vbYesNo, “删除信息“) = vbYes Then If RsModMove.RecordCount 0 Then RsModMove.MoveNext If RsModMove.EOF Then RsModMove.MoveFirst End If Call FormTxtValue1 Else MsgBox “当前没有任何记录“, , “移动记录“ End If End Sub Private Sub c
36、mdOK_Click() Call CmdState1 Call TxtState If RsMoveBranch.State = adstateclsed Then RsMoveBranch.Open “部门管理“, DBCON, adOpenKeyset, adLockPessimistic, adCmdTable End If Set CmbNewBranch.RowSource = RsMoveBranch CmbNewBranch.BoundColumn = “部门名称“ CmbNewBranch.ListField = “部门名称“ If RstMoveTitle.State =
37、adStateClosed Then RstMoveTitle.Open “员工职务“, DBCON, adOpenKeyset, adLockPessimistic, adCmdTable End If Set CmbNewTitle.RowSource = RstMoveTitle CmbNewTitle.BoundColumn = “员工职务“ CmbNewTitle.ListField = “员工职务“ End Sub Private Sub CmdSave_Click() If Trim(CmbCode.Text) Empty And Trim(CmbNewTitle.Text) 0
38、 Then Call FormTxtValue1 Else Call FormTxtValue2 End If End Sub Private Sub FormTxtValue1() CmbCode.Text = RsModMove.Fields(0).Value TxtName.Text = RsModMove.Fields(1).Value TxtBranch.Text = RsModMove.Fields(2).Value CmbNewBranch.Text = RsModMove.Fields(3).Value TxtForTitle.Text = RsModMove.Fields(4
39、).Value CmbNewTitle.Text = RsModMove.Fields(5).Value DTPmovedate.Value = RsModMove.Fields(6).Value DTPfolddate.Value = RsModMove.Fields(7).Value TxtRemark.Text = RsModMove.Fields(8).Value End Sub Private Sub UpRsValue() CmbCode.Text = RsModMove.Fields(0).Value TxtName.Text = RsModMove.Fields(1).Valu
40、e TxtBranch.Text = RsModMove.Fields(2).Value CmbNewBranch.Text = RsModMove.Fields(3).Value TxtForTitle.Text = RsModMove.Fields(4).Value CmbNewTitle.Text = RsModMove.Fields(5).Value DTPmovedate.Value = RsModMove.Fields(6).Value DTPfolddate.Value = RsModMove.Fields(7).Value TxtRemark.Text = RsModMove.
41、Fields(8).Value End Sub Private Sub FormTxtValue2() CmbCode.Text = Empty TxtName.Text = Empty TxtBranch.Text = Empty CmbNewBranch.Text = Empty TxtForTitle.Text = Empty CmbNewTitle.Text = Empty DTPmovedate.Value = Empty DTPfolddate.Value = Empty TxtRemark.Text = Empty End Sub Private Sub CmdState1()
42、cmdOK.Visible = False CmdDel.Visible = False cmdmove.Visible = False CmdSave.Visible = True cmdcancel.Enabled = False End Sub Private Sub CmdState2() cmdOK.Visible = True CmdDel.Visible = True cmdmove.Visible = True CmdSave.Visible = False cmdcancel.Enabled = True End Sub Private Sub TxtState() CmbC
43、ode.Enabled = True TxtName.Enabled = True TxtBranch.Enabled = True CmbNewBranch.Enabled = True TxtForTitle.Enabled = True CmbNewTitle.Enabled = True DTPmovedate.Enabled = True DTPfolddate.Enabled = True TxtRemark.Enabled = True End Sub Private Sub TxtState1() CmbCode.Enabled = False TxtName.Enabled
44、= False TxtBranch.Enabled = False CmbNewBranch.Enabled = False TxtForTitle.Enabled = False CmbNewTitle.Enabled = False DTPmovedate.Enabled = False DTPfolddate.Enabled = False TxtRemark.Enabled = False End Sub CmbCode.Text TxtName.Text TxtBranch.Text CmbNewBranch.Text TxtForTitle.Text CmbNewTitle.Tex
45、t DTPmovedate.Value DTPfolddate.Value TxtRemark.Text 37. 2员工调动信息 程序描述: Option Explicit Private Sub CmbCode_Change() If RstName.State = adStateOpen Then RstName.Close End If RstName.Open “select *from 员工档案 where 员工编号=“ & CmbCode.Text & “, DBCON, adOpenKeyset, adLockOptimistic, adCmdText TxtName.Text
46、= RstName.Fields(1).Value TxtBranch.Text = RstName.Fields(16).Value TxtForTitle.Text = RstName.Fields(18).Value End Sub Private Sub cmdcancel_Click() Unload Me End Sub Private Sub cmdOK_Click() If CmbCode.Text 0 Then Set CmbCode.RowSource = RsQMove CmbCode.BoundColumn = “员工编号“ CmbCode.ListField = “员
47、工编号“ Else /否则。清空 CmbCode.Text = “ End If End Sub 四其它界面设计 1欢迎界面 2认证模块39. 程序描述: Option Explicit Private Counts As Byte Private Sub cmdcancel_Click() /结束 End End Sub Private Sub CmdLogin_Click() Dim StrSQL As String UserName = CStr(Trim(TxtUserName.Text) /将文本框内的值赋给定义好的全局变量 PassWord = CStr(Trim(TxtPassw
48、ord.Text) If UserName Empty Then /用户名与密码是否为空 StrSQL = “select 用户名称,用户口令,用户权限 from 管理用户 where 用户名称= “ & UserName & “and 用户口令 =“ & PassWord & “ If RsLoginCheck.State = adStateClosed Then RsLoginCheck.Open StrSQL, DBCON, adOpenKeyset, adLockPessimistic, adCmdText /打开记录集 End If Group = RsLoginCheck.Fiel
49、ds(2).Value If RsLoginCheck.Fields(2).Value 0 Then /判断记录集记录条数是否为 0 RsLoginCheck.Close Unload Me Frmmdimain.Show /显示主窗 ElseIf Counts 2 Then MsgBox “用户名域密码错误 “, vbExclamation + vbOKOnly, “登录失败“ RsLoginCheck.Close /关闭记录集 Counts = Counts + 1 Else MsgBox “密码错误不得超过三次,否则视您为非法用户!“, vbCritical, “警告“ End End If Else MsgBox “用户名密码不能为空“, vbExclamation + vbOKOnly, “登录失败“ Call Form_Load End If End Sub Private Sub Form_Load() WinXPLogin.InitSubClassing /加载主窗时给