
班级:031111
学号:********
姓名:***
销售公司员工管理
一.题目要求
设计一个虚基类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 #include using namespace std; { protected: public: 请输入编号:";cin>>num; 请输入姓名:";cin>>name; 请输入年龄:";cin>>age; 编号:"< }; class Salesman:virtual public Staff { protected: public: 请输入编号:";cin>>num; 请输入姓名:";cin>>name; 请输入年龄:";cin>>age; 请输入专业:";cin>>major; 请输入职称:";cin>>t_title; 编号:"< }; class Manager:virtual public Staff { protected: public: 请输入编号:";cin>>num; 请输入姓名:";cin>>name; 请输入年龄:";cin>>age; 请输入职务:";cin>>job; 请输入部门:";cin>>dept; 编号:"< }; class SalesManager :public Salesman,public Manager { public: 请输入编号:";cin>>num; 请输入姓名:";cin>>name; 请输入年龄:";cin>>age; 请输入专业:";cin>>major; 请输入职称:";cin>>t_title; 请输入职务:";cin>>job; 请输入部门:";cin>>dept; 编号:"< class StaffChart { public: 输出单个条目 将信息输出到文件 修改Staff条目 删除Staff条目 输出全部条目 添加条目 private: 文件输入 文件输出 }; S构造函数 { } S析构函数 { } v查找条目 { 请输入要查找员工的工号:";cin>>num; 没有找到!!"< v修改条目 { 请输入要修改员工的工号:";cin>>num; 请输入新的内容:"< 没有找到!!"< v删除条目 { 请输入要删除员工的工号:";cin>>num; 删除成功!!"< v保存 { } class SalesmanChart { public: 输出单个条目 将信息输出到文件 修改Engineer条目 删除Engineer条目 输出全部条目 添加条目 private: 文件输入 文件输出 }; S构造函数 { } S析构函数 { } v查找条目 { 请输入要查找销售员的工号:";cin>>num; 没有找到!!"< v修改条目 { 请输入要修改销售员的工号:";cin>>num; 请输入新的内容:"< 没有找到!!"< v删除条目 { 请输入要删除销售员的工号:";cin>>num; 删除成功!!"< v保存 { } class ManagerChart { public: 输出单个条目 将信息输出到文件 修改Leader条目 删除Leader条目 输出全部条目 添加条目 private: 文件输入 文件输出 }; M构造函数 { } M析构函数 { } v查找条目 { 请输入要查找经理的工号:";cin>>num; 没有找到!!"< v修改条目 { 请输入要修改经理的工号:";cin>>num; 请输入新的内容:"< 没有找到!!"< v删除条目 { 请输入要删除经理的工号:";cin>>num; 删除成功!!"< v保存 { } class SalesManagerChart { public: 输出单个条目 将信息输出到文件 修改Leader条目 删除Leader条目 输出全部条目 添加条目 private: 文件输入 文件输出 }; S构造函数 { } S析构函数 { } v查找条目 { 请输入要查找销售经理的工号:";cin>>num; 没有找到!!"< v修改条目 { 请输入要修改销售经理的工号:";cin>>num; 请输入新的内容:"< 没有找到!!"< v删除条目 { 请输入要删除销售经理的工号:";cin>>num; 删除成功!!"< v保存 { } int main() { 选择功能:\\n1.增加数据\2.更新数据\3.查询数据\4.删除数据\5.列出全部人员\6.退出"< 选择增加的类型:\\n1.员工\2.销售员\3.经理\4.销售经理"< 输入错误,程序终止!!"< 选择更新的类型:\\n1.员工\2.销售员\3.经理\4.销售经理"< 输入错误,程序终止!!"< 选择查询的类型:\\n1.员工\2.销售员\3.经理\4.销售经理"< 输入错误,程序终止!!"< 选择删除的类型:\\n1.员工\2.销售员\3.经理\4.销售经理"< 输入错误,程序终止!!"< 选择列出人员的类型:\\n1.员工\2.销售员\3.经理\4.销售经理"< 输入错误,程序终止!!"< 输入错误,程序终止!!"< } 四.运行结果 由于四个类的实现过程基本相同,所以在此只用Salesman做演示 1.程序运行在工作空间中生成4个txt文件: 2.增加两个Manager 3.更新其中一个Manager 4.查找一个Manager 5.列出全部Manager 6.删除一个Manager 7.再次全部列出Manager以查看删除效果 五.实验总结 这次C++大作业很有综合性,知识面很广,用到的知识也很多。不仅包含了虚基类,类的继承,流输入输出,还有文件的操作,比较复杂此次为实现统计人数功能。虽然C++马上就要结束了,但是作为一名计算机专业的学生,我会继续努力的学习C++,以便取得自己的更好的成绩。最后,祝老师工作顺利,新年快乐!
