项目介绍
项目介绍
该职工管理系统主要是用来管理整个公司的信息,基于C++继承和多态来实现,同时也包含文件流操作。
设计任务
设计任务
(1)设计个职工管理系统,管理整个公司的信息,公司的职工分为三类:老板,经理,员工,他们的公有属性都包含职工编号,职工姓名,以及职责。
(2)职责:
①老板职责:管理公司所有的事物.
②经理职责:完成老板交给任务,并下达任务给员工。
③员工职责:完成经理交给的任务。
设计要求
设计要求
(1)职工管理系统中需要实现以下几种功能:
①退出功能:退出当前程序。
②增加职工信息:实现批量增加(自己可以确定一次性增加几个职工的信息)职工信息,并将信息录入到文件中,职工信息分为:职工编号,职工职责,职工姓名。
③显示职工信息:显示公司内所有职工的信息。
④删除职工信息:按照职工编号删除信息。
⑤修改职工信息:按照职工编号修改职工信息
⑥排序功能:按照职工编号对职工进行排序。
⑦清空信息功能:清空文件中记录所有职工的信息。
此次项目采用分文件,文件流,C++继承和多态完成。(采用公有继承),并且第二次运行程序时,第一的运行程序的数据仍能保留(信息数据能够保留。
程序设计
代码讲解
2.1程序的总体结构
(1)头文件:
①common.h:包含该项目用到的所有头文件。
(2)类:
②worker(基类,只需要写出声明(worker.h头文件),让其他类继承其中的属性和行为就行,不需要写出实现):包含公司职工的公有属性和行为(成员函数为纯虚函数)。boss(老板类),manager(经理类),employer(员工类),采用公有继承的方式继承worker类。 然后,就可以用一个worker**类型的,管理三个继承worker的类的数据(用new创建,worker*类型)。
③workerManger类:用来实现该程序的所有功能。
④源.cpp,进行该项目的测试。
(3)分文件截图
(4)头文件截图
①common.h
②worker.h(包含职工编号,姓名,部门编号,以及获取岗位和显示信息的函数)
③boss.h 继承worker类
④manager.h 继承worker
⑤employer.h 继承worker
⑥workerManger.h 包含实现该系统功能的所有函数,以及员工总人数(EmpNum),判断文件是否为空(FileEmpty)等数据成员。
(1)boss.cpp,manager.cpp,employer.cpp的实现
①这三个类的实现思路都是一样的,他们的构造函数对继承worker.h的属性,进行初始化。
②ShowInfo()函数,就对他们的数据成员进行打印,getDeptName()函数,就返回对应的职工(老板,经理,员工)。
boss类
employer类
manager类
(2)managerWorker.cpp的实现
①Show_Menu()函数的实现
直接用cout打印即可。
②ExitSystem()函数的实现
直接调用exit()函数,就可以实现程序的退出。
③addInfo()函数的实现(添加信息)
添加信息,先进行添加信息数量的输入, 然后进行信息添加,分两步,第一步,先对原来的信息进行拷贝。第二步就添加信息(用cin添加),职工编号,
姓名,部门编号,这几个继承的属性,通过new创建出各自的对象,调用其构造函数即可。
这里的work**类型的便是用于存储,用new创建的work*类型的老板,经理,员工类的数据。
注意:还需要判断添加的信息是否重复,因为后面会多次用到,我单独写了个函数JudgeInformation(int ID),就将之前存储的数据挨个遍历,看是否能找到相同的ID,能找到自己就算是添加信息重复,
当然还有文件信息的保存与更新(saveFile()函数),将存储的信息,输入到文件中去(用文件流操作)
下面是具体代码的实现(以截图形式展示,部分代码分析见上):
函数JudgeInformation(int ID)的实现
当然这里如果添加重新重复了,就还可以重新输入职工编号。
**saveFile()函数的实现**
第一步:就先打开文件,第二步:然后将信息输入到文件中,第三步:关闭文件
文件名这里采用的宏定义(FILENAME)便于后面修改,宏定义和头文件都放在common.h这个头文件中。