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()
{}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】编程练习的解密与实战(四)

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《Python | 编程解码》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 目录 &#x1fa90;1. 初识Python &a…

HTML5 article标签,<time>...</time>标签和pubdate属性的运用

1、<article>...</article>标签的运用 article标签代表文档、页面或应用程序中独立的、完整的、可以独自被外部引用的内容。它可以是一篇博客或报竟杂志中的文章、一篇论坛帖子、一段用户评论或一个独立的插件&#xff0c;或者其他任何独立的内容。把文章正文放在h…

PyTorch安装教程(Win10),含遇到的问题及解决办法

1. 环境准备 首先&#xff0c;打开PyTorch官网&#xff1a;https://pytorch.org/get-started/locally/ 向下可以看到有如下几个条件&#xff1a; Python&#xff1a;PyTorch仅支持Python3.x&#xff0c;不支持Python2.x&#xff1b; Package Manager&#xff1a; Anaconda&am…

TreesVariety

树木品种 - 树木和植物捆绑包。与“植被引擎”兼容的包装 通用和HDRP的树木包在这里 树木品种: ● 支持Unity Wind; ● 11种树木,7种植物; ● Unity树创建器树(可编辑); ● 与内置管道配合使用; ● 支持地形广告牌。 树木: ● 8棵桦树; ● 4块枫木; ● 8块橡木; ●…

【C】volatile 关键字

目录 volatile1&#xff09;基本概念2&#xff09;用途&#xff1a;禁止编译器优化3&#xff09;总结 volatile 1&#xff09;基本概念 const是C语言的一个关键字。 const用于告诉编译器相应的变量可能会在程序的控制之外被修改&#xff0c;因此编译器不应该对其进行优化。 …

element-ui 如何修改el-popconfirm的样式

改造之前效果 改造之后效果 代码&#xff1a; <style lang"scss"> .my-popconfirm {width: 92% !important;height: 130px !important;padding: 14px !important;font-size: 28px !important;.el-popper {font-size: 28px !important;}.el-popconfirm__main {…

【期末考试】网络综合复习宝典

相关链接 网络复习思维导图&#xff08;HCIP&#xff09;https://www.edrawsoft.cn/viewer/public/s/038e2370897928 详述循环冗余校验CRC码https://blog.csdn.net/liht_1634/article/details/124328005?app_version6.2.6&codeapp_1562916241&csdn_share_tail%7B%22…

Linux中Docker数据管理的数据卷及挂载

目录 一、数据管理 1. 讲述 2. 应用场景 二、数据卷的应用 1. 命令 2. tomcat镜像 3. 挂载数据卷 4. 项目部署在数据卷 三、目录挂载 四、完善Tomcat配置 每篇一获 一、数据管理 1. 讲述 Docker 的数据管理主要涉及到两个方面&#xff1a;数据卷&#xff08;Volumes&#xff09…

(学习日记)2024.01.13:一份关于自行车定位的调研 2

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

[开发语言][c++][python]:C++与Python中的赋值、浅拷贝与深拷贝

C与Python中的赋值、浅拷贝与深拷贝 1. Python中的赋值、浅拷贝、深拷贝2. C中的赋值、浅拷贝、深拷贝2.1 概念2.2 示例&#xff1a;从例子中理解1) 不可变对象的赋值、深拷贝、浅拷贝2) 可变对象的赋值、浅拷贝与深拷贝3) **可变对象深浅拷贝(外层、内层改变元素)** 写在前面&…

第九讲 单片机驱动彩色液晶屏 控制RA8889软件:显存操作

单片机驱动TFT彩色液晶屏系列讲座 目录 第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频 第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架 第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化 第四讲 单片机驱动彩色液晶屏 控…

QEMU源码全解析 —— PCI设备模拟(7)

接前一篇文章&#xff1a; 上一回讲解了pci_edu_realize函数中的pci_register_bar函数&#xff0c;本回开始对于edu设备的MMIO读写函数进行解析。 操作系统与PCI设备交互的主要方式是PIO和MMIO。MMIO虽然是一段内存&#xff0c;但是其没有EPT映射&#xff0c;在虚拟机访问设备…