二.自定义头文件
一.Worker.h
1.1概述
- 类名:Worker
- 继承关系:所有其他类(Employee、Manager、Boss)都继承自该抽象类
- 头文件保护:使用 pragma once 防止头文件重复包含
- 引入标准库:包含 <iostream> 和 <string> 头文件
- 命名空间:使用了 using namespace std; 来使用标准命名空间中的标识符
成员函数:
1. virtual void Show_Info() = 0;:纯虚函数,用于显示个人信息,需要在派生类中具体实现。
2. virtual string Get_DeptName() = 0;:纯虚函数,用于获取岗位名称,需要在派生类中具体实现。
成员变量:
- int W_Id;:职工编号
- string W_Name;:职工姓名
- int W_DeptId;:职工所在部门名称编号
在这个抽象类中,定义了纯虚函数和职工的基本信息成员变量,它们将被继承的子类实现。通过这种方式,可以实现多态性,允许派生类根据具体情况来实现功能。请注意,在这个抽象类中不能创建实例,只能被用作其他类的基类来继承和实现特定功能。
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
- 继承关系:继承自 Worker 类
- 头文件保护:#pragma once
- 引入标准库:#include<iostream>, <string>
- 命名空间:using namespace std
构造函数
 Employee(int id, string name, int dept_id)
- 作用:用于创建 Employee 类的对象并初始化对象的属性。
- 参数:
- id:职工的ID,整数类型。
- name:职工的姓名,字符串类型。
- dept_id:职工所在部门的ID,整数类型。
- 功能:通过接收参数,将参数赋值给类的属性,完成对象的初始化。
成员函数
1.void Show_Info()
- 作用:显示普通员工的个人信息。
- 参数:无
- 功能:打印普通员工对象的职工ID、姓名和所在部门ID等信息。2.string Get_DeptName()
- 作用:获取普通员工所在部门的名称。
- 参数:无
- 返回值:返回值为字符串类型,表示部门名称。
- 功能:根据员工的部门ID,返回对应部门的名称。这些成员函数是针对 Employee 类的操作和功能定义的,用于实现对普通员工对象的属性获取和信息显示。
成员变量:暂无
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
- 继承关系:继承自 Worker 类
- 头文件保护:#pragma once
- 引入标准库:#include<iostream>, <string>
- 命名空间:using namespace std
构造函数
Manager(int id, string name, int dept_id)- 作用:用于创建 Manager 类的对象并初始化对象的属性。
- 参数:
- id:职工的ID,整数类型。
- name:职工的姓名,字符串类型。
- dept_id:职工所在部门的ID,整数类型。
- 功能:通过接收参数,将参数赋值给类的属性,完成对象的初始化。
成员函数
1.void Show_Info()
- 作用:显示经理的个人信息。
- 参数:无
- 功能:打印经理对象的职工ID、姓名和所在部门ID等信息。2.string Get_DeptName()
- 作用:获取经理所在部门的名称。
- 参数:无
- 返回值:返回值为字符串类型,表示部门名称。
- 功能:根据员工的部门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
- 继承关系:继承自 Worker 类
- 头文件保护:#pragma once
- 引入标准库:#include<iostream>, <string>
- 命名空间:using namespace std
构造函数
Boss(int id, string name, int dept_id)- 作用:用于创建 Boss 类的对象并初始化对象的属性。
- 参数:
- id:职工的ID,整数类型。
- name:职工的姓名,字符串类型。
- dept_id:职工所在部门的ID,整数类型。
- 功能:通过接收参数,将参数赋值给类的属性,完成对象的初始化。
成员函数
1.void Show_Info()
- 作用:显示总裁的个人信息。
- 参数:无
- 功能:打印总裁对象的职工ID、姓名和所在部门ID等信息。2.string Get_DeptName()
- 作用:获取总裁所在部门的名称。
- 参数:无
- 返回值:返回值为字符串类型,表示部门名称。
- 功能:根据员工的部门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
一.概述
职工数据链表结点结构:
- WorkerLinkNode 结构体定义了职工数据链表的结点结构,包括职工数据指针和指向下一个结点的指针。
- WorkerDataPtr 是指向职工数据的指针,类型为 Worker*,用于存储职工对象的地址。
- next 是指向下一个结点的指针,类型为 WorkerLinkNode*,用于连接职工数据链表中的结点。
职工数据链表头指针结构:
- header 结构体定义了职工数据链表的头指针结构,包括记录链表结点数的变量和指向第一个结点的指针。
- worker_num 是记录当前链表的结点数(职工人数)的变量,类型为 int。
- next 是指向第一个结点的指针,类型为 WorkerLinkNode*。
二.代码
//这是一个职工数据链表的结点结构和头指针结构的声明头文件 #pragma once  //防止头文件重复包含 //职工数据链表结点结构 
typedef struct wlist 
{Worker* WorkerDataPtr;//职工链表结点数据域wlist* next;
}WorkerLinkNode;//职工数据链表头指针结构 
typedef struct header
{int worker_num;  //记录当前链表的结点数(职工人数) WorkerLinkNode* next;
}Header;六 WorkerManager.h
一.概述
WorkerManager 类用于实现职工信息的管理,包含一些成员函数用于对职工进行添加、显示、修改、删除等操作,同时包含一些成员变量用于管理职工链表和文件。
类结构设计:
- WorkerManager 类用于管理职工信息,包含构造函数、成员函数和成员变量。
- 构造函数 WorkerManager 用于初始化 WorkerManager 类的对象。
- 成员函数包括对职工信息的管理操作,如添加职工、显示职工、修改职工、删除职工等。
- 成员变量包括职工链表的头指针 LinkHeader、尾指针 EndPtr,以及用于判断文件是否为空和是否存在的标志。
成员函数说明:
- 构造函数:用于初始化 WorkerManager 对象。
- Get_WorkerNum:读取当前打开文件中的职工人数。
- Init_WorkerLinkList:初始化职工数据链表。
- Show_Menu:显示系统菜单。
- Exit_System:退出系统。
- Add_worker:添加职工功能。
- Save_File:保存员工信息到文件。
- Show_worker:显示职工数据。
- FinD_Worker:查找职工。
- MoD_Worker:修改职工信息。
- Del_Worker:删除职工信息。
- Is_Empty_LinkList:检查当前链表是否为空。
- Sort_Worker:排序职工链表及文件数据。
- Asce_sort:升序排序函数。
- DesE_sort:降序排序函数。
- Clean_File:清空文件数据。
- Is_ExistWorker:根据职工编号或姓名判断职工是否存在。
- Get_Pre:返回当前数据结点的前驱结点。
- Get_Suc:返回当前数据结点的后继结点。
- Store_Array:将链表数据存在临时数组中,用于排序。
- Recom_Link:将排好序的数组数据连接成链表。
- 析构函数:用于释放 WorkerManager 对象的资源。
成员变量说明:
- 职工链表头指针 LinkHeader:用于指向职工链表的头结点。
- 职工链表尾指针 EndPtr:用于指向职工链表的尾结点。
- 判断文件是否为空标志 File_IsEmpty:用于表示当前打开的文件是否为空。
- 判断文件是否存在标志 File_IsExist:用于表示要操作的文件是否存在。
使用指南:
- 在使用 WorkerManager 类时,需要创建一个 WorkerManager 对象并调用相应的成员函数,可以实现对职工信息的管理操作,如添加职工、显示职工、修改职工、删除职工等。
二.代码
#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; 
};
相关文章:
二.自定义头文件
一.Worker.h 1.1概述 - 类名:Worker - 继承关系:所有其他类(Employee、Manager、Boss)都继承自该抽象类 - 头文件保护:使用 pragma once 防止头文件重复包含 - 引入标准库:包含 <iostream> 和 <st…...
 
【AIGC】Stable Diffusion之模型微调工具
推荐一款好用的模型微调工具,cybertron furnace 是一个lora训练整合包,提供训练 lora 模型的工具集或环境。集成环境包括必要的依赖项和配置文件、预训练脚本,支持人物、二次元、画风、自定义lora的训练,以简化用户训练 lora 模型…...
 
探索未来科技前沿:深度学习的进展与应用
深度学习的进展 摘要:深度学习作为人工智能领域的重要分支,近年来取得了巨大的进展,并在各个领域展现出惊人的应用潜力。本文将介绍深度学习的发展历程、技术原理以及在图像识别、自然语言处理等领域的应用,展望深度学习在未来的…...
PTA | Wifi密码
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答…...
Linux中gdb使用说明书
首先我们要使用gdb,必须明白gdb使用范围: 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项(gcc/g) 其次,我们就要来学习gdb使用的一些命令了: list/l 行号:显…...
 
LInux——开发工具的使用
目录 Linux软件包管理器 yum rzsz Linux编辑器——vim vim的使用 vim的基本操作 命令模式的常见命令 底行模式的常见命令 vim是需要配置的 Linux编译器——gcc/g 预处理 编译 汇编 链接 函数库 Linux项目自动化构建工具 make/makefile make原理 项目清理 Linux调试器g…...
 
沁恒CH32V30X学习笔记03--64位systick
systick CH32F2x 系列产品Cortex-M3 内核自带了一个 24 位自减型计数器(SysTick timer)。支持 HCLK 或 HCLK/8 作为时基,具有较高优先级别(6)。一般可用于操作系统的时基。 CH32V3x 系列产品内核自带了一个 64 位加减计数器(SysTick),支持 HCLK 或者 HCLK/8 作为时基,…...
 
【JavaEE】IP协议
作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…...
计算机网络-数据通信基础
目录 前言 一、数据通信基本概念 二、数据通信相关知识1 总结 前言 正在学习计算机网络体系,把每日所学的知识梳理出来,既能够当作读书笔记,又能分享出来和大家一同学习讨论。 一、数据通信基本概念 基本概念:信源、信道、信宿&…...
 
【lesson53】线程控制
文章目录 线程控制 线程控制 线程创建 代码: 运行代码: 强调一点,线程和进程不一样,进程有父进程的概念,但在线程组里面,所有的线程都是对等关系。 错误检查: 传统的一些函数是,成功返回0&…...
 
TypeScript(一):TypeScript基本理解
TypeScript基本理解 为什么使用TS JavaScript发展至今,没有进行数据类型的验证而我们知道,在编程阶段,错误发现的越早越好而TS就解决了JS的这个问题 认识TypeScript TypeScript是拥有类型的JavaScript超级,它可以编译成普通、…...
 
C语言—指针
碎碎念:做指针题的时候我仿佛回到了原点,总觉得目的是为了把框架搭建起来,我胡说的哈31 1.利用指针变量将一个数组中的数据反向输出。 /*1.利用指针变量将一个数组中的数据反向输出。*/#include <stdio.h> #include <time.h> #include <…...
 
c++作业
Shell中的函数(先调用后使用的原则)(没有申明) (Function) 函数名(有没有参数根据调用格式)(不能写任何内容) { 函数体 Return 返回值 } 函数名 ----》…...
什么是tomcat?tomcat是干什么用的?
前言 Tomcat是一个开源的、轻量级的应用服务器,是Apache软件基金会的一个项目。它实现了Java Servlet、JavaServer Pages(JSP)和Java Expression Language(EL)等Java技术,用于支持在Java平台上运行的动态W…...
 
中科院一区论文复现,改进蜣螂算法,Fuch映射+反向学习+自适应步长+随机差分变异,MATLAB代码...
本期文章复现一篇发表于2024年来自中科院一区TOP顶刊《Energy》的改进蜣螂算法。 论文引用如下: Li Y, Sun K, Yao Q, et al. A dual-optimization wind speed forecasting model based on deep learning and improved dung beetle optimization algorithm[J]. Ener…...
C# 如何实现一个事件总线
EventBus(事件总线)是一种用于在应用程序内部或跨应用程序组件之间进行事件通信的机制。 它允许不同的组件通过发布和订阅事件来进行解耦和通信。在给定的代码片段中,我们可以看到一个使用C#实现的Event Bus。它定义了一些接口和类来实现事件…...
 
Python学习路线图
防止忘记,温故知新 进阶路线...
作业2.14
chgrp: 只能修改文件的所属组 chgrp 新的组 文件名 要求:修改的目标组已经存在 chown: chown 新的用户名 文件名 sudo chown root :1 将文件1的所属组用户和所属组用户都改为root sudo chown root:ubuntu 1 将文件1的所属用户…...
基于python+django+mysql的小区物业管理系统
该系统是基于pythondjango开发的小区物业管理系统。适用场景:大学生、课程作业、毕业设计。学习过程中,如遇问题可以在github给作者留言。主要功能有:业主管理、报修管理、停车管理、资产管理、小区管理、用户管理、日志管理、系统信息。 演示…...
控制与状态机算法
控制与状态机算法是计算机科学、电子工程和自动化领域中常用的一种设计工具,它用来描述一个系统的行为,该系统在不同时间点可以处于不同的状态,并且其行为取决于当前状态以及输入的信号或事件。状态机算法的核心概念包括: 状态(State):系统的任何可能配置。每个状态代表…...
 
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
 
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
 
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
 
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
 
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...
