1. 显示职工
功能描述:显示当前所有职工信息
步骤:
显示职工函数声明:在workerManager.h中添加成员函数void Show_Emp();
显示职工函数声明:在workerManager.cpp中实现成员函数 void Show_Emp();
写Show_Emp()函数时,首先通过文件标志判断文件是否存在或者文件是否为空文件;
通过循环,利用多态调用接口,调用函数展示职工信息。
代码:
//workerManager.h中
void Show_Emp();//显示职工功能
//workerManager.cpp中
//显示职工功能
void WorkerManager::Show_Emp()
{
if (this->m_FileisEmpty)
{
cout << "文件不存在或记录为空" << endl;
}
else
{
for (int i = 0; i < m_EmpNum; i++)
{
this->m_EmpArray[i]->showInfo();//利用多态调用接口进行信息展示
}
}
system("pause");
system("cls");
}
2. 删除职工
功能描述:按照职工的编号进行删除职工操作
2.1 步骤:
删除职工函数声明:在workerManager.h中添加成员函数,删除职工函数void Del_Emp();
的声明
职工是否存在函数声明:很多功能都需要用到根据职工是否存在来进行操作如:删除职工、修改职工、查找职工。因此添加该公告函数,以便后续调用。在workerManager.h中添加成员函数,判断职工是否存在的声明,int IsExist(int id);
职工是否存在函数实现:在workerManager.cpp中实现成员函数 int IsExist(int id);
删除职工函数实现:在workerManager.cpp中实现成员函数 void Del_Emp();
2.2 代码展示
//workerManager.h中
void Del_Emp();//删除职工功能
int isExist(int id);//判断职工是否存在,存在返回职工所在数组中位置,否则返回-1
//workerManager.cpp中
//删除职工功能
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)//找到职工,并删除
{
for (int i = index; i < this->m_EmpNum - 1; i++)//this->m_EmpNum - 1数组的最后一个
{
this->m_EmpArray[i] = this->m_EmpArray[i + 1];//数据前移
}
this->m_EmpNum--;//更新数组中记录的人员个数
this->save();//数据更新到文件中
cout << "删除成功" << endl;
}
else
{
cout << "该职工不存在" << endl;
}
}
system("pause");
system("cls");
}
//判断职工是否存在,存在返回职工所在数组中位置,否则返回-1
int WorkerManager::isExist(int id)
{
int index = -1;
for (int i = 0; i < this->m_EmpNum; i++)
{
if (this->m_EmpArray[i]->mId == id)
{
index = i;//找到员工
break;
}
}
return index;
}
3. 修改职工
功能描述:能够按照职工的编号对职工信息进行修改并保存
3.1 步骤:
修改职工函数声明:在workerManager.h中添加成员函数 void Mod_Emp();
修改职工函数实现:在workerManager.cpp中实现成员函数 void Mod_Emp();
,具体步骤如下:
- 首先,需要判断文件是否存在,并且判断职工是否存在
- 其次,职工存在,则删除职工原来的信息
- 然后,提示用户输入职工的新信息,根据输入的岗位创建不同的职工类,并用父类指针接收
- 最后,保存到数组中,并保存文件。
3.2 代码展示
//workerManager.h中,修改职工功能
void Mod_Emp();//修改职工功能
//workerManager.cpp中,修改职工功能
void WorkerManager::Mod_Emp()
{
//判断文件是否存在
if (this->m_FileisEmpty)
{
cout << "文件不存在或记录为空" << endl;
}
else
{
//根据职工编号删除
cout << "请输入想要修改的职工编号:" << endl;
int id = 0;
cin >> id;
//判断职工是否存在,并找到职工
int index = this->isExist(id);
if (index != -1)//找到职工,并修改
{
//删除该员工原有信息
delete this->m_EmpArray[index];
//提示用户输入在职工新信息,根据职工编号来添加
int newid = 0;
string newname;
int newdeptid = 0;
cout << "找到:" << id << "h号职工,请输入职工新编号:" << endl;
cin >> newid;
cout << "请输入职工新姓名" << endl;
cin >> newname;
cout << "请输入职工新岗位:" << endl;
cout << "1——普通员工" << endl;
cout << "2——经理" << endl;
cout << "3——总裁" << endl;
cin >> newdeptid;
//根据新职工的岗位来创建不同的职工类别 普通员工、经理、总裁
Worker* worker = NULL;//创建父类指针来指向子类对象
switch (newdeptid)
{
case 1:
worker = new Employee(newid, newname, 1);
break;
case 2:
worker = new Manager(newid, newname, 2);
break;
case 3:
worker = new Boss(newid, newname, 3);
break;
default:
break;
}
//将职工指针保存到数组中
this->m_EmpArray[index] = worker;
//提示信息
cout << "成功修改职工信息!" << endl;
//保存文件
this->save();
}
else
{
cout << "该职工不存在" << endl;
}
}
system("pause");
system("cls");
}