这下面是部分代码
#include "workManager.h"
#include "Worker.h"
#include "boss.h"
#include "employee.h"
#include "manager.h"
//用于对WorkManager类中的函数进行实现
WorkManager::WorkManager()
{
//初始化 员工数量,职工数组指针
this->m_EmpNum = 0;
this->m_EmpArry = NULL;
}
void WorkManager::Show_Menu()
{
cout << "-----------------------------------------" << endl;
cout << "| *欢迎使用职工管理系统* |" << endl;
cout << "| |" << endl;
cout << "| 0.退出系统 |" << endl;
cout << "| 1.增加职工信息 |" << endl;
cout << "| 2.显示职工信息 |" << endl;
cout << "| 3.删除离职员工 |" << endl;
cout << "| 4.修改职工信息 |" << endl;
cout << "| 5.查找职工信息 |" << endl;
cout << "| 6.按照编号排序 |" << endl;
cout << "| 7.清空所有数据 |" << endl;
cout << "-----------------------------------------" << endl;
cout << endl;
}
void WorkManager::exitSystem() //0.退出系统
{
cout << "欢迎下次使用"<<endl;
system("pause"); //按任意键
exit(0); //退出程序
}
void WorkManager::Add_Emp() //1.添加职工
{
int AddNum;
cout << "输入需要添加的员工数量:"; cin >> AddNum;
if (AddNum > 0)
{
int newSize=0;
newSize = this->m_EmpNum + AddNum;//计算新空间的大小=原来的+添加的
Worker ** newSpace = new Worker*[newSize];//开辟新空间 **********
if (this->m_EmpArry != NULL) //原来就有职工的话
{
for (int i = 0; i < this->m_EmpNum; i++)
{
newSpace[i] = this->m_EmpArry[i];
}
}
//批量添加新职工
for (int i = 0; i < AddNum; i++)
{
int id;
string name;
int dSelect;
cout << "请输入第" << i + 1 << "个员工的职工编号:";
cin >> id;
cout << "请输入第" << i + 1 << "个员工的职工姓名:";
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;
}
//将worker指针存到数组中
newSpace[this->m_EmpNum + i] = worker;
}
//释放原来的空间
delete[] this->m_EmpArry;
//更改新空间的指向
this->m_EmpArry = newSpace;
//更新新的职工人数
this->m_EmpNum = newSize;
this->save(); //将数据保存到文件中
cout << "成功添加" << AddNum << "名职工!" << endl;
}
else
{
cout << "输入有误!" << endl;
}
system("pause");
system("cls");
}
void WorkManager::save() //保存文件
{
ofstream ofs;
ofs.open(FILENAME, ios::out); //用输出的方式打开文件 写文件
//将每个人的信息写入文件
for (int i=0; i < this->m_EmpNum; i++)
{
ofs << this->m_EmpArry[i]->m_Id << " "
<< this->m_EmpArry[i]->m_Name << " "
<< this->m_EmpArry[i]->m_DeptId << endl;
}
ofs.close();
}
WorkManager::~WorkManager()
{
if (this->m_EmpArry != NULL)
{
delete[] this->m_EmpArry;
this->m_EmpArry = NULL;
}
}
为什么将数据写入文件后,文件中的m_Deptld是乱码呢?
编译器警告: 写入“newSpace”时缓冲区溢出 是啥意思呀? 要怎么解决呢?
信息不够