销售公司人员管理.doc_第1页
销售公司人员管理.doc_第2页
销售公司人员管理.doc_第3页
销售公司人员管理.doc_第4页
销售公司人员管理.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

C+大作业报告 班级: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、findnumber函数。最后在主函数定义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()coutnumber:numendl;coutname:nameendl;coutage:ageendl;char *get_num()return num;char *get_name()return name;int get_age()return age;class Salesman:virtual public Staffprotected:int sales;public:Salesman * Next;void set_salesman()coutnum;coutname;coutage;coutsales;void InputFromFile(istream &in)innumnameagesales;void show_salesman()coutnumber:numendl;coutname:nameendl;coutage:ageendl;coutsales:salesendl;int get_sales()return sales;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()coutnumber:numendl;coutname:nameendl;coutage:ageendl;coutposition:jobendl;coutdepartment: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;coutsales;coutjob;coutdept;void InputFromFile(istream &in)innumnameagesalesjobdept;void show_salesmanager()coutnumber:numendl;coutname:nameendl;coutage:ageendl;coutsales:salesendl;coutposition:jobendl;coutdepartment: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();elsecoutNot found!endlendl;void StaffChart:modifyItem() char num10;Staff * p=NULL;coutnum;if(p=findItem(num)p-Next-show();coutPlease input the new content:Next-set_staff();elsecoutNot found!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;coutDeleted successfully!endlendl;elsecoutNot found!endlNext;p!=End;p=p-Next)outget_num() get_name() get_age()Next; while(p!=NULL) n+; p=p-Next; coutNumber of staff:n-1Next;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(SalesmanChart.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();elsecoutNot found!endlendl;void SalesmanChart:modifyItem() char num10;Salesman * p=NULL;coutnum;if(p=findItem(num)p-Next-show_salesman();coutPlease input the new content:Next-set_salesman();elsecoutNot found!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;coutDeleted successfully!endlendl;elsecoutNot found!endlNext;p!=End;p=p-Next)outget_num()get_name()get_age()get_sales()Next; while(p!=NULL) n+; p=p-Next; coutSales numbers:n-1Next;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(ManagerChart.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();elsecoutNot found!endlendl;void ManagerChart:modifyItem() char num10;Manager * p=NULL;coutnum;if(p=findItem(num)p-Next-show_manager();coutPlease input the new content:Next-set_manager();elsecoutNot found!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;coutDeleted successfully!endlendl;elsecoutNot found!endlNext;p!=End;p=p-Next)outget_num()get_name()get_age()get_job()get_dept()Next; while(p!=NULL) n+; p=p-Next; coutManager number:n-1Next;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(SalesManagerChart.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();elsecoutNot found!endlendl;void SalesManagerChart:modifyItem() char num10;SalesManager * p=NULL;coutnum;if(p=findItem(num)p-Next-show_salesmanager();coutPlease input the new content:Next-set_salesmanager();elsecoutNot found!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;coutDeleted successfully!endlendl;elsecoutNot found!endlNext;p!=End;p=p-Next)outget_num()get_name()get_age()get_sales()get_job()get_dept()Next; while(p!=NULL) n+; p=p-Next; coutSales Manager for the number:n-1endl; return n-1; int main()int x,y,z;StaffChart Staff_Chart;SalesmanChart Salesman_Chart;ManagerChart Manager_Chart;SalesManagerChart SalesManager_Chart;bool quit=false;while(!quit)coutSelect function : n1.the increase of data t2. update data t3.query datat4.delete data t5. for specific categories of personnel t6. show the number of employees t7. exitx;switch(x)case 1:coutSelection for increased types: n1. employee t2. Sales t3.Manager t4.Sales Managery;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 :coutInput error, program termination!endl;exit(-1);break;case 2:coutSelect Update type: n1. employee t2. Sales t3.Manager t4.Sales Managery;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 :coutInput error, program termination!endl;exit(-1);break;case 3:coutChoose a query type: n1. employee t2. Sales t3.Manager t4.Sales Managery;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 :coutInput error, program termination!endl;exit(-1);break;case 4:coutSelect Delete type:n1. employee t2. Sales t3.Manager t4.Sales Managery;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 :coutInput error, program termination!endl;exit(-1);break;case 5:coutList of personnel selection type:n1. employee t2. Sales t3.Manager t4.Sales Managery;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 :coutInput error, program termination!endl;exit(-1);break;case 6: coutSelect view t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论