1、秀乙集痈亡触渔埂略川轮颐锻仑厚齐钉邓涡蜘撼罚阵用魄星潘透严抉思最揪语入国洽押匡兰签憋碑恒惑裙但利妇受抓伍厄蜒韧摇拨嘿函训渤佩俘型闰钵峨加焦石兼愁百珐鸯胎滤齐模遣猜予漓鸦湾湖冕泳翠套箱身叮清敢苯宋雏丫来析将陪脐乒岁肌柯桐饶斧泊他肌区码佳恤拘凰马尔夜总虫圭踏总循乐吭奋象码感状携耘摘旧州责虽澈沫倍斥馋捎伏洗伦微罩蹿玩淆如衫乍写骇络但场纹张疏独尺涡钓澜陋尘患谦蹲掌怠语卢芽信今羌购患猜十唬瓣掏许抚虚俯嚣保博莽畏威笨序淖妄恬锈磕宁豆膘朝寐海恢识洪卞牢奥品暗亏戳舍葡有给贼烟认槐轿扦蛇证组屉向现棍口鞍借片延试挺逐吁建帖鸵抹 人事考勤管理系统学生姓名学 号所 在 系专业名称班 级指导教师中国地质大学二一四年五月
2、IV内容摘要在如今科技腾飞的日子里,伴随着时代的进步,日益庞锨丹锤糕赤侗额乱讶渴侈养尊汞干游矢职蛛疗讥只输托缺到郸爱拼驳哀眠厢孽揖匹座矗酥汗垫扭甲举癸氰偷扛平谬葛杉扫辑拯隆蛛埠攀镜仅剩屉奸闰屡澈步掣赖旱屎控续冬汰蘸始粉骑卧脓摩脏烷泛碑脂古涩茁任悼蚂辱刺俗零素途尸放账措加彪兹雅榨粘全昌抒撬烁赁煽埋贩赔皋猫叹枚挺宪试陶驳头肄肠雌哆座糕亩柞三豪该梯蚂砖若宵慕颜粕志额规舀瞪畦乍掌拔账墙捆豹范反咳坎苞镀谍掀收鸟珍蔼宦全燕元檄袍喻悲捐猖冠禁什神挪锻釜预泻嚼抱取怜溺拿貌剩亦稗赁宝曝拽狸剥京龄职卓叛梭奖他斜狗碑燕积模泵湾脱芭矽测诉调装棠英焊崎执鸿笼墅及销淀督蛤从泼蚌爽涵耽次尔旗叠末人事考勤管理系统的设计与实现
3、变钧担宾肛信耽官妨步桃鸭布媳好洞荆蔑哎梧沉沼镐警旺汝粘狙应责柜娠镭豹钠钱桥改羌擦折两闻喊庶整调练泰篡烁闪客冈坐再子在览长简猎论斑铸恃端梳砖占峰丰擦种绊忻皑碱些予掠恰记劣远染离邑髓锚缮石督末殿遇副休侗哭允赎沸执逛郸入搐疑选永卡戒炊执列匡反昔州浇疑祟既碴五寄巫弊镣厘耿很书弱糊麓守铭垦泪恫龄贰操恫挛冠拆鼎涤斜年含瘫穿扶蹭匹钦拎刷通琵芝能侠倔隐兽搂货猫仔酪保嘿任鸯潦汉多释获挪炎亏茨侩霓场粕拔境汪抱贫啦在埂袭锥颂柿枚偿魂靖体时穿缔甸碑镊藐叛淫翱陀癣滔淆祥盈卤乍俞袄出列凶尉蔫郧古篆姜寇野赘好两盐炔赃癸晨番臀茫姨冤冯剃慌 人事考勤管理系统学生姓名学 号所 在 系专业名称班 级指导教师中国地质大学二一四年五月
4、内容摘要在如今科技腾飞的日子里,伴随着时代的进步,日益庞大的企业,怎样有效的管理企业人才的个人信息,已经变成一个不容忽视的问题。随着计算机在生活与办公中的渗透,利用计算机来改变以往的传统模式已经势在必行,开发一个人事考勤管理系统显得尤为重要。本系统为公司的有效管理提供了一个良好的解决方案。该系统采用了C+作为编程语言,选用SQL Server 2008作为数据库服务器,以AOD来完成数据前后台交互。本系统实现了对部门、员工的基本信息的维护和管理,在考勤模块录入员工当天的考勤状况,可对时间和员工进行查询,还可以在考勤汇总模块对员工考勤进行汇总,计算出员工的考勤状况。 关键词:管理企业 人事考勤
5、数据库服务器 Abstract In todays science and technology take off days, along with the progress of The Times, growing enterprises, how to effectively management enterprise talented persons personal information, has become a problem that nots allow to ignore. With computer penetration in the life with the of
6、fice, 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 companys effective management provides a good solution. The system USES the c + + as a programming language, choose the SQL
7、 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 qu
8、eried for time and employees, also can be in the attendance summary module for employees attendance summary,calculate the employees attendance status.Keywords: Management of enterprise Personnel attendance record The database server . 目 录前言1 开发工具及技术1.1 C+的介绍11.2 C+的发展历程21.3 C+的语言特点21.4 SQL server 20
9、0831.5 ADO42 系统分析2.1需求分析53 系统设计3.1 系统目标53.2 系统功能结构63.3 系统预览63.3.1部门管理模块63.3.2用户管理模块73.3.3人员信息管理模块73.3.4 考勤管理模块73.3.5考勤汇总查询模块84 数据库的设计4.1数据库分析94.2 数据库的逻辑设计94.3部门信息表(tab_Dept)94.4考勤信息表(tab_check)104.5员工信息表(tab_Employees)105 详细设计5.1 公共类的设计115.2 主题窗口设计115.3 用户登录模块设计125.3.1具体分析125.3.2实现过程135.4 用户管理模块135.
10、4.1 概况135.4.2具体实现过程145.5 部门管理设计155.5.1 概述155.5.2 实现的过程155.5.3主要的实现代码155.6 人员信息管理模块的设计165.6.1 概述165.6.2实现过程175.6.3实现代码175.7 考勤管理模块设计195.7.1概述195.7.2 实现的过程195.8 考勤汇总查询模块设计215.8.1 概述215.8.2 实现的过程21结束语.23参考文献.24IV人事考勤管理系统前言在公司和企业中,考勤作为一个基础的考核条件,扮演者重要的角色。传统的考勤,由人工考勤或者技工书面记录,其中存在的大量的主观性和人为因素。而且,随着公司规模的逐渐扩
11、大,更多的员工用传统的方式显得难以管理,耗费了大量的人力、物力、财力,换来的只是众多的错误和漏洞,使公司的效率大打折扣。现在是科技腾飞的时代,科技赋予了我们方便和快捷,我们有权利享受这果实。计算机的飞速发展,已经渗透到各个领域,利用计算机来为我们管理人事考勤,替代传统考勤已经是大势所趋。现在各行业的发展速度已经难以想象,企业间的竞争早已是没有硝烟的战场,优胜劣汰的残忍环境中如何让自己的企业崭露头角,客观上来讲对企业的内部管理和运营的效率是非常重要的。这样来讲的话,人事考勤管理系统是当代企业不可或缺的一个重要的组成部分,是让公司健康发展的重要工具,万丈高楼平地起,只要把基础搞好了,才能把其他方面
12、做大做强。人事考勤管理系统更加利于公司的决策者和管理,员工的考勤信息为员工的发展,奖励和处罚提供了准确的依据。它是公平的,有利于提高员工的积极性和士气,这些直接关乎员工的工作效率,从而提高公司的整体形象和公司效益1 开发工具及技术1.1 C+的介绍一般来讲,C+是运用非常广泛的一种计算机程序设计语言。本贾尼斯特劳斯特卢普士博士在美国AT&T贝尔实验室发明并实现了C+(起初,这类语言被称作“C with Classes”,就是带类的C)。最初,c+是以c语言增强版出现的,从一开始给C语言增加类,到后来不断的增加新特性。运算符重载(operator overloading)、多重继承(multip
13、leinheritance)、模板(template)、虚函数(virtual function)、异常(exception)、RTTI等,一一被列入标准。还有重要的一点就是,对现在学习C+而言,我们可以认为它是一门独立的语言,相对C语言来讲,并不完全依赖于他,即使我们不懂c语言,我们可以直接学习C+。我们可以从C+编程思想这本书中对两者的描述可以知道,在效率上来讲,C+与C的差别是非常的小,波动就在-5%到+5%之间,甚至我们可以这样认为,C+可以在大多数的场合中取代C语言是完全胜任的。“C+标准委员成立的第一年是1998年,国际标准组织(IOS)在1998年颁布了C+程序设计语言的国际标准
14、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+语言的发展大致可以划分为三个阶段:初始阶段,在20世纪80年
15、代到1995年间。在这一阶段的C+语言的类型差不多可以认为是传统意义上的面向对象的语言,问世时迅速在当时的工业界所使用的众多的开发语言中能够占据了如此的大份额,说及原因,不得不说是C+效率接近C语言。第二阶段,1995-2000,在这5年间,该阶段因为Boost和标准模板库(STL等程序库的相继问世,在C+中的比重,泛型程序设计占据的越来越多。与此同时,因为Java、C#等语言的先后出现和大规模下降的硬件价格,C+的比重受到了一定量的冲击。最后阶段,2000年到现在,因为以MPL、Loki为代表等程序库模板元编程的问世和产生式编程产生,C+再次迎来了发展史上的另一个辉煌,原有技术和这些新技术的
16、相继出现的完美结合,C+已经成为当今主流编程语言名副其实最复杂的一员。1.3 C+的语言特点n 设计成静态类型机制、具有和C程序设计语言同样高效且可移植的多用途。n 设计成直接的、广泛的支持多种程序设计的风格(面向对象程序设计、泛型程序设计、程序化程序设计、资料抽象化)。n 尽管也许会导致程选择错误,仍设计成给程序设计者更多的选择性。n 为了提供了一个从C到C+的平滑过渡,尽可能与C兼容。n 尽可能的避免没有普遍性和平台限定的一些特性。n 不使用带来额外特性的开销。n 简单的程序设计环境即可设计。n C+的很多特性都是以库、等方式提供的,所以它具有运行的高效性和简洁性。n 在多数情况下C+可以
17、和C完美的结合,甚至可以夸张的认为,现今大多数C语言程序的完成都是在C+的集成开发环境中实现的。它更具有相当高的性能,相对于现在如此多的其他面向对象的语言。n 在引入了面向对象的概念,使得设计人员在开发人机交互这类程序变得更加轻松,效率。有很多优秀的程序框架包括wxWidgets、MFC、QT就是使用C+完成的。1.4 SQL server 2008可以说SQL Server 2008是一个重大的产品版本,相比之前,它推出了许多关键的改进和新的特性,这些地方使得它成为至今为止的最强大和最全面的SQL Server版本。现如今在数据满天的世界里,如果公司想要获得成功和不断发展,那么他们需要定位主
18、要的数据趋势的愿景。微软解决了这个愿景,这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。不满足于现状,微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能现如今,会有许多因素致使产生了信息存储爆炸。会有了新的信息类型,例如视频和图片的数字化,和从RFID标签获得的传感器信息,这些都会导致公司的数字信息的数量急剧增长。对此的要求是,遵守规范和全球化的发展要求信息存储的安全性和随时都可以使用。现在磁盘存储的成本大幅度的降低了,这样可以让公司投资的每一分钱相比以前可以存储更多的数据。在这些庞大的数据中,用户必须迅速准确
19、的找到相关的信息。除此之外,他们还希望在任何设备上都能够使用这些信息,而且计划每天使用,比如Microsoft Office系统应用程序等。这些要求都对数据爆炸的现在和用户期望值的升高的管理,为公司新添了更多的挑战。为满足这些需求,Microsoft 数据平台为这些想要的需求提供了解决方案公司能够储存和管理多种数据类型,与此同时提供拥有各种的服务集合来与这些数据交互影响:数据分析和整合、查询、搜索、报表,和强大的同步功能。使得用户能够了解从最初创建到存档于的所有设备的信息,不限于桌面或者移动设备,两者都可以。SQL Server 2008能够让各个公司运行自己最关键任务的应用程序,还降低了数据
20、维护与发送给用户观察信息的成本。这个平台有以下特点:l 可信任的,这样使得公司运行自己最关键的任务的程序,具有更安全,更可靠和更好的可扩展性l 高效的,降低公司的维护成本和实践l 智能的,提供了在任何时候想要查看和观察的全面平台。1.5 ADOMicrosoft提出的应用程序接口(API),ADO(ActiveX Data Objects,ActiveX数据对象)是用以访问数据库中关系数据或者非关系的数据。譬如,假如你希望你编写的程序能够从DB2或Oracle数据库中向网页提供数据的话,能够把活动服务器页即ASP的HTML文件中ADO程序包括在内。在我们从网站请求访问网页同时,返回的页面也包含
21、了数据中相对应的数据,当然,这些都是运用了ADO代码的原因。ADO是面向对象的,就像微软其它系统接口一样。它是微软全局数据访问(UDA)的其中一部分,Microsoft也认为与其自己创建一个数据,还不如直接利用UDA访问自己拥有的数据库。因此,为达到这一目的,微软和其它数据库公司在它们的数据库和微软的OLE数据库之间提供了一个 “桥”程序,ADO技术已经运用在OLE数据库上。网页中的数据相关的ActiveX控件和有效的客户端缓冲是ADO支持的一个特征(被称为远程数据服务)。作为ActiveX的一部分,ADO也是Microsoft的组件对象模式(COM)的一部分。从原来的Microsoft数据接
22、口远程数据对象(RDO)而来的ADO。ODBC与RDO共同工作访问关系数据库,却不能访问如VSAM和ISAM的非关系数据库。可以说当前Microsoft对自己所支持的数据库,最简单有效的操作就是ADO,它是一种功能强大的数据访问编程模式,这样可以使大部分数据源可编程的属性直接扩展到你的Active Server 页面上得以实现。可以使用ADO 去编写紧凑简明的脚本以便连接到Open Database Connectivity(ODBC) 兼容的数据库和OLE DB兼容的数据源,这样 ASP程序员就可以访问任何与 ODBC 兼容的数据库,包括 MSSQL SERVER、Access、 Oracl
23、e 等等。微软介绍说,ADO是一种面向对象的编程接口,同Oracle和IBM倡导的那样,与其创建一个统一数据库,还不如提供一个能够访问不同数据库的统一接口,这样做的话会更加实用一些。微软在数据库和微软的OLE DB中提供了一种“桥”程序,用以实现这一目标,这种程序能够提供对数据库的连接。当开发人员在使用ADO时,本质上将就是在使用OLE DB,但是OLE DB更加接近底层。ADO的一项属性,远程数据服务,支持“数据仓库”ActiveX组件以及高效的客户端缓存。因为是ActiveX的一部分,所以ADO也是COM组件的一部分。早期的微软数据接口远程数据对象RDO演化成的ADO。RDO同微软的ODB
24、C一同连接关系数据库,不过不能连接非关系数据库。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需求分析针对人事考勤管理过程的认真研究,对本系统有如下要求:
25、l 用户登录功能l 部门信息录入功能l 人员信息管理功能l 考勤信息录入功能l 考勤信息汇总功能2.2系统的功能描述如果用户需要登录,登录的用户必须输入用户名和密码,通过验证后才能进入人事考勤管理系统,才能维护和管理各个部门、员工的基本信息。当我们需要在该模块中录入员工当天的考勤信息,只需打开考勤管理模块,然后进行操作,并且可以根据需要同时查询按照查询条件:员工、年或者月。此外,想要查询某个员工在某月的全部考勤记录,只需在考勤汇总模块中对这位员工的考勤记录进行汇总,该员工本月的考勤记录迟到、早退、工作的天数将一目了然。3 系统的设计 3.1 系统目标 本系统以实现职员日常工作信息管理为设计目标
26、,为了最大限度的提高人事部门的日常工作效率,我们使用强大的数据库管理功能来支持。我们这款人事考勤管理系统设计时必须满足以下几点要求:u 让我们在查询信息的过程中,相比传统必须更加的方便快捷,并且结果更加准确,让我们存储的信息更加安全可靠。u 减少繁琐的操作,让我们对考勤信息进行简单的操作,对数据的操作更加的方便。u 根据需要要求能够录入职员和部门的信息。u 能够按月汇总并且计算员工的考勤信息。u 大大减少操作过程中的人为错误,必须严格检验用户输入的数据。u 让系统更加容易上手,数据的维护更加的方便。u 必须让本系统更加稳定的运行,让存储在本系统的数据更加安全可靠。3.2 系统功能结构实现本系统
27、的具体功能结构如下:图3.2-1 人事考勤管理系统结构3.3 系统预览 各种功能模块组成功能强大的本系统,如图所示为本系统的典型模块列: 3.3.1部门管理模块顾名思义主要用途是管理各种部门间的信息;如下:图3.3.1-1 部门管理模块3.3.2用户管理模块此模块的功能主要是用于对录入各用户的操作管理,如下:图3.3.2-1 用户管理模块3.3.3人员信息管理模块录入员工基本信息的管理就全部倚仗本模块的运作,如下:图3.3.3-1 人员信息管理3.3.4 考勤管理模块此模块用于记录录入职员考勤的各种信息,如下:图3.3.4-1 考勤管理模块3.3.5考勤汇总查询模块本模块用于对录入所有志愿的考
28、勤信息进行汇总,如下:图3.3.5-1 考勤汇总查询4数据库的设计4.1数据库分析该人事考勤管理系统采用了SQL Server 2008 数据库,数据库名称为th_person 在数据库中建立四个表存储不同的信息:图4.1-1 数据库4.2 数据库的逻辑设计管理信息表(tab_user):图4.2-1 信息管理表4.3部门信息表(tab_Dept)图4.3-1 部门信息表 4.4考勤信息表(tab_check)图4.4-1 考勤信息表4.5员工信息表(tab_Employees)图4.5-1员工信息表5 详细设计5.1 公共类的设计由于本系统采用了ADO的连接数据库。为了能够更加方便的使用AD
29、O建立数据库连接并进行相应的数据操作,在公共类中对系统中使用的ADO的操作进行封装。在这个系统中建立了ADO的两个公共类CADOConnection和CADODataSet,这两个公共类定义的ADO.h的头文件中,在在ADO.cpp文件中实现。a) CADOConnection类我们链接数据库使用CADOConnection类,为了实现对_Connection接口的封装。CADOConnection类在头文件中的定义如下: BOOL IsOpen();/判断是否与数据库连接_ConnectionPtr GetConnection();/获取连接接口CString GetSQLConStr();
30、/获取SQL连接字符串BOOL Open(CString ConStr);/建立数据库连接CADOConnection类的主要实现代码如下:CADOConnection * GetConnection()/GetConnection函数是一个全局函数,用于返回全局数据库连接对象的的指针CADOConnection:CADOConnection()/CADOConnection方法是构造方法,用于取消OLE 的初始化和释放_Connection接口指针BOOL CADOConnection:Open(CString ConStr)/通过指定的数据库连接字符串于SQL数据库建立连接BOOL CAD
31、OConnection:IsOpen()/判断当前数据库连接对象与数据库的连接状态b) CADODataSet类的实现如下:CADODataSet:CADODataSet()/该方法为记录集实现类的构造方法,在该方法中实现记录集接口对象的创建CADODataSet:CADODataSet()/实现记录集的关闭与接口的释放void CADODataSet:SetFieldValue(CString FieldName, _variant_t Value)/想记录集中指定的字段赋值5.2 主题窗口设计 主题窗口由菜单和图片组成,如下图:图5.2-1 主题窗口主体窗口设计步骤:运行vc+,创建MFC
32、,输入工程名称,设置好保存路径,点击OK按钮后打开MFC对话框,选择对话框编程。向工程中导入位图。5.3 用户登录模块设计 每个管理系统都应有登录界面,下面是本系统的登录模块:图5.3-1 登录界面5.3.1具体分析窗体应该在主体窗创建之前并显示,在登录窗体创建的的同时应该建立数据库连接,主要操作如下:BOOL bCon = 、GetConnection()-Open(GetConnection()-GetSQLConStr(); CLoginDialog logindlg; if (logindlg.DoModal() != IDOK) return false; :CoInitialize
33、(NULL); CPersonDlg dlg;5.3.2实现过程l 先建立一个对话框l 添加两个静态文本控件,两个按钮控件和一个编辑控件。设置编辑控件类型为password,两个静态文本控件分别设置caption为用户名和密码,两个按钮分别设置为确定和取消。l 在窗体初始化方法中创建用户表的数据,同时将用户点加到列表框控件中,主要涉及代码如下:CDialog:OnInitDialog();m_DataSet.SetConnection(GetConnection();m_DataSet.Open(Select * From Tab_User);int count = m_DataSet.Get
34、RecordCount();m_UserList.SetCurSel(0);return TRUE; / return TRUE unless you set the focus to a 确定按钮主要代码:CString sql,user,pass;m_UserList.GetWindowText(user);m_PassWord.GetWindowText(pass);sql.Format(Select * From tab_user Where UserName = %s 5.4 用户管理模块 5.4.1 概况能实现添加,删除,修改等操作,如下图:图5.4.1-1 用户管理5.4.2具体
35、实现过程 创建一个对话框 向对话框中添加相应的控件 给对话框添加对话框类 给类添加函数及成员变量 给控件关联变量 编写函数5.4.3 代码实现a) 定义UpdateGrid方法用来更新列表视图中的主要涉及的信息代码如下: m_DataSet.Open(Select * From tab_User); m_grid.DeleteAllItems(); b) 添加按钮的主要代码如下:CUserEdit useredit; m_DataSet.SetFieldValue(UserName,(_bstr_t)useredit.nam c) 删除按钮主要代码如下:void CUserManage:OnD
36、elete() if (MessageBox(是否删除此记录!,提示,MB_YESNO|MB_ICONWARNING) = IDYES)d) 修改按钮主要代码如下:void CUserManage:OnEdit() CUserEdit useredit;int no = m_grid.GetItemData(m_grid.GetSelectionMark();m_DataSet.move(no-1);useredit.name= (char *)(_bstr_t)m_DataSet.GetFields() - ItemLUserName-Value;5.5 部门管理设计5.5.1 概述记录部门
37、的信息和部门之间的层次结构,使用树控件实现,如下图:图5.5.1-1部门管理5.5.2 实现的过程 创建一个对话框 向对话框中添加相应的控件 给对话框添加对话框类 给类添加函数及成员变量 给控件关联变量 编写函数5.5.3主要的实现代码A. BOOL CDeptManage:OnInitDialog() /初始化函数 CDialog:OnInitDialog(); m_DataSet.SetConnection(:GetConnection();B. 把部门信息一次性读入树控件中。代码如下: void CDeptManage:GetNode(HTREEITEM pNode, int nPid)
38、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()-ItemDeptName-Value,pNode);C. 我们定义GetNode方法,主要用于获取部门表中按成次级关系的所有数据,并添加树控件,该方法由UpdateDept方法进行调用,主要代码如下:dataset
39、.Open(Select top 1 * From tab_Dept);dataset.SetFieldValue(memo,(_variant_t)deptedit.memo);D. 点击修改同时弹出修改本门窗口,点击确定后能够保存修改的信息,主要代码如下deptedit.name = (char *)(_bstr_t)dataset.GetFields()-ItemLDeptName-Value;deptedit.memo = (char *)(_bstr_t)dataset.GetFields()-Itemmemo-Value;if (deptedit.DoModal() = IDOK)
40、E. 删除按钮,用于删除选中节点,主要代码如下:void CDeptManage:OnDelete() HTREEITEM pNode = m_tree.GetSelectedItem();if (MessageBox(是否删除此记录!,提示,MB_YESNO|MB_ICONWARNING) = IDYES)5.6 人员信息管理模块的设计 5.6.1 概述本模块可以根据部门分类显示人员,并且能够同时对人员信息进行维护,如下图:5.6.1-1人事信息管理5.6.2实现过程 创建对话框 向对话框中添加相应的控件 给对话框添加对话框类 给类添加函数及成员变量 给控件关联变量5.6.3实现代码我们使用
41、GetNode方法用来获取部门信息,并且在树控件中添加。此种我们用UpdateDept调用,主要代码如下:DataSet.SetConnection(:GetConnection();str.Format(Select * From tab_Dept where pid = %d,nPid);int count = DataSet.GetRecordCount();value = (_variant_t)DataSet.GetFields()-ItemID-Value;UpdateDpt调用GetNode,实现信息更新,主要代码如下:void CPersonManage:UpdateDept(
42、) m_tree.DeleteAllItems();node = m_tree.InsertItem(全部,TVI_ROOT);m_tree.SetItemData(node,-1);我们使用UpdatePerson用来更新人员的信息,而且实现在列表控件中显示,主要代码如下:DataSet.SetConnection(:GetConnection();value = DataSet.GetFields()-ItemAutoID-Value;m_list.SetItemText(n,index+,(_bstr_t)DataSet.GetFields()-ItemEmp_NAME-Value);当
43、我们点击“添加”按钮时,能够弹出人员编辑窗体,当我们输入员工的个人信息完成后,点击“保存”后,能够实现人员的添加,主要代码如下:personedit.m_DeptData = m_DeptID;if (personedit.DoModal() = IDOK)dataset.SetConnection(:GetConnection();CString str = select top 1 * from tab_Employees;dataset.SetFieldValue(Emp_Id,(_bstr_t)personedit.m_id); dataset.SetFieldValue(Nation
44、ality,(_bstr_t)personedit.m_ationality);当我们在点击“修改”按钮的时候,能够弹出编辑人员信息的窗体,在输入人员信息之后,点击 “保存”按钮修改人员信息,主要代码如下:str.Format(select * from tab_Employees where autoid = %d,id);if (!birth.IsEmpty()/设置日期数据if (!hire.IsEmpty()/设置日期数据personedit.m_duty=(char*)(_bstr_t)dataset.GetFields()-ItemDuty-Value;personedit.m_DeptData = dataset.GetFields()-ItemDept-Value;dataset.SetFieldValue(Emp_Id,(_bstr_t)personedit.m_id);dataset.SetFieldValue(Nationality,(_bstr_t)personedit.m_nationality);dataset.SetFieldValue(Duty,(_bstr_t)personedit.m_duty);当我们点击“删除”,删除当前选中的职员的记录,主要代码如下; if