第6步、创建职工类
创建普通员工类、创建经理类、创建老板类
worker.h
1 #pragma once 2 #include<iostream> 3 using namespace std; 4 #include<string> 5 6 //职工抽象类 7 class Worker 8 { 9 public: 10 //显示个人信息 11 virtual void showInfo() = 0; 12 //获取岗位名称 13 virtual string getDeptName() = 0; 14 15 16 //职工编号 17 int m_Id; 18 //职工姓名 19 string m_Name; 20 //部门编号 21 int m_DeptId; 22 23 };
employee.h
1 //普通员工文件 2 #pragma once 3 #include<iostream> 4 using namespace std; 5 #include"worker.h" 6 7 class Employee :public Worker 8 { 9 public: 10 //构造函数 11 Employee(int id, string name, int did); 12 //显示个人信息 13 virtual void showInfo(); 14 15 //获取岗位名称 16 virtual string getDeptName(); 17 18 };
employee.cpp
1 #include"employee.h" 2 3 //构造函数 4 Employee::Employee(int id, string name, int did) 5 { 6 this->m_Id = id; 7 this->m_Name = name; 8 this->m_DeptId = did; 9 } 10 //显示个人信息 11 void Employee::showInfo() 12 { 13 cout << "职工编号: " << this->m_Id 14 << "\t" << "职工姓名:" << this->m_Name 15 << "\t" << "岗位:" << this->getDeptName() 16 << "\t岗位职责:完成经理交给的任务" << endl; 17 } 18 19 //获取岗位名称 20 string Employee::getDeptName() 21 { 22 return string("员工"); 23 }
主函数
1 #include<iostream> 2 using namespace std; 3 #include"workerManager.h" 4 #include"worker.h" 5 #include"employee.h" 6 7 int main() 8 { 9 //测试代码: 10 Worker * worker = NULL; 11 worker = new Employee(1, "张三", 1); 12 worker->showInfo(); 13 /* 14 //实例化管理者对象 15 WorkerManager wm; 16 17 int choice = 0;//用来存储用户的选项 18 19 while (true) 20 { 21 //调用展示菜单成员函数 22 wm.show_Menu(); 23 24 cout << "请输入您的选择:" << endl; 25 cin >> choice;//接收用户的选项 26 switch (choice) 27 { 28 case 0://退出系统 29 wm.exitSystem(); 30 break; 31 32 case 1://增加职工 33 break; 34 35 case 2://显示职工 36 break; 37 38 case 3://删除职工 39 break; 40 41 case 4://修改职工 42 break; 43 44 case 5://查找职工 45 break; 46 47 case 6://排序职工 48 break; 49 50 case 7://清空文档 51 break; 52 default: 53 system("cls");//清屏 54 break; 55 } 56 } 57 58 59 */ 60 system("pause"); 61 return 0; 62 }
创建经理类
manager.h
1 #pragma once 2 #include<iostream> 3 using namespace std; 4 #include"worker.h" 5 6 //经理类 7 class Manager :public Worker 8 { 9 public: 10 11 //构造函数 12 Manager(int id, string name, int dId); 13 14 //显示个人信息 15 virtual void showInfo(); 16 17 //获取岗位名称 18 virtual string getDeptName(); 19 20 };
manager.cpp
1 #include"manager.h" 2 3 //构造函数 4 Manager::Manager(int id, string name, int dId) 5 { 6 this->m_Id = id; 7 this->m_Name = name; 8 this->m_DeptId = dId; 9 } 10 11 //显示个人信息 12 void Manager::showInfo() 13 { 14 cout << "职工编号: " << this->m_Id 15 << "\t" << "职工姓名:" << this->m_Name 16 << "\t" << "岗位:" << this->getDeptName() 17 << "\t岗位职责:完成老板交给的任务,并且下发任务给普通员工" << endl; 18 19 } 20 21 //获取岗位名称 22 string Manager::getDeptName() 23 { 24 return string("经理"); 25 }
创建老板类
boss.h
1 #pragma once 2 #include<iostream> 3 using namespace std; 4 #include"worker.h" 5 6 //老板类 7 class Boss :public Worker 8 { 9 public: 10 11 //构造函数 12 Boss(int id, string name, int dId); 13 14 //显示个人信息 15 virtual void showInfo(); 16 17 //获取岗位名称 18 virtual string getDeptName(); 19 20 };
boss.cpp
1 #include"boss.h" 2 3 //构造函数 4 Boss::Boss(int id, string name, int dId) 5 { 6 this->m_Id = id; 7 this->m_Name = name; 8 this->m_DeptId = dId; 9 } 10 11 //显示个人信息 12 void Boss::showInfo() 13 { 14 cout << "职工编号: " << this->m_Id 15 << "\t" << "职工姓名:" << this->m_Name 16 << "\t" << "岗位:" << this->getDeptName() 17 << "\t岗位职责:管理公司所有的事务" << endl; 18 19 } 20 21 //获取岗位名称 22 string Boss::getDeptName() 23 { 24 return string("总裁"); 25 }
主函数文件
1 #include<iostream> 2 using namespace std; 3 #include"workerManager.h" 4 5 //#include"worker.h" 6 //#include"employee.h" 7 //#include"manager.h" 8 //#include"boss.h" 9 10 int main() 11 { 12 ////测试代码: 13 //Worker * worker = NULL; 14 //worker = new Employee(1, "张三", 1); 15 //worker->showInfo(); 16 //delete worker; 17 18 //worker = new Manager(2, "李四", 2); 19 //worker->showInfo(); 20 //delete worker; 21 22 //worker = new Boss(3, "王五", 3); 23 //worker->showInfo(); 24 //delete worker; 25 26 27 28 //实例化管理者对象 29 WorkerManager wm; 30 31 int choice = 0;//用来存储用户的选项 32 33 while (true) 34 { 35 //调用展示菜单成员函数 36 wm.show_Menu(); 37 38 cout << "请输入您的选择:" << endl; 39 cin >> choice;//接收用户的选项 40 switch (choice) 41 { 42 case 0://退出系统 43 wm.exitSystem(); 44 break; 45 46 case 1://增加职工 47 break; 48 49 case 2://显示职工 50 break; 51 52 case 3://删除职工 53 break; 54 55 case 4://修改职工 56 break; 57 58 case 5://查找职工 59 break; 60 61 case 6://排序职工 62 break; 63 64 case 7://清空文档 65 break; 66 default: 67 system("cls");//清屏 68 break; 69 } 70 } 71 72 73 74 system("pause"); 75 return 0; 76 }
第7步、添加职工
思路:数组
问题:批量创建时,会有不同类的 职工
方法:利用数组保存所有的父类指针。
开辟在哪里呢?栈区?堆区?——堆区,自己开辟自己释放。
原文:https://www.cnblogs.com/zlh-1024powr/p/14619835.html