1、 C+大作业报告 班级: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
3、、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()cout
4、num;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_salesm
5、an()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;vo
6、id 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:p
7、ublic 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:job
8、endl;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;StaffChar
9、t: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 S
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1