14.12 修改职工信息
1、按照编号修改职工信息
先声明
//修改职工
void mod_Emp();
再实现
就是把查到的职工删除,再在那个位置输入一个新职工。
所以跟添加职工的代码很多地方一样。
//修改职工
void WorkerManager::mod_Emp()
{
if (this->m_FileIsEmpty)
{
cout << "文件不存在或记录为空!" << endl;
}
else
{
cout << "请输入修改的职工编号:";
int id = 0;
cin >> id;
int index = this->isExit(id);
if (index != -1)
{
//找到了
cout << "找到了一个职工:" << endl;
this->m_EmpArray[index]->showInfo();
delete this->m_EmpArray[index];
int newId = 0;
string newName = "";
int newDId = 0;
while (true)
{
cout << "请输入新编号:";
cin >> id;
int index = this->isExit(id);
if (index != -1)
{
cout << "该编号已被占用,请重新输入编号" << endl;
}
else
{
break;
}
}
cout << "请输入新姓名:";
cin >> newName;
Worker* worker = NULL;
while (true)
{
cout << "请输入新岗位:" << endl;;
cout << "1、普通职工" << endl;
cout << "2、经理" << endl;
cout << "3、老板" << endl;
cin >> newDId;
switch (newDId)
{
case 1:
worker = new Employee(id, newName, newDId);
break;
case 2:
worker = new Manager(id, newName, newDId);
break;
case 3:
worker = new Boss(id, newName, newDId);
break;
default:
cout << "输入的数据有误,请重新选择" << endl;
break;
}
if (worker != NULL)
{
break;
}
}
this->m_EmpArray[index] = worker;
cout << "修改成功!" << endl;
this->Save();
}
else
{
cout << "修改失败,查无此人!";
}
}
}
2、在main里添加选择
case 4: //修改职工
wm.mod_Emp();
break;
3、测试:
先显示一下信息
把2号改一下
再显示一下: