C大作业报告.doc

上传人:laozhun 文档编号:2384319 上传时间:2023-02-17 格式:DOC 页数:19 大小:168KB
返回 下载 相关 举报
C大作业报告.doc_第1页
第1页 / 共19页
C大作业报告.doc_第2页
第2页 / 共19页
C大作业报告.doc_第3页
第3页 / 共19页
C大作业报告.doc_第4页
第4页 / 共19页
C大作业报告.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《C大作业报告.doc》由会员分享,可在线阅读,更多相关《C大作业报告.doc(19页珍藏版)》请在三一办公上搜索。

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;defaul

27、t :cout输入错误,程序终止!endl;exit(-1);break;case 3:cout选择查询的类型:n1.员工t2.销售员t3.经理t4.销售经理y;switch(y)case 1:Staff_Chart.find();break;case 2:Salesman_Chart.find();break;case 3:Manager_Chart.find();break;case 4:SalesManager_Chart.find();break;default :cout输入错误,程序终止!endl;exit(-1);break;case 4:cout选择删除的类型:n1.员工t2.

28、销售员t3.经理t4.销售经理y;switch(y)case 1:Staff_Chart.removeItem();break;case 2:Salesman_Chart.removeItem();break;case 3:Manager_Chart.removeItem();break;case 4:SalesManager_Chart.removeItem();break;default :cout输入错误,程序终止!endl;exit(-1);break;case 5:cout选择列出人员的类型:n1.员工t2.销售员t3.经理t4.销售经理y;switch(y)case 1:Staff_Chart.display();break;case 2:Salesman_Chart.display();break;case 3:Manager_Chart.display();break;case 4:SalesManager_Chart.display();break;default :cout输入错误,程序终止!endl;exit(-1);break;case 6:quit=true;break;default :cout输入错误,程序终止!endl;exit(-1);return 0;运行结果:运行空间有四个文件:增加两个员工:修改一个销售员信息:查询一个销售员信息:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号