/*
(航空订票系统)、航空公司购买了一台用于航空订票系统的计算机,要求对新系统编程,对每个航班订座(每班10位)。
程序显示下列菜单选项:Please type 1 for "smoking"和Pleas type 2 for nonsmokijng”。
如果输入1,则程序指定吸烟舱位(座位1到5),如果输入2,则程序指定非吸烟舱位(座位6到10)。
程序应打印一个登机牌,表示座位号和是否为吸烟舱位。
用一个单下标数组表示飞机的座位图。
将数组的所有元素初始化为0,表示所有座位都是空的。
订每个座位时,将数组相应元素设置为1,表示该座位已订。
当然,程序不能再订已经订过的座位。
吸烟舱位已满时,应询问可否订非吸烟舱位;同样,非吸烟舱位已满时,应询问可否订吸烟舱位。
如果同意,再相应订座,否则打印信息”Next fight leaves in 3 hours.”。
*/
#include<iostream>
using namespace std;
int showSeat(int sts[],int sn,int type);//验证位置是否被预定
void printCard(int sts[],int sn,int no);//打印预定结果
int main()
{
const int seatNo=10;//每班的座位数
int seatState[seatNo]={0};//当班的座位状态
while(true)
{
cout<<"*******************Welcome To TG AirPort************************"<<endl<<endl<<endl;//系统欢迎信息
cout<<"Please type 1 for Smoking and type 2 for Nonsmoking:";//提示客户两种机舱供选择
int type;//机舱类型编号
cin>>type;//客户输入机舱类型编号
if(type!=1&&type!=2)//判断客户输入是否是合法是输入
{
cout<<"Please type the right number!"<<endl;//客户输入非法,提示、返回
continue;
}
else//客户输入合法,继续
{
int sNo=showSeat(seatState,seatNo,type);//验证客户所选舱位的座位情况,并返回客户预定座位号
if(sNo!=0)//客户预定了座位。=0表示客户预定座位失败
printCard(seatState,seatNo,sNo);//打印客户预定情况
}
}
return 0;
}
int showSeat(int sts[],int sn,int type)//验证客户所选舱位的座位情况,并返回客户预定座位号
{
int sNo=0;//用于保存客户所选座位号
if(type==1)//判断客户所选的是何种舱位
{
if(sts[0]==1&&sts[1]==1&&sts[2]==1&&sts[3]==1&&sts[4]==1)//判断客户所选舱位是否已全部被预定,是,打印提示信息
{
cout<<"smoking passenger compartment is full!"<<endl;
cout<<"May beyou can book nonsmoking passenger compartment"<<endl;
cout<<"Next fight leaves in 3 hours."<<endl;
}
else//否,继续
{
cout<<"The smoking passenger compartment's seat state are:"<<endl;
for(int a=0;a<=4;a++)//显示该舱位已被预定的座位号
{
if(sts[a]!=0)
cout<<"Seat_No."<<a+1<<" has been booked!"<<endl;
}
for(int a=0;a<=4;a++)//显示改舱位剩余的座位号
{
if(sts[a]==0)
cout<<"Seat_No."<<a+1<<" is available!"<<endl;
}
cout<<"Please type the available seat number to book:";//提示用户输入要预定的座位号
cin>>sNo;
if(sNo<1||sNo>5)//验证客户输入是否合法,否,继续
{
cout<<"Please type the right number to book:";
cin>>sNo;
}
}
}
else
{
if(sts[5]==1&&sts[6]==1&&sts[7]==1&&sts[8]==1&&sts[9]==1)//判断客户所选舱位是否已全部被预定,是,打印提示信息
{
cout<<"nonsmoking passenger compartment is full!"<<endl;
cout<<"May beyou can book smoking passenger compartment"<<endl;
cout<<"Next fight leaves in 3 hours."<<endl;
}
else//否,继续
{
cout<<"The nonsmoking passenger compartment's seat state are:"<<endl;
for(int a=5;a<=9;a++)//显示该舱位已被预定的座位号
{
if(sts[a]!=0)
cout<<"Seat_No."<<a+1<<" has been booked!"<<endl;
}
for(int a=5;a<=9;a++)//显示改舱位剩余的座位号
{
if(sts[a]==0)
cout<<"Seat_No."<<a+1<<" is available!"<<endl;
}
cout<<"Please type the available seat number to book:";//提示用户输入要预定的座位号
cin>>sNo;
if(sNo<6||sNo>10)//验证客户输入是否合法,否,继续
{
cout<<"Please type the right number to book:";
cin>>sNo;
}
}
}
return sNo;//返回客户预定座位号
}
void printCard(int sts[],int sn,int no)//打印客户预定情况
{
if(no>sn||sn<1)//判断客户所选座位是否存在
{
cout<<"There is no such seat with No."<<no;//否,提示
}
else //是,继续
{
if(sts[no-1]!=0)//判断用户所选座位号是否已被预定
cout<<"Seat_No."<<no<<" has been booked!"<<endl;
else
{
sts[no-1]=1;
cout<<"Booked successfully!"<<endl;
cout<<"*******************Compartment Info******************"<<endl<<endl;//打印预定结果
if(no<=5)
cout<<"smoking passenger compartment seat_No: "<<no<<endl<<endl;
else
cout<<"nonsmoking passenger compartment seat_No: "<<no<<endl<<endl;
cout<<"********************************************************"<<endl<<endl;
}
}
}