版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报报告公司人员管管理系统统 课 程程 :面面向对象象课程设设计班 级 :115511学 号 :20111300511102姓 名 :吴小蛟蛟指导老师 :清华华教授2012年年 6月月12日日设计题目(问问题)描描述和要要求题目:公司司人员管管理系统统 问题描述:某小型公司司,主要要有四类类人员:经理、兼兼职技术术人员、销销售经理理和兼职职推销员员。现在在,需要要存储这这些人员员的姓名名、编号号、级别别、当月月薪水,计计算月薪薪总额并并显示全全部信息息。 要求: 其中,人员员编号在在生成人人员信息息时同时时生成,每每输入一一个人员员信息编编号顺序序加1。 程序对所有有人员有有提升级级别的
2、功功能 月薪的计算算方法是是:经理理拿固定定月薪,兼兼职技术术人员按按工作小小时数领领取月薪薪,兼职职推销员员的报酬酬按该推推销员当当月销售售额提成成 ,销销售经理理既拿固固定月薪薪也领取取销售提提成。 能按姓名或或者编号号显示、查查找、增增加、删删除和保保存各类类人员的的信息 系统分析与与模块设计计根据问题描描述和要要求,系系统要求求能够按按姓名或或者编号号显示、查查找、增增加、删删除和保保存各类类人员的的信息。确确定程序序至少应应该具备备如下功功能:“查询人人员”、“增加人人员”、“删除人人员”、“数据存存盘”基本模模块。系统既然具具有“数据存存盘”功能人员数数据可以以保存到到磁盘文文件,
3、那那么也就就意味着着今后可可以从磁磁盘文件件读出人人员数据据,所以以系统增增加了“人员数数据装入入”模块,以以方便用用户使用用、避免免数据重重复录入入。考虑虑到系统统实现简简捷,人人员数据据文件采采用文本本文件,人人员数据据文件名名:Peersoon.ttxt。做为一个完完整系统统,除了了具有增增加人员员,删除除人员信信息模块块,还应应该具有有修改人人员相关关信息的的功能,所所以本系系统设计计时考虑虑增加“修改人人员”模块。考虑到根据据编号查查找人员员信息功功能在“删除人人员”、“修改人人员”等模块块都使用用,所以以可以考考虑设置置为一个个模块。考虑到系统统要求人人员编号号在生成成人员信信息时
4、同同时生成成,每输输入一个个人员信信息编号号顺序加加1。这这样就要要求人员员编号在在增加人人员时自自动生成成(增加加1)且且不重复复。根据据这个要要求,可可以考虑虑设置一一个全局局量:“当前最最大编号号”,每增增加一个个人员,当当前最大大编号自自动增11,然后后新增加加人员使使用这个个编号。为为了保证证系统能能记忆这这个编号号,可以以使用一一个数据据文件保保存当前前这个编编号。系系统每次次开始运运行前从从文件读读入这个个编号,随随着人员员增加,编编号自动动增加,系系统每次次运行结结束时将将这个编编号写入入文件。本本系统将将初值(没有一一个用户户时)设设置为00。考虑到人员员的许多多固定信信息如
5、:经理、销销售经理理的固定定月薪,销销售经理理、销售售人员提提成,技技术人员员小时工工资等都都是一些些不需要要每个人人员都要要输入的的信息,所所以可以以将这些些信息都都保存在在一个数数据文件件中,本本系统为为了方便便起见,将将这些信信息与“最大编编号”全部保保存在一一个文件件中,并并使用“基础数数据设置置”模块进进行设置置和管理理。基础础数据文文件也采采用文本本文件,基基础数据据文件名名:Baase.txtt。本系统还提提供“查询本本月经营营信息”帮助计计算销售售总额,工工资总额额,并按按照公式式计算本本月盈亏亏。综合考虑系系统具有有下面88项功能能模块:增加人人员,删删除人员员,修改改人员,
6、查查询本月月经营信信息,基基础数据据设置,数数据存盘盘,数据据装入。系统使用的的数据文文件格式式如下:Base.txtt:(格格式:项项目 数数据)经理固定月月薪30000销售经理固固定月薪薪10000销售经理提提成1销售人员提提成2技术人员小小时工资资20ID6Persoon.ttxt:(格式式:编号号,姓名名,人员员类别,其它数数据,销销售员销销售额,技术人人员工作作小时)2wanng3100000003liuu14wu410005huaang26taoo315000000注:人员类类型编号号1经经理;22销售售经理;3销销售员;4技技术人员员系统设计系统总体框框架使用面向对对象的程程序设
7、计计思想进进行分析析,整个个系统涉涉及两大大类信息息和操作作,公司司,人员员。所以以系统主主要涉及及两个大大类:公公司类CComppanyy、人员员类Peersoon。系系统的总总体框架架就是公公司类,人人员类的的定义;主函数数中定义义一个公公司对象象,循环环显示主主菜单并并根据用用户选择择调用公公司类的的相应方方法(成成员函数数)。(1)公司司类Coompaany:考虑系系统操作作的人员员信息的的数量具具有不确确定性,所所以考虑虑使用链链表保存存、处理理人员信信息。公公司类包包含:所所有人员员信息的的一个不不带头结结点的链链表(作作为数据据成员)及及可以对对人员信信息进行行增,删删,改,查查
8、询经营营信息,基基础数据据设置,数数据存盘盘,数据据装入等等操作的的相关模模块(AAdd,Delletee,Moodiffy,QQuerry,SSet,Savve,LLoadd)作为为成员函函数。(2)人员员类Peersoon:所所有人员员都具有有的公共共信息及及操作可可以使用用人员类类进行描描述。由由于系统统具有44类人员员且4类类人员数数据,操操作有所所不同,如如销售员员包含销销售额,而而技术人人员包含含工作小小时数且且计算工工资的方方法不同同,所以以应当为为4类人人员创建建相应的的Perrsonn类的派派生类。(3)为了了使公司司类可以以方便处处理人员员信息,可可以考虑虑将公司司类确定定
9、为人员员类的友友元类或或者人员员类提供供公共的的方法以以便公司司类进行行操作。为为了公司司类可以以用共同同方法操操作人员员类,可可以将人人员类的的方法确确定为虚虚函数。类的层次图图Persoon No,Namme,DDutyy,Eaarniing,nexxt,Perrsonn(),CallcSaalarry(),Outtputt()Managger Saaless SallesMManaagerr TTechhnicciann Mannageer(), AAmouunt, AAmouunt, tt,CalcSSalaary(), Saaless(),GettAmoountt(), Saales
10、sMannageer(), Tecchniiciaan(),Outpuut() SeetAmmounnt(), SeetAmmounnt(), GettT(),SeetT(),CalcSSalaary(), CallcSaalarry(), CCalccSallaryy(),Outpuut() Outtputt() OOutpput()其中:(1)Peersoon 类的NNo-人人员编号号,Naame-人员姓姓名,DDutyy-人员员类别,EEarnningg-工资资,neext-指向下下一个人人员的指指针;PPersson 类的CaalcSSalaary(),Outtputt()定定义为纯纯
11、虚函数数分别表表示要计计算人员员工资和和输出人人员信息息,由于于定义纯纯虚函数数,所以以Perrsonn是抽象象类,具具体计算算工资,输输出人员员信息由由派生类类完成。(2)各个个派生的的类,包包含本类类对象特特有的数数据,SSalees:Amoountt-销售售员销售售额,SSaleesMaanagger:Ammounnt-销销售经理理的总销销售额(系系统统计计各个销销售员销销售额得得到销售售经理的的总销售售额),Technician:t-技术人员工作小时数。Compaany Persson *Woorkeer,Clearr(),Commpanny(),CComppanyy(),Addd()
12、,Delletee(),Moddifyy(),Queryy(),Sett(),Savve(),Looad()其中:(1)Woorkeer就是是人员链链表。(2)Cllearr()用用于清除除人员链链表所有有结点。(3)Addd(),Deelette(),Moodiffy(),Quueryy(),Sett(),Savve(),Looad()分别别表示系系统各个个功能模模块:增增加人员员,删除除人员,修修改人员员,查询询本月经经营信息息,基础础数据设设置,数数据存盘盘,数据据装入。系统关键算算法流程程图(1)主函函数流程程(2) CComppanyy:AAdd()(3) CComppanyy:DD
13、eleete()(4) CComppanyy:MModiify(5) CComppanyy:QQuerry() (6)Coompaany:Saave()(7) CComppanyy:LLoadd()源程序清单单参见附录系统测试小结通过程序设设计,我我能够基基本掌握握C+程序设设计的方方法,并并且在此此基础上上掌握类类的构造造方法,明明确类中中构造函函数、成成员函数数的建立立以及调调用,此此外,并并且,结结合C+中字字符串函函数的编编译系统统给定的的库函数数,采用用一定的的逻辑编编译,实实现题目目中要求求的各项项要求,达达到基本本实验目目的,提提高自己己的C+语言言使用水水平。参考文献 【11】
14、陈维维兴,林林小茶.C+面向对对象程序序设计教教程.北北京.清清华大学学出版社社20110,110【2】谭浩浩强.CC语言程程序设计计.北京京:清华华大学出出版社.20110,55附录:/*本程序序有关的的两个数数据文件件:base.txtt基础础数据文文件(必必须存在在,且按按规定格格式保存存)persoon.ttxt人员信信息文件件(可选选)*/#inclludee #inclludee #inclludee #inclludee /全局数数据,对对象doublle MManaagerrSallaryy; /经理理固定月月薪doublle SSaleesMaanaggerSSalaary;
15、 /销售售经理固固定月薪薪doublle SSaleesMaanaggerPPerccentt; /销售售经理提提成doublle SSaleesPeerceent; /销售售人员提提成doublle WWageePerrHouur; /技术术人员小小时工资资int IID; /员工工标识(要保证证唯一)classs Peersoon /员员工类proteecteed: intt Noo; /编编号 chaar NNamee200; /姓名 intt Duuty; /岗位 douublee Eaarniing; /收入 Perrsonn *nnextt;publiic: Perrsonn(ch
16、har ID,chaar *Namme,iint Dutty) tthiss-DDutyy=Duuty; sstrccpy(thiis-Namme,NNamee); tthiss-NNo=IID; virrtuaal vvoidd CaalcSSalaary()=00; virrtuaal vvoidd Ouutpuut()=0; friiendd cllasss Coompaany;classs Maanagger:pubblicc Peersoon /经经理类publiic: Mannageer(ccharr IDD,chhar *Naame,intt Duuty):Peersoon(II
17、D,NNamee,Duuty) voiid CCalccSallaryy()Earrninng=MManaagerrSallaryy; voiid OOutpput() CCalccSallaryy(); ccouttNNottNammett经理tEaarniingenndl; ;classs SaalessMannageer:ppubllic Perrsonn /销售售经理类类privaate: douublee Ammounnt;publiic: SallesMManaagerr(chhar ID,chaar *Namme,iint Dutty):Perrsonn(IDD,Naame,Du
18、tty) voiid SSetAAmouunt(douublee s) AAmouunt=s; voiid CCalccSallaryy() EEarnningg=SaalessMannageerSaalarry+AAmouunt*SallesMManaagerrPerrcennt/1100; voiid OOutpput() CCalccSallaryy(); ccouttNNottNammett销售经经理ttEarrninngtt=T; douublee GeetT() rretuurn t; voiid SSetTT(dooublle TT) tthiss-tt=T; voiid CCa
19、lccSallaryy() EEarnningg=WaagePPerHHourr*t; voiid OOutpput() CCalccSallaryy(); ccouttNNottNammett技术员员ttttEEarnninggAAmouunt=Amoountt; douublee GeetAmmounnt() rretuurn Amoountt; voiid SSetAAmouunt(douublee Ammounnt) tthiss-AAmouunt=Amoountt; voiid CCalccSallaryy() EEarnningg=SaalessPerrcennt/1100*Amo
20、ountt; voiid OOutpput() CCalccSallaryy(); ccouttNNottNammett销售员员tAAmouunttEaarniingnexxt; deelette WWorkker; Woorkeer=pp; WWorkker=0; voiid AAdd(); /增加人人员 voiid DDeleete(); /删除人人员 voiid MModiify(); /修改人人员 voiid QQuerry(); /查询人人员 voiid SSet(); /基础数数据设置置 voiid SSavee(); /数据存存盘(包包括基础础数据,人人员数据据) voiid L
21、Loadd(); /数据装装入(包包括基础础数据,人人员数据据); void Commpanny:Cleear() /清清除内存存中人员员数据(内部使使用) Perrsonn* pp=Woorkeer; whiile(p) WWorkker=p-nexxt; ddeleete p; pp=Woorkeer; void Commpanny:Addd() Perrsonn *pp; /新新结点指指针 intt Duuty; chaar NNamee200; douublee Ammounnt,TT; couutnn* 新增员员工 *nn; /输输入员工工信息 ID+; couutDuuty; co
22、uutNamme; if(Dutty=3) ccouttAmoountt; elsse iif(DDutyy=44) ccouttT; /创创建新员员工结点点 swiitchh(Duuty) ccasee 1:p=nnew Mannageer(IID,NNamee,Duuty); bbreaak; ccasee 2:p=nnew SallesMManaagerr(IDD,Naame,Dutty); bbreaak; ccasee 3:p=nnew Salles(ID,Namme,DDutyy,Ammounnt); breeak; ccasee 4:p=nnew Tecchniiciaan(II
23、D,NNamee,Duuty,T); bbreaak; p-nexxt=00; /员员工结点点加入链链表 if(Worrkerr) /若若已经存存在结点点 PPersson *p22; pp2=WWorkker; wwhille(pp2-nexxt) /查找尾尾结点 p22=p22-nnextt; pp2-nexxt=pp; /连连接 elsse /若若不存在在结点(表空) WWorkker=p; /连接 void Commpanny:Delletee() /删除人人员 intt Noo; couutnn* 删除员员工 *nn; couutNoo; /查查找要删删除的结结点 Perrsonn
24、*pp1,*p2; pp1=WWorkker; whiile(p1) iif(pp1-No=Noo) brreakk; eelsee p22=p11; p11=p11-nnextt; /删删除结点点 if(p1!=NUULL)/若若找到结结点,则则删除 iif(pp1=Worrkerr) /若若要删除除的结点点是第一一个结点点 Woorkeer=pp1-nexxt; deelette pp1; eelsee /若要要删除的的结点是是后续结结点 p22-nnextt=p11-nnextt; deelette pp1; ccoutt找到并并删除n; elsse /未未找到结结点 ccoutt未找到
25、到!nn;void Commpanny:Moddifyy() intt Noo,Duuty; chaar NNamee200; douublee Ammounnt,TT; couutnn* 修改员员工 *nn; couutNoo; /查查找要修修改的结结点 Perrsonn *pp1,*p2; pp1=WWorkker; whiile(p1) iif(pp1-No=Noo) brreakk; eelsee p22=p11; p11=p11-nnextt; /修修改结点点 if(p1!=NUULL)/若若找到结结点 pp1-Outtputt(); ccouttDutty; iif(pp1-Dut
26、ty!=Dutty) /若岗位位发生变变动 /修改其其它数据据 cooutNaame; iff(Duuty=3) couutAmmounnt; ellse if(Dutty=4) couutTT; /创建新新员工结结点 Peersoon *p3; swwitcch(DDutyy) casse 11:p33=neew MManaagerr(p11-NNo,NNamee,Duuty); bbreaak; casse 22:p33=neew SSaleesMaanagger(p1-Noo,Naame,Dutty); bbreaak; casse 33:p33=neew SSalees(pp1-No,
27、Namme,DDutyy,Ammounnt); breeak; casse 44:p33=neew TTechhnicciann(p11-NNo,NNamee,Duuty,T); bbreaak; /员工结结点替换换到链表表 p33-nnextt=p11-nnextt; iff(p11=WWorkker) /若要要替换的的结点是是第一个个结点 Worrkerr=p33; ellse /若要删删除的结结点是后后续结点点 p2-neext=p3; /删除原原来的员员工结点点 deelette pp1; eelsee /若岗岗位没有有变动 cooutp11-NNamee; iff(Duuty=3)
28、couutAAmouunt; (Salles *)pp1)-SeetAmmounnt(AAmouunt); ellse if(Dutty=4) couutTT; (Teechnniciian *)pp1)-SeetT(T); ccoutt修改成成功!n; elsse /未未找到结结点 ccoutt未找到到!nn;void Commpanny:Queery() couutDDutyy=33)suum+=(SSalees *)p)-GGetAAmouunt(); pp=p-neext; p=WWorkker; douublee suum2=0; /工资总总和 whiile(p) iif(pp-DD
29、utyy=22)(SallesMManaagerr *)p)-SeetAmmounnt(ssum); pp-OOutpput(); ssum22+=pp-EEarnningg; pp=p-neext; couut本月月盈利:summ*0.20-summ2enddl; couut(按按照200利润润计算)n;void Commpanny:Sett() couutnn* 设置基基础数据据 *n; couut经理理固定月月薪MManaagerrSallaryyMannageerSaalarry; couut销售售经理固固定月薪薪SaalessMannageerSaalarrySallesMManaa
30、gerrSallaryy; couut销售售经理提提成SSaleesMaanaggerPPerccenttSallesMManaagerrPerrcennt; couut销售售人员提提成SSaleesPeerceentSallesPPerccentt; couut技术术人员小小时工资资WaagePPerHHourrWaggePeerHoour; couut=IIDID;void Commpanny:Savve() /数据据存盘(包括基基础数据据,人员员数据),均采采用文本本文件 ofsstreeam fPeersoon,ffBasse; chaar cc; couutc; if(touuppe
31、er(cc)!=Y)reeturrn; /保保存人员员编号、姓姓名、岗岗位 fPeersoon.oopenn(ppersson.txtt,iios:ouut); Perrsonn *pp=Woorkeer; whiile(p) ffPerrsonnNNottNammettDuttyDDutyy=33) fPPerssonGGetAAmouunt()Duuty=4) fPPerssonGGetTT()t; ffPerrsonnneext; fPeersoon.cclosse(); /保保存基础础数据 fBaase.opeen(basse.ttxt,ioos:outt); fBaase经经理固定定
32、月薪tMaanaggerSSalaaryenndl; fBaase销销售经理理固定月月薪ttSallesMManaagerrSallaryyeendll; fBaase销销售经理理提成tSSaleesMaanaggerPPerccentteendll; fBaase销销售人员员提成tSSaleesPeerceentenndl; fBaase技技术人员员小时工工资ttWaggePeerHoourenndl; fBaaseIIDttIDenndl; fPeersoon.cclosse(); couutbuufMannageerSaalarry; /经经理固定定月薪 fBaasebuufSalles
33、MManaagerrSallaryy; /销销售经理理固定月月薪 fBaasebuufSallesMManaagerrPerrcennt; /销销售经理理提成 fBaasebuufSallesPPerccentt; /销销售人员员提成 fBaasebuufWaggePeerHoour; /技技术人员员小时工工资 fBaasebuufID; /员员工标识识 fBaase.cloose(); /清清除内存存人员数数据 Cleear(); /人人员数据据数据装装入 ifsstreeam fPeersoon; Perrsonn *pp=Woorkeer; intt Noo; chaar NNamee200; innt DDutyy; douublee Ammounnt,TT; fPeersoon.oopenn(ppersson.txtt,iios:inn); /读读一条记记录 fPeersoonNoNaame
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年长春汽车经济技术开发区面向社会公开招聘编制外辅助岗位人员备考题库及答案详解参考
- 宁夏2020年中考生物真题解析报告
- 2025年法考主观题真题答案及解析
- 医疗机构风险管理工作方案
- 2025年铁路机车制修工成本控制考核试卷及答案
- (2025年)建筑综合施工人员安全教育考核试卷及答案
- 三国至隋唐文化史教学设计方案
- 工厂环境污染治理技术方案与实施计划
- 垃圾分类主题微课教学设计方案
- 电动公交充电桩选型与运行管理方案
- 资本市场运作培训课件
- 地理信息安全在线培训考试系统题库及答案
- 高标准农田监理质量及安全管理措施
- 2025年医院设备科或医学工程部新聘职工考试试题(带答案)
- 采购审批流程与权限明细手册
- 初中英语(完整版)连词and-or-but的用法练习题及答案
- 汽车基础知识培训资料书课件
- 十米宽暗涵清淤施工方案
- 污水管道土方量-计算表-绝对-
- 化学选修四原电池课件
- 中华民族的三次融合
评论
0/150
提交评论