
课程设计论文-基于VB的考勤管理系统设计.doc
39页考勤管理系统1.1 系统设计1.1.1 系统的设计目标考勤管理系统的总体任务是实现考勤管理的规范化、考勤数据统计的自动化系统的设计目标即是完成这一任务1.1.2 设计思想系统应尽量结合单位现有的软硬件环境,充分利用现有资源所以本系统除了要能够手工录入员工的考勤记录外,还应能够与考勤机相结合,实现考勤信息录入自动化系统的考勤类型应能够灵活设定,以便用户随时调整系统应具备报表功能,查询统计时能够直接生成相关员工的考勤报表,报表要能够导出、打印系统应该具备数据库维护功能,能够让用户进行数据表的备份和恢复系统应采用模块化程序设计,便于功能的组合与修改,以及以后尽可能进行补充综合考虑,确定本系统使用 C/S 工作模式,以 oracle 作为后台数据库,visual basic 6.0 为前台程序开发语言1.1.3 系统功能模块划分 根据系统的设计思想,划分系统功能为以下几个模块 员工信息的管理模块 考勤类型的设定模块 员工考勤信息手工录入模块 经考勤机生成并处理的考勤信息导入模块 员工考勤情况统计报表生成模块 数据库维护模块系统功能模块图如图 1.1 所示考勤管理系统员工信息管理 考勤类型设定 信息手工录入信息导入生成统计报表 数据库维护图 1.1 系统功能模块图1.2 系统设计数据库设计在数据库程序设计中是非常重要的一个环节,具体指的是数据库中各个表结构的设计,包括信息保存在哪些表格中,各个表详细结构以及各个表格之间的关系。
数据库结构是数据库应用程序的基础,它的好坏直接影响到应用程序的执行效率,数据库结构设计得好,就会减少数据库的存储量,并且使数据保持很高的完整性和一致性,还会提高数据查询的数度,运用前台编程工具时,也会有一定程序上的简化数据库设计分为以下三个阶段 数据库需求分析 数据库概念结构设计 数据库逻辑结构设计1.2.1 数据库需求分析数据库需求分析是数据库结构设计的第一个阶段,也是非常重要的一个阶段,这个阶段的任务是收集数据基本信息和取得数据处理的流程需求分析要做的工作是与用户结合,调查用户需要操作的资料,以决定在数据库中存储什么数据,还要弄清用户怎么处理各种数据资料,理清数据库中个数据之间的关系这个阶段的工作成功应该有以下三个方面的内容 数据项:每种具体数据的名称、意义、类型、取值范围以及与其他数据项之间的逻辑关系 数据集:若干数据项的有逻辑关联的集合,包括名称、意义和组成数据集的数据项 数据流:应用系统运行时,数据是怎样输入、处理和输出的这三个方面的内容就是本系统的数据字典文档,如果数据库需求分析阶段的工作没有做好,数据字典在将来的系统开发过程中就有可能随时发生变化,开发后期可能面临程序午休止的修改和调试,甚至是一切的推到重来,因此一定要重视这个阶段的工作。
系统处理数据的流程,如图 1.2 所示生成考勤统计表员工信息数据考勤类型数据员工考勤信息数据考勤类型设定员工信息管理考勤信息手工录入考勤类型数据导入图 1.2 数据流程图通过分析数据流程,设计数据集和数据项如下 员工信息数据集,数据项为员工号、员工姓名、员工性别、员工所属部门 考勤类型数据集,数据项为类型号、类型名称 员工考勤情况数据集,数据项为考勤日期、员工号、考勤类型号、备注1.2.2 数据库结构设计本系统采用 E-R 图的方法来进行数据库概念结构设计1.员工信息实体 E-R 图员工信息实体 E-R 图如图 1.3 所示员工信息员工号 员工姓名 员工性别 所属部门图 1.3 员工信息实体 E-R 图2.考勤类型实体 E-R 图考勤类型实体 E-R 图如图 1.4 所示考勤类型类型号 类型名称图 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.1~1.3 所示。
表 1.1 考勤类型表格[KQLXB]字段 数据类型 能否为空 备注BH VARCHAR2(4) NOT NULL 类型编号(主键)LX VARCHAR2(20) NULL 类型名称表 1.2 员工信息表格[YGB]字段 数据类型 能否为空 备注BH VARCHAR2(8) NOT NULL 员工编号(主键)XM VARCHAR2(12) NOT NULL 员工姓名XB VARCHAR2(2) NOT NULL 员工性别BM VARCHAR2(20) NULL 员工部门表 1.3 考勤管理表格[KQGLB]字段 数据类型 能否为空 备注KQRQ DATE NOT NULL 考勤日期(主键1)YGBH VARCHAR2(8) NOT NULL 员工编号(主键 2)(指向员工信息表BH 字段的外键)LXBH VARCHAR2(4) NOT NULL 类型编号(指向考勤类型表 BH 字段的外键)BZ VARCHAR2(20) NULL 备注1.3 设计系统的界面1.3.1 窗口的设计经过构细,本系统需要创建五个窗口:考勤管理系统登录窗口、考勤类型管理窗口、员工信息管理窗口、考勤情况录入窗口、考勤信息统计窗口1. 考勤管理系统登录窗口运行界面2. 考勤管理系统登录窗口设计界面主要事件与代码:Private Sub Form_Resize()Image1.Width = Me.WidthImage1.Height = Me.HeightLabel1.Left = (Me.Width) / 2 - Label1.Width / 2 Label2.Left = (Me.Width) / 2 - Label2.Width / 2Label3.Left = (Me.Width) / 2 - Label3.Width / 2End SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.KeyCase "bt2"frm_yggl.Show , MeCase "bt3"frm_kqlx.Show , MeCase "bt4"frm_kqlr.Show , MeCase "bt5"Frm_kqtj.Show , MeEnd SelectEnd Sub3. 员工信息管理窗口运行界面4. 员工信息管理窗口设计界面属性设置:1. Frm_yggl 的属性设置属性名 值 含义Caption 员工信息管理 BorderStyle 1 Fixed singleStartUpPosition 1 所有者中心2. Combo1 的属性设置Style 2 Dropdown ListList 男 女 Locked True 3. DataGrid1 的属性设置DataSource Adodc1 4. Text1--Text3 的属性设置Locked True 主要事件与代码:Dim add_flag As Boolean, modify_flag As BooleanPrivate Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)If Adodc1.Recordset.RecordCount > 0 ThenText1.Text = Adodc1.Recordset.Fields("bh") & ""Text2.Text = Adodc1.Recordset.Fields("xm") & ""Text3.Text = Adodc1.Recordset.Fields("bm") & ""If Adodc1.Recordset.Fields("xb") = "男" ThenCombo1.ListIndex = 0ElseCombo1.ListIndex = 1End IfElseText1.Text = ""Text2.Text = ""Text3.Text = ""Combo1.ListIndex = 0Call showbuttonsEnd IfEnd SubPrivate Sub cmdadd_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""Text1.Locked = FalseText2.Locked = FalseText3.Locked = FalseCombo1.Locked = FalseDataGrid1.Enabled = Falseadd_flag = TrueCall showbuttonsEnd SubPrivate Sub cmdcancle_Click()If Adodc1.Recordset.RecordCount > 0 ThenText1.Text = Adodc1.Recordset.Fields("bh") & ""Text2.Text = Adodc1.Recordset.Fields("xm") & ""Text3.Text = Adodc1.Recordset.Fields("bm") & ""If Adodc1.Recordset.Fields("xb") = "男" ThenCombo1.ListIndex = 0ElseCombo1.ListIndex = 1End IfElseText1.Text = ""Text2.Text = ""Text3.Text = ""Combo1.ListIndex = 0End IfText1.Locked = TrueText2.Locked = TrueText3.Locked = TrueCombo1.Locked = TrueDataGrid1.Enabled = True add_flag = Falsemodify_flag = FalseCall showbuttonsEnd SubPrivate Sub cmddelete_Click()ret = MsgBox("你真的要删除" + Adodc1.Recordset.Fields("xm") + "的记录吗?", vbYesNo + vbQuestion + vbDefaultButton2, "提示")If ret = vbYes ThenAdodc1.Recordset.DeleteAdodc1.Recordset.UpdateEnd IfDataGrid1.SetFocusEnd SubPrivate Sub cmdexit_Click()Unload MeEnd SubPrivate Sub cmdmodify_Click()Text1.Locked = FalseText2.Locked = FalseText3.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_。
