1、添加职工功能实现
①在workerManager.h中
头部引入:
#include"worker.h";
在class WorkerManager加入m_EmpNum和m_EmpArray:
#pragma once//防止头文件重复包含
#include <iostream>//包含输入输出流头文件
using namespace std;//使用标准命名空间
#include"worker.h";
class WorkerManager {
public:
//构造函数
WorkerManager();
//展示菜单
void Show_Menu();
//退出系统
void ExitSystem();
//记录职工人数
int m_EmpNum;
//职工数组指针
Worker** m_EmpArray;
//析构函数
~WorkerManager();
};
②在workerManager.cpp中的构造函数中初始化属性
WorkerManager::WorkerManager() {
//初始化属性
this->m_EmpNum = 0;
this->m_EmpArray = NULL;
}
③因为需要在wM.cpp中实现添加职工功能,所以需要先在wM.h中写一个抽象函数Add_Emp();
//添加职工
void Add_Emp();
然后再在wM.cpp中具体实现:
void WorkerManager::Add_Emp() {
cout << "请输入需要添加的职工数量" << endl;
int addNum = 0; //保存输入数量
cin >> addNum;
if (addNum > 0) {
//添加
//这里需要计算添加后新空间的
int newSize = this->m_EmpNum + addNum;
//开辟新空间
Worker** newSpace = new Worker*[newSize];//
if (this->m_EmpArray != NULL) {
//将原来的拷贝
for (int i = 0; i < this->m_EmpNum; i++) {
newSpace[i] = this->m_EmpArray[i];
//批量添加新职工
}
}
//输入新数据
for (int i = 0; i < addNum; i++) {
int id;//职工编号
string name;//职工姓名
int dSelect;//部门选择
cout << "请输入第" << i + 1 << "个新职工的编号" << endl;
cin >> id;
cout << "请输入第" << i + 1 << "个新职工的姓名" << endl;
cin >> name;
cout << "请输入第" << i + 1 << "个新职工的部门" << endl;
cout << "1、普通职工" << endl;
cout << "2、经理" << endl;
cout << "3、老板" << endl;
cin >> dSelect;
Worker* worker = NULL;
switch (dSelect)
{
case 1:
worker = new Employee(id, name, 1);
break;
case 2:
worker = new Manager(id, name, 2);
break;
case 3:
worker = new Boss(id, name, 3);
break;
default:
break;
}
//将新创建的职工职责,保存到数组中
newSpace[this->m_EmpNum + i] = worker;
}
//释放原有空间
delete[] this->m_EmpArray;
//更改新空间的指向
this->m_EmpArray = newSpace;
//更改新的职工人数
this->m_EmpNum = newSize;
//提示添加职工成功
cout << "成功添加" << addNum << "个新职工" << endl;
}
else {
cout << "输入数据有误" << endl;
}
//按任意键后清屏回到上级目录
system("pause");
system("cls");
}
达到效果:运行结束后可以重回到清爽的界面
测试代码如下:
case 1:
wm.Add_Emp();
break;
不可乱写表头;