公司人事管理系统毕业论文_第1页
公司人事管理系统毕业论文_第2页
公司人事管理系统毕业论文_第3页
公司人事管理系统毕业论文_第4页
公司人事管理系统毕业论文_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要公司人事管理系统是典型的人事信息管理系统,其主要的功能是把人事管理过程信息化,自动化以减轻人工的重复繁琐劳动。其开发主要包括后台数据库的建立维护以及前台应用程序的开发两个方面。对于后台数据库要求建立一个稳定的数据库,保持数据的一致性,完整性,安全性也是必要的。对于前台要求稳定,实用,易用。本系统是为公司人事管理的各种工作而设计的。 根据需求分析,需要实现对系统用户,基本信息(公司部门,人员相关信息等),考勤考评的管理。经过分析,本系统使用 SQLSERVER做为其后台数据库,采用 ADO数据库链接技术;VisualC++做为开发工具, 提供了相当齐备的类库、友好的编程界面和多种多样的数据库访问技术。其中 ADO使得编写数据库应用程序变得简单容易。公司人事管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性,完整性,安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。关键词:VC++数据库; 人事管理系统; ADO数据源AbstractCompany'spersonneladministrativesystemistypicalpersonnelinformationmanagementsystems,itsmainfunctionistoinformationandautomationtheprocessofthepersonnelinformationmanagementsystemwhichlightenpeoplefromrepeatedandtediousartificialwork.Itdevelopstworespectsofmaindevelopmentincludingthesetting-upandmaintainingofbackstagesupporter'sdatabaseandthefrontdeskapplicationprogram.Demandtosetupasteadydatabasetobackstagesupporter'sdatabase,keeptheconsistencyofthedata,integrality,securityareallessential.Astothethingthatthefrontdeskrequiressteadily,practical,easytouse.Thissystemwasworkedanddesignedforvariouskindsofcompany'spersonnelmanagement.Accordingtodemandanalysis,needtorealizesystematicuserscorrectly,basicinformation(company'sdepartment,personnel'srelevantinformation,etc.),themanagementthattheattendancechecksandrate.Afteranalyzing,thissystemusesSQLSERVERasitsbackstagedatabase,adoptADOdatabasetechnologytochain;takingVisualC++asthedevelopinginstrumentwhichhasofferedquitecompletekindsofstorehouses,friendlyprogramminginterfaceandvarieddatabasevisitingtechnology.ADOtechnologymakesitsimpleandeasytowritedatabaseapplicationprogram.Company'spersonneladministrativesystemistypicalinformationmanagementsystems,itdevelopstworespectsofmaindevelopmentincludingsetting-upandmaintenanceandfrontapplicationprogramofbackstagesupporter'sdatabase.Astothethingthattheformerdemandstosetupconsistencyofthedata,integrality,thestorehousewithgoodsecurity.Requiretothelatterthefunctionoftheapplicationprogramiscomplete,aptcharacteristicofusingetc.Keywords:ThedatabaseofVisualC++;PersonnelManageSystem;ThedatasourceofADOII目 录1引言························· IV2系统分析······················· V2.1概要分析·······································V2.2总体设计······································VII2.3开发环境·····································VIII3数据库设计····················· XIV3.1数据规范化问题··································XIV3.2设计表的结构···································XIV4建立数据库表的类················· XVIII4.1部门表的类 ···································XVIII4.2员工基本信息表的类 ······························XVIII4.3员工家庭信息的类·································XVIII4.4员工教育及工作经历记录的类 ························XVIII4.5员工考评表的类··································XIX4.6员工工作考勤表的类 ·······························XIX4.7用户信息表的类··································XIX5系统实现·······················XX5.1用ADO进行数据库编程:···························XX5.2实现用户登录功能··································XXV5.3实现部门管理功能·································XXVI5.4实现员工信息管理功能····························XXVIII5.5实现考勤管理功能·································XXIX5.6实现员工考评管理功能·····························XXX5.7实现用户管理功能··································XXX6结论·······················XXXII7致谢······················XXXII8参考文献·····················XXXIIIII引言人事管理是一个企业在经营管理中不可缺少的部分,它的成功与否对于企业的发展来说都是至关重要的,所以公司人事管理系统应该能够为用户提供充足的信息和快捷的查询手段。但如果使用传统的人工直接统计的话,工作量十分的庞大,存在许多的缺点,如:效率低,保密性差,且如果人多,时间一长,将产生大量的文件及数据,对于查找,更新和维护带来困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对人事进行管理,可使人们从繁重而又单调的统计运算中解脱出来,仅用一些简单的操作便可及时准确地获得需要得信息。使企业实现科学化,正规化管理,与世界接轨。因此,开发这样一套管理软件成为很必要的事情。此设计主要实现的功能有系统用户管理,基本信息管理(部门、员工信息),考勤考评管理。本文主要构成如下:系统分析、数据库设计、建立数据库表的类、系统实现。本次毕业设计的数据库采用了ADO技术,这是一个基于OLEDB的访问接口,它继承了OLEDB的技术的优点,并且ADO基于COM,提供编程语言可利用的对象,如面向VC++。ADO在服务器应用方面非常有效,特别是对动态服务器页面的支持。IV系统分析2.1概要分析2.1.1系统功能分析 (UML)人事信息管理系统是对企业部门,人事档案,考勤,考评等人事管理进行全面管理的系统。该系统通过采集在日常的人事管理中所产生的各种原始的数据,根据现代人事管理的要求,对数据进行分类,分析,汇总,建立程序化,制度化,规范化的人事信息计算机软件管理系统,对各项人事信息进行分类维护与综合查询,为人事信息管理提供一个现代化管理手段,保持各种数据的完整性,及时性,正确性,完善管理体系,提高管理水平。系统的用例图:HumanResourceSystemadministerusersadministratorEmployeeInformationDepartmentInformationuserV基本的类图:globalclassCUsers-UserName-Pwd-User_type+GetUserName()+SetUserName(CStringcUserName)()+GetPwd()+SetPwd(CStringcPwd)()+GetUser_type()+SetUser_type(intiUser_type)()+HaveName(CStringcUserName)()+sql_insert()()+sql_updatePwd(CStringcUserName)()+sql_delete(CStringcUserName)()+GetData(CStringcUserName)()CFamliy-Id-Emp_Id-Name-Sex-Age+GetId()+SetId(intiId)()+GetEmp_Id()+SetEmp_Id(intiEmp_Id)()+GetName()+SetName(CStringcName)()+GetSex()+SetSex(CStringcSex)()+GetAge()+SetAge(intiAge)()

CDepartment-Dep_id-Dep_name-Describe-UpperId-a_DepName+GetDep_id()+SetDep_id(intiDep_id)()+GetDep_name()+SetDep_name(CStringcDep_name)()+GetDescribe()+SetDescribe(CStringcDescribe)()+GetUpperId()+SetUpperId(intiUpperId)()+HaveName(CStringcDep_Name)()+HaveSon(CStringcDep_id)()1*CEmploees-Emp_Id-Emp_Name-Sex-Nationality-Birth+GetEmp_Id()+SetEmp_Id(intiEmp_Id)()+GetEmp_Name()+SetEmp_Name(CStringcEmp_Name)()+GetSex()+SetSex(CStringcSex)()+GetNationality()+SetNationality(CStringcNationality)()+GetBirth()+SetBirth(CStringcBirth)()* *

CCheckin-CheckDate-Emp_Id-qqDays-ccDays-bjDays+GetCheckDate()+SetCheckDate(CStringcDate)()+GetEmp_Id()+SetEmp_Id(intiEmp_Id)()+GetqqDays()+SetqqDays(floatfqqDays)()+GetccDays()+SetccDays(floatfccDays)()+GetbjDays()+SetbjDays(floatfbjDays)()CEvaluation-EvaMonth-Emp_Id-ztEva-jlReason-jlAmount+GetEvaMonth()+SetEvaMonth(CStringcEvaMonth)()+GetEmp_Id()+SetEmp_Id(intiEmp_Id)()+GetztEva()+SetztEva(CStringcztEva)()+GetjlReason()+SetjlReason(CStringcjlReason)()+GetjlAmount()+SetjlAmount(intijlAmount)()CExperience-Id-Emp_Id-Start_Date-End_Date-School_Org+GetId()+SetId(intiId)()+GetEmp_Id()+SetEmp_Id(intiEmp_Id)()+GetStart_Date()+SetStart_Date(CStringcDate)()+GetEnd_Date()+SetEnd_Date(CStringcDate)()+GetSchool_Org()+SetSchool_Org(CStringcOrg)()由于类的属性与方法教多,此处只选取了其中的五个属性及其方法来代表VI2.1.2验证需求分析阶段的工作结果是开发软件的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求。为了提高软件的质量,确保软件开发成功,降低软件的开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性。一般来说,应从下面四个方面进行验证:a. 一致性 所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。b.完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。c.现实性指定的需求应该是用现有的硬件技术和软件技术基础上可以实现的。对硬件技术的进步可以做些预测,对软件技术的进步很难做些预测,只能从现有的技术水平出发判断需求的现实性。d .有效性 必须证明需求是正确有效的,确保能解决用户面对的问题。通过用户和设计者对上述需求分析所得到的管理系统功能的复查,并且对照上面几点要求进行验证,人事信息管理系提出的基本满足需求分析验证的要求。2.2 总体设计系统主要模块分布如下:人事管理系统主窗体系统用户 基本信息 考勤考评管理 管理 管理用户管理 修改密码 部门管理 员工管理 退出系统 考勤管理 考评管理系统用户管理模块:完成新建用户信息,用户信息管理,用户密码修改,用户管理代码功能。基本信息管理模块:完成对公司部门信息编辑,管理,选择;完成对员工选择,基本信息管理,信息编辑,调转部门,照片管理,家庭信息编辑,家庭信息管理,教育及工作经历编辑,教育及工作经历管VII理。完成退出系统。考勤考评管理模块:完成考勤信息编辑,管理及员工月度考勤;员工考评信息编辑与管理。2.3 开发环境2.3.1开发工具的选择1.VisualC++VisualC++是运行于 Windows平台上的交互式的可视化集成开发环境,它是美国Microsoft 公司开发的MicrosoftVisualStudio 套件中的一部分。像其他可视化集成开发环境一样,VisualC++集程序的代码编辑、编译、连接和调试等功能于一体,给编程人员提供了一个完整方便的开发界面和许多有效的辅助开发工具。 VisualC++的应用程序向导可以以很大一部分类型的程序提供框架代码,用户不用书写程序代码,只需按几个按钮就可以生成一些完整的可以运行的程序。VisualC++具有以下优点:面向对象、可视化开发。提供了面向对象的应用程序框架MFC(MicrosoftFoundationClass:微软基础类库),大大简化了程序员的编程工作,提高了模块的可重用性。VisualC++还提供了基于 CASE技术的可视化软件自动生成和维护工具 AppWizard、ClassWizard、VisualStudio、WizardBar等,帮助用户直观的、可视地设计程序的用户界面,可以方便的编写和管理各种类,维护程序源代码,从而提高了开发效率。用户可以简单而容易地使用C/C++编程。众多的开发商支持以及业已成为工业标准的MFC类库。MFC类库已经成为事实上的工业标准类库,得到了众多开发商和软件开发工具的支持;另外,由于众多的开发商都采用VisualC++进行软件开发,这样用VisualC++开发的程序就与别的应用软件有许多相似之处,易于学习和使用。3)VisualC++封装了Windows的API(应用程序接口)函数、USER、KERNEL、GDI函数,帮助我们弄清了许多函数的组织方法,隐去了创建、维护窗口的许多复杂的例行工作,简化了编程。2)ADO(ActiveXDataObject)ADO技术是基于OLEDB的访问接口,它继承了OLEDB技术的优点,并且,ADO对OLEDB的接口作了封装,定义了ADO对象,使程序开发得到简化,ADO技术属于数据库访问的VIII高层接口。SQL主要语法SQLSERVER提供了关系数据库的查询语言 SQL(StructuredQueryLanguage) ,是一种非常口语化、既易学又易懂的语法。此一语言几乎是每个资料库系统都必须提供的, ,包含了资料的定义(DDL)以及资料的处理(DML)。SQL原来拼成SEQUEL,这语言的原型以“系统R“的名字在IBM圣荷西实验室完成,经过IBM内部及其他的许多使用性及效率测试,其结果相当令人满意,并决定在系统 R的技术基础发展出来 IBM的产品。而且美国国家标准学会(ANSI)及国际标准化组织(ISO)在1987遵循一个几乎是以 IBMSQL为基础的标准关连式资料语言定义。一、资料定义DDL(DataDefinitionLanguage)资料定语言是指对资料的格式和形态下定义的语言, 他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。1、建表格:CREATETABLEtable_name(column1DATATYPE[NOTNULL][NOTNULLPRIMARYKEY],column2DATATYPE[NOTNULL],... )说明:DATATYPE--是资料的格式,详见表。NUTNULL--可不可以允许资料有空的(尚未有资料填入) 。PRIMARYKEY--是本表的主键。2、更改表格ALTERTABLEtable_nameADDCOLUMNcolumn_nameDATATYPE说明:增加一个栏位(没有删除某个栏位的语法) 。ALTERTABLEtable_nameADDPRIMARYKEY(column_name)说明:更改表得的定义把某个栏位设为主键。IXALTERTABLEtable_nameDROPPRIMARYKEY(column_name)说明:把主键的定义删除。3、建立索引CREATEINDEXindex_nameONtable_name(column_name)说明:对某个表格的栏位建立索引以增加查询时的速度。4、删除DROPtable_nameDROPindex_name二、资料形态DATATYPEssmallint16位元的整数。interger32位元的整数。decimal(p,s)p精确值和s大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点后有几位数。如果没有特别指定,则系统会设为p=5;s=0。float32位元的实数。double64位元的实数。char(n)n长度的字串,n不能超过254。varchar(n)长度不固定且其最大长度为n的字串,n不能超过4000。graphic(n)和char(n)一样,不过其单位是两个字元double-bytes,n不能超过127。这个形态是为 了支援两个字元长度的字体,例如中文字。vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过2000。date 包含了 年份、月份、日期。time 包含了 小时、分钟、秒。timestamp 包含了 年、月、日、时、分、秒、千分之一秒。组合查询组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的表格才能够得到结果的。SELECT*FROMtable1,table2XWHEREtable1.colum1=table2.column1说明:查询两个表格中其中column1值相同的资料。当然两个表格相互比较的栏位,其资料形态必须相同。一个复杂的查询其动用到的表格可能会很多个。整合性的查询:SELECTCOUNT(*)FROMtable_nameWHEREcolumn_name=xxx说明:查询符合条件的资料共有几笔。SELECTSUM(column1)FROMtable_name说明:计算出总和,所选的栏位必须是可数的数字形态。除此以外还有AVG()是计算平均、MAX()、MIN()计算最大最小值的整合性查询。SELECTcolumn1,AVG(column2)FROMtable_nameGROUPBYcolumn1HAVINGAVG(column2)>xxx说明:1.GROUPBY:以column1为一组计算column2 的平均值必须和 AVG、SUM等整合性查询的关键字一起使用。2.HAVING:必须和GROUPBY一起使用作为整合性的限制。复合性的查询SELECT*FROMtable_name1WHEREEXISTS(SELECT*XIFROMtable_name2WHEREconditions)说明:1.WHERE的conditions 可以是另外一个的 query。2.EXISTS在此是指存在与否。SELECT*FROMtable_name1WHEREcolumn1IN(SELECTcolumn1FROMtable_name2WHEREconditions)说明:IN后面接的是一个集合,表示column1存在集合里面。2.SELECT出来的资料形态必须符合 column1。其他查询SELECT*FROMtable_name1WHEREcolumn1LIKE’x%’说明:LIKE必须和後面的’x%’相呼应表示以 x为开头的字串。SELECT*FROMtable_name1WHEREcolumn1IN(’xxx’,’yyy’,..)说明:IN後面接的是一个集合,表示 column1存在集合里面。SELECT*FROMtable_name1WHEREcolumn1BETWEENxxANDyy说明:BETWEEN表示column1 的值介於xx 和yy 之间。3、更改资料:UPDATEtable_nameSETcolumn1=’xxx’XIIWHEREconditoins说明:更改某个栏位设定其值为’xxx’。2.conditions 是所要符合的条件、若没有 WHERE则整个table 的那个栏位都会全部被更改。4、删除资料:ELETEFROMtable_nameWHEREconditions说明:删除符合条件的资料。说明:关于WHERE条件后面如果包含有日期的比较,不同数据库有不同的表达式。具体如下:如果是ACCESS数据库,则为:WHEREmydate>#2000-01-01#如果是ORACLE数据库,则为:WHEREmydate>cast(’2000-01-01’asdate)或:WHEREmydate>to_date(’2000-01-01’,’yyyy-mm-dd’)如果比较日期时间型,则为:WHEREmydatetime>to_date(’2000-01-0110:00:01’,’yyyy-mm-ddhh24:mi:ss’)2.3.2运行环境硬件平台:CPU 的主频在500MHz上,内存在128MB以上软件平台:操作系统:Window98/Me/NT/2000/XP开发工具:VisualStudio2003数据库: SQLServer2000 及其以上版本XIII数据库设计通过对人事信息管理系统的需求分析及验证和总体的规划设计, 确定了设计本系统所需的各个模块及各模块所要的基本功能。就要设计数据库及数据库数据,并用数据库对各模块进行设计和编码。3.1数据规范化问题当把数据库收集在一个二维表中,往往有很多重复的数据,即冗余度大。像这样的二维表是不宜作为数据库管理的,必须进行规范化后才能使用。数据规范化理论是研究如何将一个不好的关系模型转化成为好的关系模型。规范化理论认为,关系数据库中的每一个关系都要满足一定的规范。根据满足规范的条件不同,可分为五个等级,分别称为第一范式(1NF),第二范式(2NF)第五范式(5NF),通常解决一般性问题时,只要把数据规范到第三范式(3NF)标准就可满足需要,不是规范化等级越高越好。运用Microsoftaccess2003新建一个“hr.mdb”的数据库,人事管理所有人事信息的数据都保存在这个数据库中。3.2设计表的结构表3-1列名(中文)列名(英文)数据类型宽度是否为空部门编号(主键)Dep_idintNo部门名称Dep_namevarchar40No部门描述Describechar200No上级部门UpperIdintNo表3-2列名(中文)列名(英文)数据类型宽度是否为空员工编号(主键)Emp_IdintNo员工姓名Emp_namevarchar50No照片ImageYesXIV性别Sexchar2Yes民族Nationalityvarchar40Yes出生日期Birthvarchar20Yes政治面貌Political_Partyvarchar40Yes文化程度Culture_levelvarchar40Yes婚姻状况Marital_Conditionvarchar20Yes家庭住址Family_Placevarchar60Yes身份证号Id_Cardvarchar20Yes工作证号BadgeIDvarchar40Yes办公电话Office_phonevarchar30Yes手机号Mobilevarchar30Yes档案所在地File_keep_orgvarchar100Yes户口所在地Hukouvarchar100Yes到岗日期HireDatevarchar20Yes所在部门编号Dep_IdintYes工作岗位Positionvarchar40Yes职务Titlevarchar20Yes员工状态StateintYes上级员工UpperIdintYes合同有效期Contract_Durationvarchar20Yes填表人Fillin_Personvarchar30Yes填表时间Fillin_Timevarchar20Yes表3-3列名(中文)列名(英文)数据类型宽度是否为空编号(主键)IdintNo员工编号Emp_IdintNo姓名Namevarchar50No性别Sexchar2YesXV年龄AgeintYes关系Relationshipvarchar20Yes工作单位Workingorgvarchar40Yes表3-4列名(中文)列名(英文)数据类型宽度是否为空编号(主键)IdintNo员工编号Emp_IdintNo开始日期Start_Datechar10Yes结束日期End_Datechar10Yes学校/单位School_Orgvarchar50Yes职务Titlevarchar20Yes表3-5列名(中文)列名(英文)数据类型宽度是否为空考评月份EvaMonthchar10No员工编号(主键)Emp_IdintNo总体评价ztEvavarchar200Yes奖励事由jlReasonvarchar200Yes奖励金额jlAmountsmallintYes处罚事由cfReasonvarchar200Yes处罚金额cfAmountintYes表3-6列名(中文)列名(英数据类型宽度是否为空文)考勤日期CheckDatechar10No员工编号(主键)Emp_IdintNo全勤天数qqDaysintYesXVI出差天数cqDaysintYes病家天数bjDaysintYes事假天数sjDaysintYes旷工天数kgDaysintYes法定休假日fdxjDaysintYes年休假日nxjDaysintYes倒休假天数dxjDaysintYes迟到分钟数cdMinutesintYes早退分钟数ztMinutesintYes一类加班天数Ot1DaysintYes二类加班天数Ot2DaysintYes三类加班天数Ot3DaysintYes备注信息Memovarchar200Yes表3-7列名(中文)列名(英文)数据类型宽度是否为空用户名(主键)UserNamevarchar40No密码Pwdvarchar40No用户类型User_TypeintNoXVII建立数据库表的类4.1 部门表的类部门表的类用来管理部门表的数据库操作。定义部门编号,部门名称,部门描述以及上级部门;构造和析构部门表;设置和读取成员变量;对数据库的操作:判断指定部门名称是否存在,是否包含下级部门(如果又则不能删除),指定部门是否有员工(若有则不能删除) ;读取所有部门名称,上级部门及相关的描述信息等。4.2员工基本信息表的类员工表的类用来管理员工基本信息表的数据库操作。定义员工编号,姓名,性别,民族,出生年月,政治面貌,文化程度,婚姻状况,家庭住址,身份证号,识别卡号,办公室电话,手机号,档案所在地,户口,受雇日期,所在部门编号,职位,头衔,国籍,上级部门编号,合同期,备忘录,;构造和析构员工基本信息表;设置和读取成员变量;数据库操作:判定指定的员工姓名是否存在;根据指定的员工编号返回员工姓名;根据员工编号读取所有的字段值,更新部门信息,以便调转部门时调用。4.3员工家庭信息的类员工家庭信息的类用来管理员工家庭信息的数据库操作。定义员工家庭成员的编号,员工编号,姓名,性别,年龄,关系,原先工作地;构造和析构员工家庭信息表;读取和设置成员变量;数据库操作:根据员工编号读取所有字段值,更新家庭成员信息。4.4员工教育及工作经历记录的类员工教育及工作经历记录的类用来管理员工教育及工作经历记录的数据库操作。定义员工教育及工作经历记录表的项:编号,员工编号,起始日期,截止日期,学校,职称。构造和析构员工教育及工作经历记录表。读取和设置成员变量。数据库操作:跟据XVIII员工编号读取所有的字段值,更新记录编号。4.5员工考评表的类员工考评表的类用来管理员工考评的数据库操作。定义考评表的基本项:月度考评,员工编号,总体考评,奖励原因,奖励数目,处罚原因,处罚数目,备忘录。构造和析构员工考评表。读取和设置成员变量。数据库操作:判断指定员工/月份考评记录是否存在,根据员工编号读取所有的字段值,更新月份考评情况。4.6员工工作考勤表的类员工考勤表的类用来管理员工考勤表的数据库操作。定义考勤表的基本项:考勤日期,员工编号,缺勤天数,出勤天数,病假天数,事假天数,旷工天数,法定休假天数,年休假天数,调休假天数,迟到分钟数,早退分钟数,加班一天,加班两天,加班三天,备忘录。构造和析构员工考勤表。读取和设置成员变量。数据库操作:判定指定员工/日期的考勤记录是否存在;根据员工编号读取所有字段值,更新员工/日期的考勤记录。4.7用户信息表的类用户信息表的类用来管理用户信息的数据库操作。定义用户信息的基本项:用户名,密码。构造和析构用户信息表。读取和设置成员变量。数据库操作:判断指定用户名是否存在;获取用户名,更新密码。XIX5 系统实现5.1用ADO进行数据库编程:生成应用程序框架并初始化OLE/COM库环境创建一个标准的MFCAppWizard(exe)应用程序,然后在使用ADO数据库的InitInstance函数中初始化OLE/COM库(因为ADO库是一个COMDLL库)。本例为:BOOLCAdotestDlg::OnInitDialog(){::CoInitialize(NULL);// 初始化OLE/COM库环境}程序最后要调用 ::CoUninitialize() ;//释放程序占用的 COM资源。另外:m_pRecordset->Close(); 注意!!!不要多次关闭!!!!!!!!!!!!m_pConnection->Close();m_pRecordset=NULL;m_pConnection=NULL;引入ADO库文件使用ADO前必须在工程的 stdafx.h 文件最后用直接引入符号# import引入ADO库文件,以使编译器能正确编译。代码如下:#import "C:\Program Files\common files\system\ado\msado15.dll" no_namespacerename("EOF","adoEOF")ADO类的定义是作为一种资源存储在 ADODLL(msado15.dll)中,在其内部称为类型库。类型库描述了自治接口,以及 C++使用的COMvtable接口。当使用#import 指令时,在运行时VisualC++需要从ADODLL中读取这个类型库,并以此创建一组 C++头文件。这些头文件具有.tli 和.tlh 扩展名,读者可以在项目的目录下找到这两个文件。在C++程序代码中调用的 ADO类要在这些文件中定义。程序的第三行指示 ADO对象不使用名称空间。在有些应用程序中,由于应用程序中的对象与ADO中的对象之间可能会出现命名冲突,所以有必要使用名称空间。如果要使XX用名称空间,则可把第三行程序修改为: rename_namespace("AdoNS")。第四行代码将ADO中的EOF(文件结束)更名为adoEOF,以避免与定义了自己的 EOF的其他库冲突。3.利用智能指针进行数据库操作在CaboutDlg头文件中定义两个ADO智能指针类实例,并在对话框中加入一个ListCtrl。classCAdotestDlg:publicCDialog{_ConnectionPtrm_pConnection;_RecordsetPtrm_pRecordset;ClistCtrlm_List;......}ADO库包含三个智能指针:_ConnectionPtr 、_CommandPtr和_RecordsetPtr。_ConnectionPtr 通常被用来创建一个数据连接或执行一条不返回任何结果的 SQL语句,如一个存储过程。_CommandPtr返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,可以利用全局_ConnectionPtr 接口,也可以在_CommandPtr接口里直接使用连接串。 _RecordsetPtr 是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定、游标控制等。在使用ADO程序的事件响应中 OnButton1加入以下代码:voidCAdotestDlg::OnButton1(){m_List.ResetContent();m_pConnection.CreateInstance(_uuidof(Connection));// 初始化Connection指针m_pRecordset.CreateInstance(_uuidof(Recordset));// 初始化Recordset指针try{m_pConnection->Open("DSN=ADOTest","","",0);// 连接叫作ADOTest的ODBC数据源注意:这是连接不需要用户ID或密码的open函数否则形式为->Open("DSN=test;uid=sa;pwd=123;","","",0);XXI执行SQL语句得到一个记录集把其指针赋值给m_pRecordsetCStringstrSql="select*frommiddle";BSTRbstrSQL=strSql.AllocSysString();m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);//adOpenDynamic:动态adLockOptimistic 乐观封锁法adCmdText:文本查询语句while(!m_pRecordset->adoEOF)// 遍历所有记录{取纪录字段值方式之一_variant_tTheValue;//VARIANT 数据类型TheValue=m_pRecordset->GetCollect("BIG_NAME");// 得到字段BIG_NAME的值if(TheValue.vt!=VT_NULL)m_List.AddString((char*)_bstr_t(TheValue));将该值加入到列表控件中取纪录字段值方式之二_bstr_tTheValue1=m_pRecordset->Fields->GetItem("BIG_NAME")->Value;CStringtemp=TheValue1.copy();m_List.AddString(temp);数据类型转换_variant_tvUsername,vBirthday,vID,vOld;TRACE("id:%d,姓名:%s,年龄:%d,生日:%s\r\n",vID.lVal,(LPCTSTR)(_bstr_t)vUsername,vOld.lVal,(LPCTSTR)(_bstr_t)vBirthday);m_pRecordset->MoveNext();// 转到下一条纪录}m_pRecordset->Close();m_pConnection->Close();}XXIIcatch(_com_errore)// 异常处理{AfxMessageBox(e.ErrorMessage());}m_pRecordset->Close();//注意!!!不要多次关闭!!!!否则会出错m_pConnection->Close();m_pRecordset=NULL;m_pConnection=NULL;}程序中通过_variant_t 和_bstr_t 转换COM对象和C++类型的数据,_variant_t 类封装了OLE自治VARIANT数据类型。在C++中使用_variant_t 类要比直接使用VARIANT数据类型容易得多。好,编译后该程序就能运行了,但记住运行前要创建一个叫 ADOTest的ODBC数据源。该程序将把表middle中的BIG_NAME字段值显示在列表控件中。4.执行SQL命令并取得结果记录集为了取得结果记录集,我们定义一个指向 Recordset 对象的指针:_RecordsetPtrm_pRecordset;并为其创建Recordset对象的实例:m_pRecordset.CreateInstance("ADODB.Recordset");SQL命令的执行可以采用多种形式,下面我们一进行阐述。(1)利用Connection对象的Execute方法执行SQL命令Execute方法的原型如下所示:_RecordsetPtrConnection15::Execute(_bstr_tCommandText,VARIANT*RecordsAffected,longOptions)其中CommandText是命令字串,通常是 SQL命令。参数RecordsAffected 是操作完成后所影响的行数 ,参数Options表示CommandText中内容的类型,Options可以取如下值之一:adCmdText:表明CommandText是文本命令adCmdTable:表明CommandText是一个表名adCmdProc:表明CommandText是一个存储过程adCmdUnknown:未知XXIIIExecute执行完后返回一个指向记录集的指针,下面我们给出具体代码并作说明。_variant_tRecordsAffected;/// 执行SQL命令:CREATETABLE创建表格users,users 包含四个字段:整形ID,字符串username,整形old,日期型birthdaym_pConnection->Execute("CREATETABLEusers(IDINTEGER,usernameTEXT,oldINTEGER,birthdayDATETIME)",&RecordsAffected,adCmdText);往表格里面添加记录m_pConnection->Execute("INSERT INTO users(ID,username,old,birthday)VALUES(1,''''Washington'''',25,''''1970/1/1'''')",&RecordsAffected,adCmdText);将所有记录old字段的值加一m_pConnection->Execute("UPDATE users SET old =old+1",&RecordsAffected,adCmdText);/// 执行SQL统计命令得到包含记录条数的记录集m_pRecordset = m_pConnection->Execute("SELECT COUNT(*) FROMusers",&RecordsAffected,adCmdText);_variant_tvIndex=(long)0;_variant_tvCount=m_pRecordset->GetCollect(vIndex);/// 取得第一个字段的值放入vCount变量上两句可以写成_variant_tvCount=m_pRecordset->GetCollect((_variant_t)((long)0));m_pRecordset->Close();/// 关闭记录集CStringmessage;message.Format("共有%d条记录",vCount.lVal);AfxMessageBox(message);/// 显示当前记录条数(2)利用Command对象来执行SQL命令_CommandPtrm_pCommand;m_pCommand.CreateInstance("ADODB.Command");XXIV_variant_tvNULL;vNULL.vt=VT_ERROR;vNULL.scode=DISP_E_PARAMNOTFOUND;///定义为无参数m_pCommand->ActiveConnection=m_pConnection;/// 非常关键的一句,将建立的连接赋值给它m_pCommand->CommandText="SELECT*FROMusers";///命令字串m_pRecordset=m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///执行命令,取得记录集在这段代码中我们只是用 Command对象来执行了SELECT查询语句,Command对象在进行存储过程的调用中能真正体现它的作用。记录集的遍历、更新根据我们刚才通过执行SQL命令建立好的users 表,它包含四个字段:ID,username,old,birthday由代码实现:打开记录集,遍历所有记录,删除第一条记录,添加三条记录,移动光标到第二条记录,更改其年龄,保存到数据库。5.2实现用户登录功能5.2.1全局类classCGlobal{public:CUserscurUser;CGlobal();virtual~CGlobal();};5.2.2用户登录对话框XXV图5-1登录界面功能:用户登录进入人事管理系统。系统启动后,首先要做的就是用户登录。若不登录系统,所有功能都无法使用。用户只有登录系统后,根据其具有的权限,才能执行一定的操作。操作:进入该功能后,要求输入用户的登录名及其口令,只有其登录名和口令完全正确,才能进入人事管理系统。图5-2 人事信息管理主界面系统会根据为用户分配的权限,设置其对应的功能为有效,用户就可操作该功能。5.3 实现部门管理功能5.3.1部门信息管理功能XXVI图5-3部门信息管理界面点击人事管理系统主菜单上的基本信息管理,进入部门管理子菜单,弹出如上部门信息管理对话框,若要添加部门及信息,点击添加,弹出如下对话框图5-4编辑部门信息界面即可添加部门及相关的信息;若要对部门信息进行修改,选定某一部门,点击修改,弹出如上对话框,可对部门名及相关描述进行修改更新;删除操作只能从某一部门的最直接下属部门开始操作,若越权操作,则会弹出警告对话框:此部门包含下级部门,不能删除,同时树的根部:部门信息为不可删除项;单击关闭即可退出部门信息管理。XXVII5.3.2部门信息选择功能图5-5 选择部门信息界面5.4 实现员工信息管理功能图5-6员工信息管理界面点击员工管理,进入员工基本信息管理界面,即可选择指定的员工及对所选的员工的相应的信息进行编辑修改(图5-7),可选择相应部门添加,删除员工,实现员工调转部门;同时选定员工后,还可编辑其家庭成员信息,编辑自己的工作经历等。最后点击关闭退出基本信息的管理。XXVIII图5-7 编辑员工基本信息界面5.5 实现考勤管理功能图5-8考勤管理界面点击考勤管理进入员工考勤信息管理,选择考勤日期,所在部门,则会显示此部门员工的考勤记录,设置员工考勤相关信息,可实现对员工月度考勤的统计,点击关闭退出考勤管理。XXIX5.6 实现员工考评管理功能图5-9 考评管理界面点击考评管理,进入员工考评管理界面,选择考评时间: x年x月,选择所在部门:,即可显示此部门下的员工考评情况,可浏览设置员工考评信息,点击关闭退出员工考评管理。5.7实现用户管理功能图5-10 用户管理界面点击用户管理,进入用户管理界面,做为超级用户可添加删除指定用户,同时可重置密码,即恢复用户最初的密码,点击取消退出用户管理。XXX图5-11 新建用户界面用户密码修改功能点击修改密码,进入修改密码界面,即可对已有用户密码进行修改。图5-12 修改密码界面XXXI结论通过这几个月的努力,人事信息管理系统的设计与开发已完成。其基本功能包括:系统用户管理:包括用户管理、修改密码;基本信息管理:包括部门管理、人员基本信息管理;考勤、考评管理等功能已基本达到。这次毕业设计是按照软件开发流程进行的。从一开始的详细设计,用 UML描绘出系统的基本框架,到数据库的设计,以及每个类的实现,采用了面向对象的思想,这对系统的日后维护及功能的扩充有很大的帮助。在这几个月的开发过程中,加深了对 VisualC++ 的理解,对SQLSERVER数据库使用也比较熟练,尤其是SQL语句的使用。最重要的是,我对这样一个大的程序的编写过程中,培养了自学的能力,对C++语言的认识有了进一步的提高。7致 谢参考文献基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论