C++ 机房预约系统(三):登录模块——全局文件添加、全局函数登录函数封装、学生、老师、管理员的登陆具体实现
创始人
2025-05-31 16:51:28
0

6、 登录模块

6.1 全局文件添加

功能描述:

  • 不同的身份可能会用到不同的文件操作,我们可以将所有的文件名定义到一个全局的文件中
  • 在头文件中添加 globalFile.h 文件,把常用文件的文件名写成纯大写的宏常量
  • 在同级目录下创建以下txt文件

代码展示:

#pragma once //管理员文件
#define ADMIN_FILE     "admin.txt"
//学生文件
#define STUDENT_FILE   "student.txt"
//教师文件
#define TEACHER_FILE   "teacher.txt"
//机房信息文件
#define COMPUTER_FILE  "computerRoom.txt"
//订单文件
#define ORDER_FILE     "order.txt"

6.2 登录函数封装

功能描述: 根据用户的选择,进入不同的身份登录

实现步骤:

  1. 在机房预约系统.cpp文件中添加全局函数 void LoginIn(string fileName, int type)
  2. 全局函数 void LoginIn(string fileName, int type)具体实现如下:
  • 创建父类指针,并初始化为空指针。利用多态原理,通过父类指针创建子类对象
  • 读取身份文件前,要判断文件是否存在,不存在则返回,存在则初始化不同身份的信息(学号/工号、姓名、密码)
  • 让用户输入信息,学生:学号、姓名、密码;老师:工号、姓名、密码;管理员:姓名、密码
  • 根据不同身份,验证身份的信息是否正确,并且提示用户
  1. 在机房预约系统.cpp文件的main函数中,每一个switch下都调用LoginIn函数,并传入对应的参数
  2. 注意包含文件名头文件、身份抽象基类头文件、文件操作头文件

LoginIn全局函数参数说明:

  • fileName — 操作的文件名,不同身份操纵的文件不一样
  • type — 登录的身份,不同身份的子菜单、权限等也不一样,设定 1代表学生、2代表老师、3代表管理员

LoginIn全局函数代码展示:

#include "Identity.h"
#include 
#include "globalFile.h"//全局函数 登录功能 参数1-操作文件名 参数2-操作身份类型
void LoginIn(string filename, int type)
{Identity* person = NULL;//父类指针,指向子类对象 创建子类对象//读文件ifstream ifs;ifs.open(filename, ios::in);//文件是否存在if (!ifs.is_open()){cout << "文件不存在!" << endl;ifs.close();return;}//接收用户信息int id = 0;string name;string password;//输入身份信息if (type == 1){cout << "请输入学号:";cin >> id;}else if (type == 2){cout << "\n请输入工号:";cin >> id;}cout << "\n请输入姓名:";cin >> name;cout << "\n请输入密码:";cin >> password;//身份验证if (type == 1){//学生身份验证}else if (type == 2){//老师身份验证}else if (type == 3){//管理员身份验证}cout << "验证登陆失败!" << endl;system("pause");system("cls");}

main函数提供不同登录接口,注意包含文件名的头文件

6.3 学生登录实现

  1. 在student.txt文件中添加两条学生信息,用于测试
  2. 在Login函数的学生分支中加入验证学生身份代码:
  • 首先读取文件记录的学生的学号、姓名、密码,再和学生输入的学号、姓名、密码进行比较,可以测试是否成功读取文件数据
  • 如果信息一致,提示用户验证成功,并创建一个学生类对象

添加信息:

  • 第一列 代表 学号
  • 第二列 代表 学生姓名
  • 第三列 代表 密码

验证学生身份代码展示:

		//身份验证if (type == 1)//学生身份验证{//读取学生文件信息int fid;string fname;string fpwd;//读一行的信息while (ifs >> fid && ifs >> fname && ifs >> fpwd){读取测试//cout << fid << endl;//cout << fname << endl;//cout << fpwd << endl;//cout << endl;//与用户输入的信息对比if (fid == id && fname == name && fpwd == password){cout << "学生登录验证成功!" << endl;system("pause");system("cls");person = new Student(id, name, password);//进入学生身份子菜单return;}}}

测试效果图

6.4 教师登录实现

  1. 在teacher.txt文件中添加一条老师信息,用于测试
  2. 在Login函数的老师分支中加入验证老师身份代码:
  • 首先读取文件记录的老师的工号、姓名、密码,再和输入的工号、姓名、密码进行比较,可以测试是否成功读取文件数据
  • 如果信息一致,提示用户验证成功,并创建一个老师类对象

添加信息:

  • 第一列 代表 教师职工编号
  • 第二列 代表 教师姓名
  • 第三列 代表 密码

验证教师身份代码展示:

else if (type == 2)//老师身份验证{//读取老师文件信息int fid;string fname;string fpwd;//读一行的信息while (ifs >> fid && ifs >> fname && ifs >> fpwd){//与用户输入的信息对比if (fid == id && fname == name && fpwd == password){cout << "教师登录验证成功!" << endl;system("pause");system("cls");person = new Teacher(id, name, password);//进入老师身份子菜单return;}}}

测试效果图

6.5 管理员登录实现

  1. 在teacher.txt文件中添加一条管理员信息,用于测试。由于只有一条管理员,因此没有添加管理员的功能
  2. 在Login函数的管理员分支中加入验证管理员身份代码:
  • 首先读取文件记录的管理员姓名和密码,再和输入的姓名、密码进行比较,可以测试是否成功读取文件数据
  • 如果信息一致,提示用户验证成功,并创建一个管理员类对象

添加信息:
在这里插入图片描述

其中:admin代表管理员用户名,123代表管理员密码

验证管理员身份代码展示:

else if (type == 3)//管理员身份验证{//读取管理员文件信息string fname;string fpwd;//读一行的信息while (ifs >> fname && ifs >> fpwd){//与用户输入的信息对比if (fname == name && fpwd == password){cout << "管理员登录验证成功!" << endl;system("pause");system("cls");person = new Manager(name, password);//进入管理员身份子菜单return;}}}

测试效果图:

相关内容

热门资讯

最新或2023(历届)异地办理... 最新或2023(历届)异地办理身份证流程,多地已实施异地办身份证 此外,天津与河南、江苏与安徽、浙江...
最新或2023(历届)特卖会邀... 特卖会邀请函亲爱的各位邻居:根据大家之前的要求和反馈,咱们组织了宁波50余建材家具家电的品 牌联盟活...
最新或2023(历届)体育活动... 体育活动邀请函范文尊敬的各位爱心网友、博友:多年来,您们对慈善公益事业、弱势群众的真诚关注、关怀,让...
最新或2023(历届)体育活动... 体育活动邀请函模板尊敬的家长朋友:您好!身处在大数据时代与经济全球化背景下,考高分、拼高考已不再是成...
最新或2023(历届)讨论会邀... 讨论会邀请函各位师兄:大家好!12月8日至10日,由北京佛教居士林与北京广化寺联合主办,佛教在线承办...
最新或2023(历届)体验邀请... 体验邀请函尊敬的最新或2023(历届)***************体验会现场将展示********...
最新或2023(历届)体育比赛... 体育比赛邀请函范文尊敬的家长朋友:为实现学校、家庭、社会三维一体的有机整合,让家长进一步了解学校的办...
最新或2023(历届)体育活动... 体育活动邀请函尊敬的家长朋友:您好!身处在大数据时代与经济全球化背景下,考高分、拼高考已不再是成功的...
最新或2023(历届)体育比赛... 体育比赛邀请函各位领导、各位来宾、裁判员、运动员、同志们: 今天,我们在这里隆重举行枝江市“电力杯”...
最新或2023(历届)体验活动... 尊敬的家长朋友:您好!身处在大数据时代与经济全球化背景下,考高分、拼高考已不再是成功的唯一标志。对于...
最新或2023(历届)调研活动... 调研活动邀请函先生/女士:您好!##我们是安徽先生信国际市场研究有限公司,是一家##专业的汽车市场研...
最新或2023(历届)同乡会聚... 同乡会聚餐邀请函经同乡会第二次理事会商议决定,于9月15日举行中秋联谊活动。此次联谊会是希望在昆明的...
最新或2023(历届)调研座谈... 调研座谈会邀请函尊敬的贵宾:当前煤炭行业正处在推进市场化改革的关键时期,进一步完善煤炭价格形成机制的...
最新或2023(历届)调研邀请... 调研邀请函范文饲料行业人力资源管理者:您好!太和顾问诚邀贵公司参加“最新或2023(历届)度饲料行业...
最新或2023(历届)体智能亲... 体智能亲子活动邀请函亲爱的朋友们:五月五,是端午;插艾叶,挂香囊;五彩线,手腕绑;吃粽子,沾白糖;龙...
学术会议邀请函范文大全 wor... 【学术会议邀请函范文大全一】  尊敬的 教授  您好!  由中华中医药学会络病分会主办,河南省中医药...
大学学术会议邀请函 大学学术会...   大学学术会议邀请函【一】  由中华医学会航空航天医学分会暨空军飞行人员健康鉴定专业委员会主办的全...
学术会议邀请函格式范文 学术会... 学术会议邀请函格式  一、寄信人地址、日期。  二、收信人及其地址。  三、尊称:Dear X X ...
医院学术会议邀请函 医院学术会... 医院学术会议邀请函尊敬的主任:  为促进扬州康复事业的发展,加强扬州康复医学领域与外界的学术交流,了...
客户会议邀请函 客户会议邀请函...   客户会议邀请函(一)兹邀请:  参加苏州园发企业管理咨询有限公司在苏州举办的20XX年新年园发客...