2023年11月30日发(作者:)
人事考勤管理系统
学生姓名
学 号
所 在 系
专业名称
班 级
指导教师
内容摘要
在如今科技腾飞的日子里,伴随着时代的进步,日益庞大的企业,怎样有效的管理
企业人才的个人信息,已经变成一个不容忽视的问题。随着计算机在生活与办公中的渗
透,利用计算机来改变以往的传统模式已经势在必行,开发一个人事考勤管理系统显得
尤为重要.本系统为公司的有效管理提供了一个良好的解决方案。该系统采用了C++作为
编程语言,选用SQL Server 2008作为数据库服务器,以AOD来完成数据前后台交互.本
系统实现了对部门、员工的基本信息的维护和管理,在考勤模块录入员工当天的考勤状
况,可对时间和员工进行查询,还可以在考勤汇总模块对员工考勤进行汇总,计算出员
工的考勤状况。
关键词管理企业 人事考勤 数据库服务器
:
I
Abstract
In today’s science and technology take off days, along with the progress of The Times,
growing enterprises, how to effectively management enterprise talented person’s personal
information, has become a problem that nots allow to ignore。 With computer penetration in
the life with the office, using the computer to change the traditional model of ever have is
imperative, to develop a hr attendance management system is particularly important. This
system for the company’s effective management provides a good solution. The system USES
the c + + as a programming language, choose the SQL Server 2008 as the database Server,
AOD to complete data interaction at the front desk and the background. The system
implementation for the basic information of the maintenance department, the employees and
management, the attendance module entry employees attendance status that day, and can be
queried for time and employees, also can be in the attendance summary module for
employees' attendance summary,calculate the employee's attendance status.
Keywords Management of enterprise Personnel attendance record The database server
:
。
II
目 录
前言
1 开发工具及技术
1。1 C++的介绍 ........................................................................................ 1
1。2 C++的发展历程 ................................................................................ 1
1.3 C++的语言特点 ................................................................................... 2
1。4 SQL server 2008 ....................................... 2
1.5 ADO .................................................. 3
2 系统分析
2.1需求分析 .............................................................................................. 4
3 系统设计
3。1 系统目标 .......................................................................................... 5
3。2 系统功能结构 .................................................................................. 5
3。3 系统预览 .......................................................................................... 5
3.3.1部门管理模块 .................................................. 5
3。3.2用户管理模块 ................................................. 6
3.3。3人员信息管理模块 ............................................. 6
3.3.4 考勤管理模块 ................................................. 7
3。3.5考勤汇总查询模块 ............................................. 7
4 数据库的设计
4。1数据库分析 ....................................................................................... 8
4.2 数据库的逻辑设计 ............................................................................. 8
4.3部门信息表(tab_Dept) .................................................................... 9
4。4考勤信息表(tab_check) .................................................................. 9
4。5员工信息表(tab_Employees) ......................................................... 9
III
5 详细设计
5。1 公共类的设计 ................................................................................ 10
5。2 主题窗口设计 ................................................................................ 11
5.3 用户登录模块设计 ........................................................................... 11
5.3。1具体分析 .................................................... 12
5.3。2实现过程 .................................................... 12
5.4 用户管理模块 ................................................................................... 13
5。4。1 概况 ...................................................... 13
5.4.2具体实现过程 ................................................. 13
5。5 部门管理设计 ................................................................................ 14
5.5。1 概述 ....................................................... 14
5.5.2 实现的过程 .................................................. 14
5。5.3主要的实现代码 .............................................. 15
5。6 人员信息管理模块的设计 ............................................................ 15
5.6.1 概述 ........................................................ 16
5.6。2实现过程 .................................................... 16
5.6。3实现代码 .................................................... 16
5.7 考勤管理模块设计 ........................................................................... 18
5.7.1概述 ......................................................... 18
5。7。2 实现的过程 ................................................ 18
5。8 考勤汇总查询模块设计 ................................................................ 20
5。8.1 概述 ....................................................... 20
5.8.2 实现的过程 .................................................. 20
结束语。。....。。。...。.。。。.。.。。.。。......。...。....。.。
23
参考文献。.。.。。。。.。。。..。...。。...。.。。........。.。。...24
IV
人事考勤管理系统
前言
在公司和企业中,考勤作为一个基础的考核条件,扮演者重要的角色.传统的考勤,由人工考勤
或者技工书面记录,其中存在的大量的主观性和人为因素。而且,随着公司规模的逐渐扩大,更多的
员工用传统的方式显得难以管理,耗费了大量的人力、物力、财力,换来的只是众多的错误和漏洞,
使公司的效率大打折扣.
现在是科技腾飞的时代,科技赋予了我们方便和快捷,我们有权利享受这果实。计算机的飞速发
展,已经渗透到各个领域,利用计算机来为我们管理人事考勤,替代传统考勤已经是大势所趋。
现在各行业的发展速度已经难以想象,企业间的竞争早已是没有硝烟的战场,优胜劣汰的残忍
环境中如何让自己的企业崭露头角,客观上来讲对企业的内部管理和运营的效率是非常重要的.这样
来讲的话,人事考勤管理系统是当代企业不可或缺的一个重要的组成部分,是让公司健康发展的重
要工具,万丈高楼平地起,只要把基础搞好了,才能把其他方面做大做强。
人事考勤管理系统更加利于公司的决策者和管理,员工的考勤信息为员工的发展,奖励和处罚
提供了准确的依据。它是公平的,有利于提高员工的积极性和士气,这些直接关乎员工的工作效率,
从而提高公司的整体形象和公司效益
1 开发工具及技术
1.1 C++的介绍
一般来讲,C++是运用非常广泛的一种计算机程序设计语言。本贾尼·斯特劳斯特卢普士博士在美
国AT&T贝尔实验室发明并实现了C++(起初,这类语言被称作“C with Classes”,就是带类的C)。
最初,c++是以c语言增强版出现的,从一开始给C语言增加类,到后来不断的增加新特性。运算符
重载(operator overloading)、多重继承(multipleinheritance)、模板(template)、虚函数(virtual
function)、异常(exception)、RTTI等,一一被列入标准.
还有重要的一点就是,对现在学习C++而言,我们可以认为它是一门独立的语言,相对C语言来
讲,并不完全依赖于他,即使我们不懂c语言,我们可以直接学习C++。我们可以从《C++编程思想》
这本书中对两者的描述可以知道,在效率上来讲,C++与C的差别是非常的小,波动就在-5%到+5%
之间,甚至我们可以这样认为,C++可以在大多数的场合中取代C语言是完全胜任的.
“C++标准委员成立的第一年是1998年,国际标准组织(IOS)在1998年颁布了C++程序设计语言
的国际标准ISO/IEC 1988-1998".C++是具有国际标准的编程语言之一,一般称为ANSI/ISOC++。
C++这个称呼是在1983年中Rick Mascitti的建议,最开始使用时在1983.12使用的。起初,处在
研发阶段曾被称为“new C”,后来被称为“C with Classes”。现在在计算机科学里面,被称作C语
言的上层结构的仍然是C++.C++名字的由来是C语言中的操作符“++”.关于C++的名字的由来,Rick
Mascitt表示他从来没想到这门语言的名字会被称为C++,可以说C++这个名字完全是一个玩笑得来
的.
1.2 C++的发展历程
C++语言的发展大致可以划分为三个阶段:
1
初始阶段,在20世纪80年代到1995年间。在这一阶段的C++语言的类型差不多可以认为是传
统意义上的面向对象的语言,问世时迅速在当时的工业界所使用的众多的开发语言中能够占据了如
此的大份额,说及原因,不得不说是C++效率接近C语言。
第二阶段,1995—2000,在这5年间,该阶段因为Boost和标准模板库(STL等程序库的相继问
世,在C++中的比重,泛型程序设计占据的越来越多.与此同时,因为Java、C#等语言的先后出现
和大规模下降的硬件价格,C++的比重受到了一定量的冲击.
最后阶段,2000年到现在,因为以MPL、Loki为代表等程序库模板元编程的问世和产生式编程
产生,C++再次迎来了发展史上的另一个辉煌,原有技术和这些新技术的相继出现的完美结合,C++
已经成为当今主流编程语言名副其实最复杂的一员。
1.3 C++的语言特点
设计成静态类型机制、具有和C程序设计语言同样高效且可移植的多用途.
设计成直接的、广泛的支持多种程序设计的风格(面向对象程序设计、泛型程序设计、程
序化程序设计、资料抽象化)。
尽管也许会导致程选择错误,仍设计成给程序设计者更多的选择性。
为了提供了一个从C到C++的平滑过渡,尽可能与C兼容。
尽可能的避免没有普遍性和平台限定的一些特性。
不使用带来额外特性的开销.
简单的程序设计环境即可设计。
C++的很多特性都是以库、等方式提供的,所以它具有运行的高效性和简洁性。
在多数情况下C++可以和C完美的结合,甚至可以夸张的认为,现今大多数C语言程序的
完成都是在C++的集成开发环境中实现的。它更具有相当高的性能,相对于现在如此多的其他面向
对象的语言.
在引入了面向对象的概念,使得设计人员在开发人机交互这类程序变得更加轻松,效率。
有很多优秀的程序框架包括wxWidgets、MFC、QT就是使用C++完成的.
1.4 SQL server 2008
可以说SQL Server 2008是一个重大的产品版本,相比之前,它推出了许多关键的改进和新的
特性,这些地方使得它成为至今为止的最强大和最全面的SQL Server版本.现如今在数据满天的世
界里,如果公司想要获得成功和不断发展,那么他们需要定位主要的数据趋势的愿景。微软解决了这
个愿景,这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。不满足
于现状,微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平
台、动态开发、关系数据和商业智能
现如今,会有许多因素致使产生了信息存储爆炸。会有了新的信息类型,例如视频和图片的数字
化,和从RFID标签获得的传感器信息,这些都会导致公司的数字信息的数量急剧增长。对此的要求
2
是,遵守规范和全球化的发展要求信息存储的安全性和随时都可以使用。现在磁盘存储的成本大幅
度的降低了,这样可以让公司投资的每一分钱相比以前可以存储更多的数据。在这些庞大的数据中,
用户必须迅速准确的找到相关的信息.除此之外,他们还希望在任何设备上都能够使用这些信息,而
且计划每天使用,比如Microsoft Office系统应用程序等。这些要求都对数据爆炸的现在和用户期
望值的升高的管理,为公司新添了更多的挑战。
为满足这些需求,Microsoft® 数据平台为这些想要的需求提供了解决方案--公司能够储存和管
理多种数据类型,与此同时提供拥有各种的服务集合来与这些数据交互影响:数据分析和整合、查
询、搜索、报表,和强大的同步功能.使得用户能够了解从最初创建到存档于的所有设备的信息,不
限于桌面或者移动设备,两者都可以。
SQL Server 2008能够让各个公司运行自己最关键任务的应用程序,还降低了数据维护与发送
给用户观察信息的成本。
这个平台有以下特点:
可信任的,这样使得公司运行自己最关键的任务的程序,具有更安全,更可靠和更好的可扩
展性
高效的,降低公司的维护成本和实践
智能的,提供了在任何时候想要查看和观察的全面平台。
1。5 ADO
Microsoft提出的应用程序接口(API),ADO (ActiveX Data Objects,ActiveX数据对象)是
用以访问数据库中关系数据或者非关系的数据。譬如,假如你希望你编写的程序能够从DB2或Oracle
数据库中向网页提供数据的话,能够把活动服务器页即ASP的HTML文件中ADO程序包括在内。在我
们从网站请求访问网页同时,返回的页面也包含了数据中相对应的数据,当然,这些都是运用了ADO
代码的原因。
ADO是面向对象的,就像微软其它系统接口一样.它是微软全局数据访问(UDA)的其中一部分,
Microsoft也认为与其自己创建一个数据,还不如直接利用UDA访问自己拥有的数据库。因此,为达
到这一目的,微软和其它数据库公司在它们的数据库和微软的OLE数据库之间提供了一个 “桥”程
序,ADO技术已经运用在OLE数据库上.网页中的数据相关的ActiveX控件和有效的客户端缓冲是ADO
支持的一个特征(被称为远程数据服务).作为ActiveX的一部分,ADO也是Microsoft的组件对象
模式(COM)的一部分.
从原来的Microsoft数据接口远程数据对象(RDO)而来的ADO。ODBC与RDO共同工作访问关系
数据库,却不能访问如VSAM和ISAM的非关系数据库。
可以说当前Microsoft对自己所支持的数据库,最简单有效的操作就是ADO,它是一种功能强
3
大的数据访问编程模式,这样可以使大部分数据源可编程的属性直接扩展到你的Active Server 页
面上得以实现。可以使用ADO 去编写紧凑简明的脚本以便连接到 Open Database
Connectivity (ODBC) 兼容的数据库和 OLE DB 兼容的数据源,这样 ASP 程序员就可以访问任
何与 ODBC 兼容的数据库,包括 MS SQL SERVER、Access、 Oracle 等等。
微软介绍说,ADO是一种面向对象的编程接口,同Oracle和IBM倡导的那样,与其创建一个统
一数据库,还不如提供一个能够访问不同数据库的统一接口,这样做的话会更加实用一些。微软在
数据库和微软的OLE DB中提供了一种“桥”程序,用以实现这一目标,这种程序能够提供对数据库的
连接.当开发人员在使用ADO时,本质上将就是在使用OLE DB,但是OLE DB更加接近底层。ADO的一
项属性,远程数据服务,支持“数据仓库"ActiveX 组件以及高效的客户端缓存。因为是ActiveX
的一部分,所以ADO也是COM组件的一部分。早期的微软数据接口远程数据对象RDO演化成的ADO。
RDO同微软的ODBC一同连接关系数据库,不过不能连接非关系数据库。
ADO提供了一个我们熟知的,高层的对OLE DB的Automation封装接口。对那些熟悉RDO的程
序员来讲,甚至可以把OLE DB当做是ODBC驱动程序。就像RDO对象是ODBC驱动程序接口一样,那
么ADO对象就是OLE DB的接口;相似于不同的数据库系统需要它们自己的ODBC驱动程序一样,不
同的数据源也要求它们自己的OLE DB提供者(OLE DB provider)。现今,即使OLE DB提供者比较少,
但是微软正积极推广该技术,计划用OLE DB取代ODBC.
2 系统综合分析
2.1需求分析
针对人事考勤管理过程的认真研究,对本系统有如下要求:
用户登录功能
部门信息录入功能
人员信息管理功能
考勤信息录入功能
考勤信息汇总功能
2.2系统的功能描述
如果用户需要登录,登录的用户必须输入用户名和密码,通过验证后才能进入人事考勤管理系
统,才能维护和管理各个部门、员工的基本信息.当我们需要在该模块中录入员工当天的考勤信息,
只需打开考勤管理模块,然后进行操作,并且可以根据需要同时查询按照查询条件:员工、年或者
月。此外,想要查询某个员工在某月的全部考勤记录,只需在考勤汇总模块中对这位员工的考勤记
录进行汇总,该员工本月的考勤记录—-迟到、早退、工作的天数将一目了然.
4
3 系统的设计
3.1 系统目标
本系统以实现职员日常工作信息管理为设计目标,为了最大限度的提高人事部门的日常工作效
率,我们使用强大的数据库管理功能来支持.我们这款人事考勤管理系统设计时必须满足以下几点要
求:
让我们在查询信息的过程中,相比传统必须更加的方便快捷,并且结果更加准确,让我们存
储的信息更加安全可靠。
减少繁琐的操作,让我们对考勤信息进行简单的操作,对数据的操作更加的方便.
根据需要要求能够录入职员和部门的信息。
能够按月汇总并且计算员工的考勤信息。
大大减少操作过程中的人为错误,必须严格检验用户输入的数据。
让系统更加容易上手,数据的维护更加的方便。
必须让本系统更加稳定的运行,让存储在本系统的数据更加安全可靠.
3.2 系统功能结构
实现本系统的具体功能结构如下:
图3。2-1 人事考勤管理系统结构
3.3 系统预览
各种功能模块组成功能强大的本系统,如图所示为本系统的典型模块列:
3.3.1部门管理模块
顾名思义主要用途是管理各种部门间的信息;如下:
5
图3。3。1—1 部门管理模块
3.3.2用户管理模块
此模块的功能主要是用于对录入各用户的操作管理,如下:
图3.3。2-1 用户管理模块
3。3。3人员信息管理模块
录入员工基本信息的管理就全部倚仗本模块的运作,如下:
6
图3。3。3-1 人员信息管理
3。3。4 考勤管理模块
此模块用于记录录入职员考勤的各种信息,如下:
图3。3。4—1 考勤管理模块
3.3。5考勤汇总查询模块
本模块用于对录入所有志愿的考勤信息进行汇总,如下:
7
图3.3.5—1 考勤汇总查询
4数据库的设计
4。1数据库分析
该人事考勤管理系统采用了SQL Server 2008 数据库,数据库名称为th_person 在数据库中建
立四个表存储不同的信息:
图4.1—1 数据库
4.2 数据库的逻辑设计
管理信息表(tab_user):
8
图4。2-1 信息管理表
4。3部门信息表(tab_Dept)
图4.3—1 部门信息表
4.4考勤信息表(tab_check)
图4.4-1 考勤信息表
4.5员工信息表(tab_Employees)
9
图4。5-1员工信息表
5 详细设计
5。1 公共类的设计
由于本系统采用了ADO的连接数据库。为了能够更加方便的使用ADO建立数据库连接并进行相
应的数据操作,在公共类中对系统中使用的ADO的操作进行封装。在这个系统中建立了ADO的两个
公共类CADOConnection和CADODataSet,这两个公共类定义的ADO。h的头文件中,在在ADO。cpp
文件中实现.
a) CADOConnection类
我们链接数据库使用CADOConnection类,为了实现对_Connection接口的封装。CADOConnection
类在头文件中的定义如下:
BOOL IsOpen();//判断是否与数据库连接
_ConnectionPtr GetConnection();//获取连接接口
CString GetSQLConStr();//获取SQL连接字符串
BOOL Open(CString ConStr);//建立数据库连接
CADOConnection类的主要实现代码如下:
CADOConnection * GetConnection()//GetConnection函数是一个全局函数,用于返回全局数据
库连接对象的的指针
10
CADOConnection::~CADOConnection()//~CADOConnection方法是构造方法,用于取消OLE 的初
始化和释放_Connection接口指针
BOOL CADOConnection::Open(CString ConStr)//通过指定的数据库连接字符串于SQL数据库建
立连接
BOOL CADOConnection::IsOpen()//判断当前数据库连接对象与数据库的连接状态
b) CADODataSet类的实现如下:
CADODataSet::CADODataSet()//该方法为记录集实现类的构造方法,在该方法中实现记录集
接口对象的创建
CADODataSet::~CADODataSet()//实现记录集的关闭与接口的释放
void CADODataSet::SetFieldValue(CString FieldName, _variant_t Value)//想记录集中指定的
字段赋值
5。2 主题窗口设计
主题窗口由菜单和图片组成,如下图:
图5。2—1 主题窗口
主体窗口设计步骤:
运行vc++,创建MFC,输入工程名称,设置好保存路径,点击OK按钮后打开MFC对话框,选择
对话框编程。向工程中导入位图。
5。3 用户登录模块设计
每个管理系统都应有登录界面,下面是本系统的登录模块:
11
图5。3—1 登录界面
5.3。1具体分析
窗体应该在主体窗创建之前并显示,在登录窗体创建的的同时应该建立数据库连接,主要操作
如下:
BOOL bCon = 、GetConnection()—〉Open(GetConnection()—〉GetSQLConStr());
CLoginDialog logindlg;
if (logindlg。DoModal() != IDOK)
return false;
::CoInitialize(NULL);
CPersonDlg dlg;
5.3.2实现过程
先建立一个对话框
添加两个静态文本控件,两个按钮控件和一个编辑控件.设置编辑控件类型为password,两个
静态文本控件分别设置caption为用户名和密码,两个按钮分别设置为确定和取消。
在窗体初始化方法中创建用户表的数据,同时将用户点加到列表框控件中,主要涉及代码如
下:
CDialog::OnInitDialog();
m_nection(GetConnection());
m_DataSet。Open("Select * From Tab_User”);
int count = m_DataSet。GetRecordCount();
m_UserList。SetCurSel(0);
12
return TRUE; // return TRUE unless you set the focus to a
确定按钮主要代码:
CString sql,user,pass;
m_UserList。GetWindowText(user);
m_PassWord。GetWindowText(pass);
(”Select * From tab_user Where UserName = '%s'
5。4 用户管理模块
5.4。1 概况
能实现添加,删除,修改等操作,如下图:
图5。4.1-1 用户管理
5.4.2具体实现过程
➢ 创建一个对话框
➢ 向对话框中添加相应的控件
➢ 给对话框添加对话框类
➢ 给类添加函数及成员变量
➢ 给控件关联变量
➢ 编写函数
5。4。3 代码实现
a) 定义UpdateGrid方法用来更新列表视图中的主要涉及的信息代码如下:
m_("Select * From tab_User”);
13
m_AllItems();
b) 添加按钮的主要代码如下:
CUserEdit useredit; m_ldValue("UserName",
(_bstr_t)
c) 删除按钮主要代码如下:
void CUserManage::OnDelete()
if (MessageBox("是否删除此记录!”,”提示”,
MB_YESNO|MB_ICONWARNING) == IDYES)
d) 修改按钮主要代码如下:
void CUserManage::OnEdit()
CUserEdit useredit;
int no = m_grid。GetItemData(m_grid。GetSelectionMark());
m_(no-1);
= (char *)(_bstr_t)m_lds() —〉 Item[L"UserName”]
—〉Value;
5。5 部门管理设计
5。5.1 概述
记录部门的信息和部门之间的层次结构,使用树控件实现,如下图:
图5。5.1-1部门管理
5.5.2 实现的过程
➢ 创建一个对话框
➢ 向对话框中添加相应的控件
14
➢ 给对话框添加对话框类
➢ 给类添加函数及成员变量
➢ 给控件关联变量
➢ 编写函数
5。5.3主要的实现代码
A. BOOL CDeptManage::OnInitDialog() //初始化函数
CDialog::OnInitDialog();
m_nection(::GetConnection());
B. 把部门信息一次性读入树控件中。代码如下:
void CDeptManage::GetNode(HTREEITEM pNode, int nPid)
HTREEITEM node;
CADODataSet DataSet;
DataSet。SetConnection(::GetConnection());
str。Format(”Select * From tab_Dept where pid = %d”,nPid);
DataSet。Open(str);
m_tree。InsertItem((_bstr_t)DataSet。GetFields()-〉Item[”DeptName"]—>Value,
pNode);
C. 我们定义GetNode方法,主要用于获取部门表中按成次级关系的所有数据,并添加树控件,
该方法由UpdateDept方法进行调用,主要代码如下:
dataset。Open("Select top 1 * From tab_Dept");
ldValue(”memo",(_variant_t));
D. 点击修改同时弹出修改本门窗口,点击确定后能够保存修改的信息,主要代码如下
= (char *)(_bstr_t)lds()->Item[L”DeptName"]
—>Value;
= (char *)(_bstr_t)dataset。GetFields()->Item[”memo”]-〉Value;
if (deptedit。DoModal() == IDOK)
E. 删除按钮,用于删除选中节点,主要代码如下:
void CDeptManage::OnDelete()
HTREEITEM pNode = m_tree。GetSelectedItem();
if (MessageBox(”是否删除此记录!","提示",
MB_YESNO|MB_ICONWARNING) == IDYES)
15
5.6 人员信息管理模块的设计
5.6.1 概述
本模块可以根据部门分类显示人员,并且能够同时对人员信息进行维护,如下图:
5.6。1-1人事信息管理
5.6。2实现过程
➢ 创建对话框
➢ 向对话框中添加相应的控件
➢ 给对话框添加对话框类
➢ 给类添加函数及成员变量
➢ 给控件关联变量
5.6.3实现代码
我们使用GetNode方法用来获取部门信息,并且在树控件中添加。此种我们用UpdateDept调用,
主要代码如下:
nection(::GetConnection());
str。Format("Select * From tab_Dept where pid = %d”,nPid);
int count = DataSet。GetRecordCount();
value = (_variant_t)DataSet。GetFields()-〉Item[”ID"]->Value;
UpdateDpt调用GetNode,实现信息更新,主要代码如下:
void CPersonManage::UpdateDept()
m_tree。DeleteAllItems();
node = m_tree。InsertItem(”全部",TVI_ROOT);
m_tree。SetItemData(node,—1);
16
我们使用UpdatePerson用来更新人员的信息,而且实现在列表控件中显示,主要代码如下:
DataSet。SetConnection(::GetConnection());
value = lds()->Item["AutoID"]—〉Value;
m_list。SetItemText(n,index++,(_bstr_t)lds()—〉Item
[”Emp_NAME"]—〉Value);
当我们点击“添加”按钮时,能够弹出人员编辑窗体,当我们输入员工的个人信息完成后,点
击“保存”后,能够实现人员的添加,主要代码如下:
personedit。m_DeptData = m_DeptID;
if (l() == IDOK)
nection(::GetConnection());
CString str = ”select top 1 * from tab_Employees";
。 dataset。SetFieldValue("Emp_Id”,(_bstr_t)personedit.m_id); dataset
SetFieldValue(”Nationality”,(_bstr_t)personedit.m_ationality);
当我们在点击“修改”按钮的时候,能够弹出编辑人员信息的窗体,在输入人员信息之后,点击
“保存”按钮修改人员信息,主要代码如下:
str。Format("select * from tab_Employees where autoid = %d",id);
if (!y())//设置日期数据
if (!hire。IsEmpty())
//设置日期数据
personedit。m_duty=(char*)(_bstr_t)dataset。GetFields()-〉Item[”Duty”]->Value;
personedit.m_DeptData = dataset。GetFields()->Item[”Dept”]-〉Value;
ldValue(”Emp_Id",(_bstr_t)personedit。m_id);
dataset。SetFieldValue(”Nationality”,(_bstr_t)personedit.m_nationality);
ldValue("Duty”,(_bstr_t)personedit.m_duty);
当我们点击“删除”,删除当前选中的职员的记录,主要代码如下;
if (MessageBox("是否删除此记录!",”提示”,
MB_YESNO|MB_ICONWARNING) == IDYES)
int id = m_mData(m_ectionMark());
(”select * from tab_Employees where autoid = %d”,id);
主要初始化函数的代码如下;
m_Column(i,"人员编号”);
17
m_endedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
void CPersonManage::OnSelchangedTreedept(NMHDR* pNMHDR, LRESULT* pResult)
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
m_DeptID = m_mData(pNMTreeView—〉itemNew。hItem);
5。7 考勤管理模块设计
5.7.1概述
能够把所有的人当天的考勤信息录入到本系统中,同时可以对员工的考勤信息根据年、
月以及员工已经录入的考勤记录进行查询,如下图:
图5。7.1-1 考勤管理
5.7。2 实现的过程
➢ 创建对话框
➢ 向对话框中添加相应的控件
➢ 给对话框添加对话框类
➢ 给类添加函数及成员变量
➢ 给控件关联变量
5。7.3主要代码
A. UpdateList方法主要用来更新显示职员的考勤信息,代码如下:
void CCheckManage::UpdateList()
this—>UpdateData();
18
Starttime = m_yy + ”—" + m_mm + "-1” ;
("DATEADD(month,1,’%s')",Starttime);
nection(::GetConnection());
m_list。SetItemText(i,n++,(_bstr_t)dataset。GetFields()—〉Item[”name"]-〉
Value);
B. 我们使用OnAdd的方法,主要用于想给考勤信息表中添加职员的每日的考勤具体数据,
主要代码如下:
ldValue("name",(_bstr_t)checkedit。m_name);
ldValue(”checkdate",(_bstr_t)checkedit。m_datecheck。Format
(”%Y—%m-%d"));
ldValue(”memo",(_bstr_t)checkedit。m_memo);
CTime latetime = DecTime(checkedit.m_timeon,checkedit。m_timeonduty);
("%d:%d:%d”,r
(),ute(),leaveearly。GetSecond());
dataset。SetFieldValue(”leaveearly”,(_bstr_t)time);
C. 我们主要使用OnEdit的方法,编辑职员在考勤信息表中的每天的考勤记录,主要代码如
下:
int id = m_list。GetItemData(m_list。GetSelectionMark());
CCheckEdit checkedit;
dataset。SetConnection(::GetConnection());
checkedit.m_name = (char *)(_bstr_t)dataset。GetFields()-〉Item["name"]->Value;
checkedit。m_timeonduty = GetTimeForStr((char
ldValue(”leaveearly",(_bstr_t)time);
D. 我们利用OnDelete方法删除已经选中的人事考勤记录,主要代码如下:
void CCheckManage::OnDelete()
if (MessageBox("是否删除此记录!","提示",
MB_YESNO|MB_ICONWARNING) == IDYES)
str。Format(”select * from tab_check where autoid = %d”,id);
void CCheckManage::OnCheck1()
BOOL CCheckManage::OnInitDialog() //初始化函数
m_list。SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
19
this-〉UpdateData(false);
for (int index = 1 ; index 〈= ordCount() ; index++)
m_cemp。InsertString(index,(_bstr_t)dataset。GetFields()—>Item[”emp_name”]
->Value);
5.8 考勤汇总查询模块设计
5。8.1 概述
该模块将员工日常录入的考勤信息根据时间段和人员进行汇总查询,同时显示职员当月
迟到天数和出勤天数,如下图:
图5.8。1—1考勤汇总查询
5.8.2 实现的过程
➢ 创建对话框
➢ 向对话框中添加相应的控件
➢ 给对话框添加对话框类
➢ 给类添加函数及成员变量
➢ 给控件关联变量
5.8.3 实现的相关代码
A. 我们使用UpdateList方法用于更新考勤汇总查询的数据。主要代码如下:
EndDate。Format(”DATEADD(month,1,'%s')”,StartDate);
(" between ’%s’ and %s",StartDate,EndDate);
temp += "select _name ,ROUND(isnull(works。workday,0),2)";
20
temp += " workday,ROUND(isnull(lates。lateday,0),2) lateday,”;
B. 主要初始化函数的代码:
m_list。InsertColumn(i,"人员姓名");
m_endedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
结束语
本程序经过实际的测试和运行,总的来讲基本上能够满足中小型人事考勤的要求,使用方便简洁,
对数据和日志应该定期的做备份,定期清理无效数据,提高运行效率.
通过这次毕业课题的设计,让我我学到不少东西,同时也让自己了解到,只是学会课本上的东西是
多么的不足,只有懂得如何运用所学知识才是真正的优秀,否则一切都是纸上谈兵,只有通过自己
多扩展、多吸收新的知识,才能让自己的能力有所提高。
虽然本系统的设计达到了毕业设计的要求,大大小小存在一些不足也是显而易见的,还存在大量的
可扩展空间,后续根据市场的需求,来完成各个实际需要的模块,并加以实现.
首先感谢我尊敬的指导老师王老师,没有老师的帮助我难以如期完成此次设计。在学习阶段,
王老师渊博的知识、严谨的治学态度、实事求是的精神和耐心细心的作风让我铭记在心,我非常荣
幸的能够得到王老师的细心指导。在本次毕业设计选题后,是王老师为我详细的推荐参考资料,在
我课题开展和研究论文开展时都得到王老师的细心指导和帮助.为我提供指导性方案和构架,使我在
这次毕业设计很快的开展,在设计中的大小问题因为导师的信息指导都迎刃而解,最后圆满的完成了
设计任务。在此谨向我的导师致以由衷的敬意和诚挚的谢意!
另外感谢我的授课教师们,感谢他们几年来付出的辛劳,感谢几年来的栽培,是你们的辛勤付
出让我们奠定了扎实的基础,为我们这次毕业设计铺平了道路,让我们顺利的完成学业。也感谢学
院给我们提供这么完善的教学条件和学习生活环境。最后感谢全体同学,谢谢他们在这次毕业设计中
的监督和鼓励,也感谢他们在平日生活和学习上给的帮助,以及带来的充实大学生活.
21
参考文献:
[1] 余建军、刘加海:Visual C++ 程序设计实训教程,北京科学出版社,2003。8, P19-P34
[2] 罗斌:Visual C++编程技巧精选500例,中国水利水电出版社,2005.1, P5—P14
[3] 刘锐宁:Visual C++项目开发案例全程实录/明日科技,清华大学出版社,20011。1 , P120—
P140
[4] 王运坚、冯锋:Visual Basic程序设计基础教程,西安电子工业出版社,1999。5, P31—P42
[5] 刘醒、何斌:Visual basic 应用指南,成都四川大学出版社,1998。6, P15-P27
[6] 孙鑫:VC++深入详解,电子工业出版社. 2012.7, P112-P131
[7] 管西京:深入体验VC++项目开发,清华大学出版社,2011。1,P41-P58
[8] 张富:C及C++程序设计,北京人民邮电出版社,2008.10,p56—P67
22


发布评论