一.Worker.h
1.1概述
在这个抽象类中,定义了纯虚函数和职工的基本信息成员变量,它们将被继承的子类实现。通过这种方式,可以实现多态性,允许派生类根据具体情况来实现功能。请注意,在这个抽象类中不能创建实例,只能被用作其他类的基类来继承和实现特定功能。
1.2.代码:
/*
这是一个抽象的职工父类,以下类都继承自该类:
1.Employee类
2.Manager类
3.Boss类
*/
#pragma once //防止头文件重复包含
#include<iostream> //包含标准输入输出流
#include<string>
using namespace std; //使用标准命名空间
class Worker
{
public:
//1.显示个人信息
virtual void Show_Info() = 0;
//2.获取岗位名称
virtual string Get_DeptName() = 0;
//职工编号
int W_Id;
//职工姓名
string W_Name;
//职工所在部门名称编号
int W_DeptId;
};
二.Employee.h
1.1概述
构造函数
Employee(int id, string name, int dept_id)
2.2代码
#pragma once //防止头文件重复包含
/*这是一个普通员工类,该类继承自Worker类,并实现了父类Worker中的纯虚函数。*/
#include<iostream> //包含标准输入输出流
#include<string>
#include "Worker.h"
using namespace std; //使用标准命名空间
class Employee:public Worker
{
public:
//1.构造函数
Employee(int id, string name, int dept_id);
//2.显示个人信息
void Show_Info();
//3.获取岗位名称
string Get_DeptName();
};
三.Manager.h
一.概述
构造函数
Manager(int id, string name, int dept_id)
二.代码
#pragma once //防止头文件重复包含
/*这是一个经理类,该类继承自Worker类,并实现了父类Worker中的纯虚函数。*/
#include<iostream> //包含标准输入输出流
#include<string>
#include "Worker.h"
using namespace std; //使用标准命名空间
class Manager:public Worker
{
public:
//1.构造函数
Manager(int id, string name, int dept_id);
//2.显示个人信息
void Show_Info();
//3.获取岗位名称
string Get_DeptName();
};
四.Boss.h
一.概述
构造函数
Boss(int id, string name, int dept_id)
二.代码
#pragma once //防止头文件重复包含
/*这是一个老板类,该类继承自Worker类,并实现了父类Worker中的纯虚函数。*/
#include<iostream> //包含标准输入输出流
#include<string>
#include "Worker.h"
using namespace std; //使用标准命名空间
class Boss:public Worker
{
public:
//1.构造函数
Boss(int id, string name, int dept_id);
//2.显示个人信息
void Show_Info();
//3.获取岗位名称
string Get_DeptName();
};
五.DataStructType.h
一.概述
二.代码
//这是一个职工数据链表的结点结构和头指针结构的声明头文件
#pragma once //防止头文件重复包含
//职工数据链表结点结构
typedef struct wlist
{
Worker* WorkerDataPtr;//职工链表结点数据域
wlist* next;
}WorkerLinkNode;
//职工数据链表头指针结构
typedef struct header
{
int worker_num; //记录当前链表的结点数(职工人数)
WorkerLinkNode* next;
}Header;
六 WorkerManager.h
一.概述
二.代码
#pragma once //防止头文件重复包含
/*
该头文件声明了一个WorkerManager类,用于实现职工信息的管理。该类包含了一些成员函数,
如构造函数、添加职工、显示职工、修改职工、删除职工等。同时,它还包含一些用于管理
职工链表的成员变量,如链表的头指针和尾指针,以及一些与文件相关的标志。
*/
#include<iostream> //包含标准输入输出流
#include<string>
#include "Worker.h"
#include "DataStructType.h"
#define EMPFILE "DataFile.txt"
using namespace std; //使用标准命名空间
//创建职工管理类
class WorkerManger
{
public:
/**************************WorkerManger类成员函数相关声明***************************/
//1.WorkerManger类的构造函数
WorkerManger();
//2..读取当前打开文件中的职工人数
int Get_WorkerNum();
//3.初始化职工数据链表
void Init_WorkerLinkList();
//4.显示系统菜单函数
void Show_Menu();
//5.退出系统函数
void Exit_System();
//6.添加职工功能函数
void Add_worker();
//7.保存员工信息到文件
void Save_File();
//8.显示职工数据
void Show_worker();
//9.查找职工
void FinD_Worker();
//10.修改职工信息
void MoD_Worker();
//11.删除职工信息
void Del_Worker();
//12.检查当前链表是否为空
bool Is_Empty_LinkList();
//13.排序职工链表及文件数据
void Sort_Worker();
//14.升序排序函数
void Asce_sort(int low, int high, WorkerLinkNode* Array);
//15.降序排序函数
void DesE_sort(int low, int high, WorkerLinkNode* Array);
//16.清空文件数据
void Clean_File();
//17.根据职工编号判断职工是否存在,存在则返回结点指针 ,否则返回空
WorkerLinkNode* Is_ExistWorker(int E_id);
//18.根据职工姓名判断职工是否存在,存在则返回结点指针 ,否则返回空
WorkerLinkNode* Is_ExistWorker(string E_name);
//19.返回当前数据结点的前驱结点,无前驱结点则返回空
WorkerLinkNode* Get_Pre(WorkerLinkNode* &curr_node);
//20.返回当前数据结点的后继结点,无后继结点则返回空
WorkerLinkNode* Get_Suc(WorkerLinkNode* &curr_node);
//21.将链表数据存在到临时数组中,便于排序
WorkerLinkNode* Store_Array();
//22.将排好序的数组数据,连接成链表
WorkerLinkNode* Recom_Link(WorkerLinkNode* Array);
//23.WorkerManger类的析构函数
~WorkerManger();
/*************************WorkerManger类成员变量相关声明****************************/
//1.职工链表头指针
Header*LinkHeader;
//2.职工链表尾指针
WorkerLinkNode* EndPtr;
//3.判断文件是否为空标志
bool File_IsEmpty;
//4.判断文件是否存在标志
bool File_IsExist;
};