MFC程序设计考勤系统Word文档下载推荐.docx
《MFC程序设计考勤系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MFC程序设计考勤系统Word文档下载推荐.docx(50页珍藏版)》请在冰豆网上搜索。
傅期结束醐
REJSatl
文本
请傭喙由
图2-3请假记录表
勒据空型
说明
曾卜
■卄W—
记录编号
PFESOM
WORK_HDWES
则田寸间
WCBE_DATE
日期丹捐
加脏日期
图2-4加班记录表
享孵称
埶据类型
FERSOK
ST危T_TIME
曰期细
出差幵始旳
侗
END_TIMB
曰期㈱
间
出差結棘
DESCBIFTIOff
具ftfflif
图2-5出差记录表
第3章各个功能模块的创建
3.1生成程序框架
本系统的应用程序使用MFCODB啲方法开发,采用Dialogbased的应用框架,如图3-1为。
由一个对话框和若干个功能对话框组成。
为了使用ODB(类,需要在stdafx.h中加入#include”afxdb.h”头文件。
本程序需要连接一个数据库,所以定义了一个CDatabase型的全局变量db,用
于打开和关闭数据库。
数据库的打开在登录认证数据库中。
为了访问数据库中的表格,本程序从CRecordset中派生了8个类,分别用于封装所需访问的表格,如表3-1。
通过访问成员变量可以访问当前记录中字段的值。
表3-1CRecordset派生类对应的表格
CRecordset派生类
表格
CAttendanceRS
ATTENDANCE勤记录表
CCounterRS
COUNTE计数器表
CDepartRS
DEPARTMEN部门信息表
CErrandRS
ERRAN出差记录表
CLeaveRS
LEAVE青假记录表
COvertimeRS
OVERTIME加班记录表
CPersonRS
PERSO员工个人信息表
CStatRS
attendanceatAT度考勤统计表
3.2登录认证对话框
登录窗口如图3-2所示,包括3个输入框和2个按钮。
主要控件类型、ID和对应的成员变量及说明如表3-4。
图3-2登录窗口
表3-4登录认证对话框控件列表
控件类型
ID
成员变量
ComboBox
idc_cmb_dsn
m_strDSN
ODBC数据源
EditBox
idc_edt_user
m_strUser
用户名
idcedtpasswd
mstrPasswd
密码
Button
IDOK
无
“登录”按钮
IDCANCEL
“取消”按钮
对IDOK的点击加登录代码。
CLoginDlg类需要用到加密类,本程序使用的是CCrypt类。
在cpp文件的开
头加入#include”Crypt.h”一行。
另外,为了使用全局数据库变量db,需要在cpp文件开头加入以下语句:
ExternCDatabasedb;
用户认证过程在“登录”按钮的处理函数中:
代码见附录【1】
为了运行登录认证对话框,还需在App类的InitInstance()函数中在显示主
对话框前加入以下代码:
CLoginDlgLoginDlg;
If(LoginDlg.DoModal()!
=IDOK)returnFALSE;
3.3主对话框窗口的设计
用户登录后即显示主对话框,如图3-5所示。
包括5个按钮。
控件列表如表3-6。
图3-5主对话框
表3-6主对话框控件列表
StaticText
IDC_STATIC_HEAD
“考勤管理系统”静态文本
IDC_BTN_CONFIG
“设置”按钮
IDCBTNRECORD
“出勤记录”按钮
IDC_BTN_STATISTICS
“统计”按钮
IDCBTNRELOGIN
“重新登录”按钮
IDCBTNEXIT
“退出”按钮
在CAttendanceDIg中定义以下成员变量:
Public:
CBrushm_brush;
CStatDIg*m_pStatDlg;
CAttDlg*m_pAttDlg;
CFontm_font;
对话框初始化时需要改变标题字体大小,因此在OnlnitDialog()中加入以下
代码:
//改变标题字体大小
LOGFONTLogFont;
GetFont()->
GetLogFont(&
LogFont);
LogFont.lfHeight+=LogFont.lfHeight/2;
LogFont.lfWidth+=LogFont.lfWidth/2;
m_font.CreateFontlndirect(&
LogFont);
GetDlgltem(IDC_STATIC_HEAD)->
SetFont(&
m_font);
为了美观起见,还插入了背景图片,通过Ctrl+R引入图片后,在OnPaint()中的条件语句的else()中添加下列代码:
见附录【2】
对话框中5个按钮的功能主要是显示相应的功能对话框。
给按钮的
BN_CLICKE事件的处理和退出代码见附录【3】。
3.4上班时间设置对话框的创建
此对话框用于设置上下班时间,布局如图3-7.所示。
主要控件类型、ID
和对应的成员变量及说明如表3-8所示。
Fu上对闫设置S3|
修改I帀農默认设竄1!
图3-7时间设置对话框
表3-8时间设置对话框控件列表
Data
Picker
Time
IDC_WORKSTAT_DATETIMEPICKER1
m_Time1
上午上班时间
IDC_WORKSTAT_DATETIMEPICKER2
m_Time2
中午下班时间
IDC_WORKSTAT_DATETIMEPICKER3
m_Time3
下午上班时间
IDC_WORKSTAT_DATETIMEPICKER4
m_Time4
下午下班时间
IDCWORKPLANMODIFY
“修改”按钮
IDC_WORKPLAN_RESET
“恢复默认设置”按钮
一般上下班时间是相对固定的,而且需要在统计是频繁使用,所以不需要保存在数据库中,因此采用标准的INI设置文件来保存这些数据。
首先,在构造函数中初始化4个时间的取值:
CWorkplanDlg:
:
CWorkplanDlg(CWnd*pParent/*=NULL*/)
CDialog(CWorkplanDlg:
IDD,pParent)
{
m_Time1=0;
m_Time2=0;
m_Time3=0;
m_Time4=0;
}
“修改”按钮的BN_CLICKE事件处理用于保存当前的设置:
代码见附录【4】“恢复默认设置”按钮的BN_CLICKE事件处理程序用于恢复初始设置。
这个函数同时被OnInitDialog()函数应用,以实现初始化操作,代码见附录【5】3.5考勤修改对话框的创建
考勤修改对话框主要用来人工输入出勤情况。
在考勤机出现问题是,它可以及时弥补数据。
同时加班、请假、出差的记录都是需要通过这个对话框来输入。
对话框布局如图3-9所示。
为了区分不同的输入,在对话框中嵌入了CPropertySheet和4个CPropertyPage,这4个CPropertyPage分别放置出勤、加班、请假和出差记录的修改界面,而共用一个查询条件设置。
图3-9下方空白处用于放置CPropertySheet和4个CPropertyPage。
对话框中的主要控件类型、ID和对应的成员变量及说明如表3-10所示。
考勤愣改
a|
回
"
2•”.mii.A-..-■>
—Jb.ssj■■—.it.—m.n>
!
>
■一"
■>
■.4..it....si.,c.is.-^^ssa..-a:
■■..■■■■...■■■—■■■a...->
ssa.^.a:
■-■>
>
:
..si
B>
■—liiisa:
—■!
■■■—iSISi—>
Sil:
一3:
s■»
«
记昱扎事鼻件
厂时间范厨A
2O1C/L2/2〒至
2010/12/^▼
厂员工良工号:
编辑姓名
;
隧
图3-9考勤修改对话框
表3-10考勤修改对话框控件列表
CheckBox
IDC_CHK_SEEKBYTIME
m_bSeekbytime
时间围选项
IDC_CHK_SEEKBYPERSON
1mbSeekbyperson
员工选项
DateTimePicker
IDCDATETIMEPICKER1
mStartTime
起始时间
IDC_DATETIMEPICKER2
m_EndTime
结束时间
IDCEDTSEEKPERSONID
mstrPersonID
IDCEDTSEEKPERSONNA
iMEstrName
为了使用CPropertySheet和CPropertyPage,需要在类定义中加入以下变量:
CPagelm_Page1;
CPage2m_Page2;
CPage3m_Page3;
CPage4m_Page4;
CPropertySheetm_Sheet;
然后在OnlnitDialog中添加以下代码:
见附录【6】
当输入员工号时,需要检索员工,以确定设置的条件有效。
加入
IDC_EDT_SEEKPERSO的DEN_CHANGE息,函数如下:
见附录【7】
3.6修改出勤记录属性页的创建
加入一个对话框资源,将其封装设为从CPropertyPage继承的CPage1类。
对话框布局如图3-11所示。
对话框中主要控件、ID和对应的成员变量及说明如
表3-12所示。
图3-11修改出勤记录属性页表3-12修改出勤记录属性页控件列表
IDC_EDIT_IOTIME
m_strIOTime
出入时间
IDC_EDIT_DEPARTID
m_strDepartID
部门编号
IDC_EDIT_DEPARTNAME
m_strDepartName
部门名称
IDC_EDIT_PERSONID
m_strPersonID
IDCEDITPERSONNAME
mstrPersonName
员工
RadioButton
IDC_RADIO_OUT
出入选项“出”
IDCRADIOIN
出入选项“入”
IDCBTNADDALL
“全部员工”按钮
IDCBTNADDDEPART
“部门员工”按钮
IDCBTNADDPERSON
“单个员工”按钮
IDCBTNDELETEATTEND
“删除所选记录”按钮
IDCBTNSEEKIO
“按条件检索”按钮
ListControl
IDCLIST1
mcList
“出勤记录列表”
界面初始化操作如下:
见附录【8】
为了方便更新列表框容,编写UpdateList()函数,调用此函数可使列表框
显示给定的数据表格。
见附录【9】
当输入部门编号时,自动检索部门名称。
见附录【10】
输入员工号是,检索相应信息。
见附录【11】
添加部门和全体员工出勤记录的过程最终可分解为添加单个员工记录的过
程。
设置以下子程序是为了避免程序的重复。
见附录【12】
添加记录的3个按钮处理程序分别调用以上的函数。
见附录【13】
“删除所选纪录”按钮用于删除列表中当前所选纪录。
见附录【14】
“按条件检索”按钮用于激活检索条件。
见附录【15】
3.7加班记录属性页的创建
加班记录属性页的创建与考勤修改属性页类似,封装类设为从CPropertyPage继承的Cpage2类。
为了将它们放入同一个PropertySheet,需将二者大小设为一致。
界面设计如图3-13,主要控件类型、ID和对应的成员变量及说明如表3-14所示。
图3-13加班记录属性页
表3-14加班记录属性页控件列表
DateTime
IDC_OVERTIME_DATETIMERPICK
Em_Date
日期
IDCEDITOVERTIMEHOUR
mnHour
加班时间
IDCEDITOVERTIMEPERSONID
IDCEDITOVERTIMEPERSONNA
iMEstrPersonName
IDCBTNOVERTIMEADD
“添加”按钮
IDC_BTN_OVERTIME_DELETEATT
E无
“删除所选记
录”按钮
IDC_BTN_OVERTIME_SEEKIO
“按条件检索”按钮
IDC_LIST2
m_cList
加班记录列表
初始化代码如下:
见附录【16】
UpdateList()完成列表框数据显示工作,代码如下:
见附录【17】当输入员工号时,需要检索员工,以确认输入是否正确。
见附录【18】
“添加”按钮用于完成纪录的添加操作。
见附录【19】
3.8请假记录属性页的创建
请假记录属性页封装类为从CPropertyPage继承的Cpage3类。
界面设计如
图3-15,主要控件类型、ID和对应的成员变量及说明如表3-16所示。
图3-15请假记录属性页
表3-16请假记录属性页控件列表
:
IDCEDTLEAVESTARTTIME
mstrSTime
IDCEDTLEAVEENDTIME
mstrETime
IDCEDTLEAVEPERSONID
IDCEDTLEAVEPERSONNAM
EmstrPersonName
IDCEDTLEAVEREASON
mstrReason
请假原理
IDCBTNLEAVEADD
IDC_EDT_LEABE_DELETEATTE
N无
IDCEDTLEABESEEKIO
“按条件检索”
按钮
IDC_LIST3
界面的初始化、列表框的更新、员工的检索、删除所选记录和条件检索的功
能与前面加班记录相应的功能类似,代码稍作修改即可。
添加记录的代码如下:
见附录【20】
3.9出差记录属性页的创建
请假记录属性页圭寸装类为从CPropertyPage继承的Cpage4类。
界面设计如图3-17,主要控件类型、ID和对应的成员变量及说明如表3-18所示。
卩融亲宁
i时间范is;
|竊辑至|骗辑具体拯述:
|员工号:
|编辑
员工姓名:
帽辑
济加1
图3-17出差记录属性页
表3-18出差记录属性页控件列表
IDCEDTLEAVEDESCRIBE
mstrDescribe
具体描述
IDC_EDT_LEABE_SEEKIO
出差记录与请假记录的功能基本一致。
3.10考勤统计对话框的创建
考勤统计对话框界面设计如图3-19所示,主要控件类型、ID和对应的成员变量及说明如表3-20所示。
图3-19考勤统计对话框
表3-20考勤统计控件列表
IDCSTATTIME
r统计年月
DataTime
IDC_STAT_DATETIMEPICKER_STARTTIME
m_strTime
开始时间
IDC_STAT_DATETIMEPICKER_ENDTIME
m_STime
ProgressControl
IDC_STAT_PROGRESS
m_ETime
进度条
IDCSTATBTNSTAT
mcProgress
IDCSTATCHKSEEKBYTIME
mbSeekbytime
按年月检索
IDCSTATCHKSEEKBYPERSON
mbSeekbyperson
按员工检索
IDCSTATEDTSEEKTIME
mstrSeektime
检索年月
IDC_STAT_EDT_SEEKPERSONID
检索员工号
IDCSTATEDTSEEKPERSONNAME
mstrPersonName
请假原因—
IDCSTATBTNSEEK
“检索”按钮
IDC_STAT_LIST
记录列表
列表框的初始化和数据更新和前面类似。
初始化时设置缺省时间,修改构造函数如下:
见附录【21】
当输入员工号时,检索员工,用于确认输入。
见附录【22】
“检索”按钮的处理代码如下:
见附录【23】
统计过程主要是记录判断过程,代码如下:
见附录【24】
第4章系统的实现
各对话框设计完成后,运行程序,查看结果。
系统启动后,首先出现的是登录对话框,如图4-1。
图4-1登录对话框
在输入用户名和密码并登录后,系统会从数据库中提取相应记录,来判断用
户和密码权限是否匹配,如果不匹配,会弹出对话框提示,如图4-2。
图4-2认证失败提示信息
登录成功后,会出现如图4-3所示的主对话框
图4-3主对话框
到登录对话框,并且会隐藏主对话框;
“退出”按钮直接退出应用程序;
“设置”按钮用来弹出上下班时间设置对话框;
“出勤记录”按钮用来弹出考勤修改对话框;
“统计”用来弹出统计对话框。
图4-4显示的是单击“设置”按钮弹出的时间设置对话框。
图4-4时间设置对话