《C大作业报告》word版.doc_第1页
《C大作业报告》word版.doc_第2页
《C大作业报告》word版.doc_第3页
《C大作业报告》word版.doc_第4页
《C大作业报告》word版.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+大作业报告姓名:常皓学号:03101261班级:031013销售公司员工管理设计一个虚基类Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出销售员类Salesman,包含销售额保护数据成员以及相关的成员函数;再由Staff派生出经理类Manager;然后由Salesman和Manager类派生出销售经理类SalesManager。设计一个利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能。(删除数据在记录中做删除标志,重组文件指在物理上删除有删除标志的记录。)另外要求分别统计这三类员工的人数以及所有员工的总数。编程思想:首先定义一个虚基类Staff类,然后通过虚拟继承生成Salesman类和Manager类,最后由Salesman和Manager派生出主任销售员类SalesManager。这四个类中定义InputFromFile(istream &in)这一输入函数,另外每个类还定义输入信息和输出信息的成员函数,之后定义StaffChart、SalesmanChart、ManagerChart和SalesManagerChart四个类来,为实现增加、更新、查询、删除以及全部显示人员的功能定义addItem、modifyItem、find、removeItem以及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 InputFromFile(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;coutname;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:char 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 dept;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;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-Next-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-Next!=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请输入新的内容: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)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;SalesmanChart: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=Head-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_salesman();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()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-Next-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(Manager * 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(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)outget_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(SalesManager * 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-Next=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_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=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()get_job()get_dept()endl;out.close();int main()int x,y;StaffChart Staff_Chart;SalesmanChart Salesman_Chart;ManagerChart Manager_Chart;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:SalesManager_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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论