- 774.00 KB
- 2022-05-17 13:13:42 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
-人事考勤管理系统学生姓名学号所在系专业名称班级指导教师中国地质大学二○一四年五月.--
-内容摘要在如今科技腾飞的日子里,伴随着时代的进步,日益庞大的企业,怎样有效的管理企业人才的个人信息,已经变成一个不容忽视的问题。随着计算机在生活与办公中的渗透,利用计算机来改变以往的传统模式已经势在必行,开发一个人事考勤管理系统显得尤为重要。本系统为公司的有效管理提供了一个良好的解决方案。该系统采用了C++作为编程语言,选用SQLServer2008作为数据库服务器,以AOD来完成数据前后台交互。本系统实现了对部门、员工的基本信息的维护和管理,在考勤模块录入员工当天的考勤状况,可对时间和员工进行查询,还可以在考勤汇总模块对员工考勤进行汇总,计算出员工的考勤状况。关键词:管理企业人事考勤数据库服务器.--
-AbstractIntoday"sscienceandtechnologytakeoffdays,alongwiththeprogressofTheTimes,growingenterprises,howtoeffectivelymanagemententerprisetalentedperson"spersonalinformation,hasbecomeaproblemthatnotsallowtoignore.Withcomputerpenetrationinthelifewiththeoffice,usingthecomputertochangethetraditionalmodelofeverhaveisimperative,todevelopahrattendancemanagementsystemisparticularlyimportant.Thissystemforthecompany"seffectivemanagementprovidesagoodsolution.ThesystemUSESthec++asaprogramminglanguage,choosetheSQLServer2008asthedatabaseServer,AODtocompletedatainteractionatthefrontdeskandthebackground.Thesystemimplementationforthebasicinformationofthemaintenancedepartment,theemployeesandmanagement,theattendancemoduleentryemployeesattendancestatusthatday,andcanbequeriedfortimeandemployees,alsocanbeintheattendancesummarymoduleforemployees"attendancesummary,calculatetheemployee"sattendancestatus.Keywords:ManagementofenterprisePersonnelattendancerecordThedatabaseserver..--
-目录前言1开发工具及技术1.1C++的介绍11.2C++的发展历程21.3C++的语言特点21.4SQLserver200831.5ADO42系统分析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)10.--
-5详细设计5.1公共类的设计115.2主题窗口设计115.3用户登录模块设计125.3.1具体分析125.3.2实现过程135.4用户管理模块135.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参考文献..........................................24.--
-人事考勤管理系统前言在公司和企业中,考勤作为一个基础的考核条件,扮演者重要的角色。传统的考勤,由人工考勤或者技工书面记录,其中存在的大量的主观性和人为因素。而且,随着公司规模的逐渐扩大,更多的员工用传统的方式显得难以管理,耗费了大量的人力、物力、财力,换来的只是众多的错误和漏洞,使公司的效率大打折扣。现在是科技腾飞的时代,科技赋予了我们方便和快捷,我们有权利享受这果实。计算机的飞速发展,已经渗透到各个领域,利用计算机来为我们管理人事考勤,替代传统考勤已经是大势所趋。现在各行业的发展速度已经难以想象,企业间的竞争早已是没有硝烟的战场,优胜劣汰的残忍环境中如何让自己的企业崭露头角,客观上来讲对企业的内部管理和运营的效率是非常重要的。这样来讲的话,人事考勤管理系统是当代企业不可或缺的一个重要的组成部分,是让公司健康发展的重要工具,万丈高楼平地起,只要把基础搞好了,才能把其他方面做大做强。人事考勤管理系统更加利于公司的决策者和管理,员工的考勤信息为员工的发展,奖励和处罚提供了准确的依据。它是公平的,有利于提高员工的积极性和士气,这些直接关乎员工的工作效率,从而提高公司的整体形象和公司效益1开发工具及技术1.1C++的介绍一般来讲,C++是运用非常广泛的一种计算机程序设计语言。本贾尼·斯特劳斯特卢普士博士在美国AT&T贝尔实验室发明并实现了C++(起初,这类语言被称作“CwithClasses”,就是带类的C)。最初,c++是以c语言增强版出现的,从一开始给C语言增加类,到后来不断的增加新特性。运算符重载(operatoroverloading)、多重继承(multipleinheritance)、模板(template)、虚函数(virtualfunction)、异常(exception)、RTTI等,一一被列入标准。还有重要的一点就是,对现在学习C++而言,我们可以认为它是一门独立的语言,相对C语言来讲,并不完全依赖于他,即使我们不懂c语言,我们可以直接学习C++。我们可以从《C++编程思想》这本书中对两者的描述可以知道,在效率上来讲,C++与C的差别是非常的小,波动就在-5%到+5%之间,甚至我们可以这样认为,C++可以在大多数的场合中取代C语言是完全胜任的。“C++标准委员成立的第一年是1998年,国际标准组织(IOS)在1998年颁布了C++程序设计语言的国际标准ISO/IEC1988-1998”.C++是具有国际标准的编程语言之一,一般称为ANSI/ISOC++。C++这个称呼是在1983年中RickMascitti的建议,最开始使用时在1983.12使用的。起初,处在研发阶段曾被称为“newC”,后来被称为“CwithClasses”。现在在计算机科学里面,被称作C语言的上层结构的仍然是C++。C++名字的由来是C语言中的操作符“++”。关于C++的名字的由来,RickMascitt表示他从来没想到这门语言的名字会被称为C++,可以说C++这个名字完全是一个玩笑得来的。1.2C++的发展历程C++语言的发展大致可以划分为三个阶段:.--
-初始阶段,在20世纪80年代到1995年间。在这一阶段的C++语言的类型差不多可以认为是传统意义上的面向对象的语言,问世时迅速在当时的工业界所使用的众多的开发语言中能够占据了如此的大份额,说及原因,不得不说是C++效率接近C语言。第二阶段,1995-2000,在这5年间,该阶段因为Boost和标准模板库(STL等程序库的相继问世,在C++中的比重,泛型程序设计占据的越来越多。与此同时,因为Java、C#等语言的先后出现和大规模下降的硬件价格,C++的比重受到了一定量的冲击。最后阶段,2000年到现在,因为以MPL、Loki为代表等程序库模板元编程的问世和产生式编程产生,C++再次迎来了发展史上的另一个辉煌,原有技术和这些新技术的相继出现的完美结合,C++已经成为当今主流编程语言名副其实最复杂的一员。1.3C++的语言特点n设计成静态类型机制、具有和C程序设计语言同样高效且可移植的多用途。n设计成直接的、广泛的支持多种程序设计的风格(面向对象程序设计、泛型程序设计、程序化程序设计、资料抽象化)。n尽管也许会导致程选择错误,仍设计成给程序设计者更多的选择性。n为了提供了一个从C到C++的平滑过渡,尽可能与C兼容。n尽可能的避免没有普遍性和平台限定的一些特性。n不使用带来额外特性的开销。n简单的程序设计环境即可设计。nC++的很多特性都是以库、等方式提供的,所以它具有运行的高效性和简洁性。n在多数情况下C++可以和C完美的结合,甚至可以夸张的认为,现今大多数C语言程序的完成都是在C++的集成开发环境中实现的。它更具有相当高的性能,相对于现在如此多的其他面向对象的语言。n在引入了面向对象的概念,使得设计人员在开发人机交互这类程序变得更加轻松,效率。有很多优秀的程序框架包括wxWidgets、MFC、QT就是使用C++完成的。1.4SQLserver2008可以说SQLServer2008是一个重大的产品版本,相比之前,它推出了许多关键的改进和新的特性,这些地方使得它成为至今为止的最强大和最全面的SQLServer版本。现如今在数据满天的世界里,如果公司想要获得成功和不断发展,那么他们需要定位主要的数据趋势的愿景。微软解决了这个愿景,这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。不满足于现状,微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能现如今,会有许多因素致使产生了信息存储爆炸。会有了新的信息类型,例如视频和图片的数字化,和从RFID标签获得的传感器信息,这些都会导致公司的数字信息的数量急剧增长。.--
-对此的要求是,遵守规范和全球化的发展要求信息存储的安全性和随时都可以使用。现在磁盘存储的成本大幅度的降低了,这样可以让公司投资的每一分钱相比以前可以存储更多的数据。在这些庞大的数据中,用户必须迅速准确的找到相关的信息。除此之外,他们还希望在任何设备上都能够使用这些信息,而且计划每天使用,比如MicrosoftOffice系统应用程序等。这些要求都对数据爆炸的现在和用户期望值的升高的管理,为公司新添了更多的挑战。为满足这些需求,Microsoft®数据平台为这些想要的需求提供了解决方案——公司能够储存和管理多种数据类型,与此同时提供拥有各种的服务集合来与这些数据交互影响:数据分析和整合、查询、搜索、报表,和强大的同步功能。使得用户能够了解从最初创建到存档于的所有设备的信息,不限于桌面或者移动设备,两者都可以。SQLServer2008能够让各个公司运行自己最关键任务的应用程序,还降低了数据维护与发送给用户观察信息的成本。这个平台有以下特点:l可信任的,这样使得公司运行自己最关键的任务的程序,具有更安全,更可靠和更好的可扩展性l高效的,降低公司的维护成本和实践l智能的,提供了在任何时候想要查看和观察的全面平台。1.5ADOMicrosoft提出的应用程序接口(API),ADO (ActiveXDataObjects,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.--
-,它是一种功能强大的数据访问编程模式,这样可以使大部分数据源可编程的属性直接扩展到你的ActiveServer页面上得以实现。可以使用ADO去编写紧凑简明的脚本以便连接到 OpenDatabaseConnectivity (ODBC)兼容的数据库和 OLEDB 兼容的数据源,这样ASP 程序员就可以访问任何与ODBC兼容的数据库,包括MS SQLSERVER、Access、Oracle等等。微软介绍说,ADO是一种面向对象的编程接口,同Oracle和IBM倡导的那样,与其创建一个统一数据库,还不如提供一个能够访问不同数据库的统一接口,这样做的话会更加实用一些。微软在数据库和微软的OLEDB中提供了一种“桥”程序,用以实现这一目标,这种程序能够提供对数据库的连接。当开发人员在使用ADO时,本质上将就是在使用OLEDB,但是OLEDB更加接近底层。ADO的一项属性,远程数据服务,支持“数据仓库”ActiveX 组件以及高效的客户端缓存。因为是ActiveX的一部分,所以ADO也是COM组件的一部分。早期的微软数据接口远程数据对象RDO演化成的ADO。RDO同微软的ODBC一同连接关系数据库,不过不能连接非关系数据库。ADO提供了一个我们熟知的,高层的对OLEDB的Automation封装接口。对那些熟悉RDO的程序员来讲,甚至可以把OLEDB当做是ODBC驱动程序。就像RDO对象是ODBC驱动程序接口一样,那么ADO对象就是OLEDB的接口;相似于不同的数据库系统需要它们自己的ODBC驱动程序一样,不同的数据源也要求它们自己的OLEDB提供者(OLEDBprovider)。现今,即使OLEDB提供者比较少,但是微软正积极推广该技术,计划用OLEDB取代ODBC。2系统综合分析2.1需求分析针对人事考勤管理过程的认真研究,对本系统有如下要求:l用户登录功能l部门信息录入功能l人员信息管理功能l考勤信息录入功能l考勤信息汇总功能2.2系统的功能描述如果用户需要登录,登录的用户必须输入用户名和密码,通过验证后才能进入人事考勤管理系统,才能维护和管理各个部门、员工的基本信息。当我们需要在该模块中录入员工当天的考勤信息,只需打开考勤管理模块,然后进行操作,并且可以根据需要同时查询按照查询条件:员工、年或者月。此外,想要查询某个员工在某月的全部考勤记录,只需在考勤汇总模块中对这位员工的考勤记录进行汇总,该员工本月的考勤记录——迟到、早退、工作的天数将一目了然。.--
-3系统的设计3.1系统目标本系统以实现职员日常工作信息管理为设计目标,为了最大限度的提高人事部门的日常工作效率,我们使用强大的数据库管理功能来支持。我们这款人事考勤管理系统设计时必须满足以下几点要求:u让我们在查询信息的过程中,相比传统必须更加的方便快捷,并且结果更加准确,让我们存储的信息更加安全可靠。u减少繁琐的操作,让我们对考勤信息进行简单的操作,对数据的操作更加的方便。u根据需要要求能够录入职员和部门的信息。u能够按月汇总并且计算员工的考勤信息。u大大减少操作过程中的人为错误,必须严格检验用户输入的数据。u让系统更加容易上手,数据的维护更加的方便。u必须让本系统更加稳定的运行,让存储在本系统的数据更加安全可靠。3.2系统功能结构实现本系统的具体功能结构如下:图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考勤汇总查询模块本模块用于对录入所有志愿的考勤信息进行汇总,如下:.--
-图3.3.5-1考勤汇总查询4数据库的设计4.1数据库分析该人事考勤管理系统采用了SQLServer2008数据库,数据库名称为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的连接数据库。为了能够更加方便的使用ADO建立数据库连接并进行相应的数据操作,在公共类中对系统中使用的ADO的操作进行封装。在这个系统中建立了ADO的两个公共类CADOConnection和CADODataSet,这两个公共类定义的ADO.h的头文件中,在在ADO.cpp文件中实现。a)CADOConnection类我们链接数据库使用CADOConnection类,为了实现对_Connection接口的封装。CADOConnection类在头文件中的定义如下:BOOLIsOpen();//判断是否与数据库连接_ConnectionPtrGetConnection();//获取连接接口CStringGetSQLConStr();//获取SQL连接字符串BOOLOpen(CStringConStr);//建立数据库连接CADOConnection类的主要实现代码如下:CADOConnection*GetConnection()//GetConnection函数是一个全局函数,用于返回全局数据库连接对象的的指针.--
-CADOConnection::~CADOConnection()//~CADOConnection方法是构造方法,用于取消OLE的初始化和释放_Connection接口指针BOOLCADOConnection::Open(CStringConStr)//通过指定的数据库连接字符串于SQL数据库建立连接BOOLCADOConnection::IsOpen()//判断当前数据库连接对象与数据库的连接状态a)CADODataSet类的实现如下:CADODataSet::CADODataSet()//该方法为记录集实现类的构造方法,在该方法中实现记录集接口对象的创建CADODataSet::~CADODataSet()//实现记录集的关闭与接口的释放voidCADODataSet::SetFieldValue(CStringFieldName,_variant_tValue)//想记录集中指定的字段赋值5.2主题窗口设计主题窗口由菜单和图片组成,如下图:图5.2-1主题窗口主体窗口设计步骤:运行vc++,创建MFC,输入工程名称,设置好保存路径,点击OK按钮后打开MFC对话框,选择对话框编程。向工程中导入位图。5.3用户登录模块设计每个管理系统都应有登录界面,下面是本系统的登录模块:.--
-图5.3-1登录界面5.3.1具体分析窗体应该在主体窗创建之前并显示,在登录窗体创建的的同时应该建立数据库连接,主要操作如下:BOOLbCon=、GetConnection()->Open(GetConnection()->GetSQLConStr());CLoginDialoglogindlg;if(logindlg.DoModal()!=IDOK)returnfalse;::CoInitialize(NULL);CPersonDlgdlg;5.3.2实现过程l先建立一个对话框l添加两个静态文本控件,两个按钮控件和一个编辑控件。设置编辑控件类型为password,两个静态文本控件分别设置caption为用户名和密码,两个按钮分别设置为确定和取消。l在窗体初始化方法中创建用户表的数据,同时将用户点加到列表框控件中,主要涉及代码如下:CDialog::OnInitDialog();m_DataSet.SetConnection(GetConnection());m_DataSet.Open("Select*FromTab_User");intcount=m_DataSet.GetRecordCount();m_UserList.SetCurSel(0);.--
-returnTRUE;//returnTRUEunlessyousetthefocustoa确定按钮主要代码:CStringsql,user,pass;m_UserList.GetWindowText(user);m_PassWord.GetWindowText(pass);sql.Format("Select*Fromtab_userWhereUserName="%s"5.4用户管理模块5.4.1概况能实现添加,删除,修改等操作,如下图:图5.4.1-1用户管理5.4.2具体实现过程Ø创建一个对话框Ø向对话框中添加相应的控件Ø给对话框添加对话框类Ø给类添加函数及成员变量Ø给控件关联变量Ø编写函数5.4.3代码实现a)定义UpdateGrid方法用来更新列表视图中的主要涉及的信息代码如下:m_DataSet.Open("Select*Fromtab_User");.--
-m_grid.DeleteAllItems();a)添加按钮的主要代码如下:CUserEdituseredit;m_DataSet.SetFieldValue("UserName",(_bstr_t)useredit.namb)删除按钮主要代码如下:voidCUserManage::OnDelete()if(MessageBox("是否删除此记录!","提示",MB_YESNO|MB_ICONWARNING)==IDYES)c)修改按钮主要代码如下:voidCUserManage::OnEdit()CUserEdituseredit;intno=m_grid.GetItemData(m_grid.GetSelectionMark());m_DataSet.move(no-1);useredit.name=(char*)(_bstr_t)m_DataSet.GetFields()->Item[L"UserName"]->Value;5.5部门管理设计5.5.1概述记录部门的信息和部门之间的层次结构,使用树控件实现,如下图:图5.5.1-1部门管理5.5.2实现的过程Ø创建一个对话框Ø向对话框中添加相应的控件.--
-Ø给对话框添加对话框类Ø给类添加函数及成员变量Ø给控件关联变量Ø编写函数5.5.3主要的实现代码A.BOOLCDeptManage::OnInitDialog()//初始化函数CDialog::OnInitDialog();m_DataSet.SetConnection(::GetConnection());B.把部门信息一次性读入树控件中。代码如下:voidCDeptManage::GetNode(HTREEITEMpNode,intnPid)HTREEITEMnode;CADODataSetDataSet;DataSet.SetConnection(::GetConnection());str.Format("Select*Fromtab_Deptwherepid=%d",nPid);DataSet.Open(str);m_tree.InsertItem((_bstr_t)DataSet.GetFields()->Item["DeptName"]->Value,pNode);C.我们定义GetNode方法,主要用于获取部门表中按成次级关系的所有数据,并添加树控件,该方法由UpdateDept方法进行调用,主要代码如下:dataset.Open("Selecttop1*Fromtab_Dept");dataset.SetFieldValue("memo",(_variant_t)deptedit.memo);D.点击修改同时弹出修改本门窗口,点击确定后能够保存修改的信息,主要代码如下deptedit.name=(char*)(_bstr_t)dataset.GetFields()->Item[L"DeptName"]->Value;deptedit.memo=(char*)(_bstr_t)dataset.GetFields()->Item["memo"]->Value;if(deptedit.DoModal()==IDOK)E.删除按钮,用于删除选中节点,主要代码如下:voidCDeptManage::OnDelete()HTREEITEMpNode=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实现代码我们使用GetNode方法用来获取部门信息,并且在树控件中添加。此种我们用UpdateDept调用,主要代码如下:DataSet.SetConnection(::GetConnection());str.Format("Select*Fromtab_Deptwherepid=%d",nPid);intcount=DataSet.GetRecordCount();value=(_variant_t)DataSet.GetFields()->Item["ID"]->Value;UpdateDpt调用GetNode,实现信息更新,主要代码如下:voidCPersonManage::UpdateDept()m_tree.DeleteAllItems();node=m_tree.InsertItem("全部",TVI_ROOT);m_tree.SetItemData(node,-1);我们使用UpdatePerson用来更新人员的信息,而且实现在列表控件中显示,主要代码如下:DataSet.SetConnection(::GetConnection());.--
-value=DataSet.GetFields()->Item["AutoID"]->Value;m_list.SetItemText(n,index++,(_bstr_t)DataSet.GetFields()->Item["Emp_NAME"]->Value);当我们点击“添加”按钮时,能够弹出人员编辑窗体,当我们输入员工的个人信息完成后,点击“保存”后,能够实现人员的添加,主要代码如下:personedit.m_DeptData=m_DeptID;if(personedit.DoModal()==IDOK)dataset.SetConnection(::GetConnection());CStringstr="selecttop1*fromtab_Employees";dataset.SetFieldValue("Emp_Id",(_bstr_t)personedit.m_id);dataset.SetFieldValue("Nationality",(_bstr_t)personedit.m_ationality);当我们在点击“修改”按钮的时候,能够弹出编辑人员信息的窗体,在输入人员信息之后,点击“保存”按钮修改人员信息,主要代码如下:str.Format("select*fromtab_Employeeswhereautoid=%d",id);if(!birth.IsEmpty())//设置日期数据if(!hire.IsEmpty())//设置日期数据personedit.m_duty=(char*)(_bstr_t)dataset.GetFields()->Item["Duty"]->Value;personedit.m_DeptData=dataset.GetFields()->Item["Dept"]->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(MessageBox("是否删除此记录!","提示",MB_YESNO|MB_ICONWARNING)==IDYES)intid=m_list.GetItemData(m_list.GetSelectionMark());str.Format("select*fromtab_Employeeswhereautoid=%d",id);主要初始化函数的代码如下;m_list.InsertColumn(i,"人员编号");m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);voidCPersonManage::OnSelchangedTreedept(NMHDR*pNMHDR,LRESULT*pResult).--
-NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR;m_DeptID=m_tree.GetItemData(pNMTreeView->itemNew.hItem);5.7考勤管理模块设计5.7.1概述能够把所有的人当天的考勤信息录入到本系统中,同时可以对员工的考勤信息根据年、月以及员工已经录入的考勤记录进行查询,如下图:图5.7.1-1考勤管理5.7.2实现的过程Ø创建对话框Ø向对话框中添加相应的控件Ø给对话框添加对话框类Ø给类添加函数及成员变量Ø给控件关联变量5.7.3主要代码A.UpdateList方法主要用来更新显示职员的考勤信息,代码如下:voidCCheckManage::UpdateList()this->UpdateData();Starttime=m_yy+"-"+m_mm+"-1";EndTime.Format("DATEADD(month,1,"%s")",Starttime);.--
-dataset.SetConnection(::GetConnection());m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["name"]->Value);A.我们使用OnAdd的方法,主要用于想给考勤信息表中添加职员的每日的考勤具体数据,主要代码如下:dataset.SetFieldValue("name",(_bstr_t)checkedit.m_name);dataset.SetFieldValue("checkdate",(_bstr_t)checkedit.m_datecheck.Format("%Y-%m-%d"));dataset.SetFieldValue("memo",(_bstr_t)checkedit.m_memo);CTimelatetime=DecTime(checkedit.m_timeon,checkedit.m_timeonduty);time.Format("%d:%d:%d",leaveearly.GetHour(),leaveearly.GetMinute(),leaveearly.GetSecond());dataset.SetFieldValue("leaveearly",(_bstr_t)time);B.我们主要使用OnEdit的方法,编辑职员在考勤信息表中的每天的考勤记录,主要代码如下:intid=m_list.GetItemData(m_list.GetSelectionMark());CCheckEditcheckedit;dataset.SetConnection(::GetConnection());checkedit.m_name=(char*)(_bstr_t)dataset.GetFields()->Item["name"]->Value;checkedit.m_timeonduty=GetTimeForStr((chardataset.SetFieldValue("leaveearly",(_bstr_t)time);C.我们利用OnDelete方法删除已经选中的人事考勤记录,主要代码如下:voidCCheckManage::OnDelete()if(MessageBox("是否删除此记录!","提示",MB_YESNO|MB_ICONWARNING)==IDYES)str.Format("select*fromtab_checkwhereautoid=%d",id);voidCCheckManage::OnCheck1()BOOLCCheckManage::OnInitDialog()//初始化函数m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);this->UpdateData(false);for(intindex=1;index<=dataset.GetRecordCount();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);datestr.Format("between"%s"and%s",StartDate,EndDate);temp+="selectemp.emp_name,ROUND(isnull(works.workday,0),2)";temp+="workday,ROUND(isnull(lates.lateday,0),2)lateday,";B.主要初始化函数的代码:m_list.InsertColumn(i,"人员姓名");.--
-m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);结束语本程序经过实际的测试和运行,总的来讲基本上能够满足中小型人事考勤的要求,使用方便简洁,对数据和日志应该定期的做备份,定期清理无效数据,提高运行效率。通过这次毕业课题的设计,让我我学到不少东西,同时也让自己了解到,只是学会课本上的东西是多么的不足,只有懂得如何运用所学知识才是真正的优秀,否则一切都是纸上谈兵,只有通过自己多扩展、多吸收新的知识,才能让自己的能力有所提高。虽然本系统的设计达到了毕业设计的要求,大大小小存在一些不足也是显而易见的,还存在大量的可扩展空间,后续根据市场的需求,来完成各个实际需要的模块,并加以实现。首先感谢我尊敬的指导老师王老师,没有老师的帮助我难以如期完成此次设计。在学习阶段,王老师渊博的知识、严谨的治学态度、实事求是的精神和耐心细心的作风让我铭记在心,我非常荣幸的能够得到王老师的细心指导。在本次毕业设计选题后,是王老师为我详细的推荐参考资料,在我课题开展和研究论文开展时都得到王老师的细心指导和帮助。为我提供指导性方案和构架,使我在这次毕业设计很快的开展,在设计中的大小问题因为导师的信息指导都迎刃而解,最后圆满的完成了设计任务。在此谨向我的导师致以由衷的敬意和诚挚的谢意!另外感谢我的授课教师们,感谢他们几年来付出的辛劳,感谢几年来的栽培,是你们的辛勤付出让我们奠定了扎实的基础,为我们这次毕业设计铺平了道路,让我们顺利的完成学业。也感谢学院给我们提供这么完善的教学条件和学习生活环境。最后感谢全体同学,谢谢他们在这次毕业设计中的监督和鼓励,也感谢他们在平日生活和学习上给的帮助,以及带来的充实大学生活。.--
-参考文献:[1]余建军、刘加海:VisualC++程序设计实训教程,北京科学出版社,2003.8,P19-P34[2]罗斌:VisualC++编程技巧精选500例,中国水利水电出版社,2005.1,P5-P14[3]刘锐宁:VisualC++项目开发案例全程实录/明日科技,清华大学出版社,20011.1,P120-P140[4]王运坚、冯锋:VisualBasic程序设计基础教程,西安电子工业出版社,1999.5,P31-P42[5]刘醒、何斌:Visualbasic应用指南,成都四川大学出版社,1998.6,P15-P27[6]孙鑫:VC++深入详解,电子工业出版社.2012.7,P112-P131[7]管西京:深入体验VC++项目开发,清华大学出版社,2011.1,P41-P58[8]张富:C及C++程序设计,北京人民邮电出版社,2008.10,p56-P67.--
您可能关注的文档
- 公司考勤管理制度3
- 泰山医学院职工考勤管理暂行规定.doc
- 分处室、分系部电子签到考勤管理实施办法
- 卫生院考勤管理制度
- bs架构考勤管理系统设计解决实施计划方案
- 超市员工考勤管理规章制度3篇
- 公司考勤管理系统的设计实现分析范文
- 司员工宿舍管理和员工考勤管理制度
- 20132017年中国立方考勤管理系统软件行业市场营销分析及
- 员工考勤管理信息系统
- 实验室工作人员考勤管理系统设计的设计实现分析
- 基于bs架构考勤管理系统设计实现
- 公司考勤管理总结2篇
- 基于指纹识别技术的住校生考勤管理系统的设计与实现
- 基于bs架构的考勤管理系统设计实现分析
- 学生考勤管理系统设计
- 公司考勤管理系统的设计与实现本科毕业
- 课堂考勤管理系统与实现论