首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 民航訂票系統:買票與退票功能設計指南

     編輯:程式設計綜合問答

需求概覽

開發一個簡單的民航訂票系統,核心功能包含:

  • 預售票:起飛前 15 天開放,起飛前 4 小時截止;需驗證 18 位身份證;單人單次限購 2 張;更新余票。
  • 退票:起飛前 4 小時前可退;需驗證身份證與購票記錄;更新余票。
  • 信譽機制:記錄失信次數(航班起飛後未取票),寫入 customer.txt;超 2 次禁止訂票。

資料結構設計

struct Visitor {
    char IDnumber[19];   // 18 位 + '\0'
    int boughtNum;       // 已購票數
    int creditLost;      // 失信次數
};

struct Flight {
    string flightNumber;
    string company;
    int startMonth, startDay, startHour, startMinute;
    string arriveTime;
    string departCity, arriveCity;
    int price;
    int ticketsLeft;
    bool isDelayed;
};

買票流程建議

  1. 身份證驗證:輸入 18 位字串,格式檢查(長度、數字/字母),可調用正則或逐字元判斷。
  2. 信譽檢查:讀取 customer.txt,若該身份證失信次數 ≥ 2,拒絕。
  3. 購票數量檢查:若 boughtNum >= 2,拒絕。
  4. 航班查詢:依航班號找到對應 Flight,確認余票 > 0。
  5. 時間窗口檢查:當前時間距起飛 ≥ 4 小時 且 ≤ 15 天。
  6. 執行訂票:ticketsLeft--、boughtNum++、寫入訂單檔、更新 customer.txt。

退票流程建議

  1. 輸入身份證與航班號,查詢訂單檔確認該旅客持有該航班機票。
  2. 檢查當前時間距起飛 ≥ 4 小時。
  3. 執行退票:ticketsLeft++、boughtNum--、標記訂單為已退、更新檔案。

程式碼改進重點

  • 結構體傳參改用引用或指標,避免拷貝開銷並確保修改生效。
  • 將檔案讀寫封裝為 loadCustomers()、saveCustomers()、loadFlights()、saveFlights()。
  • 時間比較建議轉為 time_t 或 chrono,避免手動拆解年月日時分。
  • 身份證輸入可用 getline(cin, str) 並去除空白,而非逐字元 getch()。

小結

將複雜業務拆解為「驗證 → 檢查 → 執行 → 持久化」四步,每步單獨成函式,主流程清晰易維護。先把核心邏輯跑通,再補充異常處理與介面美化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved