C++职工管理系统 C++利用多态实现职工管理系统(项目开发)
双鱼座boyy 人气:0分析
首先看一下这个项目的文件:
主要分为两部分:
主体部分:
main.cpp和workManager.h,workManager.cpp职工部分(这里采用多态的方式编写):
主要是worker.h和worker.cpp
三种职位:boss,employee,manager
经过分析是否大概知道了其中各部分的意思呢?
看起来这里面有很多,但是正是这种多个文件编写才时代码更加简洁。
所以在正式写项目之前一定要先考虑好整体架构,在进行编写。
项目整体架构:
这个项目的难度并不大,主要是要学会这个项目整体架构是怎样安排的。
左边是主体部分。
主要是整个项目的功能,将主界面的所有功能通过代码和右边的不同人之间进行实现。
包含了上面几个功能函数,还有一些没有写出来
右边则是三种职工的信息。
每个人都有自己的姓名,编号,职位,然后包含两个函数,显示个人信息和获取岗位信息。
主要是通过数组进行存储的
其它的也没什么需要过多介绍的,主要是要理解上面的整体架构图,详细的代码编写并不算复杂
部分运行截图
代码
main.cpp
#include "workManager.h" //构造函数 WorkerManage::WorkerManage() { ifstream ifs; ifs.open(FILENAME, ios::in); //读文件 //1,文件不存在 if (!ifs.is_open()) { cout << "文件不存在" << endl; //初始化属性 //初始化记录人数 this->m_EmpNum = 0; //初始化数组指针 this->m_EmpArray = NULL; //初始化文件是否为空 this->m_FileIsEmpty = true; ifs.close(); return; } //2,文件存在,数据为空 char ch; ifs >> ch; if (ifs.eof()) { //文件为空 cout << "文件为空!" << endl; //初始化属性 //初始化记录人数 this->m_EmpNum = 0; //初始化数组指针 this->m_EmpArray = NULL; //初始化文件是否为空 this->m_FileIsEmpty = true; ifs.close(); return; } //3,文件存在,并且记录数据 int num = this->get_EmpNum(); //cout << "职工人数为:" << num << endl; this->m_EmpNum = num; //开辟空间 this->m_EmpArray = new Worker *[this->m_EmpNum]; //将文件中数据,存到数组中 this->init_Emp(); } //展示菜单 void WorkerManage::Show_Menu() { cout << "*********************************" << endl; cout << "*** 欢迎使用教职工管理系统! ***" << endl; cout << "******* 0,退出管理系统 *******" << endl; cout << "******* 1,添加职工信息 *******" << endl; cout << "******* 2,显示职工信息 *******" << endl; cout << "******* 3,删除离职职工 *******" << endl; cout << "******* 4,修改职工信息 *******" << endl; cout << "******* 5,查找职工信息 *******" << endl; cout << "******* 6,按照编号排序 *******" << endl; cout << "******* 7,清空所有文档 *******" << endl; cout << "*********************************" << endl; } //退出系统 void WorkerManage::ExitSystem() { cout << "欢迎下次使用" << endl; system("pause"); exit(0); //退出程序 } //析构函数 WorkerManage::~WorkerManage() { } //添加职工 void WorkerManage::Add_Emp() { cout << "请输入添加职工数量:" << endl; int addNum = 0; cin >> addNum; if (addNum > 0) { //添加 //计算添加新空间大小 int newSize = this->m_EmpNum + addNum; //新空间人数 = 原来记录人数+新增人数 //开辟新空间 Worker ** newSpace = new Worker*[newSize]; //将原来空间下数据,拷贝到新空间下 if (this->m_EmpArray != NULL) { for (int i = 0; i < this->m_EmpNum; i++) { newSpace[i] = this->m_EmpArray[i]; } } //添加新数据 for (int i = 0; i < addNum; i++) { int id; //职工编号 string name; //职工编号 int dSelect; //部门选择 cout << "请输入第" << i + 1 << "个新职工编号:" << endl; cin >> id; cout << "请输入第" << i + 1 << "个新职工姓名:" << endl; cin >> name; cout << "请选择该职工岗位:" << endl; cout << "1,普通职工" << endl; cout << "2,经理" << endl; cout << "3,老板" << endl; cin >> dSelect; Worker *worker = NULL; switch (dSelect) { case 1: worker = new Employee(id, name, 1); break; case 2: worker = new Manager(id, name, 2); break; case 3: worker = new Boss(id, name, 3); break; default: break; } //将创建职工职责,保存到数组中 newSpace[this->m_EmpNum++] = worker; } //释放原有的空间 delete[] this->m_EmpArray; //更改新空间指向 this->m_EmpArray = newSpace; //更新新的职工人数 this->m_EmpNum = newSize; //更新职工不为空标志 this->m_FileIsEmpty = false; //添加成功 cout << "成功添加" << addNum << "名新职工" << endl; //保存数据到文件中 this->save(); } else { cout << "输入数据有误" << endl; } system("pause"); system("cls"); } //保存文件 void WorkerManage::save() { ofstream ofs; ofs.open(FILENAME, ios::out); //用输入的方式打开文件 -- 写文件 //将每个人数据写入到文件中 for (int i = 0; i < this->m_EmpNum; i++) { ofs << this->m_EmpArray[i]->m_Id << " " << this->m_EmpArray[i]->m_Name << " " << this->m_EmpArray[i]->m_DeptId << endl; } //关闭文件 ofs.close(); } //统计文件人数 int WorkerManage::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++; } return num; } //初始化职工 void WorkerManage::init_Emp() { ifstream ifs; ifs.open(FILENAME, ios::in); //打开文件 读 int id; string name; int dId; int index = 0; //读数据 while (ifs >> id&& ifs >> name && ifs >> dId) { Worker *worker = NULL; switch (dId) { case 1: worker = new Employee(id, name, dId); break; case 2: worker = new Manager(id, name, dId); break; case 3: worker = new Boss(id, name, dId); break; default: break; } this->m_EmpArray[index] = worker; index++; } this->m_FileIsEmpty = false; //关闭文件 ifs.close(); } //显示职工 void WorkerManage::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"); } //删除职工 void WorkerManage::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; i++) { 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 WorkerManage::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 WorkerManage::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) { case 1: worker = new Employee(newId, newName, dSelect); break; case 2: worker = new Manager(newId, newName, dSelect); break; case 3: worker = new Boss(newId, newName, dSelect); break; default: break; } //更新数据 到数组中 this->m_EmpArray[ret] = worker; cout << "修改成功!" << endl; //保存到文件中 this->save(); } else { cout << "修改失败,查无此人" << endl; } } system("pause"); system("cls"); } //查找职工 void WorkerManage::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 (this->m_EmpArray[i]->m_Name == name) { cout << "查找成功,职工编号为:" << this->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"); } //按照编号排序 void WorkerManage::Sort_Emp() { if (this->m_FileIsEmpty) { cout << "文件不存在或记录为空!" << endl; system("pause"); system("cls"); } else { cout << "请输入排序的方式:" << endl; cout << "1,按照职工的编号升序" << endl; cout << "2,按照职工的编号降序" << endl; int select = 0; cin >> select; for (int i = 0; i < m_EmpNum; i++) { int minOrMax = i; //声明最小值 for (int j = i + 1; j < this->m_EmpNum; j++) { if (select == 1) //升序 { if (this->m_EmpArray[minOrMax]->m_Id > this->m_EmpArray[j]->m_Id) { minOrMax = j; } } else //降序 { if (this->m_EmpArray[minOrMax]->m_Id < this->m_EmpArray[j]->m_Id) { minOrMax = j; } } } //判断一开始认定的最大值或最小值 if (i != minOrMax) { Worker * temp = this->m_EmpArray[i]; this->m_EmpArray[i] = this->m_EmpArray[minOrMax]; this->m_EmpArray[minOrMax] = temp; } } cout << "排序成功!" << endl; this->save(); //排序结果保存 this->show_Emp(); } } //清空文件 void WorkerManage::Clean_File() { cout << "确定清空?" << endl; cout << "1,确定" << endl; cout << "2,返回" << endl; int select = 0; cin >> select; if (select == 1) { //清空文件 ofstream ofs(FILENAME, ios::trunc); //删除文件后重新创建 ofs.close(); if (this->m_EmpArray != NULL) { //删除堆区的每个职工对象 for (int i = 0; i < this->m_EmpNum; i++) { delete this->m_EmpArray[i]; this->m_EmpArray[i] = NULL; } //删除堆区数组指针 delete[] this->m_EmpArray; this->m_EmpArray = NULL; this->m_EmpNum = 0; this->m_FileIsEmpty = true; } cout << "清空成功" << endl; } system("pause"); system("cls"); }
workManager.h
#include<iostream> #include<fstream> using namespace std; #include"worker.h" #include"employee.h" #include"manager.h" #include"boss.h" #define FILENAME "empFile.txt" class WorkerManage { public: //构造函数 WorkerManage(); //展示菜单 void Show_Menu(); //退出系统 void ExitSystem(); //记录职工人数 int m_EmpNum; //职工数组指针 Worker ** m_EmpArray; //添加职工 void Add_Emp(); //保存文件 void save(); //判断文件是否为空 bool m_FileIsEmpty; //统计文件人数 int get_EmpNum(); //初始化职工 void init_Emp(); //显示职工 void show_Emp(); //删除职工 void Del_Emp(); //判断职工是否存在,如果存在返回职工所在数组中的位置,不存在返回-1 int IsExist(int id); //修改职工 void Mod_Emp(); //查找职工 void Find_Emp(); //按照编号排序 void Sort_Emp(); //清空文件 void Clean_File(); //析构函数 ~WorkerManage(); };
workManager.cpp
#include "workManager.h" //构造函数 WorkerManage::WorkerManage() { ifstream ifs; ifs.open(FILENAME, ios::in); //读文件 //1,文件不存在 if (!ifs.is_open()) { cout << "文件不存在" << endl; //初始化属性 //初始化记录人数 this->m_EmpNum = 0; //初始化数组指针 this->m_EmpArray = NULL; //初始化文件是否为空 this->m_FileIsEmpty = true; ifs.close(); return; } //2,文件存在,数据为空 char ch; ifs >> ch; if (ifs.eof()) { //文件为空 cout << "文件为空!" << endl; //初始化属性 //初始化记录人数 this->m_EmpNum = 0; //初始化数组指针 this->m_EmpArray = NULL; //初始化文件是否为空 this->m_FileIsEmpty = true; ifs.close(); return; } //3,文件存在,并且记录数据 int num = this->get_EmpNum(); //cout << "职工人数为:" << num << endl; this->m_EmpNum = num; //开辟空间 this->m_EmpArray = new Worker *[this->m_EmpNum]; //将文件中数据,存到数组中 this->init_Emp(); } //展示菜单 void WorkerManage::Show_Menu() { cout << "*********************************" << endl; cout << "*** 欢迎使用教职工管理系统! ***" << endl; cout << "******* 0,退出管理系统 *******" << endl; cout << "******* 1,添加职工信息 *******" << endl; cout << "******* 2,显示职工信息 *******" << endl; cout << "******* 3,删除离职职工 *******" << endl; cout << "******* 4,修改职工信息 *******" << endl; cout << "******* 5,查找职工信息 *******" << endl; cout << "******* 6,按照编号排序 *******" << endl; cout << "******* 7,清空所有文档 *******" << endl; cout << "*********************************" << endl; } //退出系统 void WorkerManage::ExitSystem() { cout << "欢迎下次使用" << endl; system("pause"); exit(0); //退出程序 } //析构函数 WorkerManage::~WorkerManage() { } //添加职工 void WorkerManage::Add_Emp() { cout << "请输入添加职工数量:" << endl; int addNum = 0; cin >> addNum; if (addNum > 0) { //添加 //计算添加新空间大小 int newSize = this->m_EmpNum + addNum; //新空间人数 = 原来记录人数+新增人数 //开辟新空间 Worker ** newSpace = new Worker*[newSize]; //将原来空间下数据,拷贝到新空间下 if (this->m_EmpArray != NULL) { for (int i = 0; i < this->m_EmpNum; i++) { newSpace[i] = this->m_EmpArray[i]; } } //添加新数据 for (int i = 0; i < addNum; i++) { int id; //职工编号 string name; //职工编号 int dSelect; //部门选择 cout << "请输入第" << i + 1 << "个新职工编号:" << endl; cin >> id; cout << "请输入第" << i + 1 << "个新职工姓名:" << endl; cin >> name; cout << "请选择该职工岗位:" << endl; cout << "1,普通职工" << endl; cout << "2,经理" << endl; cout << "3,老板" << endl; cin >> dSelect; Worker *worker = NULL; switch (dSelect) { case 1: worker = new Employee(id, name, 1); break; case 2: worker = new Manager(id, name, 2); break; case 3: worker = new Boss(id, name, 3); break; default: break; } //将创建职工职责,保存到数组中 newSpace[this->m_EmpNum++] = worker; } //释放原有的空间 delete[] this->m_EmpArray; //更改新空间指向 this->m_EmpArray = newSpace; //更新新的职工人数 this->m_EmpNum = newSize; //更新职工不为空标志 this->m_FileIsEmpty = false; //添加成功 cout << "成功添加" << addNum << "名新职工" << endl; //保存数据到文件中 this->save(); } else { cout << "输入数据有误" << endl; } system("pause"); system("cls"); } //保存文件 void WorkerManage::save() { ofstream ofs; ofs.open(FILENAME, ios::out); //用输入的方式打开文件 -- 写文件 //将每个人数据写入到文件中 for (int i = 0; i < this->m_EmpNum; i++) { ofs << this->m_EmpArray[i]->m_Id << " " << this->m_EmpArray[i]->m_Name << " " << this->m_EmpArray[i]->m_DeptId << endl; } //关闭文件 ofs.close(); } //统计文件人数 int WorkerManage::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++; } return num; } //初始化职工 void WorkerManage::init_Emp() { ifstream ifs; ifs.open(FILENAME, ios::in); //打开文件 读 int id; string name; int dId; int index = 0; //读数据 while (ifs >> id&& ifs >> name && ifs >> dId) { Worker *worker = NULL; switch (dId) { case 1: worker = new Employee(id, name, dId); break; case 2: worker = new Manager(id, name, dId); break; case 3: worker = new Boss(id, name, dId); break; default: break; } this->m_EmpArray[index] = worker; index++; } this->m_FileIsEmpty = false; //关闭文件 ifs.close(); } //显示职工 void WorkerManage::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"); } //删除职工 void WorkerManage::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; i++) { 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 WorkerManage::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 WorkerManage::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) { case 1: worker = new Employee(newId, newName, dSelect); break; case 2: worker = new Manager(newId, newName, dSelect); break; case 3: worker = new Boss(newId, newName, dSelect); break; default: break; } //更新数据 到数组中 this->m_EmpArray[ret] = worker; cout << "修改成功!" << endl; //保存到文件中 this->save(); } else { cout << "修改失败,查无此人" << endl; } } system("pause"); system("cls"); } //查找职工 void WorkerManage::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 (this->m_EmpArray[i]->m_Name == name) { cout << "查找成功,职工编号为:" << this->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"); } //按照编号排序 void WorkerManage::Sort_Emp() { if (this->m_FileIsEmpty) { cout << "文件不存在或记录为空!" << endl; system("pause"); system("cls"); } else { cout << "请输入排序的方式:" << endl; cout << "1,按照职工的编号升序" << endl; cout << "2,按照职工的编号降序" << endl; int select = 0; cin >> select; for (int i = 0; i < m_EmpNum; i++) { int minOrMax = i; //声明最小值 for (int j = i + 1; j < this->m_EmpNum; j++) { if (select == 1) //升序 { if (this->m_EmpArray[minOrMax]->m_Id > this->m_EmpArray[j]->m_Id) { minOrMax = j; } } else //降序 { if (this->m_EmpArray[minOrMax]->m_Id < this->m_EmpArray[j]->m_Id) { minOrMax = j; } } } //判断一开始认定的最大值或最小值 if (i != minOrMax) { Worker * temp = this->m_EmpArray[i]; this->m_EmpArray[i] = this->m_EmpArray[minOrMax]; this->m_EmpArray[minOrMax] = temp; } } cout << "排序成功!" << endl; this->save(); //排序结果保存 this->show_Emp(); } } //清空文件 void WorkerManage::Clean_File() { cout << "确定清空?" << endl; cout << "1,确定" << endl; cout << "2,返回" << endl; int select = 0; cin >> select; if (select == 1) { //清空文件 ofstream ofs(FILENAME, ios::trunc); //删除文件后重新创建 ofs.close(); if (this->m_EmpArray != NULL) { //删除堆区的每个职工对象 for (int i = 0; i < this->m_EmpNum; i++) { delete this->m_EmpArray[i]; this->m_EmpArray[i] = NULL; } //删除堆区数组指针 delete[] this->m_EmpArray; this->m_EmpArray = NULL; this->m_EmpNum = 0; this->m_FileIsEmpty = true; } cout << "清空成功" << endl; } system("pause"); system("cls"); }
worker.h
#pragma once #include<iostream> using namespace std; #include<string> //职工抽象类 class Worker { public: //显示个人信息 virtual void showInfo() = 0; //获取岗位名称 virtual string getDeptName() = 0; //职工编号 int m_Id; //职工姓名 string m_Name; //部门编号 int m_DeptId; };
boss.h
#pragma once #include <iostream> using namespace std; #include"worker.h"; class Boss :public Worker { public: Boss(int id, string name, int dId); //显示个人信息 virtual void showInfo(); //获取岗位名称 virtual string getDeptName(); };
boss.cpp
#include"boss.h" //构造函数 Boss::Boss(int id, string name, int dId) { this->m_Id = id; this->m_Name = name; this->m_DeptId = dId; } //显示个人信息 void Boss::showInfo() { cout << "职工编号:" << this->m_Id << "\t职工姓名:" << this->m_Name << "\t岗位:" << this->getDeptName() << "\t岗位职责:管理公司所有事物" << endl; } //获取岗位名称 string Boss::getDeptName() { return string("总裁"); }
employee.h
//普通员工文件 #pragma once #include<iostream> #include"worker.h" using namespace std; class Employee:public Worker { public: Employee(int id,string name,int dId); //显示个人信息 virtual void showInfo(); //获取岗位名称 virtual string getDeptName(); };
employee.cpp
#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("员工"); }
manager.h
#pragma once #include <iostream> using namespace std; #include"worker.h"; class Manager :public Worker { public: Manager(int id, string name, int dId); //显示个人信息 virtual void showInfo(); //获取岗位名称 virtual string getDeptName(); };
manager.cpp
#include"manager.h" //构造函数 Manager::Manager(int id, string name, int dId) { this->m_Id = id; this->m_Name = name; this->m_DeptId = dId; } //显示个人信息 void Manager::showInfo() { cout << "职工编号:" << this->m_Id << "\t职工姓名:" << this->m_Name << "\t岗位:" << this->getDeptName() << "\t岗位职责:完成老板交给的任务,并且发任务给员工" << endl; } //获取岗位名称 string Manager::getDeptName() { return string("经理"); }
加载全部内容