C++实现职工管理系统

 更新时间:2021年05月26日 15:18:34   作者:培培不是我小宝贝  
这篇文章主要为大家详细介绍了C++实现职工管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C++实现职工管理系统的具体代码,供大家参考,具体内容如下

workermanager.h

#pragma once//防止头文件重复包含
#include <iostream>
#include "worker.h"
using namespace std;
#include "boss.h"
#include "employee.h"
#include "manager.h"

#include <fstream>
#define FILENAME "empFile.txt"

class WorkerManager
{
public:
 WorkerManager();

 void Show_Menu();//菜单功能

 void ExitSystem();//退出功能

 int m_EmpNum;//记录职工人数

 Worker ** m_EmpArray;//职工数组指针

 void Add_Emp();//添加职工

 void Del_Emp();//删除职工

 void Find_Emp();//查找职工

 void Mod_Emp();//修改职工

 void Show_Emp();//显示职工

 void Sort_Emp();//排序

 void Clean_File();

 int IsExist(int id);//按照职工编号判断职工是否存在,存在返回职工在数组中的位置,不存在返回-1

 void save();//保存文件

 bool m_FileIsEmpty;//判断文件是否为空,标志

 int get_EmpNum();//统计人数

 void init_Emp();//初始化元员工 

 ~WorkerManager();
};

worker.h

#pragma once//防止头文件重复包含
#include <iostream>
#include <string>
using namespace std;
class Worker//职工抽象类
{
public:
 //显示个人信息
 virtual void showInfo() = 0;
 //获取岗位名称
 virtual string getDeptName() = 0;

 int m_Id;//职工编号
 string m_Name;//职工姓名
 int m_DeptId;//职工所在部门的编号
};

employee.h

#pragma once
#include <iostream>
using namespace std;
#include "worker.h"

class Employee :public Worker
{
public:
 //构造函数
 Employee(int id, string name, int dId);

 //显示个人信息
 virtual void showInfo();

 //获取岗位信息
 virtual string  getDeptName();
};

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();
};

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();
};

职工管理系统.cpp

#include <iostream>
using namespace std;
#include "WorkerManager.h"
#include "worker.h"
#include "employee.h"

int main()
{
 WorkerManager wm;//实例化管理对象
 int choice = 0;//存储用户
 while (true)
 {
  //显示菜单
  wm.Show_Menu();
  cout << "请输入你的选择:" << endl;
  cin >> choice;
  switch (choice)
  {
  case 0://退出系统
   wm.ExitSystem();
   break;
  case 1://增加职工
   wm.Add_Emp();
   break;
  case 2://删除职工
   wm.Del_Emp();
   break;
  case 3://查找职工
   wm.Find_Emp();
   break;
  case 4://修改职工
   wm.Mod_Emp();
   break;
  case 5://显示职工
   wm.Show_Emp();
   break;
  case 6://排序职工
   wm.Sort_Emp();
   break;
  case 7://清空文档
   wm.Clean_File();
   system("cls");
   break;
  }
 }
 system("pause");
 return 0;
}

workermanager.cpp

#pragma once//防止头文件重复包含
#include <iostream>
#include "worker.h"
using namespace std;
#include "boss.h"
#include "employee.h"
#include "manager.h"

#include <fstream>
#define FILENAME "empFile.txt"

class WorkerManager
{
public:
 WorkerManager();

 void Show_Menu();//菜单功能

 void ExitSystem();//退出功能

 int m_EmpNum;//记录职工人数

 Worker ** m_EmpArray;//职工数组指针

 void Add_Emp();//添加职工

 void Del_Emp();//删除职工

 void Find_Emp();//查找职工

 void Mod_Emp();//修改职工

 void Show_Emp();//显示职工

 void Sort_Emp();//排序

 void Clean_File();

 int IsExist(int id);//按照职工编号判断职工是否存在,存在返回职工在数组中的位置,不存在返回-1

 void save();//保存文件

 bool m_FileIsEmpty;//判断文件是否为空,标志

 int get_EmpNum();//统计人数

 void init_Emp();//初始化元员工 

 ~WorkerManager();
};

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岗位:" << getDeptName()
  << "\t岗位职责:完成经理交给的任务" << endl;
}

string Employee::getDeptName()
{
 return string("员工"); 
}

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岗位:" << getDeptName()
  << "\t岗位职责:完成老板布置的任务并下发给员工" << endl;
}

string Manager::getDeptName()
{
 return string("经理");
}

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 << "\t职工编号:" << this->m_Id
  << "\t职工姓名:" << this->m_Name
  << "\t岗位:" << getDeptName()
  << "\t岗位职责:管理整个公司" << endl;
}

string Boss::getDeptName()
{
 return string ("老板");
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++小知识:不要去做编译器的工作

    C++小知识:不要去做编译器的工作

    今天小编就为大家分享一篇关于C++小知识:不要去做编译器的工作,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • vscode中配置LeetCode插件的教程(愉快刷题)

    vscode中配置LeetCode插件的教程(愉快刷题)

    这篇文章主要介绍了vscode中配置LeetCode插件的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-03-03
  • C语言实现扫雷小游戏的示例代码

    C语言实现扫雷小游戏的示例代码

    这篇文中主要为大家详细介绍了如何利用C语言实现经典的扫雷小游戏。扫雷小游戏主要是利用字符数组、循环语句和函数实现,感兴趣的小伙伴可以了解一下
    2022-10-10
  • OpenGL实现3D空间中移动图像

    OpenGL实现3D空间中移动图像

    这篇文章主要为大家详细介绍了OpenGL实现3D空间中移动图像,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • C++如何去掉字符串首尾的空格

    C++如何去掉字符串首尾的空格

    这篇文章主要介绍了C++如何去掉字符串首尾的空格问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C++报错:Segmentation Fault的解决方案

    C++报错:Segmentation Fault的解决方案

    段错误(Segmentation Fault)是 C++ 编程中常见且令人头疼的错误之一,段错误通常发生在程序试图访问未被允许的内存区域时,导致程序崩溃,本文将深入探讨段错误的产生原因、检测方法及其预防和解决方案,需要的朋友可以参考下
    2024-07-07
  • C语言数据结构通关时间复杂度和空间复杂度

    C语言数据结构通关时间复杂度和空间复杂度

    对于一个算法,其时间复杂度和空间复杂度往往是相互影响的,当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间,这篇文章主要给大家介绍了关于C语言时间复杂度、空间复杂度的相关资料,需要的朋友可以参考下
    2022-04-04
  • C++实现区块链的源码

    C++实现区块链的源码

    这篇文章主要介绍了C++实现区块链的源码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 二叉搜索树的插入与删除(详细解析)

    二叉搜索树的插入与删除(详细解析)

    添加结点其实很容易,我们只需要找到结点所行对应的位置就可以了,而且没有要求是平衡的二叉搜索树,因此每次添加结点都是在叶子结点上操作,不需要修改二叉搜索树整体的结构
    2013-09-09
  • C++ string如何获取文件路径文件名、文件路径、文件后缀(两种方式)

    C++ string如何获取文件路径文件名、文件路径、文件后缀(两种方式)

    这篇文章主要介绍了C++ string如何获取文件路径文件名、文件路径、文件后缀(两种方式),具有很好的参考价值,希望对大家有所帮助。
    2023-06-06

最新评论