0
点赞
收藏
分享

微信扫一扫

二.自定义头文件

90哦吼 2024-02-18 阅读 18

一.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; 
};
举报

相关推荐

0 条评论