I need you help
B站黑马程序员的职工管理系统
teacher让自己写关于添加职工编号重复的解决方案
下面是我的思路
1.用while死循环调用IsExist函数
2.把for外面的放进里面,每添加一次就更新一次
请指出我的问题
请问在我的代码基础上能完善吗,多谢回答
有一个警告
这是运行过程
打开文件如下
//添加职工
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 < 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;
while (1)
{
cin >> id;
if (IsExist(id) == -1)
{
break;
}
else
{
cout << "编号重复输入,请重试" << endl;
}
}
cout << "请输入第 " << i + 1 << " 个新职工姓名: " << endl;
cin >> name;
cout << "请选择该职工岗位:" << 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++;
//更新职工不为空标志
this->m_FileIsEmpty = false;
//保存数据到文件中
this->save();
}
//提示添加成功
cout << "成功添加 " << addNum << " 名新职工" << endl;
}
else
{
cout << "输入数据有误" << endl;
}
//按任意键后 清屏回到上级目录
system("pause");
system("cls");
}