C大作业报告.docx
- 文档编号:23485899
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:30
- 大小:125.28KB
C大作业报告.docx
《C大作业报告.docx》由会员分享,可在线阅读,更多相关《C大作业报告.docx(30页珍藏版)》请在冰豆网上搜索。
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< 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< 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< 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()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大作业报告 作业 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)