航空客運(yùn)訂票系統(tǒng)課程設(shè)計(jì)(數(shù)據(jù)結(jié)構(gòu))_第1頁(yè)
航空客運(yùn)訂票系統(tǒng)課程設(shè)計(jì)(數(shù)據(jù)結(jié)構(gòu))_第2頁(yè)
航空客運(yùn)訂票系統(tǒng)課程設(shè)計(jì)(數(shù)據(jù)結(jié)構(gòu))_第3頁(yè)
航空客運(yùn)訂票系統(tǒng)課程設(shè)計(jì)(數(shù)據(jù)結(jié)構(gòu))_第4頁(yè)
航空客運(yùn)訂票系統(tǒng)課程設(shè)計(jì)(數(shù)據(jù)結(jié)構(gòu))_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精品文檔歡迎下載X XX XX XX XX XX XX XX XX X計(jì)計(jì)算算機(jī)機(jī)技技術(shù)術(shù)系系工程名稱: 航空客運(yùn)訂票系統(tǒng) 學(xué)生姓名: XX 學(xué) 號(hào): 班 級(jí): 10801 指導(dǎo)教師: 年 月 日精品文檔歡迎下載目目 錄錄1.1.系統(tǒng)需求分析系統(tǒng)需求分析.31.1 問題分析.31.2 任務(wù)意義.32.2. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明.43.3. 詳細(xì)設(shè)計(jì)和編碼詳細(xì)設(shè)計(jì)和編碼.53.1.主菜單.53.2.錄入航空信息.53.3 輸出航空信息.63.4 訂票.73.5 退票.74.4. 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)結(jié)果.94.1 菜單函數(shù)的功能測(cè)試.94.2 錄入函數(shù)的功能測(cè)試.94.3 查詢航

2、班函數(shù)的功能測(cè)試.114.4 訂票功能地測(cè)試.12致謝致謝.17參考文獻(xiàn)參考文獻(xiàn).18附錄:源程序清單附錄:源程序清單.19精品文檔歡迎下載1.1.系統(tǒng)需求分析系統(tǒng)需求分析1.1 問題分析這次的課程設(shè)計(jì)是設(shè)計(jì)一個(gè)航空系統(tǒng)。由于存儲(chǔ)的數(shù)量較大且不固定,因此選擇用鏈表來保存根本信息:終點(diǎn)站名、航班號(hào)、飛機(jī)號(hào)、飛行時(shí)間、乘員定額、余票量、已經(jīng)訂票的客戶名單(包括姓名、訂票量)、等候替補(bǔ)的客戶名單(包括姓名、所需票量)等等。由于在航線這個(gè)主鏈表上,每個(gè)航班上的已經(jīng)訂票名單這個(gè)鏈表和等候替補(bǔ)的名單這個(gè)鏈表隊(duì)列,所以建立一個(gè)十字交叉鏈表,在縱行上開辟一個(gè)鏈表存儲(chǔ)所有航班的根本信息,再在各個(gè)航班節(jié)點(diǎn)橫向展開

3、一個(gè)鏈表和一個(gè)鏈表隊(duì)列,展開的鏈表存儲(chǔ)已經(jīng)訂票的客戶名單,展開的鏈表隊(duì)列存儲(chǔ)等候替補(bǔ)的客戶名單。同時(shí),由于預(yù)約人數(shù)無法預(yù)計(jì),隊(duì)列也應(yīng)以鏈表作存儲(chǔ)結(jié)構(gòu)。系統(tǒng)主要實(shí)現(xiàn)的操作和功能是:添加航線、查詢航線、訂票功能、退票功能。要實(shí)現(xiàn)這些功能,首先要使程序能實(shí)現(xiàn)查找功能,在查找出到有效信息的前提之下,通過鏈表的賦值,更新信息和刪除退票人信息,滿足客戶的要求。1.2 任務(wù)意義飛機(jī)場(chǎng)每天要接受大量的訂票退票效勞,對(duì)于這些數(shù)量巨大的數(shù)據(jù),需要一個(gè)專門的軟件來進(jìn)行管理和操作。軟件至少需要具備的根本功能包括:接受訂票,處理退票,查詢航班信息等等。面對(duì)這些實(shí)際問題,航空客運(yùn)系統(tǒng)的制作無疑要全面的考察一個(gè)學(xué)生的知識(shí)及

4、能力。在全面理解客戶的需求下面,來進(jìn)行設(shè)計(jì)出最能夠滿足客戶的程序出來,并且能夠根據(jù)不同的要求來將其進(jìn)行改動(dòng),最能考察到對(duì)代碼活用的程度。精品文檔歡迎下載2.2. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明 數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu),中間縱列,為各個(gè)航班的根本信息,用一鏈表存儲(chǔ),其中一個(gè)節(jié)點(diǎn)為一個(gè)航班,其中包括終點(diǎn)站名、航班號(hào)、飛機(jī)號(hào)、飛行時(shí)間、乘員定額、余票量、已經(jīng)訂票的客戶名單(包括姓名、訂票量)、等候替補(bǔ)的客戶名單(包括姓名、所需票量)等等。橫向是各個(gè)航班的情況,即從該指定的航班中用鏈表的形式橫向存儲(chǔ)這個(gè)航班的根本信息,縱向?yàn)橐呀?jīng)訂票了的客戶信息和藥等候替補(bǔ)的客戶的信息,其中包括客戶姓名和相應(yīng)

5、的需票量。相應(yīng)的存儲(chǔ)結(jié)構(gòu)如下struct Passenger char name20;int bnum; /bnum 記錄某人買的票數(shù)struct Passenger *next;typedef struct Air /記錄飛機(jī)信息int ticket; /飛機(jī)票數(shù)char des20; /des 記錄飛機(jī)的終點(diǎn)char flight8; /flight 記錄航班號(hào)int num; /記錄飛機(jī)號(hào)Passenger *wait;Passenger *book;Time time;struct Air *next;AirPlane;精品文檔歡迎下載3.3. 詳細(xì)設(shè)計(jì)和編碼詳細(xì)設(shè)計(jì)和編碼3.1.主菜

6、單進(jìn)入主菜單,必須先錄入航班信息,客戶可以根據(jù)自己需要選擇,選擇自己想要的航班,然后進(jìn)行一系列自己選擇的操作,具體菜單流程圖如下所示航空系統(tǒng)錄入信息查詢信息訂票退票 圖 3-1 主菜單功能模塊圖3.2.錄入航空信息錄入航空信息包括終點(diǎn)站名、航班號(hào)、飛機(jī)號(hào)、飛行時(shí)間、乘員定額,根據(jù)用戶的需要選擇航班,輸出航班信息,如果可以再進(jìn)行訂票操作,錄入航空信息的流程圖如下圖 3-2 錄入航空信息流程圖精品文檔歡迎下載3.3 輸出航空信息客戶可以根據(jù)自己的需要選擇是按目的地查詢還是按航班查詢,如果按航班查詢,必須要知道航班號(hào),如果按目的地查詢,只需輸入終點(diǎn)站,如果一個(gè)終點(diǎn)站有多個(gè)航班,客戶可以根據(jù)自己的需要

7、選擇一個(gè)航班進(jìn)行操作,具體流程圖如下。圖 3-3 按航班輸出信息的流程圖精品文檔歡迎下載圖 3-4 按目的輸出航空信息的流程圖3.4 訂票在客戶訂票前需要先查詢航班是否存在,所以在訂票的模塊中會(huì)要求客戶輸入航班信息,再調(diào)用航班查詢的函數(shù),查詢是否存在這個(gè)航班,如果存在這個(gè)航班,那么客戶可以訂票,客戶在訂票的時(shí)候,如果所需票量超過剩余票數(shù),那么會(huì)提示客戶是否需要排隊(duì)候票,如果不排隊(duì)候票,那么選擇要么重新輸入所需票量,要么退出訂票。訂票流程圖如下圖 3-5 訂票流程圖3.5 退票客戶在退票操作時(shí),也是要先輸入是否存在那個(gè)航班,如果存在,就查詢這個(gè)航班是否存在這個(gè)客戶,如果不存在,就退票失敗,如果存

8、在,那么可以退票,退票后,再查看是否滿足候票數(shù),如果滿足那么把票補(bǔ)給候票人,如果不滿足,就繼續(xù)排隊(duì)候補(bǔ)。退票流程圖如下精品文檔歡迎下載圖 3-6 退票流程圖精品文檔歡迎下載4.4. 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)結(jié)果4.1 菜單函數(shù)的功能測(cè)試系統(tǒng)運(yùn)行后就會(huì)自動(dòng)顯示菜單 1.錄入航班,2.查詢航班,3.訂票,4,退票,當(dāng)用戶選擇相應(yīng)的代號(hào)就進(jìn)入相應(yīng)的功能模塊 圖 4-1 菜單函數(shù)的截圖4.2 錄入函數(shù)的功能測(cè)試進(jìn)入當(dāng)這個(gè)錄入模塊,用戶需要先錄入航班的信息,包括航班號(hào),總的票數(shù),目的地,起飛時(shí)間,和飛機(jī)號(hào),當(dāng)錄入一個(gè)航班信息,會(huì)提示是否繼續(xù)錄入精品文檔歡迎下載 圖 4-2 錄入航空信息的截圖精品文檔歡迎下載4.3

9、查詢航班函數(shù)的功能測(cè)試用戶可以選擇是按目的地查詢信息或者是按航班查詢信息,一個(gè)目的地可能有幾個(gè)不同的航班,但是一個(gè)航班只能到一個(gè)目的地 圖 4-3 查詢航班的截圖精品文檔歡迎下載4.4 訂票功能地測(cè)試用戶在訂票時(shí)需要輸入航班,然后再查詢是否存在這個(gè)航班,如果存在,那么可以訂票,否那么不能訂票,在訂票的時(shí)候如果余票足夠,那么可以成功訂票,否那么提示用戶是否需要排隊(duì)候補(bǔ)如圖 4-4,訂票成功可以將客戶信息輸出,圖 4-5,是余票缺乏,提示用戶是否需要排隊(duì)候補(bǔ),圖 4-6,客戶選擇候補(bǔ),那么會(huì)將客戶信息輸出 圖 4-4 訂票成功的截圖精品文檔歡迎下載 圖 4-5 余票缺乏的截圖 圖 4-6 候補(bǔ)成功

10、的截圖精品文檔歡迎下載4.5 退票函數(shù)的功能測(cè)試用戶在退票的時(shí)候需要輸入航班,查找這個(gè)航班是否存在,如果存在,再查看退票信息是否正確,輸出客戶信息,退票后查詢這個(gè)航班的剩余票數(shù)是否變化,是否足夠候補(bǔ)人所需要的票數(shù) 圖 4-7 是查詢這個(gè)航班的客戶信息,圖 4-8 是找到要退票的客戶且輸出客戶信息,圖 4-9 退票后查詢這個(gè)航班,是否退票成功 圖 4-7 查詢客戶的截圖精品文檔歡迎下載圖 4-8 找到要退票的客戶的信息圖 4-9 查詢是否退票成功的截圖精品文檔歡迎下載5.5.體會(huì)體會(huì)這次課程設(shè)計(jì)我用鏈表設(shè)計(jì)的,我之前的想法是用一個(gè)結(jié)構(gòu)體存儲(chǔ)航班信息,再用一個(gè)結(jié)構(gòu)體存儲(chǔ)已經(jīng)訂票的客戶信息,再用一個(gè)

11、結(jié)構(gòu)體存儲(chǔ)候補(bǔ)的客戶信息,然后在已經(jīng)訂票的客戶信息中定義一個(gè)指針存儲(chǔ)已經(jīng)訂票的客戶的航班,在候補(bǔ)的客戶中定義一個(gè)指針存儲(chǔ)已經(jīng)排隊(duì)候補(bǔ)的客戶的航班,用這個(gè)指針和航班信息聯(lián)系起來,再進(jìn)行操作,可是在退票中鏈表就出現(xiàn)問題了,只要有人候補(bǔ),那么已經(jīng)訂票的客戶信息就輸不出來,好不容易把候補(bǔ)搞好了,可是訂票模塊就出現(xiàn)問題了,總的來說是結(jié)構(gòu)的問題,所以我就重新寫了,用了十字鏈表的思想,不過在退票后,把退票給候補(bǔ)的客戶有問題,就沒有寫這個(gè)了。這次課程設(shè)計(jì)寫完后,我發(fā)現(xiàn)我對(duì)于指針是越來越糊涂了,原來在寫作業(yè)的時(shí)候還有點(diǎn)清楚指針的指向,現(xiàn)在時(shí)越來越不清楚了。所以在存儲(chǔ)空間上總是出現(xiàn)問題,叫同學(xué)幫我改了指針的指向,

12、才會(huì)好的,所以這次放假一定要把指針弄清楚,然后進(jìn)一步完善這個(gè)程序。精品文檔歡迎下載致謝致謝感謝 XX 老師的耐心指導(dǎo),感謝 XXX 老師的悉心教導(dǎo),感謝 XXX 同學(xué)的幫助。感謝在課程設(shè)計(jì)中對(duì)我?guī)椭^得同學(xué),謝謝你們對(duì)我的幫助,讓我感受到到同學(xué)的友誼和老師對(duì)我的關(guān)愛精品文檔歡迎下載參考文獻(xiàn)1嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)C 語言版.北京:清華大學(xué)出版社,1997.2劉大有,唐海鷹,等.數(shù)據(jù)結(jié)構(gòu).北京:高等教育出版社,2001.3黃揚(yáng)銘.數(shù)據(jù)結(jié)構(gòu).北京:科學(xué)出版社,2001.4黃劉生.數(shù)據(jù)結(jié)構(gòu).北京:科學(xué)經(jīng)濟(jì)出版社,2000.精品文檔歡迎下載附錄:源程序清單#include#include#inclu

13、de#include#include#includestruct Time /定義飛機(jī)的起飛時(shí)間char year8,month8,day8,hour8,minute8,second8;void InputDate(Time &time) /輸入飛機(jī)的起飛時(shí)間coutPlease input the date(year month day hour minute):time.yeartime.monthtime.daytime.hourtime.minutetime.second;void PrintDate(const Time time) /輸出飛機(jī)的起飛時(shí)間couttime.ye

14、ar.time.month.time.day.time.hour:time.minute:name,s-name);void PrintPassenger(const Passenger *p)cout*endl;cout姓名 訂票量endl;cout*endl;coutname bnumendl;typedef struct Air /記錄飛機(jī)信息int ticket; /飛機(jī)票數(shù)char des20; /des 記錄飛機(jī)的終點(diǎn)char flight8; /flight 記錄航班號(hào)int num; /記錄飛機(jī)號(hào)精品文檔歡迎下載Passenger *wait;Passenger *book;T

15、ime time;struct Air *next;AirPlane;void Waitticket(Passenger *&p) /輸入候補(bǔ)乘客的信息Passenger *w=p;Passenger *s=new Passenger;couts-name;couts-bnum;void DisplayWait(Passenger *passenger) /輸出要候補(bǔ)的乘客的信息Passenger *q=passenger-next;if(!q)return;while(q)coutName BNumendl;coutsetiosflags(ios:left)setw(10)names

16、etw(10)bnumnext;精品文檔歡迎下載int InputPassenger(Passenger *&passenger,AirPlane *flight) /輸入訂票的乘客的信息Passenger *p=passenger;Passenger *q=new Passenger;Passenger *s=flight-wait;Passenger *w;int chioce;coutq-name;coutq-bnum;if(q-bnumflight-ticket)cout現(xiàn)在航班中還有:ticket張票!ticket)cout請(qǐng)選擇:1.將差票轉(zhuǎn)為候補(bǔ)票 2.只定剩余票 3.取

17、消訂票chioce;if(chioce=1)w=new Passenger;q-next=p-next;精品文檔歡迎下載p-next=q;PassengerCpy(w,q);w-next=s-next;s-next=w;w-bnum=q-bnum-flight-ticket;q-bnum=flight-ticket;flight-ticket=0;else if(chioce=2)q-next=p-next;p-next=q;q-bnum=flight-ticket;flight-ticket=0;elsereturn NULL;elseq-next=s-next;s-next=q;精品文檔歡

18、迎下載elseq-next=p-next;p-next=q;flight-ticket-=q-bnum;void DisplayClient(Passenger *p) /輸出已經(jīng)訂票的乘客信息Passenger *q=p-next;if(!q)return;while(q)coutName BNumendl;coutsetiosflags(ios:left)setw(10)namesetw(10)bnumnext;void CreatFlight(AirPlane *&flight) /創(chuàng)立一個(gè)空的結(jié)點(diǎn)AirPlane *s=new AirPlane;s-next=NULL;精品文檔

19、歡迎下載flight=s;Passenger *p=new Passenger;p-next=NULL;flight-book=p;Passenger *w=new Passenger;w-next=NULL;flight-wait=w;AirPlane* Displayflight(AirPlane *flight,char f) /按航線輸出航班AirPlane *p=flight-next;int flag=0;while(p)if(strcmp(p-flight,f)=0)system(cls);cout*endl;coutNum Destination Flight Ticket T

20、ime endl;coutsetiosflags(ios:left)setw(10)numsetw(10)dessetw(10)flightsetw(10)ticket;PrintDate(p-time);精品文檔歡迎下載coutn*endl;cout*已定乘客*book);cout*候補(bǔ)乘客*wait);return p;p=p-next;return NULL;void Displaydes(AirPlane *flight,char d) /按目的地輸出航班AirPlane *p=new AirPlane;p=flight;int flag=0;while(p)if(strcmp(p-d

21、es,d)=0)flag=1;coutNum Destination Flight Ticket Time endl;coutsetiosflags(ios:left)setw(10)numsetw(10)des精品文檔歡迎下載setw(10)flightsetw(10)ticket;PrintDate(p-time);coutnext;if(flag=0)coutSorry!not find the information!next=NULL;w-next=NULL;p-book=b;p-wait=w;精品文檔歡迎下載system(cls);coutp-flight;coutp-ticket

22、;coutp-des;InputDate(p-time);coutp-num;coutif continue,please choose(y/Y),if not,please input choose(N/n):ch;system(pause);p-next=s-next;s-next=p;while(ch=y|ch=Y);void Display(AirPlane *flight) /輸出航線int n;cout1.按終點(diǎn)查詢 2.按航班查詢endl;coutn;精品文檔歡迎下載if(n=1)char d20;coutplease input the destination you woul

23、d look up:d;Displaydes(flight,d);else if(n=2)coutf;Displayflight(flight,f);elsecoutinput is error!null);void Book(AirPlane *&flight) /訂票AirPlane *p=new AirPlane,*f=NULL;char line20;coutline;精品文檔歡迎下載system(cls);f=Displayflight(flight,line); /查找乘客要訂的航班是否存在if(f)InputPassenger(f-book,f);Displayflight(flight,line);elsecoutSorry! Not find the flight!endl;void ReturnTicket(AirPlane *&flight) /退票AirPlane *p=new AirPlane,*f=NULL;char line20;char name20;coutline;f=Displayflight(flight,line);if(f)Passenger *p=f-book-next;P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論