![c++课题设计报告_第1页](http://file4.renrendoc.com/view/6a353d7bb4f79ff8d3b3e7f99bfa10bd/6a353d7bb4f79ff8d3b3e7f99bfa10bd1.gif)
![c++课题设计报告_第2页](http://file4.renrendoc.com/view/6a353d7bb4f79ff8d3b3e7f99bfa10bd/6a353d7bb4f79ff8d3b3e7f99bfa10bd2.gif)
![c++课题设计报告_第3页](http://file4.renrendoc.com/view/6a353d7bb4f79ff8d3b3e7f99bfa10bd/6a353d7bb4f79ff8d3b3e7f99bfa10bd3.gif)
![c++课题设计报告_第4页](http://file4.renrendoc.com/view/6a353d7bb4f79ff8d3b3e7f99bfa10bd/6a353d7bb4f79ff8d3b3e7f99bfa10bd4.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程名称一 面向对象程序设计课题名称 公司人用管理系统2011年12月28日湖南工程学院课程设计任务书课程名称面向对象程序设计课题公司人员管理系统专业班级 学生姓名指导老师ー审批任务书下达日期201I年11月15日任务完成日期2011年12月28日ー、设计内容与设计要求.课程设计目的:面向对象程序设计课程设计是集中实践性环节之ー,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。.瞄题目1)公司库存管理系统2)髙校学籍管理系统3)高校工资管理系统4)高校人事管理系统5)通讯录程序设计6)学生成绩管理系统7)图书管理系统8)文本编辑器的设计与实现9)学生考勤管理系统10)公司人员管理系统・设计要求:(1)设计课题题目:毎位同学根据自己学号除以10所得的余数加1选择相应题号的课题。随意换题者不记成绩。⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义:系统功能需求(系统流程图):输入输出的要求。②完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图1③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E-R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。④系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出毎ー步的操作步骤。⑥关键源程序(带注释)⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。⑷不得抄袭他人程序、课程设计报告,毎个人应体现自己的个性设计。二、进度安排第17周星.期008:0012:008:00——12:星期四第18周星期ー星期二8:00——12:8:00——12:挪14:30 18:30三、参考书籍星期三8:00——12:
001XC++程序设计课程设计》刘振安编著TP312c5632.《C++Builder和Delphi课程设计与系统开发案例》伍俊良清华大学出版社7-302-06072-X3.VisualC++课程设计案例精编严华峰中国水利水电出版社7-5084-2007-120044.VisualC++课程设计与系统开发案例伍俊良清华大学出版社7-302-05968-320025.VisualC++语言课程设计:案例精选与编程指导陈淸华朱红东南大学出版社7-81089-275-420036.VisualC++课程设计案例精编中国水利水电出版社7-5084-1004T20027. 数据结构课程设计案例精编:用C/C++描述李建学李光元吴春芳清华大学出版社7-302-14536-92007(编程平台不限,vc++,C++Builder等等。)课题5:公司人员管理系统(_X课程设计题目:公司人员管理系统(-1目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次:(3)在系统中至少要定义四个类,毎个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的ー种机制。3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。4、写出设计说明书(三X设计方法和基本原理;1、问题描述(功能要求):公司人员管理系统实现对公司人员按姓名或者编号显示、查找、增加、删除和保存各类人员信息的操作。某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。人员编号在生成人员信息时同时生成,毎输入一个人员信息编号顺序加1。程序对所有人员有提升级别的功能。薪金的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成,销售经理既拿固定月薪也领取销售提成。能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。在基本要求达到后,可设计出比较友好的界面(如下拉菜单),也可用VC++Classwizard设计(选作12、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计:(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告以及系统使用说明书。目录TOC\o"1-5"\h\zL系统需求分析 1.总体设计 3.详细设计 5.系统调试 11.结果分析 18总结 20附录21.系统需求分析问题描述公司人员管理系统实现对公司人员按姓名或者编号显示、查找、增加、删除和保存各类人员信息的操作。某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。人员编号在生成人员信息时同时生成,毎输入一个人员信息编号顺序加1。程序对所有人员有提升级别的功能。薪金的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成,销售经理既拿固定月薪也领取销售提成。能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。在基本要求达到后,可设计出比较友好的界面(如下拉菜单),也可用VC++Classwizard设计(选作)2功能分析〇查询功能:voidQuery()〇删除功能:voidDeleteO°添加功能:voidAdd()〇修改功能:voidModifyO。保存功能:voidSaveO。数据装入:voidLoad()I查询功能函数原型:voidQuery()说明:查询ー个职员的基本信息,包括职エ号,姓名,性别,所在部门,职务,薪水。.2.2删除功能函数原型:voidDeleteO说明:能够对ー个职员的信息进行删除,按职エ号+姓名进行删除。.2.3添加功能函数原型:voidAdd()说明:添加一个职员的基本信息,包括职エ号,姓名,性别,所在部门,职务,薪水。12..4修改功能函数原型:voidModifyO说明:对满足条件的职员的信息进行修改,可以修改职エ所在部门、职务、エ资。.2.5保存功能函数原型:voidSave()说明:保存想要保存的人员信息。6数据装入函数原型:voidLoad()说明:将保存在磁盘的数据装入到内存中,以便对数据的再次管理和操作。.总体设计系统总体框架系统总体框架使用面向对象的程设计思想逬行分析,整个系统涉及两大类信息和操作,公司,人员。所以系统主要涉及两个大类:公司类Company、人员类Person。系统的总体框架就是公司类,人员类的定义;主函数中定义一个公司对象,循环显示主菜单并根据用户选择调用公司类的相应方法(成员函数)。(1)公司类Company:考虑系统操作的人员信息的数量具有不确定性,所以考虑使用链表保存、处理人员信息。公司类包含:所有人员信息的ー个不带头结点的链表(作为数据成员)及可以对人员信息进行增,删,改,查询,数据存盘等操作的相关模块(Add,Delete,Modify,Query,Set)作为成员函数。(2)人员类Person:所有人员都具有的公共信息及操作可以使用人员类进行描述。由于系统具有4类人员且4类人员数据,操作有所不同,如销售员包含销售额,而技.专业,樱理.术人员包含工作小时数且计算工资的方法不同,所以应当为4 类人员创建相应的Person类的派生类。(3)为了使公司类可以方便处理人员信息、,可以考虑将公司类确定为人员类的友元类或者人员类提供公共的方法以便公司类进行操作。为了公司类可以用共同方法操作人员类,可以将人员类的方法确定为虚函数。2.2结构框图2.3类的层次图People类其中:(1)Person类有N。一人员编号,Name一人员姓名,Duty一人员类别,Earning-エ资,next-指向下一个人员的指针;Person类的CalcSalaryO,Output。定义为纯虚函数分别表示要计算人员エ资和输出人员信息,由于定义纯虚函数,所以Person是抽象类,具体计算工资,输出人员信息由派生类完成。(2)各个派生的类,包含本类对象特有的数据,Sales::Amount-销售员销售额,SalesManagen:Amount-销售经理的总销售额(系统统计各个销售员销售额得到销售经理的总销售额),Technician:ー技术人员工作小时数。Company{Persor*Worker,CompanyO"CompanyO.AddO.DeleteO.ModifyO,Query(),Set(),Save(),Load()}其中:①Worker就是人员链表。②Add。,Delete。,Modify(),Query(),Set(),Save。,Load()分别表示系统各个功能模块:增加人员,删除人员,修改人员,查找人员,基本数据的设置,数据存盘,数据装入。3.详细设计3.1.程序的运行步骤及函数的实当)主函数流程C屮)1186二I,,—戊・囱¥I旅兒Of樞】必Yf樞ODD1«e%叫+⑵Company::Add()开始ID号增!/输入亩位/上ー^输入数据,创建员エ对象结一二ア员エ对象加入结点■束Company::Delete()(4)Company::Modify(5)Company::Query()(6)Company::Save()(7)Company::Load()•6ca0±1ney%YlA%)倣匕》むi10±OIA:4pおと,とヒ。士启泓マIAシゆUAEjd»i6zqAzIAZ》%能。,u%YE£O±A^Di'%"%a启A'±I%6E6%IAZ》%能。,u%YE£O±A^Di'%"%a启A'±I%6E6%台河HAIAAaeO»DD%qA!410±OlA%b(ル台Eo,4.系统调试界面的显示,选择功能项C:*C:\DOCU1EHTSANDSETTINGS\HHIEy-AVORnESKDebuzMl.ex人员和基础数据已经装入...公司人员管理系统^ニニ^ニニ图4.14.2最开始先增加人员1)增加经理ANDSETHRGS\HNlE\FAV()RHES\Debuc\lk公司人员営理系统項选择功能项,输入1・7:1k・新増员エ・*灘万陟VIー经理2平售经理3〜f肖售员4水术员〉:1隔入姓名・(*健否保存数据(Y/NLY如存人员和基础数据,是否继续?【Y/N」:Y保存人员和基础数据己经完成.图4.2・12)增加销售经理ANDSETTIHCS\HHIE\FAVORITES\Debug\ll.公司人员管理系统謂修査摄退謂修査摄退Lrm择功能项,输入1・?:]一新增员エーー经理2瑚售经理3ー销售员4ー技术员):2匕入姓名:B匚月個售额:19000当否保存数据[Y/H],Y禄存人员和基础数裾と经;图4.2.23)增加技术人员~£・~£・司ス、首理年セキー:谓之择功能項,摘入1-7:X裁くm》:“(y/ni:y足否保存做£ラ法〈1现2ー桐生经理3书吿员4ー技裁くm》:“(y/ni:y足否保存做阳存人员ド基祂於!8.+否セ缕MY/MIXY图4.2.343增加后对增加的人员进行査找*C:\DOCUErrSAIDSETTUKSXnilK\FAV0*ITE5\l>»buc\ll.«935S人人人人融キ
寵題iE±情オ择的第项,筋ス.,-7X用!人要査找的マ的用号:2月忌エ責円寻姓名月忌エ責图4.3・专业・整理.
4.4如果能査找到就说明增加成功,然后在进行修改操作AMDSETTIRGS\miIE\FAVORITES\Debug\ll.exe,公司人员管理系统ー人人人人数人人人人数警如除改WQ出增删修査摄退:项,输入A7:3修改员エ”L2B 钳售经理 10000 2850寧樓鸟くー经理2一雄经理3.铜吿员4ー技术员):1ハ燃名:B改成功?否保存数据[Y/NLY图4.4卜我可维辑5修改之后再查找这个人员,看是否修改成功。卜叔可爆紺图4.5确定修改成功后再进行删除人员清並择功能项.»K17:2"蛹ケエ**11>:2<*f图4.6确定是否删除成功…公司人员営理孕迁…,专业,•整理.人人人人1.¢疊一;am出a^al追114.7卜我可维辑P卜我可维辑P系文全需修声^^ハIA人人数康确定删除之后再进行保存或♦C:\DO€niEBTSAMDSETTnKS\HHIE\FAMORITES\Debug\ll.exe,一公司人员管理系统ー青选择功能项,输入1-7:6呆存人员和基础数据,是否继续?tY/N]sY图4.84.9对数据进行修改••»公司人员管理系2无***椅入E5israscffi月軒」50帥元J:6«00埋度定雨薪(2卜❶儿-31サ❶理浜成W.S%h9S员小时エ资121K元/小时〉】:3佃图4.9看一下修改后的效果•••公司人员営理孕迂…人人人人人人人人ttl賈*gawy图4.10修改正确,整个系统无误,退出系统.专业整理.C「"C:\DOCniEBTSAHDSETTIHGS\HHIE\FAVORITES\Debug\ll.es导选择功能项.输入1-?-?rcssanykeytocontinue..图4.115.结果分析本系统独特的设计.两个类的设计1Company类有数据成员员エ,这个类的主要功能是对功能模块的实现,可以设计Add。,Delete。,Modify。,Query。,Set。,Save。,Load。函数对系统功能需求的实现。查询功能voidQueryO查询ー个职员的基本信息,包括职エ号,姓名,性别,所在部门,职务,薪水。删除功能voidDeleteO能够对ー个职员的信息进行删除,按职エ号+姓名进行删除。添加功能voidAdd()添加一个职员的基本信息,包括职エ号,姓名,性别,所在部门,职务,薪水。修改功能voidModifyO对满足条件的职员的信息进行修改,可以修改职エ所在部门、职务、エ资。保存功能voidSaveQ保存想要保存的人员信息。数据装入voidLoadO将保存在磁盘的数据装入到内存中,以便对数据的再次管理和操作。1.2People类有数据成员姓名,编号,职务,月总エ资,还有两个纯虚函数,纯虚数不给出实现,在People类的派生类中再给出两个纯虚函数的相应的实现,ー个纯虚函数是virtualvoidCalcSalary()=0;实现对毎个人员工资的计算,另ー个就是virtualvoid0utput0=0;实现对毎个人员的具体信息的输出。这个设计是ー个亮点。.链表的设计,使用链表可以动态的增加人员,而不受内存的限制,先定义ー个People类的链表头指针,再在以后毎增加的人员设置为ー个节点然后再把节电连接到头指针就实现了人员的增加。.界面的设计,毎对ー个具体的操作进行完之后,利用ー个retum;就可以返回主函数,在进行下ー步操作,这是个很好的操作。二.本系统不足之处1.我设计的思路是由People类派生出四个类,Manager类,Sales类,SalesManager类,和Technician类。但也可以用Manager类和Sales类共同派生出SalesManager类,这样就更接近我们学习的面向对象的设计的思路,这是ー个不足之处。2,本系统的删除功能不是很完善,问题就是毎当删除一个人员的时候,这个人员的所有信息都被删除了,包括人员的编号,编号一旦删除了就找不回了,也就是说删除了一号,这个系统就没有了一号,这是ー个不足之处。其他的还算比较好。.6.总结这次课程设计所设计的公司员エ管理系统(CEMS)是ー个小型的人事信息管理系统,该系统实现了职エ信息的添加、删除、修改、显示、查询等功能,并且运用了文件操作技术,可以实现数据的永久性保存。通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计エ作,并从理论的高度对设计工作的现代化提出ー些有针对性的建议和设想。检验学习成果,看ー看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。对我们计算机专业的本科生来说,实际能カ的培养至关重要而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,芥在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。经过两周的C++课程实践,我对C++语言设计有了一个更深,更全面的了解,尤其体会到C++面向对象操作对简化程序的重要作用.下面是我的几点体会:①刚拿到课题时,我ー脸的茫然,看到如此庞大的工程,不知如何下手.这个エ资管理系统中职エ子信息竟然包!5条,以前从来没有遇到过如此多的变量.和同学讨论很久好,我发现其实可以化繁为简的,信息15条不一定全都要,因为其中本身就有重复的.所以做任何事情都必须要开动脑筋,积极思考,有时还要学会化繁为简.②在编程时条理清晰是至关重要的.主函数,函数,成员函数之间的层次关系,调用关系一定要有一个全面的把握,尤其要体会类的封装.专业,整理.性.另外很重要的一点就是一定要对链表的五种操作熟练的掌握.③在编译,链接,调试的过程中一定要有耐心.因为ー个程序中会有很多小的错误,甚至有的问题要几个小时才能解决.遇到问题,一定要全面分析,有时候还要向同学请教.总得来说编程时极需要耐心的.C++课程设计实践为我们提供了一个综合运用所学知识,解决实际问题的平台,增强了我们实践动手的能力和工程实践能力,并且锻炼和培养了我们的自学能力,让我们对C++有了一个更全面的了解。7.附录源程序清单:ttinclude<iostream.h>#include<fstream.h>#include<ctype.h>#include<string.h>#include<stdlib.h>〃全局数据,对象doubleManagerSalary=5000;//经理固定月薪doubleSalesManagerSalary=2000;〃销售经理固定月薪doubleSalesManagerPercent=O.5;〃销售经理提成%doubleSalesPercent=5;//tfi售人员提成%doubleWagePerHour=20;〃技术人员小时エ资intID;〃员エ标识(要保证唯一)classPerson〃员エ类protected:intNo;〃编号charName[20];//姓名intDuty;//岗位doubleEarning;〃收入Person*next;publicPerson(charID,char*Name,intDuty){thisー〉Duty=Duty;strcpy(this->Name,Name);thisー〉No=ID;)virtualvoidCalcSalary()=0;virtualvoidOutput()=0;friendclassCompany;);classManagenpublicPerson〃经理类(publicManager(charID,char*Name,intDuty):Person(ID,Name,Duty){}voidCalcSalaryO{Earning=ManagerSalary;}voidOutput()CalcSalaryO;cout<<No<<"Wt〃<<Name<く〃Wt经理Wt”<<Earning<<endl;));classSalesManagerpublicPerson"销售经理类{private:doubleAmounts;publicSalesManager(charID,char*NameJntDuty.doubleAmounts):Person(ID,Name,Duty){thisー〉Amounts=Amounts;}voidSetAmounts(doubles)Amounts=s;}doubleGetAmountsO!returnAmounts;voidCalcSalaryO(Earning=SalesManagerSalary+Amounts*SalesManagerPercent/100;}voidOutput()(CalcSalaryO;cout<<No<く〃Wt"く<Name<く〃Wt销售经SWt”くくAmountsくく〃Wt〃くくEarningくくendl;classTechnician:publicPerson〃技术员类(private:doublet;publicTechnician(charID,char*Name,intDuty,doubleT):Person(ID,Name,Duty)!this->t=T;doubleGetT()(returnt;}voidSetTfdoubleT)(thisー〉t=T;)voidCalcSalaryO(Earning=WagePerHour*t;)voidOutput()(CalcSalaryO;coutくくNoくく"Wt"くくNameくく“Wt技术员Wt”くくtくく"Wt"くく""<<Earning«endl;));classSales:publicPerson〃销售员类private:doubleAmount;publicSales(charID,char*NameJntDuty,doubleAmount):Person(ID,Name,Duty)(thisー)Amount=Amount;)doubleGetAmount()JreturnAmount;}voidSetAmount(doubleAmount){this->Amount=Amount;)voidCalcSalaryO{Earning=SalesPercent/100*Amount;voidOutputO(CalcSalaryO;“くくEarningcoutくくNoくく〃Wt"くくNameくく〃Wt销售员Wt〃くくAmountくく〃Wfくく〃«endl“くくEarning});classCompany〃公司类(private:Person"Worker;〃员エ表publicCompanyO(Worker=0;Load();}-CompanyO{Person*p;p=Workenwhile(p)p=p->next;deleteWorker;Worker=p;)Worker=0;)voidAdd();増加人员voidDeleteQ;〃删除人员voidModifyO;〃修改人员voidQueryOi”查询人员voidSet。;〃设置基本数据voidSave();//数据存盘(包括基础数据,人员数据)voidLoadQ;〃数据的装入voidCompany::Addo〃増加人员Person*p;〃新结点指针intDuty;charName[20];doubleAmount,Amounts,T;coutくく*Wn*・新增员エ**Wn;ID++;//输入员エ信息coutくく〃输入岗位(1ー经理2・销售经理3ー销售员4・技术员):二cin»Duty;coutくく”输入姓名:“;cin>>Name;if(Duty==2)(coutくく”本月销售额:“;cin>>Amounts;}if(Duty==3)(coutくく"本月销售额:";cin>>Amount;}elseif(Duty==4)coutくく“本月工作小时数(0-168):cin>>T;〃创建新员エ结点switch(Duty)case1:p=new breakTOC\o"1-5"\h\zManager(ID,Name,Duty); ;case2:p=newSalesManager(ID,Name,Duty,Amounts);break;case3:p=new breakSales(ID,Name,Duty,Amount); ;case4:p=new breakTechnician(ID,Name,Duty,T); ;p->next=0;〃员エ结点加入锌表if(Worker)//若已经存在结点Person*p2;p2=Workerwhile(p2->next)〃査找尾结点(p2=p2->next;p2->next=p;〃连接else〃若不存在结点(表空){Worker=p;〃连接)〃数据的保存coutく〈”是否保存数据[Y/N]:;charch;cin>>ch;if(ch==Y*)(SaveQ;voidCompany::DeleteO//删除人员{intNo;coutくく"Wn**AM除员エ**Wn";cout«"ID:cin»No;〃査找要删除的结点Person*pl,*p2;pl=Worker;while(pl)if(pl->No==No)break;else(P2=pl;pl=pl->next;))〃删除结点if(pl!=NULL)//若找到结点,则删除(if(pl==Worker)〃若要删除的结点是第一个结点{Worker=pl-〉next;deletepl;)else〃若要删除的结点是后续结点(p2ー〉next二pl->next;deletepl;)else〃未找到结点(coutくく〃未找至wWn;charch;coutくくー按任意键返回菜单:";cin»ch;if(ch!=W)(return;voidCompany::ModifyO〃修改人员函数的实现(intNo,Duty;charName[20];doubleAmount,Amounts,!;coutくく〃Wn*・修改员エ・*Wn”;coutくく"ID:";cin>>No;〃查找要修改的结点Person*pL*p2;pl=Worker;while(pl)(if(pl->No==No)break;else(P2=PLpl=pl->next;〃修改结点if(pl!=NULL)〃若找到结点(charch;pl•>Outputo;cin>>Duty;coutくく〃调整岗位(1ー经理2・销售经理3・销售员4•技术员):if(pl->Duty!=Duty)cin>>Duty;〃修改其它数据coutくく”输入姓名:cin>>Name;if(Duty==2)(coutくく〃本月销售额:";cin>>Amounts;)if(Duty==3)(coutくく一本月销售额:“;cin»Amount;}elseif(Duty==4)(coutくぐ本月工作小时数(0-160)cin»T;)〃创建新员エ结点Person*p3;switch(Duty)case1:p3=newManager(pl->No,Name,Duty);break;case2:p3=newSalesManager(pl->No,Name(Duty,Amounts);break;case3:p3=newSales(pl->No,Name,Duty,Amount);break;case4:p3=newTechnician(pl->No,Name,Duty,T);break;)〃员エ结点替换到链表p3->next=pl->next;if(pl==Worker)〃若要替换的结点是第一个结点Worker=p3;else〃若要删除的结点是后续结点p2ー〉next=p3;〃删除原来的员エ结点deletepl;Ielse〃若岗位没有变动Icoutくく〃输入姓名:“;cin>〉pl->Name;if(Duty==2)coutくく”本月销售额:“;cin>>Amounts; ((SalesManager *)PD->SetAmounts(Amounts);if(Duty==3)coutくく〃本月销售额:“;cin>>Amount;((Sales*)pl)->SetAmount(Amount);elseif(Duty==4)coutくく“本月工作小时数(0T68):";cin»T;((Technician♦)pl)->SetT(T);coutくく”修改成功!Wn〃;coutくく”是否保存数据[Y/N]:";cin»ch;if(chニニ'Y')(SaveO;)else〃未找到结点coutくく”未找到要查询的人员!Wn”;charch;coutくく”按任意键返回菜单:";cin>>ch;if(ch!二’WO')(return;voidCompany::QueryO(inti;Person*pl,*p2;pl=Worker;if(pl)(coutくく一清输入要查找的人的编号:";cin»i;while(pl)(if(pl->No==i)(break;)else(p2=pl;pl=pl->next;)if(pl!-NULL)(if(pl->Duty==1)(coutくく”编号姓名pl->0utput0丿if(pl->Duty==2)coutくく”编号姓名pl->Output〇:Iif(pl->Duty==3)coutくく”编号姓名pl->OutputO职位月总エ资"くくendl;职位月销售量月总エ资”くくendl;职位月销售量月总エ资”くくendl;if(pl->Duty==4)coutくく"编号姓名职位月工作量月总エ资‘Vendl;pl->OutputQ;else(charch;coutくく“查无此人,按任意键返回菜单:cin»ch;if(ch!=W)(return;else(coutくく”系统还未存入人员"く<endl;returnvoidCompany::Set()〃基本数据的设置(coutくく”Wn**设置基础数据**Wn”;cout<〈”经理固定月薪[〃く<ManagerSalary<<"tu]:";cin>>ManagerSalary;coutくく”销售经理固定月薪[〃くくSalesManagerSalaryくく〃元]:";cin>>SalesManagerSalary;coutくく"销售经理提成[〃く<SalesManagerPercent<cin>>SalesManagerPercent;cout<〈”销售人员提成["く<SalesPercent<<cin>>SalesPercent;coutくく"技术人员小时エ资「くくWagePerHourくく"(元/小时)]:";cin>>WagePerHour;cout<〈"员エ标识[>="«IDくく〃]:";cin>>ID;IvoidCompany::SaveO〃数据存盘(包括基础数据,人员数据),均采用文本文件(ofstream(Person,fBase;charccoutくく〃Wn保存人员和基础数据,是否继续?[Y/N]:";cin»c;if(c!=Y'){cout«〃数据未保存!”くくendl;return;)〃保存人员编号、姓名、岗位fPerson.open(,zperson.txt〃,ios::out);Person*p=Worker;while(p)(fPerson<<p->No«/,Wt,,«p->Name« «p->Duty<<〃Wt〃;if(p->Duty==2)fPerson<<((SalesManager*)p)ー>GetAmountsOくく〃Wt”;if(p->Duty==3)fPerson<<((Sales*)p)->GetAmountO<<〃Wt〃;elseif(p->Duty==4)fPerson<<((Technician*)p)->GetTOくく〃Wt〃;fPerson<<endl;p=p->next;fPerson.closeO;〃保存基础数据fBase.open(,zbase.txt",ios::out);fBaseくく”经理固定月薪Wt"く<ManagerSalaryく<endl;fBase<〈”销售经理固定月薪Wt"<<SalesManagerSalary<<endl;fBaseくく"销售经理提成%Wt"«SalesManagerPercent<<endl;fBase<〈”销售人员提成%Wt‘くくSalesPercentく<endl;fBase<く"技术人员小时エ资Wt"<<WagePerHour<<endl;fBase<<"IDWt"«ID«endl;fPerson.closeO;cout«"Wn保存人员和基础数据已经完成...Wn";voidCompany::Load()〃数据装入(包括基础数据,人员数据){〃基础数据装入ifstreamfBase;charbuf[80];〃buf用于保存数据文件中的注释字符串fBase.open("base,txt”,ios::in);fBase>>buf>>ManagerSalary;〃经理固定月薪fBase>>buf>>SalesManagerSalary;〃销
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 投标委托书(15篇)
- 建筑工程施工项目承包合同书
- 细胞-乳腺癌课件
- 马来酸麦角新碱联合卡前列素氨丁三醇治疗高危产后出血倾向二次剖宫产产妇的效果
- 中国企业智能化成熟度报告(2024) -企业智能化转型进入2.0时代
- 广东省中山市高考语文模拟试题(含答案)
- 2025年养老行业前景与未来发展趋势预测
- 2024年食品行业食品安全管理体系认证合同
- 餐厅供货协议合同协议范本模板
- 汽车修理厂承包合同模板
- 输变电工程监督检查标准化清单-质监站检查
- 【超星学习通】马克思主义基本原理(南开大学)尔雅章节测试网课答案
- 2024年中国工业涂料行业发展现状、市场前景、投资方向分析报告(智研咨询发布)
- 化工企业重大事故隐患判定标准培训考试卷(后附答案)
- 工伤赔偿授权委托书范例
- 食堂餐具炊具供货服务方案
- 唯物史观课件
- 冀教版五年级上册英语全册单元测试卷(含期中期末试卷及听力音频)
- 信息资源管理(马费成-第三版)复习重点
- 邮轮外部市场营销类型
- GB/T 42460-2023信息安全技术个人信息去标识化效果评估指南
评论
0/150
提交评论