資源描述:
《數(shù)據(jù)結(jié)構(gòu)(C語言)實驗報告_飛機訂票系統(tǒng)》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、《數(shù)據(jù)結(jié)構(gòu)》課程設計報告一、訂票系統(tǒng)【需求分析】本訂票系統(tǒng)要能夠?qū)崿F(xiàn)航班情況的錄入功能、航班的查詢功能、訂票功能、退票功能以及管理本系統(tǒng)的功能即能夠修改航班信息。具體分析如下:1、錄入功能可以錄入航班信息,如錄入航班號,到達城市,起飛時間,飛機票數(shù),票價。2、查詢功能可以查詢航班的各項信息,如可以查詢起降時間,起飛抵達城市,航班票價,確定航班是否滿倉,航班號。3、訂票功能可以訂票并且記錄下乘客的相關信息如記錄下乘客姓名,身份證號碼,所訂航班的航班號以及所訂的票數(shù)。4、退票功能可以退票并且記錄乘客的相關信
2、息以及退票信息。5、修改功能可以根據(jù)需要由管理員對航班信息進行修改更正。【概要設計】1、算法設計:每個模塊的算法設計說明如下:(1)錄入模塊:查找單鏈表的鏈尾,在鏈尾插入一個“航班信息”的新結(jié)點。(2)查詢模塊:提供兩種查方式:按航號和按航線查詢,1代表按航號查詢,2代表按航線查詢。0則表示退出查詢。順著單鏈表查找,如果與航班號(航線)一致,輸出相關信息,否則,查詢不成功。(3)訂票模塊:查找乘客要訂的航班號,判斷此航班是否有空位,有則輸入乘客有關信息,訂票成功,否則失敗。(4)退票模塊:輸入要退票的乘
3、客姓名以及證件號碼,查找乘客資料的鏈表中是否有這位乘客,有則刪去此結(jié)點,并在空位加上1,無則退票失敗。(5)修改模塊:輸入密碼,確認是否有權限對航班信息進行修改,有則在航班信息鏈表中查找要修改的結(jié)點,進行修改,否則不能修改。2.存儲結(jié)構(gòu)設計:(1)航班的信息:為了便于查找和修改,航班的情況存儲結(jié)構(gòu)采用單鏈表,每個元素表示一個航班的情況,包括航班號、起飛達到的時間、空座和目的的、票價以及限座七個數(shù)據(jù)項:航班號起飛時間達到時間目的地限座空座票價hD1D2D3單鏈表如下:每個結(jié)點包括數(shù)據(jù)域和指針域:數(shù)據(jù)域指針
4、域C語言描述如下:typedefstructflightnode{charair_num[10];/*航班號*/charstart_time[15];/*起飛時間*/charend_time[15];/*到達時間*/charend_place[30];/*目的地*/inttotal;/*限座*/intleft;/*空座*/intprice;/*票價*/structflightnode*next;/*指向個結(jié)點*/}flightnode;(1)旅客的資料:為了便于插入、刪除和修改,其采用單鏈表存儲結(jié)構(gòu),每
5、個數(shù)據(jù)元素包括姓名、證件號碼、航班號和座位號四個數(shù)據(jù)項:旅客姓名證件號碼航班號座位號每個結(jié)點包括數(shù)據(jù)域和指針域:數(shù)據(jù)域指針域C語言描述如下:typedefstructpassengernode{/*定義乘客資料結(jié)點*/charname[20];charID_num[20];charair_num[20];intseat_num;structpassengernode*next;}passengernode;【詳細設計】本系統(tǒng)源程序如下:#include#include6、>#defineOK1#defineERROR0typedefstructflightnode{/*定義航班信息結(jié)點*/charair_num[10];charstart_time[15];charend_time[15];charend_place[30];inttotal;intleft;intprice;structflightnode*next;}flightnode;typedefstructpassengernode{/*定義乘客資料結(jié)點*/charname[20];charID_num[2
7、0];charair_num[20];intseat_num;structpassengernode*next;}passengernode;flightnode*head_flight();/*生成航班信息的頭結(jié)點*/passengernode*head_passenger();/*生成乘客資料的頭結(jié)點*/intCreatFlight(flightnode**l);/*生成航班信息鏈表*/intCreatPassenger(passengernode**l);/*生成乘客資料鏈表*/intInsert
8、Flight(flightnode**p,char*air_num,char*start_time,char*end_place,inttotal,intleft,intprice);/*插入航班信息的結(jié)點*/intInsertPassenger(passengernode**p,char*name,char*ID_num,char*air_num,intseat_num);/*插入乘客資料的結(jié)點*/flightnode*modefy_ai