崩溃了怠惰,没弄完直接9点多睡觉得力
①删除
1、在workermanager.h中进行函数删除、函数是否存在声明
//删除职工
void Del_Emp();
//判断职工是否存在,如果存在返回所在位置,不存在返回-1
int IsExist(int id);
2、在workermanager.cpp中进行
先编辑判断职工是否存在的具体实现:
/判断职工是否存在,如果存在返回所在位置,不存在返回-1
int WorkerManager::IsExist(int id) {
int index = -1;
for (int i = 0; i < this->m_EmpNum; i++) {
if (this->m_EmpArray[i]->m_ID == id) {
//找到职工
index = i;//此处出错,其实写的时候就感觉不太对劲
break;
}
}
return index;
}
测试省略
接下来实现删除,本质是后面的进行覆盖
//删除职工
void WorkerManager :: Del_Emp() {
if (this->m_FileIsEmpty) {
cout << "文件不存在或记录为空" << endl;
}
else {
//按照职工编号删除
cout << "请输入想要删除职工编号" << endl;
int id = 0;
cin >> id;
int index = this->IsExist(id);
if (index != -1) {//说明职工存在,并且要删掉index位置上的职工
for (int i = index; i < this->m_EmpNum - 1; i++) {
//数据前移
this->m_EmpArray[i] = this->m_EmpArray[i + 1];
}
this->m_EmpNum--;//
//数据同步更新到文件中
this->save();
cout << "删除成功!" << endl;
}
else {
cout << "删除失败,未找到该职工" << endl;
}
}
//按任意键继续
system("pause");
system("cls");
}
3、在职工管理系统.cpp中进行代码测试
case 3:
wm.Del_Emp();
break;
我这里是序号出问题,删除编号1但是实际上删除了编号2
修改了判断是否存在的index=i之后,重新调试正确