實(shí)驗(yàn)報(bào)告27題航空客運(yùn)訂票系統(tǒng)_第1頁(yè)
實(shí)驗(yàn)報(bào)告27題航空客運(yùn)訂票系統(tǒng)_第2頁(yè)
實(shí)驗(yàn)報(bào)告27題航空客運(yùn)訂票系統(tǒng)_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余10頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、班級(jí):計(jì)算機(jī)03 (2)姓名:關(guān)海寧學(xué)號(hào):29實(shí)驗(yàn)報(bào)告 2.7 題 航空客運(yùn)訂票系統(tǒng)實(shí)驗(yàn)報(bào)告題目:編織一個(gè)航空客運(yùn)訂票系統(tǒng)班級(jí):計(jì)算機(jī) 03( 2) 姓名:關(guān)海寧 學(xué)號(hào): 29 完成日期: 矚慫潤(rùn)厲釤瘞睞櫪廡賴 賃軔。需要分析 用一個(gè)帶頭結(jié)點(diǎn)的單向鏈表存儲(chǔ)已訂票的客戶的信息,每個(gè)節(jié)點(diǎn)包括data、next 域, data 域包括客戶姓名、訂票量、 航位等級(jí)、證件類型、證件號(hào)碼五個(gè)域;當(dāng)沒有訂票客戶時(shí),鏈 表只有頭結(jié)點(diǎn); 聞創(chuàng)溝燴鐺險(xiǎn)愛氌譴凈禍測(cè)。用一個(gè)帶有節(jié)點(diǎn)、尾結(jié)點(diǎn)的鏈表存儲(chǔ)結(jié)構(gòu)的隊(duì)列來(lái)存儲(chǔ)等候替補(bǔ)的客戶名單。每結(jié)點(diǎn)包括 data和next兩個(gè)域,data域包括客戶姓名和所需票量?jī)蓚€(gè)域;殘騖

2、樓諍錈瀨濟(jì)溆塹籟婭驟。用一個(gè)順序表存儲(chǔ)航線信息, 每個(gè)結(jié)點(diǎn)包括終點(diǎn)名、航班號(hào)、飛機(jī)號(hào)、飛行日期、飛行周 日、乘員定額、余票量、客戶鏈表和替補(bǔ)客戶隊(duì)列 9 個(gè)域; 釅錒極額閉鎮(zhèn)檜豬訣錐顧葒。 可根據(jù)客戶提出的終點(diǎn)站名查詢航線。 所有符合的則輸出最近一天該航線的航班號(hào)、 飛機(jī)號(hào)、 飛行日期、飛行周日和余票量; 彈貿(mào)攝爾霽斃攬磚鹵廡詒爾。訂票業(yè)務(wù), 根據(jù)客戶提出的要求 (航班號(hào)、 訂票數(shù)額) 查詢?cè)摵桨嗟钠鳖~情況, 若尚有余額, 則為客戶辦理訂票手續(xù), 輸出座位號(hào); 若已滿員或余額少于訂票量, 則需重新詢問(wèn)客戶要求。 若需要?jiǎng)t排隊(duì)候補(bǔ); 謀蕎摶篋飆鐸懟類蔣薔點(diǎn)鉍。承辦退票業(yè)務(wù):更具客戶提供的情況(航

3、班號(hào)、客戶姓名、證件號(hào)) ,為客戶辦理退票手續(xù), 然后查詢?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ)。 首先詢問(wèn)排在第一的客戶, 若所退票額能滿足他的要求, 則為他辦理訂票手續(xù),否則一次詢問(wèn)其他候補(bǔ)的客戶。 廈礴懇蹣駢時(shí)盡繼價(jià)騷巹癩。測(cè)試數(shù)據(jù)見目錄下的 ” hangban.txt、"” kehu1.,txt、kehu2.txt文'本程序執(zhí)行的命令為:1 )顯示航班 2)新增 3)查詢 4)訂票 5)退票 6)顯示客戶7)保存概要設(shè)計(jì)設(shè)定順序表的抽象數(shù)據(jù)類型定義為:ADT List數(shù)據(jù)對(duì)象:D=a.i | a.i屬于ElemSet , I = 1 , 2 ,,煢楨廣鰳鯡選塊網(wǎng)羈淚鍍齊。數(shù)據(jù)關(guān)系:R

4、1= < a.i-1 , a.i> | a.i屬于 D , I = 2 ,鵝婭盡損鶴慘歷蘢鴛賴縈詰?;静僮鳎篒nitList(&L) 操作結(jié)果:構(gòu)造一個(gè)空的線性表 L。DestroyList(&L) 初始條件:線性表 L 已存在。 操作結(jié)果:燒毀線性表L 。ClearList(&L) 初始條件:線性表 L 已存在。 操作結(jié)果:將 L 重置為空表。ListEmpty(L) 初始條件:線性表 L 已存在。 操作結(jié)果:若 L 為空表,則返回 TRUE ,否則返回 FALSE 。ListLength(L) 初始條件:線性表 L 已存在。 操作結(jié)果:返回 L 中數(shù)據(jù)

5、元素的個(gè)數(shù)。GetElem(L ,i, &e)初始條件:線性表 L 已存在, 1<=i<=ListLength(L) 。操作結(jié)果:用e返回L中第i個(gè)數(shù)據(jù)元素的值。LocateElem(L , e,compare() )初始條件:線性表 L已存在,compare()是數(shù)據(jù)元素判定函數(shù)操作結(jié)果:返回L中第一個(gè)與e滿足關(guān)系compare。的數(shù)據(jù)元素的位序。若這樣的數(shù)據(jù)元素 不存在,則返回值為 0。 籟叢媽羥為贍僨蟶練淨(jìng)櫧撻。PriorElem(L , cur_e, &pre_e)初始條件:線性表 L 已存在。操作結(jié)果:若 cur_e 是 L 數(shù)據(jù)元素,且不是第一個(gè),則用

6、pre_e 返回它的前驅(qū),否則操作失 敗,pre_e無(wú)定義預(yù)頌圣鉉儐歲齦訝驊糴買闥。NextElem(L , cur_e, &next_e)初始條件:線性表 L 已存在。操作結(jié)果:若cur_e是L的數(shù)據(jù)元素,且不是最后一個(gè),則用next_e返回它的后續(xù),否則操作失敗, next_e 無(wú)定義 滲釤嗆儼勻諤鱉調(diào)硯錦鋇絨。ListInsert(&L , i , e )初始條件:線性表 L 已存在, 1<= i <=ListLength(L) + 1 。操作結(jié)果:在 L 中第 i 個(gè)位置之前插入新的數(shù)據(jù)元素e, L 的長(zhǎng)度加 1。ListDelete(&L , i

7、, e)初始條件:線性表 L 已存在且非空, 1<= i <=ListLength(L) + 1 。操作結(jié)果:刪除L的第i個(gè)數(shù)據(jù)元素,并用e返回其值,L的長(zhǎng)度減1。ListTraverse(L,visit ( ) )初始條件:線性表 L 已存在。操作結(jié)果:依次對(duì) L的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù)visit ()。一旦visit ()失敗,則操作失敗ADT List2本程序包括四個(gè)模塊1 )主程序模塊:Void main()初始化;While(ch != 0')接受命令;處理命令;Cin>>ch;2) 鏈表模塊 實(shí)現(xiàn)鏈表抽象數(shù)據(jù)類型3) 隊(duì)列模塊 實(shí)現(xiàn)鏈表抽象數(shù)據(jù)類型4)

8、 順序表模塊 實(shí)現(xiàn)順序表抽象數(shù)據(jù)類型詳細(xì)設(shè)計(jì)鏈表的數(shù)據(jù)類型:typedef structnewString name;/客戶姓名int number;/訂票量newString Class;/航位等級(jí)newString zjlx;/證件類型newString zjh;/證件號(hào)碼ElemType;typedef struct LNode/頭指針的 number 域紀(jì)錄總訂票量ElemType data;struct LNode *next;/ 指針域LNode,*LinkList;Status InsertKehu1(LinkList &L);按輸入增加客戶1Status InsertK

9、ehu1(LinkList &L,QElemType e);/按輸入增加客戶1 。 e 傳送新增客戶的名字和訂票量void CreateKehu1(LinkList &L,ifstream& infile); /從文件讀取信息,建立客戶1鏈表,凡回頭指針LinkList SearchKehu1(LinkList L); /查找函數(shù)如果找到,則返回所找元素的前域否則返回空指針 Status SearchKehu1(LinkList L,newString NAME,newString ZJH); 鐃誅臥瀉噦圣騁貺頂廡縫勵(lì)。 /查找函數(shù)如果找到,則返回 TRUE 否則返回

10、FALSEStatus DeleteKehu1(LinkList &L);/刪除某個(gè)客戶。如果成功,則返 OK 。否則返回 FALSEvoid PrintKehu1(LinkList L);/顯示所有客戶的信息 其中部分操作的算法:Status DeleteKehu1(LinkList &L)/刪除某個(gè)客戶。 如果成功, 則返 OK 。否則返回 FALSE擁締鳳襪備訊顎輪爛薔報(bào)贏。LinkList p;p=SearchKehu1(L);if(!p)return FALSE;LinkList q;q=p->next;L->data.number-=q->data

11、.number;p->next=q->next;delete(q);return OK;Status SearchKehu1(LinkList L,newString NAME,newString ZJH) 贓熱俁閫歲匱閶鄴鎵騷鯛漢。/按姓名、證件號(hào)查找如果找到,則返回TRUE 否則返回 FALSELinkList p=L->next;while(p)if(p->=NAME&&p->data.zjh=ZJH)return OK; p=p->next;return FALSE;隊(duì)列的數(shù)據(jù)類型typedef structnewS

12、tring name;/預(yù)約訂票的客戶的姓名int number;/訂票量QElemType;typedef struct kehu2QElemType data;struct kehu2 *next;kehu2,*Kehu2Ptr;typedef structKehu2Ptr front;/隊(duì)頭指針Kehu2Ptr rear; /隊(duì)尾指針Kehu2Queue;Status InitQueue(Kehu2Queue &q);/構(gòu)造一個(gè)空隊(duì)列Status EnQueue(Kehu2Queue &q,QElemType e);插入元素e為q的新的隊(duì)尾元素Status EnQueue

13、(Kehu2Queue &q);/按輸入新增隊(duì)列元素Status CreateQueue(Kehu2Queue &q,ifstream& infile); 壇摶鄉(xiāng)囂懺蔞鍥鈴氈淚躋馱。/從文件讀入數(shù)據(jù),新建隊(duì)列 qvoid PrintQueue(Kehu2Queue q);/顯示客戶隊(duì)列的所有信息void PrintQueue_H(Kehu2Queue q);/顯示客戶隊(duì)列頭結(jié)點(diǎn)的信息Status GetQueue(Kehu2Queue &q,QElemType &e,int i);/若隊(duì)列不空且存在符合i 要求的結(jié)點(diǎn),則將該結(jié)點(diǎn)的值與頭結(jié)點(diǎn)交換,返回/O

14、K ;否則返回 FALSEStatus DeQueue(Kehu2Queue &q,QElemType &e);若隊(duì)列不空,則刪除 q的隊(duì)頭元素,用e返回其值其中部分操作的算法:Status EnQueue(Kehu2Queue &q,QElemType e) /插入元素 e 為 q 的新的隊(duì)尾元素 蠟變黲癟 報(bào)倀鉉錨鈰贅籜葦。Kehu2Ptr p;p=(Kehu2Ptr)new kehu2;if(!p)return FALSE; p->= ; p->data.number=e.number; p->next=NULL;

15、q.rear->next=p;q.rear=p;return OK;Status DeQueue(Kehu2Queue &q,QElemType &e)/若隊(duì)列不空,則刪除 q 的隊(duì)頭元素,用 e 返回其值 if(q.front=q.rear)return FALSE; Kehu2Ptr p=q.front->next;=p->; e.number=p->data.number; q.front->next=p->next;p->next=NULL; if(q.rear=p)q.rear=q.front;d

16、elete p; return OK;順序表的數(shù)據(jù)類型typedef structnewString des; / 終點(diǎn)站名newString hbh;/航班號(hào)newString fjh; / 飛機(jī)號(hào)newString date; /飛行日期newString day;/飛行周日int number; /乘員定額int resnum; /剩余票量LinkList L;/指向客戶 1 鏈表的頭指針Kehu2Queue queue;hangban;typedef hangban HANGBAN101; /hangban0.number 記錄信息個(gè)數(shù) 買鯛鴯譖曇膚遙閆擷凄屆 嬌。int create

17、HB(HANGBAN &t); /新建或增加一個(gè)航班信息 ,返回新建后的信息個(gè)數(shù)int createHB(HANGBAN &t,ifstream& infile);/從文件中讀取信息新件一個(gè)航班信息表.返回新建后的信息個(gè)數(shù)int printHBnum(HANGBAN t); /顯示航班的信息個(gè)數(shù),并將它返回void printHB(HANGBAN t); /顯示所有航班的信息 void printHB(HANGBAN t,int i);/顯示第 i 個(gè)航班的信息int searchHB(HANGBAN t); /按終點(diǎn)站查找航班。若成功,則返回所以位置int searc

18、hHB_HBH(HANGBAN t);/按航班號(hào)查找航班。若成功,則返回所以位置 void evaluateHB(HANGBAN &t,int i,int j);/將第 j 各元素的值賦給 iint Partition(HANGBAN &t,int low,int high); /一趟快速排序的基本算法void HBsort(HANGBAN &t,int low,int high);/對(duì) tlow.high 快速排序void sortHB(HANGBAN &t);/排序。 t0 用作一個(gè)中轉(zhuǎn)站void saveHB(HANGBAN t,ofstream&

19、 outfile); /保存所有航班的信息 其中部分操作的算法:i. 否則返回 0i. 否則返回 0int searchHB_HBH(HANGBAN t)/按航班號(hào)查找航班。若成功,則返回所以位置i.否則返回0newString cur;cout<<" 請(qǐng)輸入航班號(hào): " cin>>cur; cout<<endl;int i=1;while(i<=t0.number)if(cur=ti.hbh)return i;else i+;cout<<" 沒有符合的航班 "<<endl;return

20、0;主函數(shù)和其他函數(shù)的偽碼算法void main()/主程序Initalization ( ) ;/初始化while ( ch !=0' )ReadCommand ( choice ); Interpret( choice );Display();cin >>ch;/讀入一個(gè)操作符 /解釋執(zhí)行操作命令符 /顯示操作菜單/mainvoid Initalization( )/初始化void ReadComma nd(char &choice )/讀入操作命令符void In terpret( char choice )switch(choice)case 1 /顯示所有

21、航班的信息case ' 2 /'新增一個(gè)航班的信息case ' 3 /查詢航班信息case / 4 / 訂票case / 5'/退票case / 6 /顯示某個(gè)航班的所有客戶的信息case/ 7/保存case/ 0/退出6 .文件的調(diào)用關(guān)系圖反映了演黃示程序的層次結(jié)構(gòu)綾鏑鯛駕櫬鶘蹤韋轔糴飆銃。說(shuō)明:newString.h文件為一個(gè)用C+開發(fā)的字符串類調(diào)試分析系統(tǒng)的基本功能的實(shí)現(xiàn)基于鏈表、隊(duì)列和順序表的基本操作鏈表的插入總是在頭結(jié)點(diǎn)之后,為插入帶來(lái)了方便隊(duì)列的刪除要先確定第一個(gè)元素,然后再進(jìn)行常規(guī)的操作查詢航班信息時(shí),先對(duì)順序表按飛行日期(格式為XX月XX日)進(jìn)行

22、快速排序,然后再進(jìn)行常規(guī)操作經(jīng)驗(yàn)體會(huì):在出現(xiàn)系統(tǒng)不穩(wěn)定的函數(shù)時(shí),屏蔽一些函數(shù)可以更快確定哪個(gè)函數(shù)出了問(wèn)題 用戶手冊(cè)本程序的運(yùn)行環(huán)境為 DOS操作系統(tǒng),執(zhí)行文件為:航空客運(yùn)訂票系統(tǒng).exe。進(jìn)入演示程序后,即顯示文本方式的用戶界面7請(qǐng)選擇:按提示進(jìn)行相應(yīng)的操作測(cè)試結(jié)果:原有數(shù)據(jù):請(qǐng)選擇=1 終點(diǎn)站名:航班號(hào)戶客 息息 -有 信他 所 問(wèn) 的 垂班息 班航 有個(gè)班 個(gè) 所一航 某 一?盂示一輩出 顯新查訂退顯保退:飛機(jī)號(hào):飛行日期自心信的飛行周日乘員定額的 區(qū)箱亠星無(wú)星垂宀逐 南北上南北上南北上南航南南北北南南北南為NH14237月朗日NH11237月21日BH123G7月H日NH14227月劭日NH1121?J18 EBH12337 >g is: ENH1422719 ENH11227

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論