职工管理系统需求
职工管理系统可以用来管理公司内所有员工的信息,本篇文章主要利用C++来实现一个基于多态的职工管理系统。
公司中职工分为三类:普通员工,经理、老板,显示信息时,需要显示职工编号,职工姓名,职工岗位,以及职责。
- 普通员工职责:完成经理交给的任务
- 经理职责:完成老板交给的任务,并下发任务给员工
- 老板职责:管理公司所有事务
管理系统中需要实现的功能如下:
- 退出管理程序:退出当前管理系统
- 增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为职工编号、姓名、部门编号
- 显示职工信息:显示公司内部所有职工信息
- 删除离职职工:按照编号删除指定的职工
- 修改职工信息:按照编号修改职工个人信息
- 查找职工信息:按照职工的编号或者职工的姓名进行查找相关的人员信息
- 按照编号排序:按照职工编号,进行排序,排序规则由用户指定
- 清空所有文档:清空文件中记录的所有职工信息(清空前需要再次确认,防止误判)
各文件代码
首先我们看一下这个系统的.h
文件和.cpp
文件都有哪些:
- main.cpp文件
#include <iostream>
#include "workerManager.h"
#include "employee.h"
#include "worker.h"
#include "manager.h"
#include "boss.h"
using namespace std;
int main()
{
//实例化管理者对象
WorkerManager wm;
int choice = 0;//用来存储用户的选项
while (1)
{
//调用显示成员函数
wm.Show_Menu();
cout << "请输入您的选择:" << endl;
cin >> choice;//用来接收用户的选择
switch (choice)
{
case 0://退出系统
wm.ExitSystem();
break;
case 1://增加职工信息
wm.Add_Emp();
break;
case 2://显示所有职工信息
wm.Show_Emp();
break;
case 3://删除职工信息
wm.Del_Emp();
break;
case 4://修改职工
wm.Mod_Emp();
break;
case 5://查找职工
wm.find_Emp();
break;
case 6://对职工进行排序
wm.Sort_Emp();
break;
case 7://清空文档
wm.Cleam_Emp();
break;
default:
system("cls");//清屏
break;
}
}
system("pause");
return 0;
}
- work.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_dept_id;
};
- boss.h文件
#pragma once
#include <iostream>
#include "worker.h"
using namespace std;
//老板类
class Boss :public Worker
{
public:
//构造函数
Boss(int id, string name, int did);
//显示信息
void ShowInfo();
//获取岗位职责
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_dept_id = 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);
//显示个人信息
void ShowInfo();
//获取岗位名称
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_dept_id = did;
}
//显示个人信息
void Employee::ShowInfo()
{
cout << "职工编号:" << this->m_id
<< "\t职工姓名:" << this->m_name
<< "\t岗位:" << this