c++怎么实现值机系统
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,今天小编给大家分享一下c++怎么实现值机系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
千家信息网最后更新 2025年11月07日c++怎么实现值机系统
今天小编给大家分享一下c++怎么实现值机系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
需求分析,编程思路
结构体、类对象,座位
按照题目的描述,我们对于一个座位类,其至少有4个属性,所以我们实现的思路有:
1、根据菜单中的c)按字母顺序(编号)来显示座位表,所以我们可以使用字符形式来存储编号;
2、使用一个bool值来判断座位是否被预定;
3、使用两个字符串分别表示预定人的性和名。
然后由于题目中,一共有12个座位,我们不妨使用一个座位数组,作者在代码使用了类嵌套的手法,当时是想通过座位表类对象指针去访问节省传入空间,同时,由于后边的统计座位数量的时候的会比较好用。
初始化
创建座位表对象时,不妨对其初始化,用一个循环按A—L赋值给座位表的对应对象座位编号属性赋值。
功能实行,菜单
1、菜单显示,和之前做过的通讯录差不多,只需要在外部封装一个函数,循环调用即可,同时为了一定的视觉效果,每次循环做一次按任意键继续 + 清屏 操作。
2、调用结构,首先如上面提到的,循环,然后使用另一个判别分支结构——switch,每个选项对应一个函数调用。
3、删除座位和预定座位的功能实现逻辑:
对于删除,需要注意判断是否座位匹配(即此时座位是否空,和客户姓名是否匹配)
对于预定,则需要判断输入是否合乎要求(是否座位编号是空座)
代码
#include#include using namespace std;#define Max_size 12// 座位类class Seat{public: char number; // 座位编号 A - L bool is_empty; // 判断是否空 false-满,true-空 string name; // 预定人的名 string lastname; // 预定人的姓 };// 座位表--座位数组class seats_table{public: // 座位表 Seat Seats[Max_size]; // 座位表中实际座位被坐的数量 int m_size;};// 菜单显示void show_menu(){ cout << "To choose a functions, enter its letter label:" << endl << "a) Show number of empty seats" << endl << "b) Show list of empty seats" << endl << "c) Show alphabetical list of seats" << endl << "d) Assign a customer to seat assignment" << endl << "e) Delete a seat assignment" << endl << "f) Quit" << endl;}// 显示空座的数量void show_num_of_empty(seats_table* Seats){ cout << "Numer of empty seats: " << Max_size - Seats->m_size << endl; system("pause"); // 任意键继续 system("cls"); // 清屏操作}// 显示空座列表即显示座位编号void show_Listofempty(seats_table* S){ cout << "List of empty seats:" << endl; for (int i = 0; i < Max_size; ++i) { if (S->Seats[i].is_empty) { cout << S->Seats[i].number << "\t"; } } cout << endl; /*system("pause"); system("cls");*/}// 按字母顺序输出座位列表(即输出所有(12个)座位的信息)void show_ListofSeats(seats_table* St){ cout << "List of Seats:" << endl; for (int i = 0; i < Max_size; ++i) { cout << St->Seats[i].number << "\t"; if (St->Seats[i].is_empty) { cout << "Empty" << endl; } else { cout << "Not empty" << "\t" << St->Seats[i].name << "\t" << St->Seats[i].lastname << endl; } } system("pause"); system("cls");}// Assign a customer to a seat assignment(就是订座)void assign_seats(seats_table* St){ // 调用一下显示空座列表函数 show_Listofempty(St); char judge; do { // 输出提示信息 cout << "Please choose the num of seat you want choose:" << endl; char sel; cin >> sel; // 先判断是否是正确输入 if (sel < 'A' || sel > 'L') { cout << "Input Error!" << endl; } else { // 再判断该座位是否为空座 if (!St->Seats[sel - 'A'].is_empty) { // 非空 cout << "The seat is not empty!" << endl; } else { // 按照字母编号将对应座位置人(即非空,置否),并将实际座位(非空座)总数+1 St->Seats[(int)(sel - 'A')].is_empty = false; St->m_size++; // 输出提示信息(提醒用户输入名字) cout << "Please input your name:" << endl; string na; cin >> na; St->Seats[(int)(sel - 'A')].name = na; cout << "Please input your lastname:" << endl; string ln; cin >> ln; St->Seats[(int)(sel - 'A')].lastname = ln; // 输出订票成功的提示 cout << "Successful reservation!" << endl; } } cout << "Continue? (Y/N)" << endl; cin >> judge; } while (judge == 'Y'); system("pause"); system("cls");}// delete a seat assignment(删除一个座位的合约)// 说实话,这个机制有点问题,应该不是给客户操作, 应该是工作人员操作void d_seat(seats_table* St){ char num; char judge; do { // 输出提示信息(要删除的座位编号) cout << "Please input the number(A-L) of seat you want delete:" << endl; cin >> num; // 先判断是否是正确输入 if (num < 'A' || num > 'L') { cout << "Input Error!" << endl; } else { // 判断是否是空座 // 空座 if (St->Seats[num - 'A'].is_empty) { cout << "The seat is empty." << endl; } else { cout << "Please input your name and lastname:" << endl; string na, lna; cin >> na >> lna; // 判断座位的名字和姓是否匹配 if (St->Seats[num - 'A'].name == na && St->Seats[num - 'A'].lastname == lna) { St->Seats[num - 'A'].is_empty = true; St->m_size--; St->Seats[num - 'A'].name = ""; St->Seats[num - 'A'].lastname = ""; cout << "Seat withdrawal succeeded!" << endl; } else { cout << "The name or lastname is not matchied!" << endl; } } } cout << "Continue? (Y/N)" << endl; cin >> judge; } while (judge == 'Y'); system("pause"); system("cls");}int main(){ seats_table S; // 初始化,实际被坐的座位为0 S.m_size = 0; // 循环,初始化座位的编号(A - L),并全部置空 for (int i = 0; i < Max_size; i++) { // 97--'A' S.Seats[i].number = (char)(i + 65); S.Seats[i].is_empty = true; } // 声明选择变量 char select = 'a'; // 循环显示菜单进行操作 while (1) { // 菜单调用 show_menu(); bool b = false; cin >> select; switch (select) { case 'a': show_num_of_empty(&S); break; case 'b': show_Listofempty(&S); system("pause"); system("cls"); break; case 'c': show_ListofSeats(&S); break; case 'd': assign_seats(&S); break; case 'e': d_seat(&S); break; // 放弃操作,退出循环(while循环) case 'f': b = true; break; // 其他情况 default: cout << "Input error!" << endl; system("pause"); system("cls"); } if (b) { break; } } system("pause"); return 0;}
以上就是"c++怎么实现值机系统"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
座位
座位表
循环
输出
信息
对象
知识
篇文章
菜单
提示
输入
函数
数量
结构
值机
系统
c++
代码
内容
功能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
ibm服务器阵列卡推荐
手机如何设置数据不在服务器上
服务器能够更换cpu升级吗
云都网络技术
专科学的计算机网络技术能干啥
理财游戏软件开发
网络安全与网络道德教案
定制软件开发要多久
ipad 内置web服务器
浙江服务器阵列卡配置
雨花台区第三方软件开发
win10数据库配置
我国无线网络安全协议标准
邳州创新软件开发答疑解惑
数据库创建表权限
a3睿财数据库下载
低学历网络安全专业就业前景
网络安全宣传周考试答案
网络安全素质教育一级证书
网络安全及信息
无限网络安全的特征有哪些
顺丰科技互联网产品有哪些
软件开发之类的专业
最新的软件开发的工具
深圳兴艺网络技术有限公司
网络安全绘
5g网络技术的
数据库粒度之属性加密
翻译软件开发的三个过程
国家信息网络安全研究中心