C大作业报告.docx

上传人:b****7 文档编号:23485899 上传时间:2023-05-17 格式:DOCX 页数:30 大小:125.28KB
下载 相关 举报
C大作业报告.docx_第1页
第1页 / 共30页
C大作业报告.docx_第2页
第2页 / 共30页
C大作业报告.docx_第3页
第3页 / 共30页
C大作业报告.docx_第4页
第4页 / 共30页
C大作业报告.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

C大作业报告.docx

《C大作业报告.docx》由会员分享,可在线阅读,更多相关《C大作业报告.docx(30页珍藏版)》请在冰豆网上搜索。

C大作业报告.docx

C大作业报告

 

 

 

C++

大作业报告

 

姓名:

常皓

学号:

03101261

班级:

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函数。

最后在主函数定义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<<"请输入编号:

";cin>>num;

cout<<"请输入姓名:

";cin>>name;

cout<<"请输入年龄:

";cin>>age;

}

voidInputFromFile(istream&in)

{

in>>num>>name>>age;

}

voidshow()

{

cout<<"编号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

}

char*get_num()

{

returnnum;

}

char*get_name()

{

returnname;

}

intget_age()

{

returnage;

}

};

classSalesman:

virtualpublicStaff

{

protected:

charmajor[10];

chart_title[10];

public:

Salesman*Next;

voidset_salesman()

{

cout<<"请输入编号:

";cin>>num;

cout<<"请输入姓名:

";cin>>name;

cout<<"请输入年龄:

";cin>>age;

cout<<"请输入专业:

";cin>>major;

cout<<"请输入职称:

";cin>>t_title;

}

voidInputFromFile(istream&in)

{

in>>num>>name>>age>>major>>t_title;

}

voidshow_salesman()

{

cout<<"编号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"专业:

"<

cout<<"职称:

"<

}

char*get_major()

{

returnmajor;

}

char*get_t_title()

{

returnt_title;

}

};

classManager:

virtualpublicStaff

{

protected:

charjob[10];

chardept[10];

public:

Manager*Next;

voidset_manager()

{

cout<<"请输入编号:

";cin>>num;

cout<<"请输入姓名:

";cin>>name;

cout<<"请输入年龄:

";cin>>age;

cout<<"请输入职务:

";cin>>job;

cout<<"请输入部门:

";cin>>dept;

}

voidInputFromFile(istream&in)

{

in>>num>>name>>age>>job>>dept;

}

voidshow_manager()

{

cout<<"编号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"职务:

"<

cout<<"部门:

"<

}

char*get_job()

{

returnjob;

}

char*get_dept()

{

returndept;

}

};

classSalesManager:

publicSalesman,publicManager

{

public:

SalesManager*Next;

voidset_salesmanager()

{

cout<<"请输入编号:

";cin>>num;

cout<<"请输入姓名:

";cin>>name;

cout<<"请输入年龄:

";cin>>age;

cout<<"请输入专业:

";cin>>major;

cout<<"请输入职称:

";cin>>t_title;

cout<<"请输入职务:

";cin>>job;

cout<<"请输入部门:

";cin>>dept;

}

voidInputFromFile(istream&in)

{

in>>num>>name>>age>>major>>t_title>>job>>dept;

}

voidshow_salesmanager()

{

cout<<"编号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"专业:

"<

cout<<"职称:

"<

cout<<"职务:

"<

cout<<"部门:

"<

}

};

classStaffChart

{

public:

StaffChart();

~StaffChart();

voidfind();//输出单个条目

voidsave();//将信息输出到文件

voidmodifyItem();//修改Staff条目

voidremoveItem();//删除Staff条目

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<<"请输入要查找员工的工号:

";cin>>num;

if(p=findItem(num))

p->Next->show();

else

{

cout<<"没有找到!

!

"<

}

}

voidStaffChart:

:

modifyItem()//修改条目

{

charnum[10];

Staff*p=NULL;

cout<<"请输入要修改员工的工号:

";cin>>num;

if(p=findItem(num))

{

p->Next->show();

cout<<"请输入新的内容:

"<

p->Next->set_staff();

}

else

cout<<"没有找到!

!

"<

save();

}

voidStaffChart:

:

removeItem()//删除条目

{

charnum[10];

Staff*p=NULL,*temp=NULL;

cout<<"请输入要删除员工的工号:

";cin>>num;

if(p=findItem(num))

{

temp=p->Next;

p->Next=p->Next->Next;

deletetemp;

cout<<"删除成功!

!

"<

}

else

cout<<"没有找到!

!

"<

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();

}

classSalesmanChart

{

public:

SalesmanChart();

~SalesmanChart();

voidfind();//输出单个条目

voidsave();//将信息输出到文件

voidmodifyItem();//修改Salesman条目

voidremoveItem();//删除Salesman条目

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("SalesmanChaart.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<<"请输入要查找销售员的工号:

";cin>>num;

if(p=findItem(num))

p->Next->show_salesman();

else

cout<<"没有找到!

!

"<

}

voidSalesmanChart:

:

modifyItem()//修改条目

{

charnum[10];

Salesman*p=NULL;

cout<<"请输入要修改销售员的工号:

";cin>>num;

if(p=findItem(num))

{

p->Next->show_salesman();

cout<<"请输入新的内容:

"<

p->Next->set_salesman();

}

else

cout<<"没有找到!

!

"<

save();

}

voidSalesmanChart:

:

removeItem()//删除条目

{

charnum[10];

Salesman*p=NULL,*temp=NULL;

cout<<"请输入要删除销售员的工号:

";cin>>num;

if(p=findItem(num))

{

temp=p->Next;

p->Next=p->Next->Next;

deletetemp;

cout<<"删除成功!

!

"<

}

else

cout<<"没有找到!

!

"<

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_major()<get_t_title()<

out.close();

}

classManagerChart

{

public:

ManagerChart();

~ManagerChart();

voidfind();//输出单个条目

voidsave();//将信息输出到文件

voidmodifyItem();//修改Manager条目

voidremoveItem();//删除Manager条目

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("ManagerChaart.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;

}

voidManagerChart:

:

find()//查找条目

{

charnum[10];

Manager*p=NULL;

cout<<"请输入要查找经理的工号:

";cin>>num;

if(p=findItem(num))

p->Next->show_manager();

else

cout<<"没有找到!

!

"<

}

voidManagerChart:

:

modifyItem()//修改条目

{

charnum[10];

Manager*p=NULL;

cout<<"请输入要修改经理的工号:

";cin>>num;

if(p=findItem(num))

{

p->Next->show_manager();

cout<<"请输入新的内容:

"<

p->Next->set_manager();

}

else

cout<<"没有找到!

!

"<

save();

}

voidManagerChart:

:

removeItem()//删除条目

{

charnum[10];

Manager*p=NULL,*temp=NULL;

cout<<"请输入要删除经理的工号:

";cin>>num;

if(p=findItem(num))

{

temp=p->Next;

p->Next=p->Next->Next;

deletetemp;

cout<<"删除成功!

!

"<

}

else

cout<<"没有找到!

!

"<

save();

}

voidManagerChart:

:

save()//保存

{

out.open("ManagerChart.txt");

for(Manager*p=Head->Next;p!

=End;p=p->Next)

out<get_num()<get_name()<get_age()<get_job()<get_dept()<

out.close();

}

classSalesManagerChart

{

public:

SalesManagerChart();

~SalesManagerChart();

voidfind();//输出单个条目

voidsave();//将信息输出到文件

voidmodifyItem();//修改Manager条目

voidremoveItem();//删除Manager条目

voiddisplay()//输出全部条目

{

SalesManager*p=Head->Next;

for(;p!

=End;p=p->Next)

p->show_salesmanager();

}

voidaddItem()//添加条目

{

End->set_salesmanager();

End->Next=newSalesManager;

End=End->Next;

save()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1