这是帮我同学写的一个c++作业,说实话好久没写过c++都有些生疏了。但他们好像还没学面向对象编程,所以只能是简单的结构体和输入输出的逻辑。
题目要求:
编写一个航空订票程序:
假设一等5个舱座位,编号为1 ~ 5,经济舱20个座位,编号为1 ~ 20
具体要求如下:
当程序开始时,提示输入乘客姓名,一个名字只能订一个座位,如果该名字已经订过座位了,则提示该乘客座位已定及座位号,否则提示输入舱位类型;
当输入舱位类型后,如果该舱位已全部订出,则提示此舱全部订完,重新选择舱位类型,否则显示可以选择的座位号,注意已经被订出的座位号不能出现,提示输入座位号;
舱位类型:只能输入“F”或“E”,一等舱为F,经济舱为E,如果输入其它字符则提示输入无效。
座位号:只能输入前面列出可以选择的座位号,若输入其它则提示输入无效。
程序可以为多个乘客订的票,直到输入名字为“。”;
最后程序按照舱位类型与座位号排序打印出所有订票信息(座位号及对应乘客姓名)
最终实现效果:
1,变量
不过既然提到了结构体用来存储票的信息(其实这就是面向对象思想的早期)。联系实际,一个结构体代表一个事物,结构体中的字段代表这个事物的属性;这样的话,我们可以提取出两个结构体:座位和座位票机票,由于题目给定总共25个座位,意味着25张票,则将它们声明成全局变量。
//座位,那么座位有3个基本属性:座位类型(F/E),座位编号,座位预定状态(是否已经被预定) {struct座位 char类型; int数; bool isReservation; [25]}席位;//票,票有两个属性,即票需要表明:谁预定了哪个座位,第一个座位就是我们前面定义的那个结构体。 struct票{ 座椅座位; 字符串passenger_name; [25]}门票; >之前2,函数
我们需要将一些输出输入的操作提取成函数,简化我们的代码,这里之所以将输入提取成输入()函数,是因为我们需要不断输入,即使出错,所以为了便于递归调用就封装成函数;
bool检查(字符串名称);//检测是否已购的票 无效输入();//用于执行输入 空白printSeat (char seatType);//显示剩余座位 无效预订(字符串名称、int seatNumber char seatType);//购票 空白printticket(字符串名称);//显示已购票信息 空白printError();//显示输入不合法 >之前3,主体逻辑
主要函数非常简单,首先需要将座位和票信息初始化,即将它们编的号,预定状态全为“未预定”,然后执行输入,一个虽然循环,如果不符合条件就直接跳出,执行printticket()打印出所有的订票信息;
int main () {//初始化舱位和票 (int i=0; i<25;我+ +){ 如果(i<5) { 座位[我].type=' F '; 座位[我].number=i + 1; 其他}{ 座位[我].type=癊”; 座位[我].number=i + 1 - 5; } 座位[我].isReservation=false; 票[我][我].seat=席位; 票[我]。passenger_name=" "; } cout<& lt;“=================================================" & lt; & lt; endl; cout<& lt;“欢迎使用CT票务系统”& lt; & lt; endl; cout<& lt;“=================================================" & lt; & lt; endl; cout<& lt;“乘客姓名:”; ,而(cin>的在名字){ 如果(name==啊!?; 如果(surplusF + surplusE==0) { cout<& lt;“\ n很遗憾所有票已购完! \ n”; 打破; } 如果(检查(名字)){ cout<& lt;“\ n您已购的票,购票信息:\ n”& lt; & lt; endl; printticket(名称); 其他}{ cout<& lt;“\ n舱位类型F:一等舱E:经济舱\ n”; 输入(); } cout<& lt;“\ n乘客姓名:”; } printticket (" "); 返回0; } >之前4,具体函数实现
具体的函数实现逻辑我就不讲了,就看代码吧~
5,完整代码:
main.cpp
# include使用名称空间性病;//定义全局变量,舱位,票,各类型舱位剩余数,便于其它函数全局访问 int surplusF=5; int surplusE=20; int国旗=0; char seat_type; int seatNumber; 字符串名称;//座位 {struct座位 char类型; int数; bool isReservation; [25]}席位;//票 struct票{ 座椅座位; 字符串passenger_name; [25]}门票; bool检查(字符串名称);//检测是否已购的票 无效输入();//用于执行输入 空白printSeat (char seatType);//显示剩余座位 无效预订(字符串名称、int seatNumber char seatType);//购票 空白printticket(字符串名称);//显示已购票信息 空白printError();//显示输入不合法 int main () {//初始化舱位和票 (int i=0; i c++实现航空订票程序