版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c+大作业报告姓名:常皓学号:03101261班级:031013销售公司员工管理设计一个虚基类staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由staff派生出销售员类salesman,包含销售额保护数据成员以及相关的成员函数;再由staff派生出经理类manager;然后由salesman和manager类派生出销售经理类salesmanager。设计一个利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能。(删除数据在记录中做删除标志,重组文件指在物理上删除有删除标志的记录。)另外要求分别
2、统计这三类员工的人数以及所有员工的总数。编程思想:首先定义一个虚基类staff类,然后通过虚拟继承生成salesman类和manager类,最后由salesman和manager派生出主任销售员类salesmanager。这四个类中定义inputfromfile(istream &in)这一输入函数,另外每个类还定义输入信息和输出信息的成员函数,之后定义staffchart、salesmanchart、managerchart和salesmanagerchart四个类来,为实现增加、更新、查询、删除以及全部显示人员的功能定义additem、modifyitem、find、removeitem以
3、及display函数。最后在主函数定义staff_chart、salesman_chart、manager_chart和salesmanager_chart四个对象,通过循环执行并用switch函数选择功能,然后调用相关的函数来实现各种功能。实验代码:#includeiostream#includefstreamusing namespace std;class staff protected:char num10;char name10;int age;public:staff * next;void set_staff()coutnum;coutname;coutage;void inpu
4、tfromfile(istream &in)innumnameage;void show()cout编号:numendl;cout姓名:nameendl;cout年龄:ageendl;char *get_num()return num;char *get_name()return name;int get_age()return age;class salesman:virtual public staffprotected:char major10;char t_title10;public:salesman * next;void set_salesman()coutnum;coutnam
5、e;coutage;coutmajor;coutt_title;void inputfromfile(istream &in)innumnameagemajort_title;void show_salesman()cout编号:numendl;cout姓名:nameendl;cout年龄:ageendl;cout专业:majorendl;cout职称:t_titleendl;char *get_major()return major;char *get_t_title()return t_title;class manager:virtual public staffprotected:ch
6、ar job10;char dept10;public:manager * next;void set_manager()coutnum;coutname;coutage;coutjob;coutdept;void inputfromfile(istream &in)innumnameagejobdept;void show_manager()cout编号:numendl;cout姓名:nameendl;cout年龄:ageendl;cout职务:jobendl;cout部门:deptendl;char *get_job()return job;char *get_dept()return d
7、ept;class salesmanager:public salesman,public managerpublic:salesmanager * next;void set_salesmanager()coutnum;coutname;coutage;coutmajor;coutt_title;coutjob;coutdept;void inputfromfile(istream &in)innumnameagemajort_titlejobdept;void show_salesmanager()cout编号:numendl;cout姓名:nameendl;cout年龄:ageendl;
8、cout专业:majorendl;cout职称:t_titleendl;cout职务:jobendl;cout部门:deptnext;for(p;p!=end;p=p-next)p-show();coutset_staff();end-next=new staff;end=end-next;save();private:staff * head,* end;ifstream in; /文件输入ofstream out; /文件输出staff * finditem(char * num)for(staff * p=head;p-next!=end;p=p-next)if(!strcmp(p-ne
9、xt-get_num() ,num)return p;return null;staffchart:staffchart() /构造函数 head=new staff;head-next=new staff;end=head-next;in.open(staffchart.txt);while(!in.eof()end-inputfromfile(in);if(end-get_num()0=0)break;end-next=new staff;end=end-next;in.close();staffchart:staffchart() /析构函数for(staff * temp;head-n
10、ext!=end;)temp=head-next;head-next=head-next-next;delete temp;delete head,end;void staffchart:find() /查找条目char num10;staff * p=null;coutnum;if(p=finditem(num)p-next-show();elsecout没有找到!endlendl;void staffchart:modifyitem() /修改条目char num10;staff * p=null;coutnum;if(p=finditem(num)p-next-show();cout请输
11、入新的内容:next-set_staff();elsecout没有找到!endlendl;save();void staffchart:removeitem() /删除条目char num10;staff *p=null,*temp=null;coutnum;if(p=finditem(num)temp=p-next;p-next=p-next-next;delete temp;cout删除成功!endlendl;elsecout没有找到!endlnext;p!=end;p=p-next)outget_num() get_name() get_age()next;p!=end;p=p-next
12、)p-show_salesman();void additem() /添加条目end-set_salesman();end-next=new salesman;end=end-next;save();private:salesman * head,* end;ifstream in; /文件输入ofstream out; /文件输出salesman * finditem(char * num)for(salesman * p=head;p-next!=end;p=p-next)if(!strcmp(p-next-get_num() ,num)return p;return null;sales
13、manchart:salesmanchart() /构造函数 head=new salesman;head-next=new salesman;end=head-next;in.open(salesmanchaart.txt);while(!in.eof()end-inputfromfile(in);if(end-get_num()0=0)break;end-next=new salesman;end=end-next;in.close();salesmanchart:salesmanchart() /析构函数for(salesman * temp;head-next!=end;)temp=h
14、ead-next;head-next=head-next-next;delete temp;delete head,end;void salesmanchart:find() /查找条目char num10;salesman * p=null;coutnum;if(p=finditem(num)p-next-show_salesman();elsecout没有找到!endlendl;void salesmanchart:modifyitem() /修改条目char num10;salesman * p=null;coutnum;if(p=finditem(num)p-next-show_sal
15、esman();cout请输入新的内容:next-set_salesman();elsecout没有找到!endlendl;save();void salesmanchart:removeitem() /删除条目char num10;salesman *p=null,*temp=null;coutnum;if(p=finditem(num)temp=p-next;p-next=p-next-next;delete temp;cout删除成功!endlendl;elsecout没有找到!endlnext;p!=end;p=p-next)outget_num()get_name()get_age(
16、)get_major()get_t_title()next;for(p;p!=end;p=p-next)p-show_manager();void additem() /添加条目end-set_manager();end-next=new manager;end=end-next;save();private:manager * head,* end;ifstream in; /文件输入ofstream out; /文件输出manager * finditem(char * num)for(manager * p=head;p-next!=end;p=p-next)if(!strcmp(p-n
17、ext-get_num() ,num)return p;return null;managerchart:managerchart() /构造函数 head=new manager;head-next=new manager;end=head-next;in.open(managerchaart.txt);while(!in.eof()end-inputfromfile(in);if(end-get_num()0=0)break;end-next=new manager;end=end-next;in.close();managerchart:managerchart() /析构函数for(m
18、anager * temp;head-next!=end;)temp=head-next;head-next=head-next-next;delete temp;delete head,end;void managerchart:find() /查找条目char num10;manager * p=null;coutnum;if(p=finditem(num)p-next-show_manager();elsecout没有找到!endlendl;void managerchart:modifyitem() /修改条目char num10;manager * p=null;coutnum;if
19、(p=finditem(num)p-next-show_manager();cout请输入新的内容:next-set_manager();elsecout没有找到!endlendl;save();void managerchart:removeitem() /删除条目char num10;manager *p=null,*temp=null;coutnum;if(p=finditem(num)temp=p-next;p-next=p-next-next;delete temp;cout删除成功!endlendl;elsecout没有找到!endlnext;p!=end;p=p-next)out
20、get_num()get_name()get_age()get_job()get_dept()next;for(;p!=end;p=p-next)p-show_salesmanager();void additem() /添加条目end-set_salesmanager();end-next=new salesmanager;end=end-next;save();private:salesmanager * head,* end;ifstream in; /文件输入ofstream out; /文件输出salesmanager * finditem(char * num)for(salesm
21、anager * p=head;p-next!=end;p=p-next)if(!strcmp(p-next-get_num() ,num)return p;return null;salesmanagerchart:salesmanagerchart() /构造函数 head=new salesmanager;head-next=new salesmanager;end=head-next;in.open(salesmanagerchaart.txt);while(!in.eof()end-inputfromfile(in);if(end-get_num()0=0)break;end-nex
22、t=new salesmanager;end=end-next;in.close();salesmanagerchart:salesmanagerchart() /析构函数for(salesmanager * temp;head-next!=end;)temp=head-next;head-next=head-next-next;delete temp;delete head,end;void salesmanagerchart:find() /查找条目char num10;salesmanager * p=null;coutnum;if(p=finditem(num)p-next-show_
23、salesmanager();elsecout没有找到!endlendl;void salesmanagerchart:modifyitem() /修改条目char num10;salesmanager * p=null;coutnum;if(p=finditem(num)p-next-show_salesmanager();cout请输入新的内容:next-set_salesmanager();elsecout没有找到!endlendl;save();void salesmanagerchart:removeitem() /删除条目char num10;salesmanager *p=nul
24、l,*temp=null;coutnum;if(p=finditem(num)temp=p-next;p-next=p-next-next;delete temp;cout删除成功!endlendl;elsecout没有找到!endlnext;p!=end;p=p-next)outget_num()get_name()get_age()get_job()get_dept()endl;out.close();int main()int x,y;staffchart staff_chart;salesmanchart salesman_chart;managerchart manager_char
25、t;salesmanagerchart salesmanager_chart;bool quit=false;while(!quit)cout选择功能:n1.增加数据t2.更新数据t3.查询数据t4.删除数据t5.列出全部人员t6.退出x;switch(x)case 1:cout选择增加的类型:n1.员工t2.销售员t3.经理t4.销售经理y;switch(y)case 1:staff_chart.additem();break;case 2:salesman_chart.additem();break;case 3:manager_chart.additem();break;case 4:s
26、alesmanager_chart.additem();break;default :cout输入错误,程序终止!endl;exit(-1);break;case 2:cout选择更新的类型:n1.员工t2.销售员t3.经理t4.销售经理y;switch(y)case 1:staff_chart.modifyitem();break;case 2:salesman_chart.modifyitem();break;case 3:manager_chart.modifyitem();break;case 4:salesmanager_chart.modifyitem();break;default :cout输入错误,程序终止!endl;exit(-1);break;case 3:cout选择查询的类型:n1.员工t2.销售员t3.经理t4.销售经理y;switch(y)case 1:staff_chart.find();break;case 2:s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年成都百万职工技能大赛(燃气管道客服员)备赛试题库(含答案)
- 2020-2025年房地产估价师之基本制度法规政策含相关知识通关题库(附答案)
- 铁路机车运用协议书
- 乌克兰中国核协议书
- CTT4000现场培训精要
- 天猫的爬虫协议书
- 穿墙打孔担保协议书
- 制药废水处理与资源化利用创新创业项目商业计划书
- 塑料管材增强纤维复合材料创新创业项目商业计划书
- 多功能卧室梳妆台柜创新创业项目商业计划书
- YY/T 1976-2025中医器械玻璃拔罐器
- 2025年泰安市公开招聘劳务派遣制工会社会工作者(52人)笔试考试参考试题及答案解析
- 第12课 中国共产党诞生 课件(内嵌视频)
- 2025年生活美容行业分析报告及未来发展趋势预测
- 2025年教师职称考试(道德与法治学科知识)(小学)模拟试题及答案
- 事业单位会计专业考试重点题解
- 零星工程维修服务方案
- 浙江省天域全国名校协作体2026届高三上学期10月联考技术试题(含答案)
- 超龄员工用工承诺书模板
- 2025年中国电磁兼容性(EMC)屏蔽设备行业市场全景分析及前景机遇研判报告
- 新版部编人教版三年级上册道德与法治全册教案教学设计含教学反思
评论
0/150
提交评论