C++课程实践报告(企业职工工资管理系统)gny.docx

上传人:you****now 文档编号:63492190 上传时间:2022-11-25 格式:DOCX 页数:24 大小:67.87KB
返回 下载 相关 举报
C++课程实践报告(企业职工工资管理系统)gny.docx_第1页
第1页 / 共24页
C++课程实践报告(企业职工工资管理系统)gny.docx_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《C++课程实践报告(企业职工工资管理系统)gny.docx》由会员分享,可在线阅读,更多相关《C++课程实践报告(企业职工工资管理系统)gny.docx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、中南大学本科生课程设计(实践)任务书、设计报告(C+应应用基础础课程设设计)题 目 企业职工工工资管管理系统统 学生学号学生姓名指指导教师师学 院物理学院专业班级指导老师计算机基础础教学实实验中心心2010年年07月月09日日企业职工工工资管理理系统摘要:在VVC+环境下下编写一一个基于于控制台台方式(WWin332 CConssolee Apppliccatiion)的的工资管管理系统统,以实实现简单单地处理理一个月月内某企企业职工工工资信信息。关键词:工工资管理理,基本本工资,个个人所得得税。1.企业工工资管理理系统开开发设计计思想对于一个管管理系统统而言,主主函数,函函数以及及成员函函数

2、是其其重要组组成部分分。系统统开发设设计也是是从该三三方面入入手,下下面加以以详细阐阐述。(1)主函函数的设设计在做一个系系统开发发前,一一定要明明确系统统的功能能以及功功能实现现时的输输出(屏屏幕显示示)。编编写主函函数的主主要任务务就是确确定调用用函数以以及控制制屏幕显显示。确定调用用的函数数根据要求,该该系统至至少应该该实现五五种基本本功能:输出工工作信息息,删除除工资信信息,修修改工资资信息,查查找工资资信息,列列出所有有信息。实实现以上上任何一一种功能能都必须须要调用用一个函函数,根根据标识识符的定定义规则则,依次次命名为为AdddNeww(),DoDDeleete(),DDoMoo

3、tiffy(),DooFinnd(),Liist().屏幕显示示一个系统要要想处理理信息,首首先必须须要输出出菜单及及提示信信息,通通过用户户在键盘盘上的输输入来选选择某个个功能。本系统的屏幕显示如上。为实现该屏屏幕显示示,输出出语句完完全可以以放在mmainn()函函数中,但但为了使使主函数数清晰明明了,我我设计了了一个菜菜单函数数Maiin()供其调调用。(2)函数数的设计计编写函数的的目的就就是编写写一个能能实现某某种功能能的函数数供主函数数调用。根据C+面向对象的特点,函数也可以调用类中的成员函数。这样主函数,函数以及成员函数之间的层次分明,关系就清晰明了,不会有冗长的感觉。函数设计的

4、主要任务是确定调用的成员函数以及屏幕显示。确定调用用的成员员函数。不同的函数数调用的的成员函函数是不不尽相同同的,基基本上每每个函数数都有一一个对应应的成员员函数,例例如AdddNeew()与AdddIttem(),DDoDeelette()与ReemovveIttem(),DDoFiind()与SSearrch(),DoMMotiify()与RRepllacee(),Lisst()与Woorkeer.LListt()对对应,这这些成员员函数都都是共有有函数,并并且只被被其对应应函数唯唯一调用用一次。当当然,每每个函数数不可能能只调用用一个成成员函数数,例如如AdddNeww()还还调用了了另

5、外两两个函数数Inpput()和和Acttuallpayy()。屏幕显示示编写函数也也需要控控制输出出以及功功能间的的转换,从从而每一一个函数数都需要要有一个个循环来来控制其其结束。结结束的条条件都是是“当输入入的编号号为-11时结束束”,循环环语句有有whiile也也有doowhiile,例例如DooDelletee()和和DoFFindd()用用的是ddowhiile, AdddNeww()用用到的是是whiile语语句。(3)成员员函数的的设计。成员函数是是系统的的灵魂,因因为所有有的处理理过程的的细节都都在成员员函数中中完成的的。编写写成员函函数实际际上就是是一个算算法的实实现。成成员

6、函数数的设计计包括两两方面内内容:成成员函数数算法的的实现和和成员函函数过程程的实现现。成员函数数算法的的实现工资管理系系统不能能单凭数数组来处处理数据据,因为为企业职职工数是是不确定定的,并并且数组组在删除除和查找找某条信信息是相相当繁琐琐。所以以该系统统需要一一个全新新的数据据处理方方式链表。链链表是最最简单也也是最常常用的一一种动态态数据结结构,它它是对动动态获得得的内存存进行组组织的一一种结构构。它不不需要实实现定义义固定的的长度,灵灵活性更更强。链表是算法法的关键键。在添添加新的的数据时时,可以以表头插插入也可可以表尾尾插入,这这两种插插入方法法决定了了其他成成员函数数数据的的处理。

7、本本系统中中采取的的是表尾尾插入的的方法。在在删除某某信息时时需要判判断数据据是在表表头,表表中还是是表尾,如如果删除除的是在在表中,则则需要将将删除的的前后链链表连接接起来。总之,本系统大量运用了链表的5种基本操作:建立链表、链表的插入、删除、输入和查找。成员函数数过程的的实现算法确定后后还需要要控制屏屏幕显示示、条件件的判断断以及调调用其它它成员函函数。成成员函数数之间是是可以相相互调用用的,例例如成员员函数LListt()就就调用了了成员函函数LiistCCounnt()来统计计当前链链表信息息的总数数,同时时还调用用了成员员函数PPrinnt()来来输出WWorkker_payy()的

8、的信息。整整个过程程中还有有一个重重要的指指针,WWorkker_payy *FFindd(),它被SSearrch(),RRemooveIItemm()以以及AdddIttem()所调调用。其其次成员员函数中中大量运运用到了了程序控控制结构构。例如如,AdddIttem()中用用if来来判断是是否是链链表的表表头,LListt()中中用到了了whiile语语句来实实现循环环输出。最最后屏幕幕上则需需要显示示一些完完成了某某种功能能的标志志,例如如“成功删删除编号号为xxx的信息息”,“成功修修改编号号为xxx的信息息”等。(3)系统统结构框框架系统的结构构框架主主要是系系统的流流程图以以及函

9、数数之间的的调用关关系,该该图能描描述系统统清晰准准确的表表现出系系统的功功能实现现。职工工资管管理系统统结构框框架职工工资管理系统图输出主菜单输入选项添加职工工资信息删除职工工资信息修改职工工资信息输出全体职工工资信息输出指定职工工资信息结束退出RemovrItem().List()Search()Replace()AddItem()DoFind()List()DoMotify()DoDelete()AddNew()2企业职工工工资管管理系统统功能及及系统设设计介绍绍该工资管理理系统可可以分为为5个模模块,每每个模块块都有其其对应的的功能以以及其设设计。下下面对系系统的功功能和模模块的实实现

10、进行行简要分分析。(1)输入入模块输入模块的的功能是是创建存存储职工工工资信信息的存存储系统统以及添添加某职职工的工工资信息息。其中中的信息息包括职职工编号号,基本本工资,津津贴,房房租,交交通费以以及银行行储蓄。为为实现输输入的功功能,有有两个方方面的任任务:定定义结构构体以及及建立链链表。 定义结结构体 结构体体的名称称为Woorkeer_ppay,其中包包含的信信息有职职工编号号(nuum),基基本工资资(paay00),津津贴(ppay1),房租租(paay22),交交通费(payy3),储储蓄(ppay4)以及个个人所得得税(ttax),应扣扣数(ddeduuct),实发数数(acc

11、tuaalpaay)。定定义一个个payy的数组组时为了了简化变变量的定定义,使使程序更更有条理理。 建立链链表 通过从从表尾插插入的方方法来建建立链表表,首先先要先设设立一个个头指针针(heead)来来存放链链表的首首地址。然然后,不不断用nnew运运算符生生成一个个新的起起点,将将这个起起点链入入已有的的链表尾尾部;如如果链表表中还没没有结点点,则这这个新结结点将是是首结点点,否则则,将新新结点的的地址赋赋给原有有链表的的尾结点点的neext指指针。(2)删除除模块删除模块的的功能是是删除某某职工的的工资信信息。当当然,信信息包括括所有输输入的信信息,以以及程序序内部函函数计算算的信息息例

12、如个个人所得得税,实实发数。从一个链表表中删去去一个结结点,首首先从表表头开始始,找到到被删结结点后,只只要改变变链接关关系即可可,使被被删结点点的前去去结点的的指针域域指向被被删结点点的后继继结点。如如果删去去的结点点是首结结点,则则将第二二个结点点的地址址作为新新的链表表的首地地址返回回;如果果删去的的结点是是链尾,则则将被删删结点的的前驱作作为新的的链尾。(3)修改改模块修改模块的的功能是是修改某某职工的的部分工工资信息息。要修改某职职工的信信息首先先必须从从表头开开始搜寻寻,当找找到指定定的编号号是,重重新对其其赋值即即可。(4)查找找模块查找模块的的功能就就是输出出指定编编号职工工的

13、工资资信息。查找链表中中的信息息时比较较简单的的,在上上面的模模块中也也用到了了,主要要是注意意查找叶叶必须从从表头开开始。(5)列表表模块列表模块的的功能是是输出当当月全体体职工的的工资信信息。列表模块就就是依次次输出链链表中各各结点的的数据。首首先要知知道链表表头结点点的地址址,也就就是heead的的值,然然后设一一个指针针变量pp,先指指向第一一个结点点,输出出p所指指结点的的数据与与的值,然然后使pp后移一一个结点点,再输输出其数数据与的的值;依依链表顺顺序而行行,依次次输出相相应结点点数据域域的值,直直到链表表的尾结结点。(5)调试试过程中中遇到的的主要问问题及解解决办法法设计初期期

14、,先完完成初步步构思,写写出主函函数。然然后对主主函数所所涉及的的各个模模块进行行编程,将将各个模模块利用用指针和和链表联联系起来来。在环环境中进进行调试试,应一一边编译译,一边边调试,并并且要一一个模块块一个模模块的调调试。直直至此模模块完全全没有错错误时,在在进入下下一模块块的调试试。不能能直接输输入全部部的代码码一次性性调,这这样错误误会很多多,并且且不易找找出和修修改。在在完成程程序的编编译链接接后,要要用多组组数据进进行审查查,确保保做到系系统无误误。 设计过程程中,不不应忽视视环境提提示的警警告,有有时程序序运行不不正确与与警告也也有很大大的关系系。这次次设计中中遇到很很多问题题都

15、是提提示类型型不匹配配,这时时就要认认真检查查前面的的代码,及及时改正正并且认认真仔细细,杜绝绝此类错错再次发发生。 编写代码码时应该该少用全全局变量量,全局局变量在在编写试试看似定定义次数数少,很很方便。但但全局变变量出错错几率较较大,且且不易修修改,每每次修改改时都要要全面考考虑,所所以应避避免用到到。 程序调试试中碰到到的错误误可以使使自己学学到知识识。养成成良好的的编程习习惯,可可以节省省很多时时间,避避免很多多不必要要的错误误。在编辑完完整个程程序后,进进行调试试阶段总总是会数数显heead无无定义。解决办法:再类的的定义是是忘记声声明指针针Worrkerr_paay *heaad;

16、。3总结经过两周的的C+课程实实践,我我对C+语言言设计有有了一个个更深,更更全面的的了解,尤尤其体会会到了CC+面面向对象象操作对对简化程程序的重重要作用用。下面面是我的的几点体体会:刚拿到课课题时,我我一脸的的茫然,看看到如此此庞大的的工程,不不知如何何下手。这这个工资资管理系系统中职职工子信信息竟然然包含115条,以以前从来来没有遇遇到过如如此多的的变量。和和同学讨讨论很久久好,我我发现其其实可以以化繁为为简的,信信息中115条不不一定全全都要,因因为其中中本身就就有重复复的,例例如津贴贴和补贴贴。并且且可以有有一个ppay的的数组来来处理数数据。所所以做任任何事情情都必须须要开动动脑筋

17、,积积极思考考,有时时还要学学会化繁繁为简。在编程时时条理清清晰是至至关重要要的。主主函数,函函数,成成员函数数之间的的层次关关系,调调用关系系一定要要有一个个全面的的把握,尤尤其要体体会类的的封装性性。另外外很重要要的一点点就是一一定要对对链表的的五种操操作熟练练的掌握握。在编译,链链接,调调试的过过程中一一定要有有耐心。因因为一个个程序中中会有很很多小的的错误,甚甚至有的的问题要要几个小小时才能能解决。遇遇到问题题,一定定要全面面分析,有有时候还还要向同同学请教教。总得得来说,编编程时极极需要耐耐心的。总之,C+课程程设计实实践为我我们提供供了一个个综合运运用所学学知识,解解决实际际问题的

18、的平台,增增强了我我们实践践动手的的能力和和工程实实践能力力,并且且锻炼和和培养了了我们的的自学能能力,让让我们对对C+有了一一个更全全面的了了解。附源代码:#inclludee#inclludeeusingg nammesppacee sttd;strucct WWorkker_payyint numm;floaat ppay5,bassepaay,ttax,dedductt,Acctuaalpaay; Workker_payy *nnextt; ;classs Woorkeerprivaate:Workker_payy *hheadd;voidd Prrintt(Woorkeer_ppay

19、 *);Workker_payy *FFindd(innt);publiic:Workker()hheadd=NUULL;int LisstCoountt();voidd AdddIttem(intt nuum,ffloaat ppay5); voidd ReemovveIttem(intt); voidd Reeplaace(intt); voidd Liist(); voidd Seearcch(iint); voidd Acctuaalpaay(); ;int WWorkker:LiistCCounnt () if(!heaad)rretuurn 0;Workker_payy *pp=h

20、eead;int n=00;whille(pp)nn+;p=pp-nnextt;retuurn n;void Worrkerr:AAddIItemm (iint numm,flloatt paay55) if(!heaad)heaad=nnew Worrkerr_paay;forr(intt i=0;iipaayii=ppayi;heaad-numm=nuum;heaad-nexxt=NNULLL;retturnn;Workker_payy *tt=heead;whille(tt&tt-nnum!=nuum) t=tt-nnextt;if(tt)couut操作失失败;职职工编号号为nuum的信

21、息息已经存存在!nnextt ) p=pp-nnextt;Workker_payy *pp1=nnew Worrkerr_paay;p1-numm=nuum;for(intt i=0;iipaayii=ppayi;p1-nexxt=NNULLL;p-nnextt=p11;retuurn;void Worrkerr:RRemooveIItemm(innt nnum) Workker_payy *tt=Fiind(numm);if(!t) retturnn;Workker_payy *pp=heead;if(hheadd=tt) heaad=hheadd-nnextt;delletee p;cou

22、ut成功删删除职工工编号为为nnum的信息息!enddlnnextt!=tt)p=p-nexxt;Workker_payy *pp1=pp-nnextt;p-nnextt=p11-nnextt;deleete p1;coutt成功删删除职工工编号为为nnum的信息息!enddlenddl;retuurn;void Worrkerr:RRepllacee(innt nnum) Workker_payy *pp=Fiind(numm);if(!p)rretuurn;coutt请重新新输入相相应信息息eendll;coutt职工编编号基本本工资(元元)津贴贴房租交交通费银银行储蓄蓄p-nuump-p

23、ayy0pp-ppay1p-paay22p-payy3pp-ppay4;retuurn;void Worrkerr:PPrinnt(WWorkker_payy *pp) coutt.prreciisioon(88);couttnnum payy0 payy1 payy2 paay33 paay44 bbaseepayy taxx dedductt AActuualppayenndl;retuurn;void Worrkerr:LListt() if(LListtCouunt=0)couut当前列列表为空空,请先先输入数数据!eendll;retturnn;Workker_payy *pp=he

24、ead;coutt共有信信息LListtCouunt()个eendll;coutt职工编编号基本本工资(元元)津贴贴房租交交通费银银行银行行储蓄应应发数个个人所得得税应扣扣数实发发数neext;coutteendll;retuurn;void Worrkerr:SSearrch (innt nnum) couttSeaarchh.enddl;Workker_payy *pp=Fiind(numm);if(pp)couut职工编编号基本本工资(元元)津贴贴房租交交通费银银行银行行储蓄应应发数个个人所得得税应扣扣数实发发数eendll;Priint(p);coutteendll;Workeer_p

25、pay *Woorkeer:Finnd(iint numm) if (LisstCoountt()=0)couut当前列列表为空空,请先先输入数数据!numm=nnum) brreakk;p=pp-nnextt;if(!p)couut错误:找不到到该信息息!nn;retturnn NUULL;retuurn p;void Worrkerr:AActuualppay () if (LisstCoountt()=0)couut当前列列表为空空,请先先输入数数据!payy0taxx=0;elsse if(pp-ppay0taax=(p-payy0-8000)*0.005;elsse if(pp-pp

26、ay0taax=660+(p-payy0-20000)*0.1;elsse p-taax=3360+(p-paay00-550000)*00.2;p-bassepaay=pp-ppay0+p-payy1;p-dedductt=p-taax+pp-ppay2+p-payy3;p-Acttuallpayy=p-paay00+pp-ppay1-p-taxx-p-paay22-pp-ppay3;p=pp-nnextt;retuurn;Workeer WWorkker; int MMenuu() couttn*主菜单单*enndlenndl;int n=11,seelecct=-1;couttnn+.输

27、入职职工工资资信息eendlleendll;couttnn+.删除指指定职工工的工资资信息eendlleendll;couttnn+.修改指指定职工工编号的的工资信信息eendlleendll;couttnn+.查找指指定职工工编号的的工资信信息eendlleendll;couttnn+.输出全全体职工工的工资资信息eendlleendll;coutt0.退退出eendlleendll;couttseelecct;retuurn sellectt;char Exiit() charr s;coutts;retuurn s;void Inpput(intt *nnum,flooat payy5)

28、 coutt请输入入t职工工编号基基本工资资(元)津津贴房租租交通费费银行储储蓄*nnum;if(*numm=-1)rretuurn;cinpaay00payy1ppay2paay33payy4;retuurn;void AdddNeww() int numm=0;floaat ppay5=0,0,00,0,0;coutteendll当输入入的编号号为-11是表示示结束输输入eendll;Inpuut(&numm,paay);whille(nnum!=-11)Worrkerr.AdddIttem(numm,paay);Worrkerr.Acctuaalpaay();Inpput(&nuum,p

29、pay);retuurn;void DoFFindd() int numm;coutteendll当输入入的职工工编号为为-1是表表示结束束输入eendll;docouutnnum;if(numm=-1)cconttinuue;Worrkerr.Seearcch(nnum);whiile(numm!=-1);retuurn;void DoDDeleete() coutteendll当输入入的职工工编号为为-1是表表示结束束输入eendll;int numm;docouutnnum;if(numm=-1)cconttinuue;Worrkerr.ReemovveIttem(numm);whiil

30、e(numm!=-1);retuurn;void DoMMotiify() coutteendll当输入入的职工工编号为为-1是表表示结束束输入eendll;int numm;docouutnnum;if(numm=-1)cconttinuue;Worrkerr.Reeplaace(numm);whiile(numm!=-1);retuurn;void Lisst() Workker.Lisst(); int mmainn() coutt 职工工工资管管理系统统n;int sellectt;charr s;whille(11)sellectt=Meenu();swiitchh(seelecct)casse 00:s=Exiit();iff(s=yy|s=Y)retturnn 0;brreakk;casse 11:AdddNeew();brreakk;casse 22:DooDelletee();brreakk;casse 33:DooMottifyy();brreakk;casse 44:DooFinnd();brreakk;casse 55:Liist();brreakk;deffaullt:coout无效输输入!eendll;retuurn 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 其他资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁