資源簡介
1、問題描述:
航空客運訂票的業務包括查詢航班、客票預訂和辦理退票等。試設計一個航空客運訂票系統,已使上述業務可以借助計算機完成。
2、功能要求:
(1)每條航線所涉及的信息有終點站名、航班號、飛機號、星期幾飛行、飛行周日(星期幾)、乘員定額、余票量、已訂票的客戶名單(包括姓名、訂票量、艙位等級),以及等候補替補的客戶名單(包括姓名、所需票量)。
(2)作為示意系統:全部數據可以只放在內存中。
(3)系統能實現的操作和功能如下:
錄入:可以錄入航班情況(數據可以存儲在一個數據文件中,數據結構、具體數據自定)。
查詢航線:根據旅客提出的終點站名輸入下列信息:航班號、飛機號、星期幾起飛、最近航班的日期和余票量。
承辦訂票業務:根據客戶提出的要求(航班號、訂票數額)查詢該航班票額情況,若尚有余票,則為客戶辦理訂票手續,輸出座位號。若已滿員或者余票數少于訂票額,則需重新尋味客戶要求,若需要,可登記排隊候補。
承辦退票業務:根據客戶提供的情況(日期、航班)為客戶辦理退票手續,然后查詢該航班是否有人排隊等候補。首先詢問排在第一的客戶,若所有退票額能滿足他的要求,則為他辦理訂票手續否則依次詢問其他排隊候補的客戶。
修改航班信息:當航班信息改變可以修改航班數據文件。
代碼片段和文件信息
#include?
#include?
#include?
#include?
using?namespace?std;
int?N=0;//定義一個N的全局變量??用來控制動態數組內存的開辟
class?Plane
{
private:
????char?StationName[40];//終點站名
????int?FlightNumber;//航班號
????int?PlaneNumber;//飛機號
????int?Week;//星期幾飛
????int?Day;//日期
????int?People;//成員定額
????int?left;//余票額
public:
????Plane()//構造函數
????{
????????StationName[0]=‘\0‘;
????????FlightNumber=0;
????????PlaneNumber=0;
????????Week=0;
????????Day=0;
????????People=0;
????????left=0;
????}
????void?start();//初始化函數
????void?find();//查詢函數
????void?filework();//文件操作提示
????void?changeMessage();//修改航班信息
????void?printfMessage();//顯示航班信息
????void?read();//讀取文件
????void?write();//保存文件
????void?initinaze()//初始化機票
????{
????????cout<<“請輸入終點站名:?“;
????????cin>>StationName;
????????cout<<“請輸入航班號:?“;
????????cin>>FlightNumber;
????????cout<<“請輸入飛機號:?“;
????????cin>>PlaneNumber;
????????cout<<“星期幾飛:?“;
????????cin>>Week;
????????cout<<“飛行日期:?“;
????????cin>>Day;
????????cout<<“成員定額:?“;
????????cin>>People;
????????cout<<“余票數目:?“;
????????cin>>left;
????}
????~Plane()?{};?//析構函數
????//get函數組??獲取信息
????char?*getStationName()
????{
????????return?StationName;??//獲取終點站名
????}
????int?getPlaneNumber()
????{
????????return?PlaneNumber;??//獲取飛機號
????}
????int?getFlightNumber()
????{
????????return?FlightNumber;????//獲取航班號
????}
????int?getWeek()
????{
????????return?Week;????//獲取星期幾飛
????}
????int?getDay()
????{
????????return?Day;
????}
????int?getleft()
????{
????????return?left;//獲取余票數額
????}
????int?getPeople()
????{
????????return?People;
????}
????void?inleft(int?n)
????{
????????left=left+n;????//余票額增加
????}
????void?deleft(int?n)
????{
????????left=left-n;????//余票額減少
????}
????//??Set函數組??修改信息
????void?setStationName(char?*stationName)
????{
????????strcpy(this->StationNamestationName);
????}
????void?setDay(int?day)
????{
????????this->Day=day;
????}
????void?setWeek(int?week)
????{
????????this->Week=week;
????}
????void?setPlaneNumber(int?PlaneNumber)
????{
????????this->PlaneNumber=PlaneNumber;
????}
????void?setFlightNumber(int?FlightNumber)
????{
????????this->FlightNumber=FlightNumber;
????}
????void?setPeople(int?people)
????{
????????this->People=people;
????}
????void?setleft(int?left)
????{
????????this->left=left;
????}
};
Plane?*pl;//動態數組指針
Plane?p2;//調用成員方法對象
class?Person
{
private:
Plane?*p;
????char?PName[40];//姓名
????int?num;//訂票數目
int?planenumber;
public:
int?day;
int?grade;//艙位等級
void?book();//訂票函數
????void?back();//退票函數
int?buyday;//用戶購票日期
int?buynumber;//用戶購票的航班號
void?setPlane(int?number)
{
for(int?i=0;i {
if(number==pl[i].getFlightNumber())
{
p=pl+i;
}
}
}
int?getplanenumber()
{
return?planenumber;
}
????char?*getName()
????{
????????return?PName;
????}
????int?getnum()
????{
????????return?num;
????}
????void?setPName(ch
評論
共有 條評論