1、 C++大作业报告 班级:031013 学号: 姓名: 销售公司员工管理 一.题目: 设计一个虚基类Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出销售员类Salesman,包含销售额保护数据成员以及相关的成员函数;再由Staff派生出经理类Manager;然后由Salesman和Manager类派生出销售经理类SalesManager。 设计一个利用文件处理方式实
2、现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能。(删除数据在记录中做删除标志,重组文件指在物理上删除有删除标志的记录。)另外要求分别统计这三类员工的人数以及所有员工的总数。 二. 分析,流程及编程思想: 首先定义一个虚基类Staff类,然后通过虚拟继承生成Salesman类和Manager类,最后由Salesman和Manager派生出销售经理类SalesManager。这四个类中定义InputFromFile(istream &in)这一输入函数,另外每个类还定义输入信息和输出信息的成员函数,之后定义StaffChart、
3、SalesmanChart、ManagerChart和SalesManagerChart四个类来,为实现增加、更新、查询、删除以及特定类别人员显示,特定类别人员数目显示的功能定义addItem、modifyItem、find、removeItem以及display、findnumber函数。最后在主函数定义Staff_Chart、Salesman_Chart、Manager_Chart和SalesManager_Chart四个对象,通过循环执行并用switch函数选择功能,然后调用相关的函数来实现各种功能。 三. 实验代码: #include"iostream" #include"fst
4、ream" using namespace std; class Staff { protected: char num[10]; char name[10]; int age; public: Staff * Next; void set_staff() { cout<<"Please enter a number:";cin>>num; cout<<"Please input the name:";cin>>name; cout<<"Please input the age:";cin>>age; } void In
5、putFromFile(istream &in)
{
in>>num>>name>>age;
}
void show()
{
cout<<"number:"< 6、ss Salesman:virtual public Staff
{
protected:
int sales;
public:
Salesman * Next;
void set_salesman()
{
cout<<"Please enter a number:";cin>>num;
cout<<"Please input the name:";cin>>name;
cout<<"Please input the age:";cin>>age;
cout<<"Please enter the sales:";cin>>sales;
}
7、void InputFromFile(istream &in)
{
in>>num>>name>>age>>sales;
}
void show_salesman()
{
cout<<"number:"< 8、lic Staff
{
protected:
char job[10];
char dept[10];
public:
Manager * Next;
void set_manager()
{
cout<<"Please enter a number:";cin>>num;
cout<<"Please input the name:";cin>>name;
cout<<"Please input the age:";cin>>age;
cout<<"Please input position:";cin>>job;
cout<<"Plea 9、se enter the Department:";cin>>dept;
}
void InputFromFile(istream &in)
{
in>>num>>name>>age>>job>>dept;
}
void show_manager()
{
cout<<"number:"< 10、
}
char *get_job()
{
return job;
}
char *get_dept()
{
return dept;
}
};
class SalesManager:public Salesman,public Manager
{
public:
SalesManager * Next;
void set_salesmanager()
{
cout<<"Please enter a number:";cin>>num;
cout<<"Please input the name:";cin>>name; 11、
cout<<"Please input the age:";cin>>age;
cout<<"Please enter the sales:";cin>>sales;
cout<<"Please input position:";cin>>job;
cout<<"Please enter the Department:";cin>>dept;
}
void InputFromFile(istream &in)
{
in>>num>>name>>age>>sales>>job>>dept;
}
void show_salesmanager() 12、
{
cout<<"number:"< 13、
void save();
void modifyItem();
void removeItem();
int findnumber();
void display()
{
Staff *p=Head->Next;
for(p;p!=End;p=p->Next)
{
p->show();
cout< 14、
{
End->set_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- 15、>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 16、>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()
{
ch 17、ar num[10];
Staff * p=NULL;
cout<<"Please input the search for employee number:";cin>>num;
if(p=findItem(num))
p->Next->show();
else
{
cout<<"Not found!!"< 18、o modify the employee number:";cin>>num;
if(p=findItem(num))
{
p->Next->show();
cout<<"Please input the new content:"< 19、L,*temp=NULL;
cout<<"Please delete employee number:";cin>>num;
if(p=findItem(num))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"Deleted successfully!!"< 20、
{
out.open("StaffChart.txt");
for(Staff * p=Head->Next;p!=End;p=p->Next)
out< 21、 p=p->Next;
}
cout<<"Number of staff:"< 22、
int findnumber();
void display()
{
for(Salesman *p=Head->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, 23、 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() 24、
{
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() 25、
{
for(Salesman * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}
void SalesmanChart::find()
{
char num[10];
Salesman * p=NULL;
cout<<"Please input the search sales numbers: 26、";cin>>num;
if(p=findItem(num))
p->Next->show_salesman();
else
cout<<"Not found!!"< 27、>show_salesman();
cout<<"Please input the new content:"< 28、m;
if(p=findItem(num))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"Deleted successfully!!"< 29、Head->Next;p!=End;p=p->Next)
out< 30、s numbers:"< 31、
{
Manager *p=Head->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 o 32、ut;
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 33、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;)
{ 34、
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}
void ManagerChart::find()
{
char num[10];
Manager * p=NULL;
cout<<"Please input the search manager ID:";cin>>num;
if(p=findItem(num))
p->Next->show_manager();
else
35、 cout<<"Not found!!"< 36、t_manager();
}
else
cout<<"Not found!!"< 37、xt;
delete temp;
cout<<"Deleted successfully!!"< 38、>get_age()< 39、class SalesManagerChart
{
public:
SalesManagerChart();
~SalesManagerChart();
void find();
void save();
void modifyItem();
void removeItem();
int findnumber();
void display()
{
SalesManager 40、p=Head->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; 41、
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 Sa 42、lesManager;
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(S 43、alesManager * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}
void SalesManagerChart::find()
{
char num[10];
SalesManager * p=NULL;
cout<<"Please input the search sales manager ID:";cin>>num;
i 44、f(p=findItem(num))
p->Next->show_salesmanager();
else
cout<<"Not found!!"< 45、>Next->show_salesmanager();
cout<<"Please input the new content:"< 46、les manager ID:";cin>>num;
if(p=findItem(num))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"Deleted successfully!!"< 47、hart.txt");
for(SalesManager * p=Head->Next;p!=End;p=p->Next)
out< 48、p!=NULL)
{ n++;
p=p->Next;
}
cout<<"Sales Manager for the number:"< 49、t;
bool quit=false;
while(!quit)
{
cout<<"Select function : \n1.the increase of data \t2. update data \t3.query data\t4.delete data \t5. for specific categories of personnel \t6. show the number of employees \t7. exit"< 50、increased types: \n1. employee \t2. Sales \t3.Manager \t4.Sales Manager"<






