C++进阶小程序(航空订票系统)

/*
(航空订票系统)、航空公司购买了一台用于航空订票系统的计算机,要求对新系统编程,对每个航班订座(每班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;
  }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值