《人事考勤管理系统课程设计57938.docx》由会员分享,可在线阅读,更多相关《人事考勤管理系统课程设计57938.docx(93页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计 人事考勤管理系统 目录第一部分:开发背背景.33第二部分:系统分分析3第三部分:系统设设计.99第四部分:公共类类设计.15第五部分:主题窗窗设计.166第六部分:用户登登录模块块设计.17第七部分:用户管管理模块块设计220第八部分:部门管管理模块块设计223第九部分:人员信信息管理理模块设设计.32第十部分:考勤模模块设计计40第十一部分分:考勤勤汇总模模块设计计445第十二部分分:后续续补充部部分: 一些些过程的的具体实实现方法法总结及及图片解解释:.51第十三部分分:心得得.51人事考勤管管理系统统 开发背景随着公司业业务不断断发展,员员工数量量不断增增加,人人事考勤勤方面的
2、的管理已已成为公公司管理理中的重重要部分分,但传传统的人人事考勤勤制度已已不能有有效地管管理员工工的出勤勤状况,急急需一套套人事考考勤管理理的有效效工具人事事考勤管管理系统统。 二、系统分分析1) 需求分析 通过对人人事考勤勤管理过过程的研研究和分分析,要要求本系系统应该该具有以以下功能能。a) 用户登录。b) 部门信息录录入c) 人员信息管管理d) 考勤信息录录入e) 考勤信息汇汇总。2) 系统功能描描述用户需要输输入用户户名和密密码进入入人事考考勤管理理系统,对对各部门门、员工工的基本本信息进进行维护护和管理理。在考考勤管理理模块中中录入员员工当天天的考勤勤信息,同同时可对对年、月月、员工
3、工进行查查询。此此外,还还可以通通过考勤勤汇总查查询模块块对员工工某月的的考勤记记录进行行汇总,计计算出员员工月工工作天数数、早退退、迟到到的天数数。 三、系统设设计1) 系统目标人事考勤管管理系统统以实现现员工日日常出勤勤信息管管理为设设计目标标,加以以强大的的数据库库管理功功能,可可以极大大地提高高人事部部门的日日常工作作效率。本本系统在在设计时时满足以以下几点点:a) 采用人机对对话的操操作方式式,信息息查询灵灵活、方方便、快快捷、准准确,数数据存储储安全可可靠。b) 对考勤信息息的操作作简单,可可以方便便地进行行添加、修修改、和和删除。c) 可以录入员员工信息息、部门门信息。d) 对员
4、工的考考勤信息息按月汇汇总计算算。e) 对用户输入入的数据据,系统统进行严严格的数数据检验验,尽可可能排除除人为错错误。f) 系统最大限限度地实实现了易易维护性性和易操操作性。g) 系统运行稳稳定、安安全可靠靠。2) 系统功能能结构人事考勤管管理系统统的功能能结构如如图所示示:人事考勤管理系统考勤数据录入考勤信息汇总用户管理部门信息管理员工信息管理3) 业务流图人事考勤管管理系统统业务流流程图如如图:用户退出登录员工信息管理员工考勤管理修改密码部门管理用户管理考勤查询4)系统预预览:人事考勤管管理系统统由多个个功能模模块组成成,下面面仅列出出一些典典型的功功能模块块,其他他模块以以后陆续续列出
5、:a) 部门管理模模块如图图:主要管理各各部门之之间的结结构信息息b) 用户管理模模块如图图:用于用户的的一些操操作管理理c) 人员信息管管理如图图:主要用于维维护员工工的基本本信息d) 考勤管理模模块如图图: 用于记录录人事考考勤的信信息e) 考勤汇总查查询如图图:对员工的考考勤信息息进行汇汇总统计计4) 数据库设计计A. 数据库分析析人事考勤系系统采用用SQLL Seerveer 220088 数据据库,数数据库名名称为 tb_perrsonn 在数数据库中中建立四四个表存存储不同同的信息息,如图图:B. 数据库概念念设计根据介绍的的需求分分析和系系统设计计,规划划处本系系统中使使用的数数
6、据库实实体对象象,分别别以管理理员为实实体,部部门实体体和考勤勤实体等等。下面面是实体体E-RR图。a) 管理员实体体管理员包括括编号,用用户,密密码。管管理员实实体E-R图用户编号密码管理员 b)部门门实体部门实体包包括编号号,部门门名称,备备注信息息和上级级部门编编号。部部门实体体E-RR图上级部门管理备注信息部门名称部门编号部门管理c)员工实实体员工编号自动编号员工实体包包括自动动编号,员员工编号号,员工工姓名,照照片,性性别和生生日等信信息。员员工E-R图性别生日员工姓名照片员工d)考勤实实体上班时间考勤实体包包括人员员姓名,考考勤信息息,上班班时间,下下班时间间下班时间下班考勤时间人
7、员姓名上班考勤时间考勤日期C.数据库库逻辑设设计a) 管理员信息息表(ttab_useer),用用于保存存管理员员的信息息,如图图:b) 部门信息表表(taab_DDeptt)用于于记录部部门的信信息,如如图:C) 考勤勤信息表表(taab_cchecck)用用于记录录考勤信信息c) 员工信息息表(ttab_Empployyeess)保存存公司员员工信息息,如图图: 四、公共类类设计本系统采用用ADOO连接数数据库。为为了能够够方便的的使用AADO建建立数据据库连接接并进行行相应的的数据操操作,在在公共类类中对系系统中是是使用的的ADOO操作进进行了封封装。在在系统中中建立了了ADOO的两个个
8、公共类类CADDOCoonneectiion和和CADDODaataSSet,这两个个类定义义在ADDO.hh头文件件中,实实现在AADO.cppp文件中中。ACADDOCoonneectiion类类CADOCConnnecttionn类是用用来连接接数据库库的,实实现了对对_Coonneectiion接接口的封封装。CCADOOConnnecctioon类在在头文件件中的定定义如下下: #impoort C:Prrogrram FillesCommmonn FiilessSyysteemaadomsaado115.ddll nno_nnameespaace rennamee(EEOF,aad
9、oEEOF)classs CAADOCConnnecttionnprivaate:stattic voiid IInittADOO();/初初始化AADOstattic voiid UUnInnitAADO();proteecteed:_ConnnecctioonPttr mm_Coonneectiion;/指指针接口口publiic:BOOLL IssOpeen();/判断是是否与数数据库连连接_ConnnecctioonPttr GGetCConnnecttionn();/获获取连接接接口CStrringg GeetSQQLCoonSttr();/获取SSQL连连接字符符串BOOLL Op
10、pen(CSttrinng CConSStr);/建立数数据库连连接CADOOConnnecctioon();virttuall CCADOOConnnecctioon();CADOCConnnecttionn类的实实现代码码如下:CADOCConnnecttionn * GettConnnecctioon()/GGetCConnnecttionn函数是是一个全全局函数数,用于于返回全全局数据据库连接接对象的的的指针针retuurn &g_Connnecctioon;CADOCConnnecttionn:CCADOOConnnecctioon()/CCADOOConnnecctioon方法法是
11、构造造方法,用用于初始始化OLLE和创创建_CConnnecttionn接口指指针InittADOO();m_Coonneectiion.CreeateeInsstannce(ADDODBB.Coonneectiion);CADOCConnnecttionn:CADDOCoonneectiion()/CAADOCConnnecttionn方法是是构造方方法,用用于取消消OLEE 的初初始化和和释放_Connnecctioon接口口指针if (IsOOpenn()m_CConnnecttionn-CClosse();m_Coonneectiion = NNULLL;UnInnitAADO();v
12、oid CADDOCoonneectiion:InnitAADO()/IniitADDO是一一个静态态方法,用用于初始始化OLLEif (CoonCoountt+ = 0) CooIniitiaalizze(NNULLL);void CADDOCoonneectiion:UnnIniitADDO()/UUnInnitAADO是是一个静静态方法法,用于于取消初初始化OOLEif (-ConnCouunt = 0) CCoUnniniitiaalizze();BOOL CADDOCoonneectiion:Oppen(CSttrinng CConSStr)/通通过指定定的数据据库连接接字符串串于S
13、QQL数据据库建立立连接if (IsOOpenn()m_CConnnecttionn-CClosse();m_Coonneectiion-Oppen(_bbstrr_t)ConnStrr,addModdeUnnknoown);retuurn IsOOpenn();CStriing CADDOCoonneectiion:GeetSQQLCoonSttr()/生生成数据据库连接接需要的的字符串串CStrringg Sttr;Str.Forrmatt(PProvvideer=SSQLOOLEDDB.11;Innteggratted Seccuriity=SSPPI;PPerssistt Seecur
14、rityy Innfo=Fallse;Iniitiaal CCataalogg=tbb_peersoon;DDataa Soourcce=LLONGGFEII-PCCSSQLEEXPRRESSS);retuurn Strr;_ConnnecttionnPtrr CAADOCConnnecttionn:GGetCConnnecttionn()/该方方法用于于返回_Connnecctioon接口口指针retuurn m_CConnnecttionn;BOOL CADDOCoonneectiion:IssOpeen()/判判断当前前数据库库连接对对象与数数据库的的连接状状态longg Sttatee
15、;m_Coonneectiion-geet_SStatte(&Staate);if (Staate = adSStatteOppen)retturnn trrue;retuurn fallse;CADODDataaSett类的定定义如下下:classs CAADODDataaSettproteecteed:_ReccorddsettPtrr m_DattaSeet;/数据据集接口口指针CADOOConnnecctioon *m_CConnnecttionn;/数据库库连接对对象publiic:BOOLL Oppen(CSttrinng SSQLSStr,intt LoockTTypee);/打
16、开开记录集集voidd Deelette();/记录删删除int GettReccorddNo();/获取取记录集集行号voidd moove(intt nIIndeex);/移移动记录录指针voidd Saave();/保存存对记录录集的修修改voidd SeetFiielddVallue(CSttrinng FFielldNaame,_vaariaant_t VValuue);/设设置字段段的值voidd AdddNeew();/添加新新纪录BOOLL Neext();/记录录集指针针指向下下一个记记录FielldsPPtr GettFieeldss();/获获取记录录集字段段集合int
17、GettReccorddCouunt();/获取取记录集集中记录录数量voidd SeetCoonneectiion(CADDOCoonneectiion *pCCon);/设置记记录集的的数据库库连接对对象BOOLL Oppen(CSttrinng SSQLSStr);/打开记记录集CADOODattaSeet();virttuall CCADOODattaSeet();privaate:BOOLL IssOpeen();CADODDataaSett类的实实现如下下:CADODDataaSett:CCADOODattaSeet()/该该方法为为记录集集实现类类的构造造方法,在在该方法法中实现
18、现记录集集接口对对象的创创建m_DaataSSet.CreeateeInsstannce(ADDODBB.Reecorrdseet);CADODDataaSett:CADDODaataSSet()/实现记记录集的的关闭与与接口的的释放if (IsOOpenn()m_DDataaSett-CClosse();m_DaataSSet = NNULLL;m_Coonneectiion = NNULLL;void CADDODaataSSet:SeetCoonneectiion(CADDOCoonneectiion *pCCon)/设设置记录录集所连连接的数数据库连连接类的的对象m_Coonneect
19、iion = ppConn;int CCADOODattaSeet:GettReccorddCouunt()/获取记记录集中中数据的的数量if (IsOOpenn()retturnn m_DattaSeet-GettReccorddCouunt();elseeretturnn 0;BOOL CADDODaataSSet:Oppen(CSttrinng SSQLSStr)/打打开数据据集if (IsOOpenn()m_DDataaSett-CClosse();/*/m_DaataSSet-Oppen(_bsstr_t(SSQLSStr),_vaariaant_t(IDiispaatchh*)gg
20、_Coonneectiion.GettConnnecctioon(), ttruee),addOpeenKeeyseet, adLLockkOpttimiistiic, adCCmdTTextt);retuurn IsOOpenn();/*/BOOL CADDODaataSSet:IssOpeen()/判判断数据据集是否否处于打打开状态态longg Sttatee;m_DaataSSet-geet_SStatte(&Staate);if (Staate = adSStatteOppen)retturnn trrue;retuurn fallse;FielddsPttr CCADOODattaS
21、eet:GettFieeldss()/用来来获取记记录集中中字段的的集合retuurn m_DDataaSett-GGetFFiellds();BOOL CADDODaataSSet:Neext()/记录集集指针下下移一位位if (m_DDataaSett-aadoEEOF)retturnn faalsee;m_DaataSSet-MooveNNextt();retuurn truue;void CADDODaataSSet:AdddNeew()m_DaataSSet-AdddNeew();void CADDODaataSSet:SeetFiielddVallue(CSttrinng FFie
22、lldNaame, _vvariiantt_t Vallue)/想想记录集集中指定定的字段段赋值m_DaataSSet-PuutCoolleect(_bbstrr_t)FieeldNNamee,Vaaluee);void CADDODaataSSet:Saave()/保存记记录集数数据所做做的修改改m_DaataSSet-Uppdatte();void CADDODaataSSet:moove(intt nIIndeex)/将记记录集的的当前指指针移动动到指定定的索引引位置m_DaataSSet-MooveFFirsst();m_DaataSSet-Moove(nInndexx);int CC
23、ADOODattaSeet:GettReccorddNo()/获取记记录集中中的当前前行号retuurn m_DDataaSett-AAbsooluttePoosittionn;void CADDODaataSSet:Deelette()/删删除记录录集中的的当前行行m_DaataSSet-Deelette(aadAfffecctCuurreent);BOOL CADDODaataSSet:Oppen(CSttrinng SSQLSStr, innt LLockkTyppe)if (IsOOpenn()m_DDataaSett-CClosse();/*/m_DaataSSet-Oppen(_b
24、sstr_t(SSQLSStr),_vvariiantt_t(IDDisppatcch*)g_CConnnecttionn.GeetCoonneectiion(), truue),addOpeenKeeyseet,(LocckTyypeEEnumm) LLockkTyppe, adCCmdTTextt);retuurn IsOOpenn(); 五、主题窗窗设计A.主题窗窗由菜单单和图片片组成,如如图:B.主题窗窗设计步步骤:a启动vvisuual c+,选择择Fille/NNew命命令,打打开Neew对话话框 b在左侧侧选择MMFC ApppWizzardd(exxe)选选项,在在Prooje
25、cct nnamee编辑框框中输入入工程名名称,在在loccatiion编编辑框中中设置保保存工程程的路径径,然后后单击OOK按钮钮,打开开MFCC ApppWiizarrd对话话框,选选择对话话框编程程,打击击fissh cc像工工程中导导入位图图,菜单单资源(具具体操作作在最后后有补充充) 六、用户登登录模块块设计A 概述,登录录界面是是每个管管理系统统应该具具备的,本本系统的的登录模模块如图图: B . 技术分分析 窗体应应在主题题窗创建建之前并并显示,在在登录窗窗体创建建的同时时应该建建立数据据库连接接,具体体操作如如下:BOOLbbConn = 、GettConnnecctioon(
26、)-OOpenn(GeetCoonneectiion()-GettSQLLConnStrr();CLogiinDiialoog llogiindllg;if (llogiindllg.DDoMoodall() != IDOOK)returrn ffalsse;:CoIInittiallizee(NUULL);CPerssonDDlg dlgg;C. 实现过程a. 创建一个对对话框b. 向对话框中中添加两两个静态态文本控控件、一一个编辑辑框控件件、和两两个按钮钮控件。分分别设置置两个静静态文本本控件的的Capptioon属性性为“用户名名”和“密码”设置编编辑框控控件类型型为paasswword
27、d;分别设置连连个按钮钮为“确定”和“取消”。C. 在窗窗体初始始化方法法中创建建用户表表的数据据,并将将用户添添加到列列表框控控件中。代代码如下下:BOOL CLooginnDiaalogg:OOnInnitDDiallog() CDiaalogg:OOnInnitDDiallog();m_DaataSSet.SettConnnecctioon(GGetCConnnecttionn();m_DaataSSet.Opeen(Sellectt * Froom TTab_Useer);int couunt = mm_DaataSSet.GettReccorddCouunt();for (innt
28、ii = 0; iIItemmLUseerNaame-Vallue);m_DDataaSett.Neext();m_UsserLListt.SeetCuurSeel(00);retuurn TRUUE; / reeturrn TTRUEE unnlesss yyou sett thhe ffocuus tto aa coontrrol / EXXCEPPTIOON: OCXX Prropeertyy Paagess shhoulld rretuurn FALLSEd 确定按钮事事件代码码如下:void CLooginnDiaalogg:OOnLooginn() CStrringg sqql,u
29、userr,paass;m_UsserLListt.GeetWiindoowTeext(useer);m_PaassWWordd.GeetWiindoowTeext(passs);sql.Forrmatt(SSeleect * FFromm taab_uuserr Whheree UsserNNamee = %ss aand PasssWoord = %s,useer,ppasss);m_DaataSSet.Opeen(ssql);if (m_DDataaSett.GeetReecorrdCoountt() = 1):SSetUUserrNamme(uuserr);thiis-OnOOK();
30、elseeAfxxMesssaggeBoox(用户名名或密码码不正确确!); 七、用户管管理模块块A. 概况:能实实现添加加,修改改,删除除等操作作如图:B. 实现过程:a 创建一个对对话框b 向对话框中中添加相相应的控控件c 给对话框添添加对话话框类d 给类添加函函数及成成员变量量e 给控件关联联变量f 编写函数 CC实现现代码: aa定义义UpddateeGriid方法法用来更更新列表表视图中中的信息息代码如如下:void CUsserMManaage:UppdatteGrrid()m_DattaSeet.OOpenn(SSeleect * FFromm taab_UUserr);m_gr
31、iid.DDeleeteAAllIItemms();for (intt i = 00 ; i IItemmLUseerNaame-Vallue);int nno = m_DattaSeet.GGetRRecoordNNo();m_griid.SSetIItemmDatta(ii,noo);m_DattaSeet.NNextt(); b添添加按钮钮代码如如下:void CUsserMManaage:OnnApppendd() CUserrEdiit uuserrediit;if (uuserrediit.DDoMoodall() = IDOOK)m_DattaSeet.AAddNNew();mm
32、_DaataSSet.SettFieeldVValuue(UseerNaame,(_bsttr_tt)ussereeditt.naame);m_DattaSeet.SSavee();UpdatteGrrid();c. 删除按钮代代码:void CUsserMManaage:OnnDelletee() if (MesssaggeBoox(是否删删除此记记录!,提提示,MB_YESSNO|MB_ICOONWAARNIING) = IDDYESS)intt noo = m_ggridd.GeetIttemDDataa(m_griid.GGetSSeleectiionMMarkk();m_DDataa
33、Sett.moove(no-1);m_DDataaSett.Deelette();m_DDataaSett.Saave();UpddateeGriid();d. 修改按钮代代码:void CUsserMManaage:OnnEdiit() CUseerEddit useereddit;int no = mm_grrid.GettIteemDaata(m_ggridd.GeetSeelecctioonMaark();m_DaataSSet.movve(nno-11);usereeditt.naame = (chaar *)(_bsttr_tt)m_DattaSeet.GGetFFiellds()
34、-IteemLLUsserNNamee-Vaaluee;if (useereddit.DoMModaal() = IDDOK)m_DDataaSett.SeetFiielddVallue(UsserNNamee,(_bsstr_t)uuserrediit.nnamee);m_DDataaSett.Saave();UpddateeGriid(); 八、部门管管理模块块设计A 概述:该模模块记录录了部门门间的的的层次结结构和部部门信息息,一般般使用树树控件实实现,如如图:B 实现过程:a. 创建建一个对对话框b. 向对对话框中中添加相相应的控控件c. 给对对话框添添加对话话框类d. 给类类添加函函
35、数及成成员变量量e. 给控控件关联联变量f. 编写函数 CC. 相相关代码码如下:BOOL CDeeptMManaage:OnnIniitDiialoog() /初始化化函数CDiallog:OnnIniitDiialoog();m_DattaSeet.SSetCConnnecttionn(:GettConnnecctioon();UpdatteDeept();returrn TTRUEE; 将部门门信息一一次性读读入树控控件中。代代码如下下:void CDeeptMManaage:GeetNoode(HTRREEIITEMM pNNodee, iint nPiid)HTREEEITTEM n
36、odde;CADOODattaSeet DDataaSett;DataaSett.SeetCoonneectiion(:GGetCConnnecttionn();CStrringg sttr;str.Forrmatt(SSeleect * FFromm taab_DDeptt whheree piid = %dd,nnPidd);DataaSett.Oppen(strr);int couunt = DDataaSett.GeetReecorrdCoountt();int ID;_varriannt_tt vaaluee;for (innt ii = 0;iiIttemDeeptNNamee-V
37、aaluee,pNNodee);vallue = (_vaariaant_t)DDataaSett.GeetFiieldds()-IItemmIID-VValuue;ID = vvaluue.iintVVal;m_ttreee.SeetIttemDDataa(noode,ID);GettNodde(nnodee,IDD);DattaSeet.NNextt(); 定义GGetNNodee方法,用用于按成成次级关关系获取取部门表表中的所所有数据据,并添添加树控控件,该该方法由由UpddateeDeppt方法法进行调调用,代代码如下下;void CDeeptMManaage:UppdatteDeep
38、t()m_trree.DelleteeAlllIteems();GetNoode(TVII_ROOOT,0);void CDeeptMManaage:OnnAddd() CDepptEddit deppteddit;if (deppteddit.DoMModaal() = IDDOK)HTRREEIITEMM pNNodee = m_ttreee.GeetSeeleccteddIteem();intt pIID;if (deepteeditt.issrooot)pIID = 0;elssepIID = m_treee.GGetIItemmDatta(ppNodde);CADDODaataSSe
39、t dattaseet;dattaseet.SSetCConnnecttionn(:GettConnnecctioon();dattaseet.OOpenn(SSeleect topp 1 * FFromm taab_DDeptt);dattaseet.AAddNNew();dattaseet.SSetFFielldVaaluee(DDepttNamme,(_vvariiantt_t)deppteddit.namme);dattaseet.SSetFFielldVaaluee(mmemoo,(_vaariaant_t)ddepttediit.mmemoo);dattaseet.SSetFFielldVaaluee(PPID,(llongg)pIID);dattaseet.SSavee();UpddateeDeppt();单击“修改改”按钮时时将弹出出部门编编辑窗体体,输入入部门信信息后单单击“确定”按钮,实实现部门门信息的的修改。代代码如下下void CDeeptMManaage:OnnEdiit() CDepttEdiit ddepttediit;depttediit.vvisiiblee = fallse;HTREEEITTEM pNoode = mm_trree.GettSellecttedIItemm();if (
限制150内