需求
总体思路:
除主函数外,再创建两个cpp文件:
1.职工类:
1.图示
抽象类(父类):worker
子类:employee,manager,boss
2.思路
运用到了多态的知识:父类指针指向子类对象,如:
worker* wk=new employee(int id,string name,int did);
因为后续要用数组维护职工信息,而数组只能存放相同数据类型的变量。如果想用一个数组存放三种职工的信息,显然不可行。不过用一个数组就可以存放所有的父类指针,再用父类指针指向三种子类对象,就间接实现了用一个数组存放职工信息。
3.代码部分
抽象类(父类):
class Worker
{
public:
virtual void showInfo()=0;
virtual string GetDID()=0;
int m_id;
string m_name;
int m_did;
};
子类.h(定义部分,以员工为例)
class Employee :public Worker
{
public:
Employee(int id,string name,int did);
void showInfo();
string GetDID();
};
子类.cpp(函数实现)
Employee::Employee(int id, string name, int did)
{
m_id = id;
m_name = name;
m_did = did;
}
void Employee::showInfo()
{
cout << "职工编号:" << this->m_id << " "
<< "职工姓名:" << this->m_name << " "
<< "职工岗位:" << this->GetDID() << endl;
}
string Employee::GetDID()
{
return "员工";
}
2.管理类:
1.图示
2.菜单界面
菜单部分单独写一个展示菜单的函数:void show_menu(); //使用cout输出即可
主函数部分:让用户输入选择,再使用switch语句,执行对应操作(具体操作先空着,函数先不做实现)
int select=0;
while (1)
{
wm.show_menu();
cout << "请输入您的选择:" << endl;
cin >> select;
switch (select)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 0:
break;
default:
system("cls");
break;
}
3.创建管理类
class workManager
{
public:
//构造函数
workManager();
//析构函数
~workManager();
//显示菜单
void show_menu();
//0.退出系统
void exit_sys();
//1.添加职工
void add_emp();
//2.显示职工
void show_emp();
//3.删除离职员工
void del_emp();
//4.修改职工信息
void modify_emp();
//5.查找职工
void find_emp();
//6.按照职工编号重新排序
void sort_emp();
//7.清空职工
void clear_emp();
int EmpNum; //职工人数
Worker** EmpArr; //职工数组指针
};
4. 0-退出系统
void workManager::exit_sys()
{
cout << "欢迎下次使用!" << endl;
system("pause");
exit(0);
}
5. 1-添加职工
总体思路:
①让用户输入要添加的人数,计算新的总人数
②根据新人数,开辟新空间
③将原有数据,放到新空间
④添加新的职工信息
⑤修改原指针指向
void workManager::add_emp()
{
cout << "请输入您要添加的职工人数:" << endl;
int addNum;
cin >> addNum;
if (addNum > 0)
{
//开辟新空间
int allNum = this->EmpNum + addNum;
Worker** newArr = new Worker * [allNum];
//把旧空间数据搁进来
if (this->EmpArr!=NULL)
{
for (int i=0;i<this->EmpNum;i++)
{
newArr[i] = this->EmpArr[i];
}
}
//添加新成员
for (int i=0;i<addNum;i++)
{
int id;
string name;
int did;
cout << "请输入第" << i + 1 << "个职工的编号:" << endl;
cin >> id;
cout << "请输入第" <&l