销售公司人员管理.doc
《销售公司人员管理.doc》由会员分享,可在线阅读,更多相关《销售公司人员管理.doc(25页珍藏版)》请在冰点文库上搜索。
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函数选择功能,然后调用相关的函数来实现各种功能。
三.实验代码:
#include"iostream"
#include"fstream"
usingnamespacestd;
classStaff
{
protected:
charnum[10];
charname[10];
intage;
public:
Staff*Next;
voidset_staff()
{
cout<<"Pleaseenteranumber:
";cin>>num;
cout<<"Pleaseinputthename:
";cin>>name;
cout<<"Pleaseinputtheage:
";cin>>age;
}
voidInputFromFile(istream&in)
{
in>>num>>name>>age;
}
voidshow()
{
cout<<"number:
"< cout<<"name:
"< cout<<"age:
"< }
char*get_num()
{
returnnum;
}
char*get_name()
{
returnname;
}
intget_age()
{
returnage;
}
};
classSalesman:
virtualpublicStaff
{
protected:
intsales;
public:
Salesman*Next;
voidset_salesman()
{
cout<<"Pleaseenteranumber:
";cin>>num;
cout<<"Pleaseinputthename:
";cin>>name;
cout<<"Pleaseinputtheage:
";cin>>age;
cout<<"Pleaseenterthesales:
";cin>>sales;
}
voidInputFromFile(istream&in)
{
in>>num>>name>>age>>sales;
}
voidshow_salesman()
{
cout<<"number:
"< cout<<"name:
"< cout<<"age:
"< cout<<"sales:
"< }
intget_sales()
{
returnsales;
}
};
classManager:
virtualpublicStaff
{
protected:
charjob[10];
chardept[10];
public:
Manager*Next;
voidset_manager()
{
cout<<"Pleaseenteranumber:
";cin>>num;
cout<<"Pleaseinputthename:
";cin>>name;
cout<<"Pleaseinputtheage:
";cin>>age;
cout<<"Pleaseinputposition:
";cin>>job;
cout<<"PleaseentertheDepartment:
";cin>>dept;
}
voidInputFromFile(istream&in)
{
in>>num>>name>>age>>job>>dept;
}
voidshow_manager()
{
cout<<"number:
"< cout<<"name:
"< cout<<"age:
"< cout<<"position:
"< cout<<"department:
"< }
char*get_job()
{
returnjob;
}
char*get_dept()
{
returndept;
}
};
classSalesManager:
publicSalesman,publicManager
{
public:
SalesManager*Next;
voidset_salesmanager()
{
cout<<"Pleaseenteranumber:
";cin>>num;
cout<<"Pleaseinputthename:
";cin>>name;
cout<<"Pleaseinputtheage:
";cin>>age;
cout<<"Pleaseenterthesales:
";cin>>sales;
cout<<"Pleaseinputposition:
";cin>>job;
cout<<"PleaseentertheDepartment:
";cin>>dept;
}
voidInputFromFile(istream&in)
{
in>>num>>name>>age>>sales>>job>>dept;
}
voidshow_salesmanager()
{
cout<<"number:
"< cout<<"name:
"< cout<<"age:
"< cout<<"sales:
"< cout<<"position:
"< cout<<"department:
"< }
};
classStaffChart
{
public:
StaffChart();
~StaffChart();
voidfind();
voidsave();
voidmodifyItem();
voidremoveItem();
intfindnumber();
voiddisplay()
{
Staff*p=Head->Next;
for(p;p!
=End;p=p->Next)
{
p->show();
cout< }
}
voidaddItem()
{
End->set_staff();
End->Next=newStaff;
End=End->Next;
save();
}
private:
Staff*Head,*End;
ifstreamin;
ofstreamout;
Staff*findItem(char*num)
{
for(Staff*p=Head;p->Next!
=End;p=p->Next)
if(!
strcmp(p->Next->get_num(),num))
returnp;
returnNULL;
}
};
StaffChart:
:
StaffChart()
{
Head=newStaff;
Head->Next=newStaff;
End=Head->Next;
in.open("StaffChart.txt");
while(!
in.eof())
{
End->InputFromFile(in);
if(End->get_num()[0]=='\0')
break;
End->Next=newStaff;
End=End->Next;
}
in.close();
}
StaffChart:
:
~StaffChart()
{
for(Staff*temp;Head->Next!
=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
deletetemp;
}
deleteHead,End;
}
voidStaffChart:
:
find()
{
charnum[10];
Staff*p=NULL;
cout<<"Pleaseinputthesearchforemployeenumber:
";cin>>num;
if(p=findItem(num))
p->Next->show();
else
{
cout<<"Notfound!
!
"< }
}
voidStaffChart:
:
modifyItem()
{
charnum[10];
Staff*p=NULL;
cout<<"Pleaseinputtomodifytheemployeenumber:
";cin>>num;
if(p=findItem(num))
{
p->Next->show();
cout<<"Pleaseinputthenewcontent:
"< p->Next->set_staff();
}
else
cout<<"Notfound!
!
"< save();
}
voidStaffChart:
:
removeItem()
{
charnum[10];
Staff*p=NULL,*temp=NULL;
cout<<"Pleasedeleteemployeenumber:
";cin>>num;
if(p=findItem(num))
{
temp=p->Next;
p->Next=p->Next->Next;
deletetemp;
cout<<"Deletedsuccessfully!
!
"< }
else
cout<<"Notfound!
!
"< save();
}
voidStaffChart:
:
save()
{
out.open("StaffChart.txt");
for(Staff*p=Head->Next;p!
=End;p=p->Next)
out<get_num()<<""<get_name()<<""<get_age()< out.close();
}
intStaffChart:
:
findnumber()
{
intn=0;
Staff*p=Head->Next;
while(p!
=NULL)
{n++;
p=p->Next;
}
cout<<"Numberofstaff:
"<returnn-1;
}
classSalesmanChart
{
public:
SalesmanChart();
~SalesmanChart();
voidfind();
voidsave();
voidmodifyItem();
voidremoveItem();
intfindnumber();
voiddisplay()
{
for(Salesman*p=Head->Next;p!
=End;p=p->Next)
p->show_salesman();
}
voidaddItem()
{
End->set_salesman();
End->Next=newSalesman;
End=End->Next;
save();
}
private:
Salesman*Head,*End;
ifstreamin;
ofstreamout;
Salesman*findItem(char*num)
{
for(Salesman*p=Head;p->Next!
=End;p=p->Next)
if(!
strcmp(p->Next->get_num(),num))
returnp;
returnNULL;
}
};
SalesmanChart:
:
SalesmanChart()
{
Head=newSalesman;
Head->Next=newSalesman;
End=Head->Next;
in.open("SalesmanChart.txt");
while(!
in.eof())
{
End->InputFromFile(in);
if(End->get_num()[0]=='\0')
break;
End->Next=newSalesman;
End=End->Next;
}
in.close();
}
SalesmanChart:
:
~SalesmanChart()
{
for(Salesman*temp;Head->Next!
=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
deletetemp;
}
deleteHead,End;
}
voidSalesmanChart:
:
find()
{
charnum[10];
Salesman*p=NULL;
cout<<"Pleaseinputthesearchsalesnumbers:
";cin>>num;
if(p=findItem(num))
p->Next->show_salesman();
else
cout<<"Notfound!
!
"<}
voidSalesmanChart:
:
modifyItem()
{
charnum[10];
Salesman*p=NULL;
cout<<"Pleaseinputtomodifythesalesnumbers:
";cin>>num;
if(p=findItem(num))
{
p->Next->show_salesman();
cout<<"Pleaseinputthenewcontent:
"< p->Next->set_salesman();
}
else
cout<<"Notfound!
!
"< save();
}
voidSalesmanChart:
:
removeItem()
{
charnum[10];
Salesman*p=NULL,*temp=NULL;
cout<<"Pleasedeletesalesnumbers:
";cin>>num;
if(p=findItem(num))
{
temp=p->Next;
p->Next=p->Next->Next;
deletetemp;
cout<<"Deletedsuccessfully!
!
"< }
else
cout<<"Notfound!
!
"< save();
}
voidSalesmanChart:
:
save()
{
out.open("SalesmanChart.txt");
for(Salesman*p=Head->Next;p!
=End;p=p->Next)
out<get_num()<get_name()<get_age()<get_sales()< out.close();
}
intSalesmanChart:
:
findnumber()
{
intn=0;
Salesman*p=Head->Next;
while(p!
=NULL)
{n++;
p=p->Next;
}
cout<<"Salesnumbers:
"<returnn-1;
}
classManagerChart
{
public:
ManagerChart();
~ManagerChart();
voidfind();
voidsave();
voidmodifyItem();
voidremoveItem();
intfindnumber();
voiddisplay()
{
Manager*p=Head->Next;
for(p;p!
=End;p=p->Next)
p->show_manager();
}
voidaddItem()
{
End->set_manager();
End->Next=newManager;
End=End->Next;
save();
}
private:
Manager*Head,*End;
ifstreamin;
ofstreamout;
Manager*findItem(char*num)
{
for(Manager*p=Head;p->Next!
=End;p=p->Next)
if(!
strcmp(p->Next->get_num(),num))
returnp;
returnNULL;
}
};
ManagerChart:
:
ManagerChart()
{
Head=newManager;
Head->Next=newManager;
End=Head->Next;
in.open("ManagerChart.txt");
while(!
in.eof())
{
End->InputFromFile(in);
if(End->get_num()[0]=='\0')
break;
End->Next=newManager;
End=End->Next;
}
in.close();
}
ManagerChart:
:
~ManagerChart()
{
for(Manager*temp;Head->Next!
=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
deletetemp;
}
deleteHead,End;
}
vo