c++学习笔记-STL案例-机房预约系统2-创建身份类

前言

衔接上一篇“c++学习笔记-STL案例-机房预约系统1-准备工作”,本文主要包括:创建身份类,建立了整个系统的框架,Identity基类,派生类:Sudent、Teacher、Manager,基类无实现源文件,派生类实现源文件创建了功能实现函数接口。


目录

5 创建身份类

5.1 身份的基类

5.2 学生类

5.2.1 功能分析

5.2.2 类的创建

5.3 老师类

5.3.1 功能分析

5.3.2 类的创建

5.4 管理员类

5.4.1 功能分析

5.4.2 类的创建


5 创建身份类

5.1 身份的基类

  • 在整个系统中,有三种身份,分别为:学生代表、老师、管理员
  • 三种身份有其共性,因此我们可以将三种身份抽象出一个身份基类identity
  • 在头文件下创建identity.h文件

identity.h中添加如下代码:

#pragma once
#include<iostream>
using namespace std;

//身份抽象类
class Identity
{
public:

	//操作菜单  纯虚函数  
	virtual void operMenu() = 0;

	string m_Name;//用户名
	string m_Pwd;//密码

};
  • virtual void operMenu() = 0; //纯虚函数,每个身份都有自己的菜单界面,这里留个接口让子类复用,实现多态效果
  • 子类必须重写父类中的纯虚函数,否则子类也是抽象类,无法实例化对象
  • 基类只有.h文件无实现的源文件,子类有“.h”和实现的“.cpp”源文件
  • 派生类:学生类、老师类、管理员类

5.2 学生类

5.2.1 功能分析

(1)学生类主要功能是可以通过类中的成员函数,实现预约实验室操作

(2)学生类主要功能:

  • 显示学生操作的菜单界面
  • 申请预约
  • 查看自身预约
  • 查看所有预约
  • 取消预约

5.2.2 类的创建

  • 在头文件以及源文件下创建student.h和student.cpp文件

  • student.h中添加代码:
#pragma once
#include<iostream>
using namespace std;
#include"identity.h"

//学生类
class Student :public Identity
{
public:
	//默认构造
	Student();

	//有参构造(学号、姓名、密码)
	Student(int id, string name, string pwd);
	
	//菜单界面
	virtual void operMenu();

	//申请预约
	void applyOrder();

	//查看我的预约
	void showMyOrder();

	//查看所有预约
	void showAllOrder();

	//取消预约
	void cancelOrder();

	//学生学号
	int m_Id;

};
  •  student.cpp中添加代码:
#include"student.h"

//构造函数
Student::Student()
{

}

//有参构造 参数:学号、姓名、密码
Student::Student(int id, string name, string pwd)
{

}

//菜单界面
void Student::operMenu()
{

}

//申请预约
void Student::applyOrder()
{

}

//查看我的预约
void Student::showMyOrder()
{

}

//查看所有预约
void Student::showAllOrder()
{

}

//取消预约
void Student::cancelOrder()
{
}

5.3 老师类

5.3.1 功能分析

(1)教师类主要功能是查看学生的预约,并进行审核

(2)教师类中的主要功能:

  • 显示教师操作的菜单界面
  • 查看所有预约
  • 审核预约

5.3.2 类的创建

  • 在头文件以及源文件下创建teacher.h和teacher.cpp文件
  • teacher.h中添加代码:
#pragma once
#include<iostream>
using namespace std;
#include"identity.h"

class Teacher:public Identity
{
public:
	//构造函数
	Teacher();
	
	//有参构造  参数:职工号,姓名,密码
	Teacher(int empid, string name, string pwd);

	//菜单界面
	virtual void operMenu();

	//查看所有预约
	void showAllOrder();

	//审核预约
	void validOrder();

	//职工号
	int m_EmpId;

};
  • teacher.cpp中添加代码:
#include"teacher.h"

//构造函数
Teacher::Teacher()
{

}

//有参构造  参数:职工号,姓名,密码
Teacher::Teacher(int empid, string name, string pwd)
{

}

//菜单界面
void Teacher::operMenu()
{

}

//查看所有预约
void Teacher::showAllOrder()
{

}

//审核预约
void Teacher::validOrder()
{

}

//职工号
int m_EmpId;

5.4 管理员类

5.4.1 功能分析

(1)管理员类的主要功能是对学生和老师账户进行管理,查看机房信息以及清空预约记录

(2)管理员类中的主要功能有:

  • 显示管理员操作的菜单界面
  • 添加账号
  • 查看账号
  • 查看机房信息
  • 清空预约记录

5.4.2 类的创建

在头文件以及源文件下创建manager.h和manager.cpp文件

  • manager.h中添加代码:
#pragma once
#include<iostream>
using namespace std;
#include"identity.h"

class Manager :public Identity
{
public:
	//构造函数
	Manager();

	//有参构造 参数:管理员姓名、密码
	Manager(string name, string pwd);

	//菜单界面
	virtual void operMenu();

	//添加账号
	void addPerson();

	//查看账号
	void showPerson();

	//查看机房
	void showComputer();

	//清空预约记录
	void clearFile();

};
  • manager.cpp中添加代码:
#include"manager.h"

//构造函数
Manager::Manager()
{

}

//有参构造 参数:管理员姓名、密码
Manager::Manager(string name, string pwd)
{


}

//菜单界面
void Manager::operMenu()
{

}

//添加账号
void Manager::addPerson()
{

}

//查看账号
void Manager::showPerson()
{

}

//查看机房
void Manager::showComputer()
{

}

//清空预约记录
void Manager::clearFile()
{

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/316123.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用通俗易懂的方式讲解:涨知识了,这篇大模型 LangChain 框架与使用示例太棒了

一图胜千言&#xff0c;LangChain已经成为当前 LLM 应用框架的事实标准&#xff0c;本篇文章就来对 LangChain 基本概念以及其具体使用场景做一个整理。 文章目录 用通俗易懂的方式讲解系列技术交流LangChain 是什么LangChain 的主要组件Model I/OLanguage ModelPromptsOutput…

代码随想录 Leetcode19. 删除链表的倒数第 N 个结点

题目&#xff1a; 代码(首刷自解 2024年1月13日&#xff09;&#xff1a; class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {if(head nullptr) return nullptr;ListNode* dummyHead new ListNode(0,head);ListNode* pre dummyHead;ListNode* c…

做网页抓取时如何处理验证码

网络爬虫是自动从网站提取数据的过程&#xff0c;它已经彻底改变了企业获取信息和获取洞察的方式。然而&#xff0c;为了防止自动化机器人访问网站&#xff0c;CAPTCHA旨在阻碍网络爬虫的工作。在本文中&#xff0c;我们将探讨处理CAPTCHA的有效策略&#xff0c;并介绍Capsolve…

基于Wi-Fi的室内空气质量数据采集与分析系统(论文+源码)

1. 系统设计 当前人们对家居环境的要求越来越高&#xff0c;因此本课题设计了一款基于Wi-Fi的室内空气质量数据采集与分析系统 &#xff0c;在功能上设计如下&#xff1a; 可以实时检测当前环境的温湿度&#xff0c;CO2&#xff0c;烟雾&#xff0c;PM2.5等众多参数&#xff1…

【力扣·每日一题】2182.构造限制重复的字符串(模拟 贪心 优先队列 C++ Go)

题目链接 题意 给你一个字符串 s 和一个整数 repeatLimit &#xff0c;用 s 中的字符构造一个新字符串 repeatLimitedString &#xff0c;使任何字母 连续 出现的次数都不超过 repeatLimit 次。你不必使用 s 中的全部字符。 返回 字典序最大的 repeatLimitedString 。 如果…

JQuery过滤选择器-如何让某个元素换颜色(俩种方式)

目录 一、过滤选择器&#xff1a;eq二、过滤选择器 : lt 前言 : 在做项目时经常会遇到列表或者选择某个元素 一、过滤选择器&#xff1a;eq :eq (index)匹配一个给定索引值的元素 $("ul li:eq(0)").css("color","red");二、过滤选择器 : lt …

改进YOLOv8注意力系列四:结合中心化特征金字塔EVCBlock、大核卷积注意力LKA_Attention、全局注意力MobileViTAttention

改进YOLOv8注意力系列三:结合CrissCrossAttention、ECAAttention、EMAU期望最大化注意力 代码大核卷积注意力LKA_Attention中心化特征金字塔EVCBlock全局注意力MobileViTAttention加入方法各种yaml加入结构本文提供了改进 YOLOv8注意力系列包含不同的注意力机制以及多种加入方…

估算监控最低可以存储的时长

监控可以存储的时长&#xff0c;主要取决于码率&#xff0c;知道了码率就知道一天可以的视频产生多少视频数据。 以乐橙官网给出的计算&#xff0c;我们可以推出这个设备8MP本地的录像码率大概在4Mbps左右。 同样的我们这里附一张表格&#xff0c;大家可以根据这个来估算存储…

多级缓存架构(五)缓存同步

文章目录 一、Canal服务1. mysql添加canal用户2. mysql配置文件3. canal配置文件 二、引入依赖三、监听Canal消息四、运行五、测试 通过本文章&#xff0c;可以完成多级缓存架构中的缓存同步。 一、Canal服务 1. mysql添加canal用户 连接在上一次multiCache项目中运行的mys…

Excel学习

文章目录 学习链接Excel1. Excel的两种形式2. 常见excel操作工具3.POI1. POI的概述2. POI的应用场景3. 使用1.使用POI创建excel2.创建单元格写入内容3.单元格样式处理4.插入图片5.读取excel并解析图解POI 4. 基于模板输出POI报表5. 自定义POI导出工具类ExcelAttributeExcelExpo…

【Maven】002-Maven 安装和配置

【Maven】002-Maven 安装和配置 文章目录 【Maven】002-Maven 安装和配置一、官网1、官网2、历史版本列表 二、下载 Maven 3.8.8 版本1、进入 Maven 3.8.8 版本发行说明页2、进入下载页3、下载4、下载得到 apache-maven-3.8.8-bin.zip 三、Maven 安装1、将安装包解压到想放置的…

Java面试基础|数据结构 -实时更新

1.HashMap和ConcurrentHashMap介绍 核心是一个Node数组&#xff0c;数据结构与hashMap相似 使用CAS操作来实现无锁的更新&#xff0c;提高了并发性。当更新节点时&#xff0c;它会使用CAS来替换节点的值或链接&#xff0c;如果CAS失败&#xff0c;表明有其他线程也在进行修改&a…

7. 分页插件

对于分页功能&#xff0c;MyBatisPlus 提供了分页插件&#xff0c;只需要进行简单的配置即可实现&#xff1a; Configuration public class MybatisPlusConfig {// 旧版 // Bean // public PaginationInterceptor paginationInterceptor() { // PaginationIntercept…

【排序算法】一、排序概念和直接插入排序(C/C++)

「前言」文章内容是排序算法之直接插入排序的讲解。&#xff08;所有文章已经分类好&#xff0c;放心食用&#xff09; 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、排序概念的介绍二、直接插入排序2.1 原理2.2 代码实现&#xff08;C/C&#xf…

都是取所有行的某列数据,这个array[:,2]和array[:,2:3]有什么不同呢

效果图 代码 import numpy as nplist [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25] ] array np.array(list) print(array) 输出&#xff1a; [[ 1 2 3 4 5][ 6 7 8 9 10][11 12 13 14 15][16 17 18 19 20][21 22 23 24 25]]a arr…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-8 状态观测器设计 Linear Observer Design

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-8 状态观测器设计 Linear Observer Design

vue2使用Lottie

文章目录 学习链接1.安装依赖2.创建lottie组件3.在相对应的页面应用4.相关data.json5.测试效果 学习链接 原文链接&#xff1a;lottie在vue中的使用 lottie官网&#xff1a;https://lottiefiles.com/ 1.安装依赖 npm install lottie-web2.创建lottie组件 <template>…

C++力扣题目513找树左下角的值

给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 思路 本题要找出树的最后一行的最左边的值。此时大家应该想…

poi解析word取参数方法${参数名}获取参数异常处理(2024-01-12)

poi 读取word模板&#xff0c;确保 ${参数名} 在一个XWPFRun XWPFDocument读取word模板&#xff0c;经常遇到 ${参数名} 没有被识别在一个XWPFRun中&#xff0c;导致参数解析异常如法实现参数替换。 这里只是介绍word模板参数解析问题&#xff0c;让word格式如何转换为可以正常…

[易语言]易语言部署yolox的onnx模型

【官方框架地址】 https://github.com/Megvii-BaseDetection/YOLOX 【算法介绍】 YOLOX是YOLO系列目标检测算法的进一步演变和优化。它由Megvii Technology的研究团队开发&#xff0c;是一个高性能、可扩展的对象检测器。YOLOX在保留快速处理速度的同时&#xff0c;通过引入一…