版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++大作业报告
班级:031013
学号:
姓名:
销售公司员工管理
题目:
设计一个虚基类Sta〒(员工),包含编号、姓名和在龄保护数据成员以及相关的成员函
数;由Staff派生出销售员类Salesman,包含销售额保护数据成员以及相关的成员函数;再
由Staff派生出经理类Manager;然后由Salesman和Manager类派生出销售经理类
SalesManager0
设计一个利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,
具有增加数据、更新数据、杳询数据、删除数据以及重组文件的功能。(删除数据在记录中
做删除标志,重组文件指在物理上删除有删除标志的记录。)此外要求分别统计这三类员工
的人数以及所有员工的总数。
二.分析二流程及编程思想:
首先定义•个虚基类Staff类,然后通过虚拟继承生成Salesman类和Manager类,最后
由Salesman和Manager派生出销售经理类SalesManager。这四个类中定义
InputFromFilefistream&in)这一输入函数,此外每一个类还定义输入信息和输出信息的成员
函数,之后定义StaffChart.SalesmanChart.ManagerChart和SalesManagerChart四个类来,
为实现增加、更新、瓷询、删除以及特定类别人员显示,特定类别人员数目显示的功能定
义addItemmodifyitem、find、removeitem以及display^findnumber函数。最后在主函数
定义Staff_Chart.Salesman_ChartxManagejChart和SalesManagejChart四个对象,通过
循环执行并用switch函数选择功能,然后调用相关的函数来实现各种功能。
三.实验代码:
#include"iostream"
#include"fstreamH
usingnamespacestd;
classStaff
(
protected:
charnum[10];
charname[10];
intage;
public:
Staff*Next;
voidset_staff()
(
cout«"Pleaseerteranumber:";cin»num;
cout«"Pleaseinputthename:";cin»name;
cout«"Pleaseinputtheage:";cin»age;
)
voidlnputFromFile(is1ream&in)
(
in»num»name»age;
)
voidshow()
cuul«"riufiiber;"«riufii«endl;
cout«"name:"«name«endl;
cout«"age:"«age«endl;
)
char*get_num()
{
returnnum;
)
char*geLname()
(
returnname;
)
intget_age()
(
returnage;
)
);
classSalesmanvirtualpublicStaff
(
protected:
intsales;
public:
Salesman*Next;
voidset_salesman()
{
cout«"Pleaseenteranumber:";cin»num;
cout«"Pleaseinputthename:,,;cin»name;
cout«"Pleaseinputtheage:";cin»age;
cout«HPleaseenterthesales:";cin»sales;
)
voidlnputFromFile(istream&in)
(
in»num»name»age»sales;
)
voidshowsalesman()
(
cout«"number:,,«num«endl;
cout«"name:H«name«endl;
cout«"age:"«age«endl;
cout«"sales:"«sales«endl;
)
intget_sales()
returnsales;
)
);
classManager:virtualpublicStaff
(
protected:
charjob[10];
chardept[W];
public:
Manager*Next;
voidset_manager()
(
cout^Pleaseenteranumber:";cin»num;
cout^Pleaseinputthename:";cin»name;
cout«Tleaseinputtheage:";cin»age;
cout«"Pleaseinoutposition:u;cin»job;
cout«"PleaseentertheDepartment:";cin»dept;
)
voidlnputFromFile(istream&in)
{
in»num»name»age»job»dept;
)
voidshow_manager()
(
cout«"number:"«num«endl;
coutvv"name:"«name«endl;
cout«"age:"«age«endl;
cout«"position:"«job«endl;
cout«"department:"«dept«endl;
)
char*getjob()
{
returnjob;
)
char*get_dept()
(
returndept;
}
);
classSalesManagerpublicSalesmanpublicManager
public:
SalesManager*Next;
voidset_salesmanager()
(
cout«"Pleaseenteranumber:,';cin»num;
cout«"Pleaseinputthename:,,;cin»name;
cout«"Pleaseinputtheage:";cin»age;
cout«Tleaseenterthesales:,,;cin»sales;
cout«"Pleaseinoutposition:,,;cin»job;
cout«"PleaseentertheDepartment:";cin»dep1;
)
voidlnputFromFile(istream&in)
{
in»num»name»age»sales»job»dept;
)
voidshow_salesmanager()
(
cout«"number:"«num«endl;
cout«'*name:"«name«endl;
cout«"age:"«age«endl;
cout«"sales:"«sales«endl;
cout«"position:"«job«endl;
cout«"department:M«dept«endl;
)
);
classStaffChart
(
public:
StaffChart();
~StaffChart();
voidfind();
voidsave();
voidmodifyltem();
voidremoveltem();
intfindnumber();
voiddisplay()
(
Staff*p=Head->Next;
for(p;p!=End;p=p->Next)
p->show();
cout«endl;
}
)
voidaddltem()
{
End->set_staff();
End->Next=newStaff;
End=End->Next;
save();
)
private:
Staff*Head,*End;
ifstreamin;
ofstreamout;
Staff*findltem(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.txr);
while(!in.eof())
(
End->lnputFromFile(in);
if(End->get_num()[O]==^')
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«"Pleaseinputthesearchtoremployeenumber:";cm»num;
if(p=findltem(num))
p->Next->show();
else
(
cout«MNotfound!!"«endl«endl;
)
)
voidStaffChart::modifyltem()
(
charnum[10];
Staff*p=NULL;
cout«Tleaseinputtomodifytheemployeenumber:";cin»num;
if(p=findltem(num))
(
p->Next->show();
cout«"Pleaseinputthenewcontent:"«endl;
p->Next->set_staff();
)
else
cout«"Notfound!!"«endl«endl;
save();
)
voidStaffChart::removeltem()
(
charnum[10];
Staff*p=NULL,*temp=NULL;
cout«"Pleasedeleteemployeenumber:";cin»num;
if(p=findltem(num))
(
temp=p->Next;
p->Next=p->Next->Next;
deletetemp;
cout«"Deletedsuccessfully!!"«endl«endl,
)
else
cout«"Notfound!!"«endl«endl;
save();
)
voidStaffChart::save()
(
out.openCStaffChart.txt");
for(Staff*p=Head->Next;p!=End;p=p->Next)
ou^p^geLnumO^'"«p->get_name()«""«p->get_age()«endl;
out.close();
)
intStaffChart::findnumberO
(
intn=0;
Staff*p=Head->Next;
while(p!=NULL)
{n++;
p=p->Next;
)
cout«"Numberofstaff:"vvn-Ivvendl;
returnn-1;
)
classSalesmanchart
(
public:
SalesmanChartQ;
-SalesmanChart();
voidfind();
voidsave();
voidmodifyltemO;
voidremoveltem();
intfindnumber();
voiddisplay()
(
for(Salesman*p=Head->Next;p!=End;p=p->Next)
p->show_salesman();
)
voidaddltem()
End->set_salesman();
End->Next=newSalesman;
End=End->Next;
save();
)
private:
Salesman*Head,*End;
ifstreamin;
ofstreamout;
Salesman*findltem(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.openfSalesmanChart.txt");
while(!in.eof())
(
End->lnputFromFile(in);
if(End->get_num()[O]==^')
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«"Pleaseinputthssearchsalesnumbers:";cin»num;
if(p=findltem(num))
p->Next->show_salesman();
else
cout«"Notfound!!"«endl«endl;
)
voidSalesmanChart::modifyltem()
{
charnum[10];
Salesman*p=NULL;
cout«"Pleaseinputtomodifythesalesnumbers:";cin»num;
if(p=findltem(num))
(
p->Next->show_salesman();
cout«"Pleaseinputthenewcontent:"«endl;
p->Next->set_salesman();
)
else
cout«MNotfound!!"«endl«endl;
save();
}
voidSalesmanChart::removeltem()
(
charnum[10];
Salesman*p=NULL,*temp=NULL;
cout«"Pleasedeletesalesnumbers:";cin»num;
if(p=findltem(num))
(
temp=p->Next;
p->Next=p->Next->Next;
deletetemp;
cout«"Deletedsuccessfully!!"«endl«endl;
)
else
cuul«"Nolfuurid!!"«endl«endl;
save();
)
voidSalesmanChart::save()
{
out.openCSalesmanCnart.txt");
for(Salesman*p=Head->Next;p!=End;p=p->Next)
out«p->geLnum()«p->get_name()«p->getace()«p->get_sales()«endl;
out.close();
)
intSalesmanChart::findnumber()
(
intn=0;
Salesman*p=Head->Next;
while(p!=NULL)
{n++;
p=p->Next;
}
cout«"Salesnumbers:"«n-1«endl;
returnn-1;
)
classManagerChart
(
public:
ManagerChartQ;
-ManagerChart();
voidfind();
voidsave();
voidmodifyltem();
voidremoveltem();
intfindnumber();
voiddisplay()
(
Manager*p=Head->Next;
for(p;p!=End;p=p->Next)
p->show_manager();
)
voidaddltem()
End->set_manager();
End->Next=newManager;
End=End->Next;
save();
)
private:
Manager*Head,*End;
ifstreamin;
ofstreamout;
Manager*findltem(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.openCManagerChart.txt");
while(!in.eof())
(
End->lnputFromFile(in);
if(End->get_num()[0]==,\0,)
break;
End->Next=newManager;
End=End->Next;
)
in.close();
)
ManagerChart::~ManagerChart()
(
for(Manager*temp;H9ad->Next!=End;)
(
temp=Head->Next;
Head->Next=Head->Next->Next;
deletetemp;
)
deleteHead,End;
)
voidManagerChart::find()
(
charnum[10];
Manager*p=NULL;
cout«"PleaseinputthesearchmanagerID:";cin»num;
if(p=findltem(num))
p->Next->show_manager();
else
cout«**Notfound!!"«endl«endl;
)
voidManagerChart::modifyltem()
(
charnum[10];
Manager*p=NULL;
cout«TleaseinputtherevisionmanagerID:,,;cin»num;
if(p=findltem(num))
f
p->Next->show_manager();
cout«"Pleaseinputthenewcontent:"«endl;
p->Next->set_manager();
)
else
cout«"Notfound!!"«endl«endl;
save();
)
voidManagerChart::removeltem()〃删除条目
(
charnum[10];
Manager*p=NULL,*temp=NULL;
cout«"PleaseinputthedeletionmanagerID:";cin»num;
if(p=findltem(num))
(
temp=p->Next;
p->Next=p->Next->Next;
deletetemp;
cout«"Deletedsuccessfully!!"«endl«endl;
)
else
cout«"Notfound!!"«endl«endl;
save();
)
voidManagerChart::save()〃保存
(
out.openCManagerChart.txt");
for(Manager*p=Head->Next;p!=End;p=p->Next)
out«p->get_num()«p->geLname()«p->get_age()«p->getjob()«p->geLdept()«endl;
out.close();
)
intManagerChart::findnumber()〃查看人数
(
intn=0;
Manager*p=Head->Next;
while(p!=NULL)
{n++;
p=p->Next;
}
cout«"Managernumber:"«n-1«endl;
returnn-1;
)
classSalesManagerChart
(
public:
SalesManagerChartf);
-SalesManagerChart(;;
voidfind();
voidsave();
voidmodifyltem();
voidremoveltem();
intfindnumber();
voiddisplayf)
(
SalesManager*p=Head->Next;
for(;p!=End;p=p->NAxt)
p->show_salesmanager();
)
voidaddltem()
{
End->set_salesmanager();
End->Next=newSalesManager;
End=End->Next;
save();
)
private:
SalesManager*Head*End;
ifstreamin;
ofstreamout;
SalesManager*findltem(char*num)
(
for(SalesManager*p=Head;p->Next!=End;p=p->Next)
if(!strcmp(p->Next->get_num(),num))
returnp;
returnNULL;
)
);
SalesManagerChart::SalesManagerChart()
(
Head=newSalesManager;
Head->Next=newSalesManager;
End=Head->Next;
in.openCSalesManagerChart.txt");
while(!in.eof())
(
End->lnputFromFile(in);
if(End->get_num()[0]=='\0')
break;
End->Next=newSalesManager;
End=End->Next:
)
in.close();
}
SalesManagerChart:^SalesManagerChart()
(
for(SalesManager*temp;Head->Next!=End;)
(
tftmp=HAad->NRxt;
Head->Next=Head->Next->Next;
deletetemp;
)
deleteHead,End;
)
voidSalesManagerChart::find()
charnum[10],
SalesManager*p=NULL;
cout«"PleaseinputthssearchsalesmanagerID:H;cin»num;
if(p=findltem(num))
p->Next->show_salesmanager();
else
cout«"Notfound!r'«endl«endl;
)
voidSalesManagerChart::modityltem()
(
charnum[10];
SalesManager*p=NULL;
cout«"PleaseinputtomodifythenumberofSalesManager:n;cin»num;
if(p=findltem(num))
(
p->Next->show_salesmanager();
cout«"Pleaseinputthenewcontent:"«endl;
p->Next->set_salesmanager();
)
else
cout«"Notfound!!"«endl«endl;
save();
)
voidSalesManagerChart::removeltem()
(
charnum[10];
SalesManager*p=NULL,*temp=NULL;
cout«"PleasedeletesalesmanagerID:";cin»num;
if(p=findltem(num))
(
temp=p->Next;
p->Next=p->Next->Next;
deletetemp;
cout«"Deletedsuccessfully!!"«endl«endl;
}
else
cout«MNotfound!!"«endl«endl;
save();
)
voidSalesManagerChart::save()
out.open("SalesManagerChart.txt,');
for(SalesManager*p=Head->Next;p!=End;p=p->Next)
out«p->get_num()«o->get_name()«p->get_age()«p->get_sales()«p->getjob()«p->g
et_dept()«endl;
out.close();
)
intSalesManagerChart:^indnumber()
(
intn=O;
SalesManager*p=Head->Next;
while(p!=NULL)
{n++;
p=p->Next;
)
cout«0SalesManagerforthenumber:"«n-1«endl;
returnn-1;
)
intmain()
(
intx,y,z;
StaffChartStaff_Char1;
SalesmanChartSalesmanChart;
ManagerChartManager_Chart;
SalesManagerChartSalesManager_Chart;
boolquit=false;
while(iquit)
(
cout«"Selectfunction:\n1.theincreaseofdata\t2.updatedata\t3.querydata\t4.delete
data\t5.forspecificcategoriesofpersonnel\t6.showthenumberofemployees\t7.exit"«endl;
cin»x;
switch(x)
(
easel:
cout^'Selectionforincreasedtypes:\n1.employee\t2.Sales\t3.Manager
\t4.SalesManager"«endl;
cin»y;
switch(y)
(
case1:Staff_Chart.addltem();break;
case2:Salesman_Chart.addltem();break;
case3:Mancger_Chart.addltem();break;
case4:SalesManager_Chart.addltem();break;
default:cout«"lnputerror,programtermination!!"«endl;exit(-1);
}
break;
case2:
cout«"SelectUpdatetype:\n1.employee\t2.Sales\t3.Manager\t4.Sales
Manager"«endl;
cin»y;
switch(y)
(
case1:Staff_Chart.modifyltem();break;
case2:Salesman_Chart.modifyltem();break;
case3:Manager_Chart.modifyltem();break;
case4:SalesManager_Chart.mcxiifyltem();break;
default:cout«"lnputerror,programtermination!!"«endl;exit(-1);
}
break;
case3:
cout«"Chooseaquerytype:\n1.employee\t2.Sales\t3.Manager\t4.Sales
Manager"«endl;
cin»y;
switch(y)
(
case1:Staff_Chart.find();break;
case2:Salesman_Chart.find();break;
case3:Manager_Chart.find();break;
case4:SalesManager_Chart.find();break;
default:cout«"lnputerror,programtermination!!"«endl;exit(-1);;
)
break;
case4:
cout«"SelectDeletetype:\n1.employee\t2.Sales\t3.Manager\t4.Sales
Manager"«endl;
cin»y;
switch(y)
(
case1:Staff_Chart.removeltem();break;
case2:Salesman_Chart.removeltem();break;
case3:Manager_Chart.removeltem();break;
case4:SalesManager_Chart.removeltem();break;
default:cout«"lnputerror,programtermination!!"«endl;exit(-1);
}
break;
case5:
cout«"Listofpersonnelselectiontype:\n1.employee\t2.Sales\t3.Manager
\t4.SalesManager"«endl;
cin»y;
switch(y)
(
case1:Staff_Chart.display();break;
case2:Salesman_Chart.display();break;
case3:Manager_Chart.display();break;
case4:SalesManager_Chart.display();break;
default:cout«"lnputerror,programtermination!!"«endl;exit(-1);
}
break;
case6:
cout«"Selectviewthenumberoftypesofstaff:\n1.employee\t2.Sales
\t3.Manager\t4.SalesManager\t5.AIIpersonnelofthetotalnumberof'vvendl;
cin»y;
switch(y)
(
case1:Staff_Chart.findnumber();break;
case2:SalesmanChart.findnumber();break;
case3:Manager_Chart.findnumber();break;
case4:SalesManager_Chart.findnumber();break;
case
5:z=Staff_Chart.findnumber()+Salesman_Chart.findnumber[)+Manager_Chart.findnumber()+Sale
sManager_Chart.findnumber();
cout«"AIIpersonnelatotal:"«z«endl;
break;
default:cout«"lnputerror,programtermination!!"«endl;exit(-1);
)
break;
case7:
quit=true;break;
default:
cout«"lnputerror,programtermination!!”«endl;exit(-1);
}
)
return0;
)
四.运行结果:(由于四个类的实现过程基本相同,所以在此只用Salesman做演示)
1.程序运行在工作空间中生成4个txt文件:
ManagcrChortbd2013/1/717Q51KB
SalesManagerCharttxt2013/1/717Q51KB
SalesmanCharttxt2013/1/717X)41KB
StaffChart.txt2013/1/717:04文本文档1KB
2.添力口两个manager:
3.修改其中一个manager
■'C:\UsersVzx\Desldop\未命名l.exe
Pleaseinputposition:彳里
PleaseentertheDepartnenttJ肖售部
KeLeetFunction,
.theincreaseofdata2.updatedata3.querydata4.dele
pecifxccatec^aeiesoFpersonne16.showthenunbei*of
7.exit
SelectUpdatetype:
1.employee2.Sales3.Manager4.SalesHanage
Pleaseinputthet*euislonraanagerID;1
nureber;1
eg—
position:^x,
departnent:自售部
Pleaseinputthenewcontent:
Plecseenteranumber:1
Pleaseinputthename:a
Pleaseinputtheage:51
Pleaseinputposition:经理2
PleaseentertheDepartnent:千自售部
SeLcctfunction:
1.theincreaseofdata2.updatedata3.querydata
pecificcategoriesofpersonnel6.showthenunberof
7.exit
4.查找一个manager:
■1C:\UsersVzx\Deslrtop\耒命名l.exe
nosition:官理
nep^rtnent:销售部
Pleaseinputthenewcontent:
Pleaseenteranumbefs1
Pleaseinputthename:a
PleaseinputtheagesSI
Pleaseinputpositions经理2
PleaseentertheDepartment:箱管郃
Selectfunction-
3
1..theIncreaseoFdata2-updatedata6■querydata4.de1
pec£f1ccategoriesofpersonne1•showthenunberof
7.exit
Chooseaquerytype:
1.enplo^ce2.Sales3.Manager4.SalesMinage
3
PleaseinputthesearchnanagerI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年毒性、麻醉、精神类药品培训考核试题(附答案)
- 2026年产科危重症患者护理常规考核试题及答案
- 水电安全教育试题及答案2026年
- 气管插管血氧管理案例2026版
- 2026年福建省福鼎市高一数学下册期末考试模拟卷及完整答案(名师系列)
- 濮阳市2026年度市直机关公开遴选公务员备考题库及参考答案详解
- 2026年浙江省余姚市高一数学下册期末考试模拟卷【培优】附答案
- 2026年湖南省吉首市高一数学下册期末考试模拟卷含答案【A卷】
- 2026年江苏省江阴市高一数学下册期末考试模拟检测卷及答案【历年真题】
- 2026年城乡交通便民服务提升汇报材料
- 英语教师教学工作总结范文
- 《预制高强混凝土风电塔筒生产技术规程》文本附编制说明
- 介入室规章制度及流程
- 华南师范大学《计算机程序设计(python)》2023-2024学年第一学期期末试卷
- 《自然语言处理》期末考试试卷附答案
- 高空作业车(剪叉式、曲臂式)验收表
- 安全生产培训教育管理制度
- (高清版)TDT 1037-2013 土地整治重大项目可行性研究报告编制规程
- JB T 6664.3-2004自吸泵 第3部分:自吸性能试验方法
- 日式收纳培训课件
- 采购基础知识培训课件
评论
0/150
提交评论