考勤管理系统.docx
- 文档编号:24644975
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:43
- 大小:310.85KB
考勤管理系统.docx
《考勤管理系统.docx》由会员分享,可在线阅读,更多相关《考勤管理系统.docx(43页珍藏版)》请在冰豆网上搜索。
考勤管理系统
考勤管理系统
1.1系统设计
1.1.1系统的设计目标
考勤管理系统的总体任务是实现考勤管理的规范化、考勤数据统计的自动化。
系统的设计目标即是完成这一任务。
1.1.2设计思想
系统应尽量结合单位现有的软硬件环境,充分利用现有资源。
所以本系统除了要能够手工录入员工的考勤记录外,还应能够与考勤机相结合,实现考勤信息录入自动化。
系统的考勤类型应能够灵活设定,以便用户随时调整。
系统应具备报表功能,查询统计时能够直接生成相关员工的考勤报表,报表要能够导出、打印。
系统应该具备数据库维护功能,能够让用户进行数据表的备份和恢复。
系统应采用模块化程序设计,便于功能的组合与修改,以及以后尽可能进行补充。
综合考虑,确定本系统使用C/S工作模式,以oracle作为后台数据库,visualbasic6.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)
NOTNULL
类型编号(主键)
LX
VARCHAR2(20)
NULL
类型名称
表1.2员工信息表格[YGB]
字段
数据类型
能否为空
备注
BH
VARCHAR2(8)
NOTNULL
员工编号(主键)
XM
VARCHAR2(12)
NOTNULL
员工姓名
XB
VARCHAR2
(2)
NOTNULL
员工性别
BM
VARCHAR2(20)
NULL
员工部门
表1.3考勤管理表格[KQGLB]
字段
数据类型
能否为空
备注
KQRQ
DATE
NOTNULL
考勤日期(主键1)
YGBH
VARCHAR2(8)
NOTNULL
员工编号(主键2)
(指向员工信息表BH字段的外键)
LXBH
VARCHAR2(4)
NOTNULL
类型编号(指向考勤类型表BH字段的外键)
BZ
VARCHAR2(20)
NULL
备注
1.3设计系统的界面
1.3.1窗口的设计
经过构细,本系统需要创建五个窗口:
考勤管理系统登录窗口、考勤类型管理窗口、员工信息管理窗口、考勤情况录入窗口、考勤信息统计窗口
1.考勤管理系统登录窗口运行界面
2.考勤管理系统登录窗口设计界面
主要事件与代码:
PrivateSubForm_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/2
EndSub
PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)
SelectCaseButton.Key
Case"bt2"
frm_yggl.Show,Me
Case"bt3"
frm_kqlx.Show,Me
Case"bt4"
frm_kqlr.Show,Me
Case"bt5"
Frm_kqtj.Show,Me
EndSelect
EndSub
3.员工信息管理窗口运行界面
4.员工信息管理窗口设计界面
属性设置:
1.Frm_yggl的属性设置
属性名
值
含义
Caption
员工信息管理
BorderStyle
1
Fixedsingle
StartUpPosition
1
所有者中心
2.Combo1的属性设置
Style
2
DropdownList
List
男 女
Locked
True
3.DataGrid1的属性设置
DataSource
Adodc1
4.Text1--Text3的属性设置
Locked
True
主要事件与代码:
Dimadd_flagAsBoolean,modify_flagAsBoolean
PrivateSubAdodc1_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)
IfAdodc1.Recordset.RecordCount>0Then
Text1.Text=Adodc1.Recordset.Fields("bh")&""
Text2.Text=Adodc1.Recordset.Fields("xm")&""
Text3.Text=Adodc1.Recordset.Fields("bm")&""
IfAdodc1.Recordset.Fields("xb")="男"Then
Combo1.ListIndex=0
Else
Combo1.ListIndex=1
EndIf
Else
Text1.Text=""
Text2.Text=""
Text3.Text=""
Combo1.ListIndex=0
Callshowbuttons
EndIf
EndSub
PrivateSubcmdadd_Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text1.Locked=False
Text2.Locked=False
Text3.Locked=False
Combo1.Locked=False
DataGrid1.Enabled=False
add_flag=True
Callshowbuttons
EndSub
PrivateSubcmdcancle_Click()
IfAdodc1.Recordset.RecordCount>0Then
Text1.Text=Adodc1.Recordset.Fields("bh")&""
Text2.Text=Adodc1.Recordset.Fields("xm")&""
Text3.Text=Adodc1.Recordset.Fields("bm")&""
IfAdodc1.Recordset.Fields("xb")="男"Then
Combo1.ListIndex=0
Else
Combo1.ListIndex=1
EndIf
Else
Text1.Text=""
Text2.Text=""
Text3.Text=""
Combo1.ListIndex=0
EndIf
Text1.Locked=True
Text2.Locked=True
Text3.Locked=True
Combo1.Locked=True
DataGrid1.Enabled=True
add_flag=False
modify_flag=False
Callshowbuttons
EndSub
PrivateSubcmddelete_Click()
ret=MsgBox("你真的要删除"+Adodc1.Recordset.Fields("xm")+"的记录吗?
",vbYesNo+vbQuestion+vbDefaultButton2,"提示")
Ifret=vbYesThen
Adodc1.Recordset.Delete
Adodc1.Recordset.Update
EndIf
DataGrid1.SetFocus
EndSub
PrivateSubcmdexit_Click()
UnloadMe
EndSub
PrivateSubcmdmodify_Click()
Text1.Locked=False
Text2.Locked=False
Text3.Locked=False
Combo1.Locked=False
DataGrid1.Enabled=False
modify_flag=True
Callshowbuttons
EndSub
PrivateSubcmdsave_Click()
Text1.Text=Trim(Text1.Text)
Text2.Text=Trim(Text2.Text)
Text3.Text=Trim(Text3.Text)
Ifis_data_ok()=FalseThen
ExitSub
EndIf
in_bh=Text1.Text
in_xm=Text2.Text
in_xb=Combo1.Text
in_bm=Text3.Text
Ifadd_flag=TrueThen
Adodc1.Recordset.AddNew
EndIf
Adodc1.Recordset.Fields("bh")=in_bh
Adodc1.Recordset.Fields("xm")=in_xm
Adodc1.Recordset.Fields("xb")=in_xb
Adodc1.Recordset.Fields("bm")=in_bm
Adodc1.Recordset.Update
Ifadd_flag=TrueThen
Adodc1.Recordset.Find"bh='"+in_bh+"'",,adSearchForward,1
EndIf
Text1.Locked=True
Text2.Locked=True
Text3.Locked=True
Combo1.Locked=True
DataGrid1.Enabled=True
add_flag=False
modify_flag=False
Callshowbuttons
DataGrid1.SetFocus
EndSub
PrivateSubForm_Load()
add_flag=False
modify_flag=False
Callshowbuttons
EndSub
PrivateSubshowbuttons()
Ifadd_flag=FalseAndmodify_flag=FalseThen
cmdadd.Enabled=True
IfAdodc1.Recordset.RecordCount=0Then
Cmdmodify.Enabled=False
cmddelete.Enabled=False
Else
Cmdmodify.Enabled=True
cmddelete.Enabled=True
EndIf
cmdexit.Enabled=True
Cmdcancle.Enabled=False
Cmdsave.Enabled=False
Else
cmdadd.Enabled=False
Cmdmodify.Enabled=False
cmddelete.Enabled=False
cmdexit.Enabled=False
Cmdcancle.Enabled=True
Cmdsave.Enabled=True
EndIf
EndSub
PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)
Ifadd_flag=TrueOrmodify_flag=TrueThen
MsgBox("数据正在编辑,不能退出!
")
Cancel=True
EndIf
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
If(KeyAscii<48OrKeyAscii>57)AndKeyAscii<>8Then
KeyAscii=0
EndIf
EndSub
PrivateFunctionis_data_ok()AsBoolean
Ifmodify_flag=TrueThen
old_bh=Adodc1.Recordset.Fields("bh")
EndIf
IfLen(Text1.Text)<8Then
MsgBox("编号的长度不够!
")
is_data_ok=False
Text1.SetFocus
ExitFunction
EndIf
IfLen(Text2.Text)=0Then
MsgBox("姓名未输入!
")
is_data_ok=False
Text2.SetFocus
ExitFunction
EndIf
Ifadd_flag=TrueThen
Adodc2.RecordSource="select*fromygbwherebh='"+Text1.Text+"'"
Adodc2.Refresh
Else
Adodc2.RecordSource="select*fromygbwherebh='"+Text1.Text+"'andbh<>'"+old_bh+"'"
Adodc2.Refresh
EndIf
IfAdodc2.Recordset.RecordCount>0Then
MsgBox("编号有重复!
")
is_data_ok=False
Text1.SetFocus
ExitFunction
EndIf
is_data_ok=True
EndFunction
5.考勤情况录入窗口运行界面
6.考勤情况录入窗口设计界面
属性设置:
1.Frm_kqlr的属性设置
属性名
值
含义
Caption
考勤情况录入
BorderStyle
1
Fixedsingle
StartUpPosition
1
所有者中心
2.数据源Adodc的设置
Adodc1名称
AdoDataGrid
Adodc2名称
AdoKQGLB
Adodc3名称
AdoKQLXB
Adodc4名称
AdoYGB
2.下拉框Combo的属性设置
Combo1名称
ComboYGB
生成员工列表
Combo2名称
ComboKQLXB
生成考勤类型列表
Locked
True
Style
2
DropdownList
3.DataGrid1的属性设置
DataSource
AdoDataGrid
4.Text1的属性设置
Locked
True
主要事件与代码:
Dimadd_flagAsBoolean,modify_flagAsBoolean
Dimygb_recAsInteger,lxb_recAsInteger
Dimkq_dateAsString
'add_flag:
增加状态标志(布尔型)modify_flag:
修改状态标志(布尔型)
'ygb_rec:
员工表记录总数(数值型)lxb_rec:
类型表记录总数(数值型)
'kq_date:
考勤的日期(类型是字符型)
PrivateSubAdoDataGrid_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)
IfAdoDataGrid.Recordset.RecordCount>0Then'数据表内容不为空
ComboYGB.Text=AdoDataGrid.Recordset.Fields("员工")&""
ComboKQLXB.Text=AdoDataGrid.Recordset.Fields("类型")&""
Text1.Text=AdoDataGrid.Recordset.Fields("bz")&""
EndIf
EndSub
PrivateSubcmdadd_Click()'增加按钮
'增加按钮的单击事件
'1:
生成员工的增加列表框
Callformyglist(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:
设置表单状态
add_flag=True'设置为增加编辑状态
Callshowbuttons'刷新按钮状态
ComboYGB.SetFocus
EndSub
PrivateSubcmdmodify_Click()'修改按钮
'修改按钮的单击事件
'1:
文本框、组合框解锁
Text1.Locked=False'取消对象的只读
ComboKQLXB.Locked=False
'2:
锁定表格、日期不能动
DataGrid1.Enabled=False'锁定表格
DTPicker1.Enabled=False'锁定日期
'3:
设置表单状态
modify_flag=True'设置为修改编辑状态
Callshowbuttons'刷新按钮状态
ComboKQLXB.SetFocus
EndSub
PrivateSubcmdcancle_Click()'取消按钮
'取消按钮的单击事件
'1:
生成员工的浏览列表
Callformyglist(kq_date,"browse")
'2:
恢复数据,并设置文本框、下拉框对象只读
IfAdoDataGrid.Recordset.RecordCount>0Then'数据表内容不为空
ComboYGB.Text=AdoDataGrid.Recordset.Fields("员工")&""
ComboKQLX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考勤 管理 系统