考勤管理系统.docx

上传人:b****3 文档编号:11210289 上传时间:2023-05-29 格式:DOCX 页数:43 大小:310.85KB
下载 相关 举报
考勤管理系统.docx_第1页
第1页 / 共43页
考勤管理系统.docx_第2页
第2页 / 共43页
考勤管理系统.docx_第3页
第3页 / 共43页
考勤管理系统.docx_第4页
第4页 / 共43页
考勤管理系统.docx_第5页
第5页 / 共43页
考勤管理系统.docx_第6页
第6页 / 共43页
考勤管理系统.docx_第7页
第7页 / 共43页
考勤管理系统.docx_第8页
第8页 / 共43页
考勤管理系统.docx_第9页
第9页 / 共43页
考勤管理系统.docx_第10页
第10页 / 共43页
考勤管理系统.docx_第11页
第11页 / 共43页
考勤管理系统.docx_第12页
第12页 / 共43页
考勤管理系统.docx_第13页
第13页 / 共43页
考勤管理系统.docx_第14页
第14页 / 共43页
考勤管理系统.docx_第15页
第15页 / 共43页
考勤管理系统.docx_第16页
第16页 / 共43页
考勤管理系统.docx_第17页
第17页 / 共43页
考勤管理系统.docx_第18页
第18页 / 共43页
考勤管理系统.docx_第19页
第19页 / 共43页
考勤管理系统.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

考勤管理系统.docx

《考勤管理系统.docx》由会员分享,可在线阅读,更多相关《考勤管理系统.docx(43页珍藏版)》请在冰点文库上搜索。

考勤管理系统.docx

考勤管理系统

考勤管理系统

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

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2