职工管理系统
1、管理系统需求
职工管理系统可以用来管理公司内所有员工的信息
利用C++来实现一个基于多态的职工管理系统
公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责
普通员工职责:完成经理交给的任务
经理职责:完成老板交给的任务,并下发任务给员工
老板职责:管理公司所有事务
管理系统中需要实现的功能如下:
- 退出管理程序:退出当前管理系统
- 增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号
- 显示职工信息:显示公司内部所有职工的信息
- 删除离职职工:按照编号删除指定的职工
- 修改职工信息:按照编号修改职工个人信息
- 查找职工信息:按照职工的编号或者职工的姓名进行查找相关的人员信息
- 按照编号排序:按照职工编号,进行排序,排序规则由用户指定
- 清空所有文档:清空文件中记录的所有职工信息 (清空前需要再次确认,防止误删)
我们创建以下多个头文件和与其对应的 .cpp文件:
boss.h头文件
#pragma once
#include <iostream>
using namespace std;
#include <string>
#include "Worker.h"
//老板类
class Boss :public Worker
{
public:
Boss(int id, string name, int post);
//显示个人信息
virtual void ShowInfo();
//获取岗位名称
virtual string getPost();
};
manager.h 头文件
class Manager :public Worker
{
public:
Manager(int id, string name, int post);
//显示个人信息
virtual void ShowInfo();
//获取岗位名称
virtual string getPost();
};
employee.h头文件
class Employee:public Worker
{
public:
Employee(int id,string name,int post);
//显示个人信息
virtual void ShowInfo();
//获取岗位名称
virtual string getPost();
};
worker.h头文件
//职工抽象类
class Worker
{
public:
//显示个人信息
virtual void ShowInfo() = 0;
//获取岗位名称
virtual string getPost() = 0;
//职员编号
int m_Id;
//职工姓名
string m_Name;
//部门编号
int m_Post;
};
worker_Manager.h头文件
#pragma once
#include <iostream>
using namespace std;
#include "boss.h"
#include "manager.h"
#include "Worker.h"
#include "employee.h"
#include <fstream>
#define TXT "empfine.txt"
//各程序执行的类
class Worker_Manager
{
public:
Worker_Manager();
//显示菜单
void ShowMenu();
//记录职工人数
int m_EmpNum;
//职工指针数组
Worker** m_EmpArray;
//添加职工
void Add_Emp();
//保存文件
void save();
//判断文件是否为空
bool m_File;
//统计文件中的人数
int get_EmpNum();
//初始化员工
void In_Emp();
//显示员工
void Show_Emp();
//判断职工是否存在
int Ison_Emp(int id);
//删除员工
void Del_Emp();
//修改员工
void Mod_Emp();
//查找员工
void Find_Emp();
//排序
void Sort_Emp();
//清空文件
void Clean_File();
~Worker_Manager();
};
boss.cpp文件
#include "boss.h"
Boss::Boss(int id, string name, int post)
{
this->m_Id = id;
this->m_Name = name;
this->m_Post = post;
}
//显示个人信息
void Boss::ShowInfo()
{
cout << "职工编号:" << this->m_Id
<< "\t职工姓名:" << this->m_Name
<< "\t职工部门:" << this->getPost()
<< "\t岗位职责:管理公司所有事务" << endl;
}
//获取岗位名称
string Boss::getPost()
{
return string("老板");
}
manager.cpp文件
#include "manager.h"
Manager::Manager(int id, string name, int post)
{
this->m_Id = id;
this->m_Name = name;
this->m_Post = post;
}
//显示个人信息
void Manager::ShowInfo()
{
cout << "职工编号:" << this->m_Id
<< "\t职工姓名:" << this->m_Name
<< "\t职工部门:" << this->getPost()
<< "\t岗位职责:完成老板布置的任务,并下发任务给员工" << endl;
}
//获取岗位名称
string Manager::getPost()
{
return string("经理");
}
employee.cpp文件
#include "employee.h"
Employee::Employee(int id, string name, int post)
{
this->m_Id = id;
this->m_Name = name