最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)航空訂票程序

 更新時間:2022年03月14日 10:22:12   作者:Debug的貓  
這篇文章主要為大家詳細介紹了C++實現(xiàn)航空訂票程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)航空訂票程序的具體代碼,供大家參考,具體內容如下

這是幫我同學寫的一個C++作業(yè),說實話好久沒寫過C++都有些生疏了。但他們好像還沒學面向對象編程,所以只能是簡單的結構體和輸入輸出的邏輯。

題目要求:

編寫一個航空訂票程序:

假設一等艙5個座位,編號為1~5,經(jīng)濟艙20個座位,編號為1~20

具體要求如下:

當程序開始時,提示輸入乘客姓名,一個名字只能訂一個座位,如果該名字已經(jīng)訂過座位了,則提示該乘客座位已定及座位號,否則提示輸入艙位類型;

當輸入艙位類型后,如果該艙位已全部訂出,則提示此艙全部訂完,重新選擇艙位類型;否則顯示可以選擇的座位號,注意已經(jīng)被訂出的座位號不能出現(xiàn),提示輸入座位號;

艙位類型:只能輸入”F”或”E”,一等艙為F,經(jīng)濟艙為E,如果輸入其它字符則提示輸入無效。

座位號:只能輸入前面列出可以選擇的座位號,若輸入其它則提示輸入無效。

程序可以為多個乘客訂票,直到輸入名字為”.”;

最后程序按照艙位類型與座位號排序打印出所有訂票信息(座位號及對應乘客姓名)

最終實現(xiàn)效果:

1、變量

不過既然提到了結構體用來存儲票的信息(其實這就是面向對象思想的早期)。聯(lián)系實際,一個結構體代表一個事物,結構體中的字段代表這個事物的屬性;這樣的話,我們可以提取出兩個結構體:座位Seat和票Ticket,由于題目給定總共25個座位,意味著25張票,則將它們聲明成全局變量。

  //座位,那么座位有3個基本屬性:座位類型(F/E),座位編號,座位預定狀態(tài)(是否已經(jīng)被預定)
  struct Seat{
    char type;
    int number;
    bool isReservation;
  }seats[25];

  //票,票有兩個屬性,即票需要表明:誰預定了哪個座位,第一個Seat就是我們前面定義的那個結構體。
  struct Ticket{
    Seat seat;
    string passenger_name;
  }tickets[25];

2、函數(shù)

我們需要將一些輸出輸入的操作提取成函數(shù),簡化我們的代碼,這里之所以將輸入提取成input()函數(shù),是因為我們需要不斷輸入,即使出錯,所以為了便于遞歸調用就封裝成函數(shù);

bool check(string name);//檢測是否已購票
void input();//用于執(zhí)行輸入
void printSeat(char seatType);//顯示剩余座位
void reservation(string name,int seatNumber,char seatType);//購票
void printTickets(string name);//顯示已購票信息
void printError();//顯示輸入不合法

3、主體邏輯

main函數(shù)非常簡單,首先需要將座位和票信息初始化,即將它們編號,預定狀態(tài)全為“未預定”,然后執(zhí)行輸入,一個while循環(huán),如果不符合條件就直接跳出while,執(zhí)行printTickets()打印出所有的訂票信息;

 int main()
  {
  //初始化艙位和票
  for(int i=0;i<25;i++){
    if(i<5){
      seats[i].type='F';
      seats[i].number=i+1;
    }else{
      seats[i].type='E';
      seats[i].number=i+1-5;
    }
    seats[i].isReservation=false;
    tickets[i].seat=seats[i];
    tickets[i].passenger_name=" ";
  }

  cout<<"================================================="<<endl;
  cout<<"        歡迎使用CT票務系統(tǒng)          "<<endl;
  cout<<"================================================="<<endl;
  cout<<"乘客姓名:";
  while(cin>>name){
      if(name==".")break;
      if(surplusF+surplusE==0){
        cout<<"\n很遺憾所有票已購完!\n";
        break;
      }
      if(check(name)){
        cout<<"\n您已購票,購票信息:\n"<<endl;
        printTickets(name);
      }else{
        cout<<"\n艙位類型 F:一等艙 E:經(jīng)濟艙\n";
        input();
      }
      cout<<"\n乘客姓名:";
  }
  printTickets("");
  return 0;

  }

4、具體函數(shù)實現(xiàn)

具體的函數(shù)實現(xiàn)邏輯我就不講了,就看代碼吧~

5、完整代碼:

main.cpp

#include<iostream>
using namespace std;

//定義全局變量,艙位,票,各類型艙位剩余數(shù),便于其它函數(shù)全局訪問
int surplusF=5;
int surplusE=20;

int flag=0;
char seat_type;
int seatNumber;
string name;

//座位
struct Seat{
  char type;
  int number;
  bool isReservation;
}seats[25];

//票
struct Ticket{
  Seat seat;
  string passenger_name;
}tickets[25];

bool check(string name);//檢測是否已購票
void input();//用于執(zhí)行輸入
void printSeat(char seatType);//顯示剩余座位
void reservation(string name,int seatNumber,char seatType);//購票
void printTickets(string name);//顯示已購票信息
void printError();//顯示輸入不合法

int main()
{
  //初始化艙位和票
  for(int i=0;i<25;i++){
    if(i<5){
      seats[i].type='F';
      seats[i].number=i+1;
    }else{
      seats[i].type='E';
      seats[i].number=i+1-5;
    }
    seats[i].isReservation=false;
    tickets[i].seat=seats[i];
    tickets[i].passenger_name=" ";
  }

  cout<<"================================================="<<endl;
  cout<<"        歡迎使用CT票務系統(tǒng)          "<<endl;
  cout<<"================================================="<<endl;
  cout<<"乘客姓名:";
  while(cin>>name){
      if(name==".")break;
      if(surplusF+surplusE==0){
        cout<<"\n很遺憾所有票已購完!\n";
        break;
      }
      if(check(name)){
        cout<<"\n您已購票,購票信息:\n"<<endl;
        printTickets(name);
      }else{
        cout<<"\n艙位類型 F:一等艙 E:經(jīng)濟艙\n";
        input();
      }
      cout<<"\n乘客姓名:";
  }
  printTickets("");
  return 0;

}

bool check(string name)
{
  for(int i=0;i<25;i++){
    if(name==tickets[i].passenger_name)
      return true;
  }
  return false;
}

//負責輸入,之所以單獨寫成函數(shù),是因為非法輸入的時候需要遞歸調用
void input()
{
  flag=0;
  cout<<"\n艙位類型(F/E):";
  cin>>seat_type;
  cin.get();
  switch(seat_type){
    case 'F':
      if(surplusF>0)
        cout<<"\n可選座位號:";
      printSeat('F');
      if(flag!=0)break;
      cin>>seatNumber;
      cin.get();
      reservation(name,seatNumber,'F');
      break;
    case 'E':
      if(surplusE>0)
        cout<<"\n可選座位號:";
      printSeat('E');
      if(flag!=0)break;
      cin>>seatNumber;
      cin.get();
      reservation(name,seatNumber,'E');
      break;
    default:
      printError();
      input();
      break;
    }
}

//輸出可選的座位號
void printSeat(char seatType)
{
  int full=0;
  for(int i=0;i<25;i++){
    if(seats[i].isReservation==false){
      if(seatType=='F'){
        if(surplusF==0){
          cout<<"\n此艙位全部訂完,請重新選擇艙位類型:\n";
          full++;
          break;
        }
        cout<<seats[i].number<<" ";
        if(i==4) break;
      }
      if(seatType=='E'){
        if(surplusE==0){
          cout<<"\n此艙位全部訂完,請重新選擇艙位類型:\n";
          full++;
          break;
        }
        if(i>4){
          cout<<seats[i].number<<" ";
        }
      }
    }
  }
  if(full==0){
    cout<<"\n";
    cout<<"\n座位號:";
  }else{
    input();
    flag++;
  }

}

//輸入無效
void printError()
{
  cout<<"\n輸入無效!"<<endl;
}

//購票,即改變seats tickets 屬性值
void reservation(string name,int seatNumber,char seatType)
{
  if(seatNumber<1&&seatNumber>20){
    printError();
  }
  else{
    switch(seatType){
      case 'F':
        if(seatNumber>0&&seatNumber<6){
          if(seats[seatNumber-1].isReservation==false){
            seats[seatNumber-1].isReservation=true;
            tickets[seatNumber-1].seat=seats[seatNumber-1];
            tickets[seatNumber-1].passenger_name=name;
            surplusF--;
            cout<<"\n 恭喜 "+name+" 訂票成功!"<<endl;
            break;
          }else{
            printError();
            //input();
          }
        }else
          printError();
        break;
      case 'E':
        if(seatNumber>0&&seatNumber<=20){
          if(seats[seatNumber+4].isReservation==false){
            seats[seatNumber+4].isReservation=true;
            tickets[seatNumber+4].seat=seats[seatNumber+4];
            tickets[seatNumber+4].passenger_name=name;
            surplusE--;
            cout<<"\n 恭喜 "+name+" 訂票成功!"<<endl;
            break;
          }else{
            printError();
          }
        }else
          printError();
        break;
    }
  }
}

void printTickets(string name)
{
  cout<<"================================================="<<endl;
  cout<<"        訂 票 信 息          "<<endl;
  cout<<"================================================="<<endl;
  cout<<" 艙位類型    座位號    乘客姓名     "<<endl;
  cout<<"\n";
  for(int i=0;i<25;i++){
    if(name==tickets[i].passenger_name){
        switch(tickets[i].seat.type){
        case 'F':
          cout<<" 頭等艙      ";
          break;
        case 'E':
          cout<<" 經(jīng)濟艙      ";
          break;
        }
      cout<<tickets[i].seat.number<<"       "<<tickets[i].passenger_name<<endl;
      cout<<"\n";
      break;
    }
    else if(name==""){
      if(tickets[i].seat.isReservation==true){
      switch(tickets[i].seat.type){
        case 'F':
          cout<<" 頭等艙      ";
          break;
        case 'E':
          cout<<" 經(jīng)濟艙      ";
          break;
      }
      cout<<tickets[i].seat.number<<"       "<<tickets[i].passenger_name<<endl;
      cout<<"\n";
      }
    }
  }
  cout<<"================================================="<<endl;
}

Tips:

如果某些偷懶的家伙正好是做這個課程大作業(yè)搜到這兒了,希望你能在看懂的基礎上自己多改改,畢竟這是我替同學寫的,要是你們都一樣,豈不要尷尬了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C語言 字符串指針詳解及示例代碼

    C語言 字符串指針詳解及示例代碼

    本文主要介紹C語言 字符串指針,這里整理了詳細資料,并附示例代碼及實現(xiàn)結果,有興趣的小伙伴可以參考下
    2016-08-08
  • C語言實現(xiàn)圖片放大縮小

    C語言實現(xiàn)圖片放大縮小

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)圖片放大縮小,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++實現(xiàn)簡單圖書館管理系統(tǒng)

    C++實現(xiàn)簡單圖書館管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單圖書館管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 看圖深入理解單鏈表的反轉

    看圖深入理解單鏈表的反轉

    今天遇到單向鏈表的反轉的問題,于是靜下心來好好想了一番。下面這篇文章主要給大家介紹了關于單鏈表反轉的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • C++ 中回調函數(shù)詳解及簡單實例

    C++ 中回調函數(shù)詳解及簡單實例

    這篇文章主要介紹了C++ 中回調函數(shù)詳解及簡單實例的相關資料,需要的朋友可以參考下
    2017-06-06
  • C++數(shù)據(jù)結構之單鏈表

    C++數(shù)據(jù)結構之單鏈表

    這篇文章主要介紹了C++數(shù)據(jù)結構之單鏈表,鏈表是由一個個結點鏈結成的。結點包括數(shù)據(jù)域和指針域兩部分,數(shù)據(jù)域用來存儲數(shù)據(jù)元素的信息,指針域用來存儲下一個結點的地址,更詳細內容請需要的小伙伴參考下面文章內容
    2022-01-01
  • C語言數(shù)學問題與簡單DP01背包問題詳解

    C語言數(shù)學問題與簡單DP01背包問題詳解

    這篇文章主要介紹了C語言數(shù)學問題買不到的數(shù)目、螞蟻感冒、飲料換購與簡單DP01背包問題的解決,屬于藍橋杯省賽中的題目,感興趣的同學來看看吧
    2022-04-04
  • 深入解析C++編程中對設計模式中的策略模式的運用

    深入解析C++編程中對設計模式中的策略模式的運用

    這篇文章主要介紹了C++編程中對設計模式中的策略模式的運用,需要的朋友可以參考下
    2016-03-03
  • C語言實現(xiàn)CRC校驗算法的示例詳解

    C語言實現(xiàn)CRC校驗算法的示例詳解

    CRC(Cyclic Redundancy Check,循環(huán)冗余校驗)是一種常用的錯誤檢測技術,用于驗證數(shù)據(jù)在傳輸或存儲過程中是否發(fā)生了錯誤,本文主要介紹了C語言如何實現(xiàn)CRC校驗算法,需要的可以參考一下
    2023-08-08
  • C++實現(xiàn)簡單的生產(chǎn)者-消費者隊列詳解

    C++實現(xiàn)簡單的生產(chǎn)者-消費者隊列詳解

    這篇文章主要為大家詳細介紹了如何利用C++實現(xiàn)一個簡單的生產(chǎn)者-消費者隊列,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-04-04

最新評論

岳西县| 武陟县| 秭归县| 抚顺市| 云梦县| 托克逊县| 北海市| 成都市| 通江县| 南部县| 达州市| 江门市| 古丈县| 安阳县| 永和县| 福泉市| 黎川县| 桦甸市| 冕宁县| 都昌县| 长汀县| 车致| 禹州市| 云林县| 梓潼县| 乌苏市| 奉新县| 鲜城| 汤原县| 嘉兴市| 乌苏市| 沭阳县| 华池县| 囊谦县| 漠河县| 萍乡市| 岚皋县| 禄丰县| 咸宁市| 怀安县| 绍兴市|