我是看着黑马程序员的视频中制作员工管理系统写出的代码,在中间出现的一些问题。
其实这是我个人的疏忽,出现的问题和解决办法如下:
出现的问题:代码问题
void workManager::addEmp()
{
cout << "请输入添加的员工的数量" << endl;
int addNum;
cin >> addNum;
if (addNum>0)
{
//计算现在的人数
int newSize = addNum + this->m_num;
//动态数组存储,储存了多个指向worker类型变量的指针
worker* *newSpace= new worker * [newSize];//开辟对象数组的方法
//将原来的所有职工拷贝到新数组下
if (this->m_empArray != NULL)
{
for (int i = 0; i < this->m_num; i++)
{
newSpace[i] = m_empArray[i];
}
}
for (int i = 0; i < addNum; i++)
{
int id;
string name;
int dept;
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 >> dept;
worker* work = NULL;
switch (dept)
{
case 1:
employee(id, name, dept);//在这里,我忘记更改work指针的指向了,后面三个同理
break;
case 2:
manager(id, name, dept);
break;
case 3:
boss(id, name, dept);
break;
default:
cout << "部门职责选择无效" << endl;
break;
}
//将指针拷贝到指针数组中来
newSpace[this->m_num + i] = work;
}
//释放原有空间
delete this->m_empArray;
//创建新空间
this->m_empArray = newSpace;
//更新人数
this->m_num = newSize;
this->fileIsEmpty = false;
//this->save();
//提示
cout << "成功添加" << addNum << "个新职工" << endl;
system("pause");
system("cls");
}
else
{
}
}
解决办法如下:
case 1:
work=new employee(id, name, dept);//在堆区开辟内存空间存储数据即可
break;