课程设计论文基于VB的考勤管理系统设计.doc

上传人:仙人指路1688 文档编号:2390089 上传时间:2023-02-17 格式:DOC 页数:39 大小:491.50KB
返回 下载 相关 举报
课程设计论文基于VB的考勤管理系统设计.doc_第1页
第1页 / 共39页
课程设计论文基于VB的考勤管理系统设计.doc_第2页
第2页 / 共39页
课程设计论文基于VB的考勤管理系统设计.doc_第3页
第3页 / 共39页
课程设计论文基于VB的考勤管理系统设计.doc_第4页
第4页 / 共39页
课程设计论文基于VB的考勤管理系统设计.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《课程设计论文基于VB的考勤管理系统设计.doc》由会员分享,可在线阅读,更多相关《课程设计论文基于VB的考勤管理系统设计.doc(39页珍藏版)》请在三一办公上搜索。

1、考勤管理系统1.1系统设计1.1.1系统的设计目标考勤管理系统的总体任务是实现考勤管理的规范化、考勤数据统计的自动化。系统的设计目标即是完成这一任务。1.1.2设计思想系统应尽量结合单位现有的软硬件环境,充分利用现有资源。所以本系统除了要能够手工录入员工的考勤记录外,还应能够与考勤机相结合,实现考勤信息录入自动化。系统的考勤类型应能够灵活设定,以便用户随时调整。系统应具备报表功能,查询统计时能够直接生成相关员工的考勤报表,报表要能够导出、打印。系统应该具备数据库维护功能,能够让用户进行数据表的备份和恢复。系统应采用模块化程序设计,便于功能的组合与修改,以及以后尽可能进行补充。综合考虑,确定本系

2、统使用C/S工作模式,以oracle作为后台数据库,visual basic 6.0为前台程序开发语言。1.1.3系统功能模块划分u 根据系统的设计思想,划分系统功能为以下几个模块。u 员工信息的管理模块u 考勤类型的设定模块u 员工考勤信息手工录入模块u 经考勤机生成并处理的考勤信息导入模块u 员工考勤情况统计报表生成模块u 数据库维护模块系统功能模块图如图1.1所示考勤管理系统员工信息管理考勤类型设定信息手工录入信息导入生成统计报表数据库维护图1.1系统功能模块图1.2系统设计数据库设计在数据库程序设计中是非常重要的一个环节,具体指的是数据库中各个表结构的设计,包括信息保存在哪些表格中,各

3、个表详细结构以及各个表格之间的关系。数据库结构是数据库应用程序的基础,它的好坏直接影响到应用程序的执行效率,数据库结构设计得好,就会减少数据库的存储量,并且使数据保持很高的完整性和一致性,还会提高数据查询的数度,运用前台编程工具时,也会有一定程序上的简化。数据库设计分为以下三个阶段。l 数据库需求分析l 数据库概念结构设计l 数据库逻辑结构设计1.2.1数据库需求分析数据库需求分析是数据库结构设计的第一个阶段,也是非常重要的一个阶段,这个阶段的任务是收集数据基本信息和取得数据处理的流程。需求分析要做的工作是与用户结合,调查用户需要操作的资料,以决定在数据库中存储什么数据,还要弄清用户怎么处理各

4、种数据资料,理清数据库中个数据之间的关系。这个阶段的工作成功应该有以下三个方面的内容。l 数据项:每种具体数据的名称、意义、类型、取值范围以及与其他数据项之间的逻辑关系。l 数据集:若干数据项的有逻辑关联的集合,包括名称、意义和组成数据集的数据项。l 数据流:应用系统运行时,数据是怎样输入、处理和输出的。这三个方面的内容就是本系统的数据字典文档,如果数据库需求分析阶段的工作没有做好,数据字典在将来的系统开发过程中就有可能随时发生变化,开发后期可能面临程序午休止的修改和调试,甚至是一切的推到重来,因此一定要重视这个阶段的工作。系统处理数据的流程,如图1.2所示生成考勤统计表员工信息数据考勤类型数

5、据员工考勤信息数据考勤类型设定员工信息管理考勤信息手工录入考勤类型数据导入图1.2数据流程图通过分析数据流程,设计数据集和数据项如下。l 员工信息数据集,数据项为员工号、员工姓名、员工性别、员工所属部门。l 考勤类型数据集,数据项为类型号、类型名称。l 员工考勤情况数据集,数据项为考勤日期、员工号、考勤类型号、备注。1.2.2数据库结构设计本系统采用E-R图的方法来进行数据库概念结构设计。1.员工信息实体E-R图员工信息实体E-R图如图1.3所示。员工信息员工号员工姓名员工性别所属部门图1.3员工信息实体E-R图2.考勤类型实体E-R图考勤类型实体E-R图如图1.4所示。考勤类型类型号类型名称

6、图1.4考勤类型实体E-R图3.员工考勤情况实体E-R图员工考勤情况实体E-R图如图1.5所示。员工考勤情况考勤日期员工号考勤类型号备注 图1.5员工考勤情况实体E-R图4.实体和实体之间的关系E-R图 实体和实体之间的关系E-R图如图1.6所示。员工具有哦、考勤情况属于考勤类型图1.6各实体之间的关系E-R图数据库各个表格的设计结果,如表1.11.3所示。表1.1考勤类型表格KQLXB字段数据类型能否为空备注BHVARCHAR2(4)NOT NULL类型编号(主键)LXVARCHAR2(20)NULL类型名称表1.2员工信息表格YGB字段数据类型能否为空备注BHVARCHAR2(8)NOT

7、NULL员工编号(主键)XMVARCHAR2(12)NOT NULL员工姓名XBVARCHAR2(2)NOT NULL员工性别BMVARCHAR2(20)NULL员工部门表1.3考勤管理表格KQGLB字段数据类型能否为空备注KQRQDATENOT NULL考勤日期(主键1)YGBHVARCHAR2(8)NOT NULL员工编号(主键2)(指向员工信息表BH字段的外键)LXBHVARCHAR2(4)NOT NULL类型编号(指向考勤类型表BH字段的外键)BZVARCHAR2(20)NULL备注1.3设计系统的界面1.3.1窗口的设计 经过构细,本系统需要创建五个窗口:考勤管理系统登录窗口、考勤类

8、型管理窗口、员工信息管理窗口、考勤情况录入窗口、考勤信息统计窗口1. 考勤管理系统登录窗口运行界面2. 考勤管理系统登录窗口设计界面主要事件与代码:Private Sub Form_Resize() Image1.Width = Me.Width Image1.Height = Me.Height Label1.Left = (Me.Width) / 2 - Label1.Width / 2 Label2.Left = (Me.Width) / 2 - Label2.Width / 2 Label3.Left = (Me.Width) / 2 - Label3.Width / 2End Sub

9、Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.KeyCase bt2frm_yggl.Show , MeCase bt3frm_kqlx.Show , MeCase bt4frm_kqlr.Show , MeCase bt5Frm_kqtj.Show , MeEnd SelectEnd Sub3. 员工信息管理窗口运行界面4. 员工信息管理窗口设计界面属性设置:1. Frm_yggl的属性设置值含义Caption员工信息管理BorderStyle1Fixed sing

10、leStartUpPosition1所有者中心2. Combo1的属性设置Style2Dropdown ListList男 女LockedTrue3. DataGrid1的属性设置DataSourceAdodc14. Text1-Text3的属性设置LockedTrue主要事件与代码:Dim add_flag As Boolean, modify_flag As BooleanPrivate Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus

11、 As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) If Adodc1.Recordset.RecordCount 0 Then Text1.Text = Adodc1.Recordset.Fields(bh) & Text2.Text = Adodc1.Recordset.Fields(xm) & Text3.Text = Adodc1.Recordset.Fields(bm) & If Adodc1.Recordset.Fields(xb) = 男 Then Combo1.ListIndex = 0 Else Co

12、mbo1.ListIndex = 1 End If Else Text1.Text = Text2.Text = Text3.Text = Combo1.ListIndex = 0 Call showbuttons End If End SubPrivate Sub cmdadd_Click()Text1.Text = Text2.Text = Text3.Text = Text1.Locked = FalseText2.Locked = FalseText3.Locked = FalseCombo1.Locked = FalseDataGrid1.Enabled = Falseadd_fla

13、g = TrueCall showbuttonsEnd SubPrivate Sub cmdcancle_Click() If Adodc1.Recordset.RecordCount 0 Then Text1.Text = Adodc1.Recordset.Fields(bh) & Text2.Text = Adodc1.Recordset.Fields(xm) & Text3.Text = Adodc1.Recordset.Fields(bm) & If Adodc1.Recordset.Fields(xb) = 男 Then Combo1.ListIndex = 0 Else Combo

14、1.ListIndex = 1 End IfElse Text1.Text = Text2.Text = Text3.Text = Combo1.ListIndex = 0 End If Text1.Locked = True Text2.Locked = True Text3.Locked = True Combo1.Locked = True DataGrid1.Enabled = True add_flag = False modify_flag = False Call showbuttonsEnd SubPrivate Sub cmddelete_Click()ret = MsgBo

15、x(你真的要删除 + Adodc1.Recordset.Fields(xm) + 的记录吗?, vbYesNo + vbQuestion + vbDefaultButton2, 提示)If ret = vbYes Then Adodc1.Recordset.Delete Adodc1.Recordset.UpdateEnd IfDataGrid1.SetFocusEnd SubPrivate Sub cmdexit_Click()Unload MeEnd SubPrivate Sub cmdmodify_Click()Text1.Locked = FalseText2.Locked = Fal

16、seText3.Locked = FalseCombo1.Locked = FalseDataGrid1.Enabled = Falsemodify_flag = TrueCall showbuttonsEnd SubPrivate Sub cmdsave_Click()Text1.Text = Trim(Text1.Text)Text2.Text = Trim(Text2.Text)Text3.Text = Trim(Text3.Text)If is_data_ok() = False Then Exit SubEnd Ifin_bh = Text1.Textin_xm = Text2.Te

17、xtin_xb = Combo1.Textin_bm = Text3.TextIf add_flag = True Then Adodc1.Recordset.AddNewEnd IfAdodc1.Recordset.Fields(bh) = in_bhAdodc1.Recordset.Fields(xm) = in_xmAdodc1.Recordset.Fields(xb) = in_xbAdodc1.Recordset.Fields(bm) = in_bmAdodc1.Recordset.UpdateIf add_flag = True Then Adodc1.Recordset.Find

18、 bh= + in_bh + , , adSearchForward, 1End IfText1.Locked = TrueText2.Locked = TrueText3.Locked = TrueCombo1.Locked = TrueDataGrid1.Enabled = Trueadd_flag = Falsemodify_flag = FalseCall showbuttonsDataGrid1.SetFocusEnd SubPrivate Sub Form_Load()add_flag = Falsemodify_flag = FalseCall showbuttonsEnd Su

19、bPrivate Sub showbuttons()If add_flag = False And modify_flag = False Thencmdadd.Enabled = TrueIf Adodc1.Recordset.RecordCount = 0 Then Cmdmodify.Enabled = False cmddelete.Enabled = FalseElse Cmdmodify.Enabled = True cmddelete.Enabled = TrueEnd Ifcmdexit.Enabled = TrueCmdcancle.Enabled = FalseCmdsav

20、e.Enabled = FalseElsecmdadd.Enabled = FalseCmdmodify.Enabled = Falsecmddelete.Enabled = Falsecmdexit.Enabled = FalseCmdcancle.Enabled = TrueCmdsave.Enabled = TrueEnd IfEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)If add_flag = True Or modify_flag = True Then MsgBox (数

21、据正在编辑,不能退出!) Cancel = TrueEnd IfEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If (KeyAscii 57) And KeyAscii 8 Then KeyAscii = 0End IfEnd SubPrivate Function is_data_ok() As BooleanIf modify_flag = True Then old_bh = Adodc1.Recordset.Fields(bh)End IfIf Len(Text1.Text) 8 Then MsgBox (编号的长度不够!)

22、 is_data_ok = False Text1.SetFocus Exit FunctionEnd IfIf Len(Text2.Text) = 0 Then MsgBox (姓名未输入!) is_data_ok = False Text2.SetFocus Exit FunctionEnd IfIf add_flag = True Then Adodc2.RecordSource = select * from ygb where bh= + Text1.Text + Adodc2.Refresh Else Adodc2.RecordSource = select * from ygb

23、where bh= + Text1.Text + and bh + old_bh + Adodc2.RefreshEnd IfIf Adodc2.Recordset.RecordCount 0 Then MsgBox (编号有重复!) is_data_ok = False Text1.SetFocus Exit FunctionEnd Ifis_data_ok = TrueEnd Function5. 考勤情况录入窗口运行界面6. 考勤情况录入窗口设计界面属性设置:1. Frm_kqlr的属性设置属性名值含义Caption考勤情况录入BorderStyle1Fixed singleStartU

24、pPosition1所有者中心2.数据源Adodc的设置Adodc1名称AdoDataGridAdodc2名称AdoKQGLBAdodc3名称AdoKQLXBAdodc4名称AdoYGB2. 下拉框Combo的属性设置Combo1名称ComboYGB生成员工列表Combo2名称ComboKQLXB生成考勤类型列表LockedTrueStyle2Dropdown List3. DataGrid1的属性设置DataSourceAdoDataGrid4. Text1的属性设置LockedTrue主要事件与代码: Dim add_flag As Boolean, modify_flag As Bool

25、ean Dim ygb_rec As Integer, lxb_rec As Integer Dim kq_date As String add_flag:增加状态标志(布尔型) modify_flag:修改状态标志(布尔型) ygb_rec:员工表记录总数(数值型) lxb_rec:类型表记录总数(数值型) kq_date:考勤的日期(类型是字符型) Private Sub AdoDataGrid_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADO

26、DB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) If AdoDataGrid.Recordset.RecordCount 0 Then 数据表内容不为空 ComboYGB.Text = AdoDataGrid.Recordset.Fields(员工) & ComboKQLXB.Text = AdoDataGrid.Recordset.Fields(类型) & Text1.Text = AdoDataGrid.Recordset.Fields(bz) & End If End Sub Private Sub cmdadd_Clic

27、k() 增加按钮 增加按钮的单击事件 1:生成员工的增加列表框 Call formyglist(kq_date, add) 2:文本框、组合框解锁 Text1.Text = 文本框清空 Text1.Locked = False 取消对象的只读 ComboYGB.Locked = False ComboKQLXB.Locked = False ComboYGB.ListIndex = 0 ComboKQLXB.ListIndex = 0 3:锁定表格、日期不能动 DataGrid1.Enabled = False 锁定表格 DTPicker1.Enabled = False 锁定日期 4:设置表

28、单状态 add_flag = True 设置为增加编辑状态 Call showbuttons 刷新按钮状态 ComboYGB.SetFocus End Sub Private Sub cmdmodify_Click() 修改按钮 修改按钮的单击事件 1:文本框、组合框解锁 Text1.Locked = False 取消对象的只读 ComboKQLXB.Locked = False 2:锁定表格、日期不能动 DataGrid1.Enabled = False 锁定表格 DTPicker1.Enabled = False 锁定日期 3:设置表单状态 modify_flag = True 设置为修改

29、编辑状态 Call showbuttons 刷新按钮状态 ComboKQLXB.SetFocus End Sub Private Sub cmdcancle_Click() 取消按钮 取消按钮的单击事件 1:生成员工的浏览列表 Call formyglist(kq_date, browse) 2:恢复数据,并设置文本框、下拉框对象只读 If AdoDataGrid.Recordset.RecordCount 0 Then 数据表内容不为空 ComboYGB.Text = AdoDataGrid.Recordset.Fields(员工) & ComboKQLXB.Text = AdoDataGr

30、id.Recordset.Fields(类型) & Text1.Text = AdoDataGrid.Recordset.Fields(bz) & End If ComboYGB.Locked = True 设置对象的只读 ComboKQLXB.Locked = True 3:表格、日期控件可以动 DataGrid1.Enabled = True 取消锁定表格 DTPicker1.Enabled = True 取消锁定日期 4:修改表单的状态 add_flag = False 设置为非增加状态 modify_flag = False 设置为非修改状态 Call showbuttons 刷新按钮

31、状态 DataGrid1.SetFocus End Sub Private Sub cmdsave_Click() 保存按钮 保存按钮的单击事件 1:保存的信息保存到变量 Text1.Text = Trim(Text1.Text) in_date = kq_date 日期信息 in_yg = Trim(ComboYGB.Text) 员工信息 in_lx = Trim(ComboKQLXB.Text) 类型信息 in_bz = Text1.Text 备注信息 - 2:数据保存 If add_flag = True Then 增加数据 AdoKQGLB.Recordset.AddNew Else

32、修改数据 AdoKQGLB.Recordset.Find kqrq= + in_date, , adSearchForward, 1 AdoKQGLB.Recordset.Find ygbh= + Mid(in_yg, 1, 8) + , , adSearchForward 定位记录 End If AdoKQGLB.Recordset.Fields(kqrq) = in_date 日期 AdoKQGLB.Recordset.Fields(ygbh) = Mid(in_yg, 1, 8) 员工编号 AdoKQGLB.Recordset.Fields(lxbh) = Mid(in_lx, 1, 4

33、) 类型编号 AdoKQGLB.Recordset.Fields(bz) = in_bz 备注 AdoKQGLB.Recordset.Update 保存到后台数据库 Call formyglist(kq_date, browse) AdoKQGLB.Refresh 数据源刷新 AdoDataGrid.Refresh 表格刷新 AdoDataGrid.Recordset.Find 员工= + in_yg + , , adSearchForward - 3:保存的后续工作(设置对象只读、取消表格日期锁定、设置表单状态) Text1.Locked = True 设置对象的只读 ComboYGB.Lo

34、cked = True ComboKQLXB.Locked = True DataGrid1.Enabled = True 取消锁定表格 DTPicker1.Enabled = True 取消日期锁定 add_flag = False 设置为非增加状态 modify_flag = False 设置为非修改状态 Call showbuttons 刷新按钮状态 DataGrid1.SetFocus End Sub Private Sub cmdexit_Click() 退出按钮 退出按钮的单击事件 Unload Me End Sub Private Sub Form_Load() 表单的初始化事件

35、 1:生成日期信息,考勤日期默认为今天的日期 With DTPicker1 .Year = Year(Date) .Month = Month(Date) .Day = Day(Date) .CustomFormat = yyyy年MM月d日 dddd 设置日期格式 End With kq_date = CStr(Date) 2:生成数据集-KQGLB With AdoKQGLB 与kqglb表关联 .ConnectionString = Provider=OraOLEDB.Oracle.1;Password=xscj1234;Persist Security Info=True;User I

36、D=system;Data Source=xscj .CommandType = adCmdText .RecordSource = select * from kqglb order by kqrq .Refresh End With - 3:生成数据集-KQLXB With AdoKQLXB 与kqlxb表关联 .ConnectionString = Provider=OraOLEDB.Oracle.1;Password=xscj1234;Persist Security Info=True;User ID=system;Data Source=xscj .CommandType = ad

37、CmdText .RecordSource = select bh| |lx as 类型 from kqlxb order by bh .Refresh End With lxb_rec = AdoKQLXB.Recordset.RecordCount 保存类型表数据集记录总数 生成comboKQLXB列表(列表格式:类型编号+名称) While AdoKQLXB.Recordset.EOF True ComboKQLXB.AddItem (AdoKQLXB.Recordset.Fields(类型) AdoKQLXB.Recordset.MoveNext Wend If lxb_rec 0 T

38、hen 类型表非空 ComboKQLXB.ListIndex = 0 End If - 4:生成数据集-YGB With AdoYGB 与ygb表关联 .ConnectionString = Provider=OraOLEDB.Oracle.1;Password=xscj1234;Persist Security Info=True;User ID=system;Data Source=xscj .CommandType = adCmdText .RecordSource = select * from ygb .Refresh End With ygb_rec = AdoYGB.Record

39、set.RecordCount 保存员工表数据集的记录总数 Call formyglist(kq_date, browse) 生成今天的考勤员工浏览列表 - 5:生成表格的数据集 With AdoDataGrid 与表单的datagrid1表格相关联 .ConnectionString = Provider=OraOLEDB.Oracle.1;Password=xscj1234;Persist Security Info=True;User ID=system;Data Source=xscj .CommandType = adCmdText .RecordSource = select kq

40、rq,ygbh| |xm as 员工,b.bh| |lx as 类型,bz from ygb a,kqlxb b,kqglb c where kqrq= + kq_date + and a.bh=c.ygbh and b.bh=c.lxbh order by a.bh .Refresh End With - add_flag = False 设置表单为非增加状态 modify_flag = False 设置表单为非修改状态 Call showbuttons 刷新按钮状态 End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 表单退出前发生的事件 If add_fla

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号