一、题目要求 设计一个虚基类员工类Staff,包含编号、姓名和年龄等保护数据成员以及相关的成员函数。 由Staff派生出销售员类Salesman,包含销售额等保护数据成员以及相关的成员函数
一、题目要求
- 设计一个虚基类员工类Staff,包含编号、姓名和年龄等保护数据成员以及相关的成员函数。
- 由Staff派生出销售员类Salesman,包含销售额等保护数据成员以及相关的成员函数。
- 由Staff派生出经理类Manager。
- 由Salesman和Manager派生出销售经理类SalesManager。
- 利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能。(删除数据在记录中做删除标志,重组文件指在物理上删除有删除标志的记录)另外还要分别统计这三类员工的人数以及所有员工的总数。
二、设计思路
- 分析题目要求,分别建立了四个类:虚基类Staff、公有继承类Salesman、公有继承类Manager和公有继承类SalesManager。
- 将所有员工的记录都放在同一个txt文件中,每个员工记录占用一行。
- 文件在程序一开始全部读入vector容器中,并在程序结束前统一写回文件。
- 所有字符串统一采用string类,从而简化程序设计。
- 在虚基类Staff中定义虚函数updateProperty(更新属性值函数)、虚函数output(输出函数)和虚函数outputWithNumber(输出函数),并在派生类中进行了覆盖以达到动态多态性。
- 使用虚基类和虚函数的特性,利用动态联编使基类指针所要调用的派生类函数。
- 为了在主程序少写if-else语句块和switch语句块,将要更新的属性类型和属性值均作为参数传入函数updateProperty(更新属性值函数)并对该函数进行了重载。
三、类的UML图
四、运行结果
4.1 文件初始内容
4.2 查询未修改前的数据
完整的源码和详细的文档,上传到了 【WRITE-BUG数字空间】,需要的请自取:
https://www.writebug.com/code/0c7b1e0e-c792-11ed-8124-6479f0e5e323/#