C++核心编程——基于多态的企业职工系统

2024-01-14 19:44

本文主要是介绍C++核心编程——基于多态的企业职工系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本专栏记录C++学习过程包括C++基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注
当前章节处于:
---------第1阶段-C++基础入门
---------第2阶段实战-通讯录管理系统,
---------第3阶段-C++核心编程,
=====>第4阶段实战-基于多态的企业职工系统
---------第5阶段-C++提高编程
---------第6阶段实战-基于STL泛化编程的演讲比赛
---------第7阶段-C++实战项目机房预约管理系统

文章目录

  • 一、 项目介绍
  • 二、需求分析
  • 三、代码实现
    • 3.1 抽象类
    • 3.2 结构体
    • 3.3 显示菜单
    • 3.4 添加管理系统到文件
    • 3.5 添加员工信息
    • 3.6 显示系统
    • 3.7 删除员工信息
    • 3.8 修改员工信息
    • 3.9 查找员工信息
    • 3.10 按编号排序
    • 3.11 清空管理系统
    • 3.12 main主函数
  • 四、完整代码
  • 五、测试案例

一、 项目介绍

职工管理系统可以用来管理工资内所有员工的信息,要求利用C++来实现一个基于多态的职工管理系统。
公司中职工分为三类:普通职工、经理和老板,显示信息时需要显示职工编号、职工姓名、职工岗位以及职责。

  • 普通员工职责:完成经理交给的任务
  • 经理职责:完成老板交给的任务,并下发任务给员工
  • 老板职责:管理公司所有事务

管理系统中需要实现的功能如下:

  1. 退出管理系统
  2. 增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号
  3. 显示职工信息:显示公司内部所有职工的信息
  4. 删除离职员工:按照编号删除指定的职工
  5. 修改职工信息:按照编号修改职工个人信息
  6. 查找职工信息:按照职工的编号或者职工的姓名进行查找相关的人员信息
  7. 按照编号排序:按照职工编号,进行排序,排序规则由用户指定
  8. 清空所有文档:清空文件中记录的所有职工信息(清除前需要再次确认,防止误删)

二、需求分析

整个管理系统可以看成一个类数组,类数组中需要定义一个员工数,方便后面进行逻辑上的清空。首先需要抽象一个职工类作为父类,然后普通员工,经理和老板继承员工类作为子类,父类中需要定义职工编号,职工姓名,职工岗位三个属性。退出管理系统,说明整个是在一个while循环里面,批量增加员工信息说明是在for循环里面,实例化对象添加到类数组里面,为保证职工编号唯一需要添加判断。并且需要将信息录入文件中,则需要涉及到文件流的操作,因为后续会反复更新文件,所以需要将文件更新封装成函数。显示员工信息时,遍历类数组,并且需要判断类成员的部门编号,打印对应职责。删除、修改和查找大同小异,遍历找到之后再做下一个操作,值得注意的是,删除需要将员工数-1。这四个操作在开始前都需要判断一下员工数,如果等于0的话说明管理系统为空,给出提示并返回。按照编号排序,无非升序和降序,这里给一个变量让用户选择即可,使用冒泡排序对实例化对象中的序号进行排序。清空文档将类数组中员工数置零即可,做逻辑上的清空。为保证友好的交互,还应设计一个选择菜单,在循环中反复调用。

三、代码实现

3.1 抽象类

// 职工类
class Staff {
public:int numcard;  // 职工编号string name;  // 职工姓名string department; // 职工部门string work; // 职责
};
// 员工类
class Employee:public Staff {
};
// 经理类
class Manager :public Staff {
};
// 老板类boss
class Boss :public Staff {
};

3.2 结构体

// 管理系统结构体
struct Managersystem {Staff system[MaxNum];int peoplenum;
};

3.3 显示菜单

// 显示菜单
void showMenu() {cout << "-----欢迎来到职工管理系统----" << endl;cout << "     1.增加职工信息" << endl;cout << "     2.删除职工信息" << endl;cout << "     3.修改职工信息" << endl;cout << "     4.查找职工信息" << endl;cout << "     5.显示职工信息" << endl;cout << "     6.按照编号排序" << endl;cout << "     7.清空管理系统" << endl;cout << "     8.退出管理系统" << endl;
}

3.4 添加管理系统到文件

// 添加管理系统到文件
bool systemToFile(Managersystem& ms) {// 管理系统到文件fstream ofs;ofs.open("System.txt", ios::out);  // 如果不存在会先创建,先删除再创建for (int i = 0; i < ms.peoplenum; i++) {ofs << ms.system[i].numcard<<"    " << ms.system[i].name << "    " << ms.system[i].department << endl;}ofs.close();return true;
}

3.5 添加员工信息

// 添加员工信息
bool addStaff(Managersystem &ms) {// 达到最大值if (ms.peoplenum == MaxNum) {cout << "已达到系统所容纳最大人数,添加失败!" << endl;return false; // 退出}// 批量添加int allnum;cout << "请输入你要添加的人数:";cin >> allnum;bool foundDuplicate = false; // 标记int count = 0; // 统计人数for (int n = 0; n < allnum; n++) {int dp; // 部门string name; // 姓名int num; // 职工编号cout << "选择职位:" << endl;cout << "1.员工" << endl;cout << "2.经理" << endl;cout << "3.老板" << endl;cin >> dp;cout << "请输入职工编号:";cin >> num;// 保证编号的唯一性for (int i = 0; i < ms.peoplenum; i++) {if (num == ms.system[i].numcard) {cout << "该职员编号已存在!" << endl;foundDuplicate = true;break;}}if (foundDuplicate) {foundDuplicate = false; // 重置标记continue; // 跳过当前外部循环,继续执行下一次外部循环}cout << "请输入姓名:" ;cin >> name;if (dp == 1) {Employee ep;ep.name = name;ep.numcard = num;ep.department = "员工";ep.work = "完成经理交给的任务";ms.system[ms.peoplenum] = ep;}else if (dp == 2) {Manager mg;mg.name = name;mg.numcard = num;mg.department = "经理";mg.work = "完成老板交给的任务,并下发任务给员工";ms.system[ms.peoplenum] = mg;}else {Boss bs;bs.name = name;bs.numcard = num;bs.department = "老板";bs.work = "管理公司所有事务";ms.system[ms.peoplenum] = bs;}count++;ms.peoplenum++;}cout << "一共添加了" << count << "人!" << endl;return true;
}

3.6 显示系统

// 显示系统
void showSystem(const Managersystem& ms) {if (ms.peoplenum == 0) {cout << "系统为空!" << endl;return;}for (int i = 0; i < ms.peoplenum; i++) {cout << "员工编号:" << ms.system[i].numcard<<"  部门:" << ms.system[i].department <<"   姓名:"<< ms.system[i].name  <<"   \t职责:"<< ms.system[i].work << endl;}
}

3.7 删除员工信息

// 删除职工信息
bool deleteStaff(Managersystem& ms) {if (ms.peoplenum == 0) {cout << "系统为空!" << endl;return false;}int numcard;cout << "请输入你要删除的职工编号:";cin >> numcard;for (int i = 0; i < ms.peoplenum; i++) {if (ms.system[i].numcard == numcard) {if (ms.peoplenum == 1) {cout << "走这" << endl;ms.peoplenum = 0; // 系统里面就一个人,直接做逻辑删除}else {// 比如i=1,一共有4个,j需要从1开始到3for (int j = i; j < ms.peoplenum; j++) {ms.system[j] = ms.system[j + 1];  // 后面的移到前面}ms.peoplenum--;}return true;}}cout << "没有你要删除的编号!" << endl;return false;
}

3.8 修改员工信息

// 修改职工信息
bool changeStaff(Managersystem& ms) {if (ms.peoplenum == 0) {cout << "系统为空!" << endl;return false;}int numcard;cout << "请输入你要修改的职工编号:";cin >> numcard;string target;for (int i = 0; i < ms.peoplenum; i++) {if (ms.system[i].numcard == numcard) {cout << "请输入你要修改的信息:";cin >> target;if (target.compare("编号") == 0) {int targetnum;cout << "请输入修改之后的编号:";cin >> targetnum;ms.system[i].numcard = targetnum;return true;}else if (target.compare("姓名") == 0) {string targetname;cout << "请输入修改之后的姓名:";cin >> targetname;ms.system[i].name = targetname;return true;}else if (target.compare("部门") == 0) {string targetdp;cout << "请输入修改之后的部门:";cin >> targetdp;ms.system[i].department = targetdp;return true;}else {cout << "没有这个选项!" << endl;return false;}}}
}

3.9 查找员工信息

// 查找职员信息
bool findStaff(Managersystem& ms) {if (ms.peoplenum == 0) {cout << "系统为空!" << endl;return false;}int numcard;cout << "请输入你要查找的职工编号:";cin >> numcard;string target;for (int i = 0; i < ms.peoplenum; i++) {if (ms.system[i].numcard == numcard) {cout << "员工编号:" << ms.system[i].numcard << "  部门:" << ms.system[i].department << "   姓名:" << ms.system[i].name << "   职责:" << ms.system[i].work << endl;return true;}}cout << "查无此人!" << endl;return false;
}

3.10 按编号排序

// 按照编号排序
void popStaff(Managersystem& ms) {int choice;cout << "请输入排序方式:" << endl;cout << "1.顺序" << endl;cout << "2.逆序" << endl;cin >> choice;if (ms.peoplenum == 0) {cout << "系统为空!" << endl;return;}if (choice == 1) {for (int i = 0; i < ms.peoplenum - 1; i++) {for (int j = 0; j < ms.peoplenum - i - 1; j++) {// 冒泡排序if (ms.system[j].numcard > ms.system[j + 1].numcard) {// 交换Staff temp = ms.system[j];ms.system[j] = ms.system[j + 1];ms.system[j + 1] = temp;}}}}else {for (int i = 0; i < ms.peoplenum - 1; i++) {for (int j = 0; j < ms.peoplenum - i - 1; j++) {// 冒泡排序if (ms.system[j].numcard < ms.system[j + 1].numcard) {// 交换Staff temp = ms.system[j];ms.system[j] = ms.system[j + 1];ms.system[j + 1] = temp;}}}}showSystem(ms);
}

3.11 清空管理系统

// 清空管理系统
bool deleteSystem(Managersystem& ms) {// 做逻辑情况int choice;cout << "是否清空管理系统:" << endl;cout << "1.Yes" << endl;cout << "2.No" << endl;cin >> choice;if (choice == 1) {ms.peoplenum = 0; // 逻辑清空return true;}return false;
}

3.12 main主函数

int main() {// 创建一个管理系统结构体Managersystem mainsystem;mainsystem.peoplenum = 0; // 开始时置零while (1) {showMenu();int choice;cout << "请输入你的选项:";cin >> choice;switch (choice){case 1:addStaff(mainsystem);systemToFile(mainsystem);break;case 2:deleteStaff(mainsystem);systemToFile(mainsystem);break;case 3:changeStaff(mainsystem);systemToFile(mainsystem);break;case 4:findStaff(mainsystem);break;case 5:showSystem(mainsystem);break;case 6:popStaff(mainsystem);systemToFile(mainsystem);break;case 7:deleteSystem(mainsystem);systemToFile(mainsystem);break;case 8:return 0;default:cout << "没有这个选项!" << endl;break;}}system("pause");return 0;
}

四、完整代码

#include <iostream>
using namespace std;
#include <fstream>
// 定义员工系统最大容纳人数
#define MaxNum 100
// 职工类
class Staff {
public:int numcard;  // 职工编号string name;  // 职工姓名string department; // 职工部门string work; // 职责
};
// 员工类
class Employee:public Staff {
};
// 经理类
class Manager :public Staff {
};
// 老板类boss
class Boss :public Staff {
};
// 管理系统结构体
struct Managersystem {Staff system[MaxNum];int peoplenum;
};
// 显示菜单
void showMenu() {cout << "-----欢迎来到职工管理系统----" << endl;cout << "     1.增加职工信息" << endl;cout << "     2.删除职工信息" << endl;cout << "     3.修改职工信息" << endl;cout << "     4.查找职工信息" << endl;cout << "     5.显示职工信息" << endl;cout << "     6.按照编号排序" << endl;cout << "     7.清空管理系统" << endl;cout << "     8.退出管理系统" << endl;
}
// 添加管理系统到文件
bool systemToFile(Managersystem& ms) {// 管理系统到文件fstream ofs;ofs.open("System.txt", ios::out);  // 如果不存在会先创建,先删除再创建for (int i = 0; i < ms.peoplenum; i++) {ofs << ms.system[i].numcard<<"    " << ms.system[i].name << "    " << ms.system[i].department << endl;}ofs.close();return true;
}
// 添加员工信息
bool addStaff(Managersystem &ms) {// 达到最大值if (ms.peoplenum == MaxNum) {cout << "已达到系统所容纳最大人数,添加失败!" << endl;return false; // 退出}// 批量添加int allnum;cout << "请输入你要添加的人数:";cin >> allnum;bool foundDuplicate = false; // 标记int count = 0; // 统计人数for (int n = 0; n < allnum; n++) {int dp; // 部门string name; // 姓名int num; // 职工编号cout << "选择职位:" << endl;cout << "1.员工" << endl;cout << "2.经理" << endl;cout << "3.老板" << endl;cin >> dp;cout << "请输入职工编号:";cin >> num;// 保证编号的唯一性for (int i = 0; i < ms.peoplenum; i++) {if (num == ms.system[i].numcard) {cout << "该职员编号已存在!" << endl;foundDuplicate = true;break;}}if (foundDuplicate) {foundDuplicate = false; // 重置标记continue; // 跳过当前外部循环,继续执行下一次外部循环}cout << "请输入姓名:" ;cin >> name;if (dp == 1) {Employee ep;ep.name = name;ep.numcard = num;ep.department = "员工";ep.work = "完成经理交给的任务";ms.system[ms.peoplenum] = ep;}else if (dp == 2) {Manager mg;mg.name = name;mg.numcard = num;mg.department = "经理";mg.work = "完成老板交给的任务,并下发任务给员工";ms.system[ms.peoplenum] = mg;}else {Boss bs;bs.name = name;bs.numcard = num;bs.department = "老板";bs.work = "管理公司所有事务";ms.system[ms.peoplenum] = bs;}count++;ms.peoplenum++;}cout << "一共添加了" << count << "人!" << endl;return true;
}
// 显示系统
void showSystem(const Managersystem& ms) {if (ms.peoplenum == 0) {cout << "系统为空!" << endl;return;}for (int i = 0; i < ms.peoplenum; i++) {cout << "员工编号:" << ms.system[i].numcard<<"  部门:" << ms.system[i].department <<"   姓名:"<< ms.system[i].name  <<"   \t职责:"<< ms.system[i].work << endl;}
}
// 删除职工信息
bool deleteStaff(Managersystem& ms) {if (ms.peoplenum == 0) {cout << "系统为空!" << endl;return false;}int numcard;cout << "请输入你要删除的职工编号:";cin >> numcard;for (int i = 0; i < ms.peoplenum; i++) {if (ms.system[i].numcard == numcard) {if (ms.peoplenum == 1) {cout << "走这" << endl;ms.peoplenum = 0; // 系统里面就一个人,直接做逻辑删除}else {// 比如i=1,一共有4个,j需要从1开始到3for (int j = i; j < ms.peoplenum; j++) {ms.system[j] = ms.system[j + 1];  // 后面的移到前面}ms.peoplenum--;}return true;}}cout << "没有你要删除的编号!" << endl;return false;
}
// 修改职工信息
bool changeStaff(Managersystem& ms) {if (ms.peoplenum == 0) {cout << "系统为空!" << endl;return false;}int numcard;cout << "请输入你要修改的职工编号:";cin >> numcard;string target;for (int i = 0; i < ms.peoplenum; i++) {if (ms.system[i].numcard == numcard) {cout << "请输入你要修改的信息:";cin >> target;if (target.compare("编号") == 0) {int targetnum;cout << "请输入修改之后的编号:";cin >> targetnum;ms.system[i].numcard = targetnum;return true;}else if (target.compare("姓名") == 0) {string targetname;cout << "请输入修改之后的姓名:";cin >> targetname;ms.system[i].name = targetname;return true;}else if (target.compare("部门") == 0) {string targetdp;cout << "请输入修改之后的部门:";cin >> targetdp;ms.system[i].department = targetdp;return true;}else {cout << "没有这个选项!" << endl;return false;}}}
}
// 查找职员信息
bool findStaff(Managersystem& ms) {if (ms.peoplenum == 0) {cout << "系统为空!" << endl;return false;}int numcard;cout << "请输入你要查找的职工编号:";cin >> numcard;string target;for (int i = 0; i < ms.peoplenum; i++) {if (ms.system[i].numcard == numcard) {cout << "员工编号:" << ms.system[i].numcard << "  部门:" << ms.system[i].department << "   姓名:" << ms.system[i].name << "   职责:" << ms.system[i].work << endl;return true;}}cout << "查无此人!" << endl;return false;
}
// 按照编号排序
void popStaff(Managersystem& ms) {int choice;cout << "请输入排序方式:" << endl;cout << "1.顺序" << endl;cout << "2.逆序" << endl;cin >> choice;if (ms.peoplenum == 0) {cout << "系统为空!" << endl;return;}if (choice == 1) {for (int i = 0; i < ms.peoplenum - 1; i++) {for (int j = 0; j < ms.peoplenum - i - 1; j++) {// 冒泡排序if (ms.system[j].numcard > ms.system[j + 1].numcard) {// 交换Staff temp = ms.system[j];ms.system[j] = ms.system[j + 1];ms.system[j + 1] = temp;}}}}else {for (int i = 0; i < ms.peoplenum - 1; i++) {for (int j = 0; j < ms.peoplenum - i - 1; j++) {// 冒泡排序if (ms.system[j].numcard < ms.system[j + 1].numcard) {// 交换Staff temp = ms.system[j];ms.system[j] = ms.system[j + 1];ms.system[j + 1] = temp;}}}}showSystem(ms);
}
// 清空管理系统
bool deleteSystem(Managersystem& ms) {// 做逻辑情况int choice;cout << "是否清空管理系统:" << endl;cout << "1.Yes" << endl;cout << "2.No" << endl;cin >> choice;if (choice == 1) {ms.peoplenum = 0; // 逻辑清空return true;}return false;
}
int main() {// 创建一个管理系统结构体Managersystem mainsystem;mainsystem.peoplenum = 0; // 开始时置零while (1) {showMenu();int choice;cout << "请输入你的选项:";cin >> choice;switch (choice){case 1:addStaff(mainsystem);systemToFile(mainsystem);break;case 2:deleteStaff(mainsystem);systemToFile(mainsystem);break;case 3:changeStaff(mainsystem);systemToFile(mainsystem);break;case 4:findStaff(mainsystem);break;case 5:showSystem(mainsystem);break;case 6:popStaff(mainsystem);systemToFile(mainsystem);break;case 7:deleteSystem(mainsystem);systemToFile(mainsystem);break;case 8:return 0;default:cout << "没有这个选项!" << endl;break;}}system("pause");return 0;
}

五、测试案例

-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:1
请输入你要添加的人数:3
选择职位:
1.员工
2.经理
3.老板
1
请输入职工编号:1
请输入姓名:张三
选择职位:
1.员工
2.经理
3.老板
2
请输入职工编号:2
请输入姓名:李四
选择职位:
1.员工
2.经理
3.老板
3
请输入职工编号:3
请输入姓名:王五
一共添加了3人!
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:5
员工编号:1  部门:员工   姓名:张三    职责:完成经理交给的任务
员工编号:2  部门:经理   姓名:李四    职责:完成老板交给的任务,并下发任务给员工
员工编号:3  部门:老板   姓名:王五    职责:管理公司所有事务
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:2
请输入你要删除的职工编号:2
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:5
员工编号:1  部门:员工   姓名:张三    职责:完成经理交给的任务
员工编号:3  部门:老板   姓名:王五    职责:管理公司所有事务
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:3
请输入你要修改的职工编号:1
请输入你要修改的信息:部门
请输入修改之后的部门:经理
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:5
员工编号:1  部门:经理   姓名:张三    职责:完成经理交给的任务
员工编号:3  部门:老板   姓名:王五    职责:管理公司所有事务
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:4
请输入你要查找的职工编号:1
员工编号:1  部门:经理   姓名:张三   职责:完成经理交给的任务
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:4
请输入你要查找的职工编号:2
查无此人!
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:1
请输入你要添加的人数:1
选择职位:
1.员工
2.经理
3.老板
1
请输入职工编号:2
请输入姓名:赵六
一共添加了1人!
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:1
请输入你要添加的人数:1
选择职位:
1.员工
2.经理
3.老板
1
请输入职工编号:1
该职员编号已存在!
一共添加了0人!
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:5
员工编号:1  部门:经理   姓名:张三    职责:完成经理交给的任务
员工编号:3  部门:老板   姓名:王五    职责:管理公司所有事务
员工编号:2  部门:员工   姓名:赵六    职责:完成经理交给的任务
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:6
请输入排序方式:
1.顺序
2.逆序
1
员工编号:1  部门:经理   姓名:张三    职责:完成经理交给的任务
员工编号:2  部门:员工   姓名:赵六    职责:完成经理交给的任务
员工编号:3  部门:老板   姓名:王五    职责:管理公司所有事务
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:6
请输入排序方式:
1.顺序
2.逆序
2
员工编号:3  部门:老板   姓名:王五    职责:管理公司所有事务
员工编号:2  部门:员工   姓名:赵六    职责:完成经理交给的任务
员工编号:1  部门:经理   姓名:张三    职责:完成经理交给的任务
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:7
是否清空管理系统:
1.Yes
2.No
1
-----欢迎来到职工管理系统----1.增加职工信息2.删除职工信息3.修改职工信息4.查找职工信息5.显示职工信息6.按照编号排序7.清空管理系统8.退出管理系统
请输入你的选项:8D:\桌面\C++学习\1.14\x64\Debug\1.14.exe (进程 5464)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

这篇关于C++核心编程——基于多态的企业职工系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/606314

相关文章

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

C++一个数组赋值给另一个数组方式

《C++一个数组赋值给另一个数组方式》文章介绍了三种在C++中将一个数组赋值给另一个数组的方法:使用循环逐个元素赋值、使用标准库函数std::copy或std::memcpy以及使用标准库容器,每种方... 目录C++一个数组赋值给另一个数组循环遍历赋值使用标准库中的函数 std::copy 或 std::

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

c++中std::placeholders的使用方法

《c++中std::placeholders的使用方法》std::placeholders是C++标准库中的一个工具,用于在函数对象绑定时创建占位符,本文就来详细的介绍一下,具有一定的参考价值,感兴... 目录1. 基本概念2. 使用场景3. 示例示例 1:部分参数绑定示例 2:参数重排序4. 注意事项5.

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具