在管理类worerManager.h中提那家成员函数void Show_Menu();
class WorkerManager
{
public:
//构造函数
WorkerManager();
//展示菜单
void Show_Menu();
//析构函数
WorkerManager();
};
#include"employee.h"
Employee::Employee(int id, string name, int did)
{
this->m_Id = id;
this->m_Name = name;
this->m_DeptId = dId;
}
void Employee::showInfo()
{
cout << "职工编号:" << this->m_Id
<<"t职工姓名:" << this->m_Name
<<"t岗位:" << this->getDeptName()
<<"t岗位职责:完成经理交给的任务" << endl;
}
string Employee::getDeptName()
{
return string("员工")
}
设定文件路径
#include成员函数声明#define FILENAME"empfile.txt"
在workerManager.h中类里添加成员函数void save()
//保存文件 void save();文件未创建
在workerMAnager.h中添加新的成员属性m_FilelsEmpty标志文件是否为空
//标志文件是否为空 bool m_FileIsEmpty;
修改WorkerManager.cpp中构造函数代码
workerManager::WorkerManager()
{
ifstream ifs;
ifs.open(FILENAME,ios::in);
//文件不存在情况
if (!ifs.is_open())
{
cout << "文件不存在" << endl;//测试输出
this->m_EmpNum = 0; //初始化人数
this->m_FileIsEmpty = true; //初始化文件为空标志
this->m_EmpArray = NuLL; //初始化数组
ifs.close();//关闭文件
return;
}
}
文件存在且保存职工数据
获取记录的职工人数
在workerManager.h中添加成员函数int get_EmpNum();
//统计人数 int get_EmpNum();
workerManager,cpp中实现
int WorkerManager::get_EmpNum()
{
ifstream ifs;
ifs.open(FILENAME,ios::in);
int id;
string name;
int did;
int num = 0;
while(ifs >> id && ifs >> name && ifs >> did)
{
//记录人数
num++;
}
ifs.close();
return num;
}
初始化数据
在WorkerManager.h中添加成员函数void init_Emp();
//初始化员工 void init_Emp();显示职工
功能描述:显示当前所有职工信息
显示职工函数声明
在workerManager.h中添加成员函数void Show_Emp();
//显示职工 void Show_Emp();显示职工函数实现
在workerManager.cpp中实现成员函数void Show_Emp();
//显示职工
void WorkerManager::Show_emp()
{
if(this->m_Fo;eOsEmpty)
{
cout << "文件不存在或记录为空!" << endl;
}
else
{
for(int i = 0;i < m_EmpNum; i++)
{
//利用多态调用接口
this->m_EmpArray[i]->showInfo();
}
}
system("pause");
system("cls");
}
删除职工
功能描述:按照职工的编号进行删除职工操作
删除职工函数声明在workerManager.h中添加成员函数void Del_Emp();
//删除职工 void Del_Eap();职工是否存在函数声明
在workerManager.h中添加成员函数int IsExist(int id);
//按照职工编号判断职工是否存在,若存在返回职工在数组中位置,不存在返回-1 int IsExist(int id);职工是否存在函数实现
在workerManager.cpp中实现成员函数int IsExist(int id);
int WorkerManager::IsExist(int id)
{
int index = -1;
for (int i= 0; i < this->,_EmpNum; i++)
{
if (this->M_EmpArray[i]->m_Id == id)
{
index = i;
break;
}
}
return;
}
修改职工
功能描述:能够按照职工的编号对职工信息进行修改并保存
修改职工函数声明在workerManager.h中添加成员函数void Mod_Emp();
//修改职工 void Mod_Emp();
修改职工函数实现
在workerManager.cpp中实现成员函数void Mod_Emp();
//修改职工
void WorkerManager::Mod_Emp()
{
if (this->m_FileIsEmpty)
{
cout << "文件不存在或记录为空!" << endl;
}
else
{
cout << "请输入修改职工的编号:" << endl;
int id;
cin >> id;
int ret = this -.IsExist(id);
if (ret != -1)
{
//查找到编号的职工
delete this->m_EmpArray[ret];
int newId = 0;
string newName = "";
int dSelect = 0;
cout << "查到:" << id << "号职工,请输入新职工号: " << endl;
cin >> newId;
cout <<"请输入新姓名:" << endl;
cin >>newName;
cout << "请输入岗位:" << endl;
cout << "1.普通职工" << endl;
cout << "2.经理" << endl;
cout << "3.老板" << endl;
cin >> dSelect;
Worker * worker = NULL;
switch (dSelect)
{
case1:
worker = new Employee(newId,newName,dSelect);
break;
case2:
worker = new Manager(newId,newName,dSelect);
break;
case3:
worker = new Boss(newId, newName, dSelect);
break;
}
//更改数据 到数组中
this->m_EmpArray[ret] = worker;
cout <<"修改成功!" << this->m_EmpArray[ret]->m_DeptId << endl;
//保存到文件中
this->save();
}
else
{
cout << "修改失败,查无此人" << endl;
}
}
//按任意键清屏
system("pause");
system("cls");
}
查找职工
功能描述:提供两种查找职工方式,一种按照职工编号,一种按照职工姓名
查找职工函数声明在workerManager.h中添加成员函数void Find_Emp();
//查找职工 void Find_Emp();查找职工函数实现
在workerManager.cpp 中实现成员函数void Find_Emp();
//查找员工
void WorkerManager::Find_Emp()
{
if (this->m_FileIsEmpty)
{
cout << "文件不存在或记录为空!" << endl;
}
else
{
cout << "请输入查找的方式:" << endl;
cout << "1.按职工编号查找" << endl;
cout << "2.按照姓名查找" << endl;
int select = 0;
cin >> select;
if(select == 1)//按职工号查找
{
int id;
cout <<"请输入查找的职工号:" << endl;
cin >> id;
int ret = IsExist(id);
if(ret != -1)
{
cout << "查找成功!该职工信息如下:" << endl;
this->m_EmpArray[ret]->showInfo();
}
else
{
cout << "查找失败,查无此人" << endl;
}
}
else if(select ==2)//该姓名查找
{
string name;
cout << "请输入查找的姓名:" << endl;
cin >> name;
bool flag = false; //查找到的标志
for (int i = 0; i < m_EmpNUm; i++)
{
if (m_EmpArray[i]->m_Name == name)
{
cout << "查找成功,职工号编号为:"
<< m_EmpArray[i]->m_Id
<< "号的信息如下:" << endl;
flag = true;
this->m_EmpArray[i]->showInfo();
}
}
if(flag == false)
{
//查无此人
cout << "查找失败,查无此人" << endl;
}
}
else
{
cout << "输入选项有误" << endl;
}
}
system("pause");
system("cls");
}
排序
功能描述:按照职工编号进行排序,排序的顺序由用户指定
排序函数声明在workerManager.h中添加成员函数 void Sort_Emp();
//排序职工 void Sort_Emp();
排序函数实现
在workerManager.cpp中实现成员函数 void Sort_Emp();



