摘要在现代企业管理中,企业信息化是提高企业管理效率的重要手段。
随着企业人事管理的日趋复杂和企业人员的增多,企业的考勤管理变得越来越复杂。
规范的考勤管理是现代企业提高管理效益的重要保障,而传统的人工管理存在着效率低、不易统计、成本高和易出错等弊端,已经无法适应现代企业的需求。
随着计算机技术和通信技术的迅速发展,将传统的人工考勤管理信息化,建立一个高效率的、无差错的考勤管理系统,能够有效地帮助企业实现“公正考勤,高效薪资”的管理理念,使企业的管理水平登上一个新的台阶。
本课程设计主要是对企业员工的考勤管理。
本系统的设计只要是为了实现管理和查询企业员工的工作出勤情况。
主要功能有:刷卡记录管理、加班管理、请假管理、用户登录和注册功能以及月考勤统计表的查询。
本系统的数据库是用Microsoft Access 2007软件进行创建和设计,分别包括刷卡记录信息表,加班信息表,请假信息表,月考勤统计表和登录信息表五个表。
通过系统ODBC数据源管理工具把已创建的数据源与系统数据库相连。
然后利用Visual Basic软件对系统的窗口进行设计,包括登录界面、注册新用户界面、主界面、浏览窗体和查询窗体等,可以通过这些窗体进行登录操作,对输入的用户信息进行验证,和注册新用户操作,以及最重要的操作是对数据库中信息进行修改与查询。
并可以对数据进行添加与删除,做到及时更新员工考勤信息。
关键词:考勤管理,Microsoft Access 2007软件,Visual Basic软件1.系统功能概述1.1系统功能考勤管理系统主要是实现刷卡记录、加班和请假的管理以及员工月考勤统计。
设计为MDI窗体,含有主菜单:[文件]、[管理考勤信息]、[查询考勤信息]。
[文件]菜单包含以下子菜单及其功能:[注册]:打开“注册新用户”窗体[关闭]:结束程序运行[登录]:登录主界面[管理考勤信息]包含以下子菜单:[刷卡信息]菜单:显示刷卡信息浏览和编辑窗体[加班信息]菜单:显示加班信息浏览和编辑窗体[请假信息]菜单:显示请假信息浏览和编辑窗体[查询考勤信息] 包含以下子菜单:[刷卡信息查询]菜单:显示刷卡信息查询窗体[加班信息查询]菜单:显示加班信息查询窗体[请假信息查询]菜单:显示请假信息查询窗体[月考勤信息查询]菜单:显示月考勤信息查询窗体1.2系统结构总图考勤管理系统的结构总图,如图1.1所示:图1.1 考勤管理系统的结构总体2.数据库设计2.1 需求分析随着现代数据的信息化和大数据时代的到来,各个企业也逐渐实行信息化管理。
而企业考勤管理一直以来就遵循着传统的人工管理制度,这种人工管理方法已经不再是高效、快速解决问题的最好选择。
随着各企业的快速发展和企业员工频繁交替更换,使得企业对考勤管理系统有着更高的要求,来达到企业利益最大化和职工利益的公平性。
数据库管理系统能快速的帮助管理者处理数据,提高工作效率,实现公平公正的管理制度。
2.2E-R模型刷卡记录信息管理E-R图,如图2.1所示。
加班信息管理E-R图,如图2.2所示。
请假信息管理E-R图,如图2.3所示。
月考勤统计信息E-R图,如图2.4所示。
登录E-R图,如图2.5所示。
全局E-R图,如图2.6所示。
图2.1 刷卡记录信息管理实体属性图图2.2 加班信息管理实体属性图图2.3 请假信息管理实体属性图图2.4 月考勤统计信息管理实体属性图图2.5 登录实体属性图图2.6 全局E-R图2.3关系模型一个实体性转换为一个关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
根据E-R图向关系模型转换的原则,就是把E-R图转换为关系模型。
刷卡记录信息:职员编号、刷卡时间、刷卡日期(主键为职员编号)加班信息:职员编号、加班时数、加班日期、加班原因(主键为职员编号)请假信息:职员编号、请假日期、请假次数、请假原因(主键为职员编号)月考勤统计信息:职员编号、日期、加班时间、请假次数、旷工次数、迟到次数、早退次数(主键为职员编号)登录:用户名、密码(主键为用户名)2.4表结构设计3.系统各功能模块的详细设计3.1 各窗体的设计此考勤管理系统共包括13个窗体,分别是登录、注册、刷卡记录信息查询、加班信息查询、请假信息查询、月考勤信息查询和MDI主窗体。
3.2 各窗体实现及代码3.2.1登录窗体打开登录界面后,输入用户名和密码,点击登录按钮,进入MDI主窗体,如图3.1所示。
图3.1登录界面图代码:Dim micount As IntegerPrivate Sub Command1_Click()Dim str As Stringstr = "select * from 登录where 用户名='" & Text1.Text & "'"Adodc1.RecordSource = strAdodc1.RefreshIf Adodc1.Recordset.BOF = True ThenMsgBox "用户名错误,请重新输入", vbExlamation, "警告"Text1.Text = ""Text2.Text = ""Text1.SetFocusElseIf Trim(Adodc1.Recordset.Fields("密码")) = Text2.Text ThenMDIForm1.ShowUnload MeMDIForm1.g.Enabled = TrueMDIForm1.c.Enabled = TrueMsgBox "密码错误,请重新输入", vbExlamation, "警告"Text2.Text = ""Text2.SetFocusEnd IfEnd Ifmicount = micount + 1If micount >= 3 Then Unload MeEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub3.2.2 MDI主窗体主窗体含有主菜单:[文件]、[数据管理]、[数据查询]。
[文件]菜单包含子菜单登录、注册、退出。
[数据管理]菜单包含子菜单有:刷卡信息管理、加班信息管理和请假信息管理。
[数据查询]包含子菜单有:刷卡信息查询、加班信息查询、请假信息查询和月考勤信息查询。
如图3.2所示。
图3.2 MDI主窗体图代码:Private Sub c1_Click()刷卡信息.ShowEnd SubPrivate Sub c2_Click()加班信息.ShowEnd SubPrivate Sub c3_Click()请假信息.ShowEnd SubPrivate Sub g1_Click()刷卡信息查询.ShowEnd SubPrivate Sub g2_Click()加班信息查询.ShowEnd SubPrivate Sub g3_Click()请假信息查询.ShowEnd SubPrivate Sub g4_Click()月考勤信息查询.ShowEnd SubPrivate Sub MDIForm_Load()g.Enabled = Falsec.Enabled = FalseEnd SubPrivate Sub w1_Click()注册.ShowEnd SubPrivate Sub w2_Click()登录.ShowEnd SubPrivate Sub w3_Click()Unload MeEnd Sub3.2.3新用户注册在主窗体上点击查单文件下的注册,进入注册界面,输入用户名、密码和确认密码,点击确定,注册成功。
如图3.3所示。
图3.3 新用户注册图代码:Private Sub Command1_Click()Dim sqlstr As StringIf Text1 = "" ThenMsgBox "请输入用户名!", vbExclamation, "确认用户名"Text1.SetFocusExit SubElsesqlstr = "Select * from 登录where 用户名='" & Text1.Text & "'"Adodc1.RecordSource = sqlstrAdodc1.RefreshIf Adodc1.Recordset.EOF = False ThenMsgBox "用户名已存在,请重新输入!", vbExclamation, "检验用户名"Text1 = ""Text1.SetFocusText2 = ""Text3 = ""Exit SubEnd IfEnd IfIf Text2 <> Text3 ThenMsgBox "二次输入的密码不一致,请重新输入", vbExclamation, "检验密码"Text2 = "": Text3 = ""Text2.SetFocusExit SubElseIf Text2 = "" ThenMsgBox "密码不能为空!", vbExclamation, "检验密码"Text2.SetFocusElseAdodc1.Recordset.AddNewAdodc1.Recordset.Fields("用户名") = Trim(Text1)Adodc1.Recordset.Fields("密码") = Trim(Text2)Adodc1.Recordset.UpdateMsgBox "成功注册新用户!", vbInformation, "添加用户"Me.HideMDIForm1.ShowUnload MeEnd IfEnd SubPrivate Sub Command2_Click()Unload MeMDIForm1.ShowEnd Sub3.2.4 刷卡信息点击MDI主窗体的数据管理菜单下的刷卡信息,出现刷卡信息界面如图3.4所示,如有修改,点击修改,弹出图3.5所示界面便于增加、删除、前移和后移的功能。
图3.4图3.5代码:Private Sub Command1_Click()Adodc1.Recordset.MoveFirstCommand1.Enabled = FalseCommand2.Enabled = FalseCommand3.Enabled = TrueCommand4.Enabled = TrueLabel5.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & Adodc1.Recordset.RecordCountEnd SubPrivate Sub Command10_Click()Adodc1.RefreshCommand6.Enabled = TrueCommand7.Enabled = TrueCommand8.Enabled = TrueCommand9.Enabled = FalseCommand10.Enabled = FalseText1.Locked = TrueText2.Locked = TrueText3.Locked = TrueText4.Locked = TrueEnd SubPrivate Sub Command2_Click()Adodc1.Recordset.MovePreviousCommand3.Enabled = TrueCommand4.Enabled = TrueIf Adodc1.Recordset.BOF ThenAdodc1.Recordset.MoveFirstCommand1.Enabled = FalseCommand2.Enabled = FalseEnd IfLabel5.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & Adodc1.Recordset.RecordCountEnd SubPrivate Sub Command3_Click()Adodc1.Recordset.MoveNextCommand1.Enabled = TrueCommand2.Enabled = TrueIf Adodc1.Recordset.EOF ThenAdodc1.Recordset.MoveLastCommand3.Enabled = FalseCommand4.Enabled = FalseEnd IfLabel5.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & Adodc1.Recordset.RecordCountEnd SubPrivate Sub Command4_Click()Adodc1.Recordset.MoveLastCommand1.Enabled = TrueCommand2.Enabled = TrueCommand3.Enabled = FalseCommand4.Enabled = FalseLabel5.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & Adodc1.Recordset.RecordCountEnd SubPrivate Sub Command5_Click()Dim n As Integern = Text5.TextAdodc1.Recordset.Move nLabel5.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" & Adodc1.Recordset.RecordCountEnd SubPrivate Sub Command6_Click()Adodc1.Recordset.AddNewCommand6.Enabled = FalseCommand7.Enabled = FalseCommand8.Enabled = FalseCommand9.Enabled = TrueCommand10.Enabled = TrueEnd SubPrivate Sub Command7_Click()x = MsgBox("确实要删除当前记录吗?", vbYesNo + vbQuestion, "确认") If x = vbYes ThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF ThenAdodc1.Recordset.MoveLastEnd IfElseAdodc1.RefreshEnd IfEnd SubPrivate Sub Command8_Click()Text1.Locked = FalseText2.Locked = FalseText3.Locked = FalseText4.Locked = FalseCommand6.Enabled = FalseCommand7.Enabled = FalseCommand8.Enabled = FalseCommand9.Enabled = TrueCommand10.Enabled = TrueEnd SubPrivate Sub Command9_Click()Adodc1.Recordset.UpdateCommand6.Enabled = TrueCommand7.Enabled = TrueCommand8.Enabled = TrueCommand9.Enabled = FalseCommand10.Enabled = FalseText1.Locked = TrueText2.Locked = TrueText3.Locked = TrueText4.Locked = TrueEnd SubPrivate Sub Form_Load()Command1.Enabled = FalseCommand2.Enabled = FalseCommand3.Enabled = TrueCommand4.Enabled = TrueCommand6.Enabled = TrueCommand7.Enabled = TrueCommand8.Enabled = TrueCommand9.Enabled = FalseCommand10.Enabled = FalseLabel5.Caption = "记录:" & Adodc1.Recordset.AbsolutePosition & "/" &Adodc1.Recordset.RecordCountEnd Sub3.2.5加班信息管理点击MDI主窗体的数据管理菜单下的加班信息管理,出现加班信息管理界面,可以进行增加,删除,修改,前移后移等功能。