C++ 机房预约系统(二):身份抽象类创建——学生类、老师类、管理员类创建与具体实现
创始人
2025-05-31 16:03:27
0

5、 身份抽象基类创建

5.1 身份的基类

实现步骤:

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

身份基类代码展示:

  • Identity.h中添加如下代码:
#pragma once
#include
using namespace std;//身份抽象类
class Identity
{
public://操作菜单virtual void operMenu() = 0;string m_Name; //用户名string m_Pwd;  //密码
};

补充说明:

  • 这三个身份基类的共性是都要输入用户名和密码,特性是三个身份的学号、工号都不一样等。
  • 在C++中除了继承,还有多态。利用多态技术,写一个纯虚函数,通过纯虚函数operMenu来展示子菜单。
  • 由于每种身份的使用权限是不同的,因此每个身份验证登录后,看到的菜单界面都不一样的,但是都有这个接口。
  • 因此把接口抽象出来,让子类继承这个父类,调用子菜单接口,从而展示不同身份用户可以看到的子菜单界面。
  • 要注意的是,子类必须重写父类的纯虚函数,否则子类也是抽象类 无法实例化对象。

5.2 学生类

5.2.1 功能分析

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

  • 学生类中主要功能有:

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

5.2.2 类的创建

实现步骤:

  • 首先,在头文件以及源文件下创建 student.h 和 student.cpp文件
  • 然后,在 student.h 文件中把学生类的框架搭建起来,声明功能成员函数
  • 最后,在 student.cpp文件中把学生类的功能成员函数都写空实现

代码展示-student.h文件:

#pragma once
#include
using namespace std;
#include "identity.h"//学生类
class Student :public Identity
{
public://默认构造Student();//有参构造Student(int id, string name, string password);//显示子菜单 重写父类Identity纯虚函数virtual void openMenu();//申请预约void applyOrder();//查看自身预约void showmyOrder();//查看所有预约void showallOrder();//取消预约void cancleOrder();//自身特性string m_Id;
};

代码展示-student.cpp文件:

#include "student.h"//默认构造
Student::Student()
{
}//有参构造(学号、姓名、密码)
Student::Student(int id, string name, string password)
{
}//显示子菜单
void Student::openMenu()
{
}//申请预约
void Student::applyOrder()
{
}//查看自身预约
void Student::showmyOrder()
{
}//查看所有预约
void Student::showallOrder()
{
}//取消预约
void Student::cancleOrder()
{
}

5.3 老师类

5.3.1 功能分析

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

  • 教师类中主要功能有:

    • 显示教师操作的菜单界面

    • 查看所有预约

    • 审核预约

5.3.2 类的创建

实现步骤:

  • 首先,在头文件以及源文件下创建 teacher.h 和 teacher.cpp 文件
  • 然后,在 teacher.h 文件中把学生类的框架搭建起来,声明功能成员函数
  • 最后,在 teacher.cpp文件中把学生类的功能成员函数都写空实现

代码展示-teacher.h文件:

#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include
using namespace std;
#include "identity.h"class Teacher :public Identity
{
public://默认构造Teacher();//有参构造 (职工编号,姓名,密码)Teacher(int empId, string name, string pwd);//显示子菜单 重写父类Identity纯虚函数virtual void operMenu();//查看所有预约void showAllOrder(); //审核预约void validOrder(); //自身特性 教师编号int m_teaId; 
};

代码展示-teacher.cpp文件:

#include"teacher.h"//默认构造
Teacher::Teacher()
{
}//有参构造 (职工编号,姓名,密码)
Teacher::Teacher(int id, string name, string password)
{
}//显示子菜单 重写父类Identity纯虚函数
void Teacher::openMenu()
{
}//查看所有预约
void Teacher::showallOrder()
{
}//审核预约
void Teacher::validOrder()
{
}

5.4 管理员类

5.4.1 功能分析

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

  • 管理员类中主要功能有:

    • 显示管理员操作的菜单界面

    • 添加账号

    • 查看账号

    • 查看机房信息

    • 清空预约记录

5.4.2 类的创建

实现步骤:

  • 首先,在头文件以及源文件下创建 manager.h 和 manager.cpp文件
  • 然后,在 student.h 文件中把学生类的框架搭建起来,声明功能成员函数
  • 最后,在 student.cpp文件中把学生类的功能成员函数都写空实现,建立所有功能的接口

代码展示-manager.h文件:

#pragma once
#include
using namespace std;
#include "identity.h"class Manager :public Identity
{
public://默认构造Manager();//有参构造(管理员姓名,密码)Manager(string name, string pwd);//显示子菜单 重写父类Identity纯虚函数virtual void operMenu();//添加账号  void addPerson();//查看账号void showPerson();//查看机房信息void showComputer();//清空预约记录void cleanFile();
};

代码展示-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::cleanFile()
{
}

注意:

  • 所有身份类都要继承父类,身份子类中重写Identity的纯虚函数openMenu
  • 提供默认构造和有参构造,在实例化时可以通过有参构造传入不同身份的id、姓名、密码

所有身份类创建完毕:
在这里插入图片描述

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
JAVA多线程知识整理 Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类&#...
【洛谷 P1090】[NOIP... [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G ...
国民技术LPUART介绍 低功耗通用异步接收器(LPUART) 简介 低功耗通用异步收发器...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
中国版ChatGPT在哪些方面... 目录 一、中国巨大的市场需求 二、中国企业加速创新 三、中国的人工智能发展 四、企业愿景的推进 五、...
报名开启 | 共赴一场 Flu... 2023 年 1 月 25 日,Flutter Forward 大会在肯尼亚首都内罗毕...
汇编00-MASM 和 Vis... Qt源码解析 索引 汇编逆向--- MASM 和 Visual Studio入门 前提知识ÿ...
【简陋Web应用3】实现人脸比... 文章目录🍉 前情提要🌷 效果演示🥝 实现过程1. u...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
windows安装JDK步骤 一、 下载JDK安装包 下载地址:https://www.oracle.com/jav...
分治法实现合并排序(归并排序)... 🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨...
在linux上安装配置node... 目录前言1,关于nodejs2,配置环境变量3,总结 前言...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
Linux内核进程管理并发同步... 并发同步并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理...
opencv学习-HOG LO... 目录1. HOG(Histogram of Oriented Gradients,方向梯度直方图)1...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...