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; //密码
};
补充说明:
- 这三个身份基类的共性是都要输入用户名和密码,特性是三个身份的学号、工号都不一样等。
- 在C++中除了继承,还有多态。利用多态技术,写一个纯虚函数,通过纯虚函数operMenu来展示子菜单。
- 由于每种身份的使用权限是不同的,因此每个身份验证登录后,看到的菜单界面都不一样的,但是都有这个接口。
- 因此把接口抽象出来,让子类继承这个父类,调用子菜单接口,从而展示不同身份用户可以看到的子菜单界面。
- 要注意的是,子类必须重写父类的纯虚函数,否则子类也是抽象类 无法实例化对象。
5.2 学生类
5.2.1 功能分析
-
学生类主要功能是可以通过类中成员函数,实现预约实验室操作
-
学生类中主要功能有:
- 显示学生操作的菜单界面
- 申请预约
- 查看自身预约
- 查看所有预约
- 取消预约
5.2.2 类的创建
实现步骤:
- 首先,在头文件以及源文件下创建 student.h 和 student.cpp文件
- 然后,在 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 password);
//显示子菜单 重写父类Identity纯虚函数
virtual void openMenu();
//申请预约
void applyOrder();
//查看自身预约
void showmyOrder();
//查看所有预约
void showallOrder();
//取消预约
void cancleOrder();
//自身特性
int 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<iostream>
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<iostream>
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、姓名、密码
所有身份类创建完毕: