數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告飛機(jī)訂票系統(tǒng)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告飛機(jī)訂票系統(tǒng)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告飛機(jī)訂票系統(tǒng)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告飛機(jī)訂票系統(tǒng)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告飛機(jī)訂票系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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、-. z摘 要隨著時(shí)代的進(jìn)步社會(huì)分工的不斷細(xì)化,各個(gè)行業(yè)聯(lián)系的不斷密切,人們出行越來越多,出行的方式也是百花齊放,作為空中重要的交通工具,飛機(jī)航空系統(tǒng)也在不斷地得到優(yōu)化,其中重要的一項(xiàng)就是航空飛機(jī)訂票系統(tǒng),因此好的訂票系統(tǒng)關(guān)系著人們的日常出行方便與否,設(shè)計(jì)并編制出符合人們需要的航空訂票系統(tǒng)是一項(xiàng)繁重而艱巨的任務(wù)。本文 Microsoft Visual C 6.0 作為程序代碼的實(shí)現(xiàn)軟件,進(jìn)展飛機(jī)訂票系統(tǒng)的數(shù)據(jù)構(gòu)造課程設(shè)計(jì)。首先,根據(jù)課程設(shè)計(jì)容進(jìn)展需求分析,確定主要的功能模塊,。然后進(jìn)展數(shù)據(jù)構(gòu)造、各功能模塊算法以及它們之間的調(diào)用關(guān)系的概要設(shè)計(jì),做出各信息模塊的數(shù)據(jù)構(gòu)造表,并給出所用的構(gòu)造體和結(jié)點(diǎn)

2、類型。在此根底上,進(jìn)展各功能模塊的詳細(xì)算法設(shè)計(jì),做出各算法的流程圖。最后,對(duì)系統(tǒng)進(jìn)展測(cè)試,分為合法數(shù)據(jù)測(cè)試和非法數(shù)據(jù)測(cè)試,并對(duì)測(cè)試結(jié)果截圖保存。本系統(tǒng)包含錄入航班信息、訂票、退票、查詢航班信息、查詢訂票信息、修改航班信息和退出系統(tǒng) 7 個(gè)根本功能,經(jīng)測(cè)試后強(qiáng)健性良好。關(guān)鍵詞飛機(jī)訂票系統(tǒng);數(shù)據(jù)構(gòu)造;C 語(yǔ)言;單鏈表i-. z目錄 HYPERLINK l page3 1 HYPERLINK l page3 問題背景 HYPERLINK l page3 1 HYPERLINK l page3 2 HYPERLINK l page3 問題分析 HYPERLINK l page3 1 HYPERLINK

3、 l page4 3 HYPERLINK l page4 需求分析 HYPERLINK l page4 2 HYPERLINK l page4 3.1 HYPERLINK l page4 用戶需求分析 HYPERLINK l page4 2 HYPERLINK l page4 3.2 HYPERLINK l page4 功能需求分析 HYPERLINK l page4 2 HYPERLINK l page5 3.3 HYPERLINK l page5 系統(tǒng)需求分析 HYPERLINK l page5 3 HYPERLINK l page5 4 HYPERLINK l page5 邏輯設(shè)計(jì) HY

4、PERLINK l page5 3 HYPERLINK l page5 4.1 HYPERLINK l page5 數(shù)據(jù)構(gòu)造 HYPERLINK l page5 3 HYPERLINK l page7 4.2 HYPERLINK l page7 各功能模塊間函數(shù)調(diào)用關(guān)系 HYPERLINK l page7 5 HYPERLINK l page7 4.3 HYPERLINK l page7 函數(shù)說明 HYPERLINK l page7 5 HYPERLINK l page9 5 HYPERLINK l page9 詳細(xì)設(shè)計(jì) HYPERLINK l page9 7 HYPERLINK l page

5、9 5.1 HYPERLINK l page9 錄入航班信息 HYPERLINK l page9 7 HYPERLINK l page10 5.2 HYPERLINK l page10 顧客訂票模塊 HYPERLINK l page10 8 HYPERLINK l page10 5.3 HYPERLINK l page10 顧客退票模塊 HYPERLINK l page10 8 HYPERLINK l page11 5.4 HYPERLINK l page11 查詢航班模塊 HYPERLINK l page11 9 HYPERLINK l page11 5.5 HYPERLINK l page

6、11 查詢訂單模塊 HYPERLINK l page11 9 HYPERLINK l page11 5.6 HYPERLINK l page11 修改航班模塊 HYPERLINK l page11 9 HYPERLINK l page13 6 HYPERLINK l page13 程序調(diào)試與測(cè)試 HYPERLINK l page13 11 HYPERLINK l page13 6.1 HYPERLINK l page13 合法數(shù)據(jù)測(cè)試結(jié)果 HYPERLINK l page13 11 HYPERLINK l page15 6.2 HYPERLINK l page15 非法數(shù)據(jù)測(cè)試結(jié)果 HYPER

7、LINK l page15 13 HYPERLINK l page17 7 HYPERLINK l page17 結(jié)果分析 HYPERLINK l page17 15 HYPERLINK l page17 7.1 HYPERLINK l page17 輸入 HYPERLINK l page17 15 HYPERLINK l page17 7.2 HYPERLINK l page17 輸出 HYPERLINK l page17 15 HYPERLINK l page18 總結(jié) HYPERLINK l page18 16HYPERLINK l page18 參考文獻(xiàn) HYPERLINK l pag

8、e18 16ii-. z1問題背景訂票系統(tǒng)是一種新興的現(xiàn)代商務(wù)方式,近幾年來得到了迅速開展,顯現(xiàn)了巨大的現(xiàn)代商業(yè)價(jià)值。有理由相信,訂票系統(tǒng)將逐漸方便盛會(huì)生活,也將成為數(shù)字化社會(huì)的一種重要表達(dá)。它改變了傳統(tǒng)的買賣雙方面堆滿的交流方式,也打破了舊有工作經(jīng)營(yíng)模式,它通過網(wǎng)絡(luò)使航空公司面對(duì)整個(gè)世界,為用戶提供每周 7 天,每天 24 小時(shí)的全天候效勞。網(wǎng)上訂票的規(guī)模正在逐年迅速增長(zhǎng),它帶來的商機(jī)是巨大而深遠(yuǎn)的。訂票系統(tǒng)研究的主攻方向是通過公共計(jì)算機(jī)通信網(wǎng)絡(luò)進(jìn)展網(wǎng)上訂票活動(dòng),突破傳統(tǒng)商務(wù)在時(shí)間、地域上的限制,成為方便、快捷、平安可靠的新興電子化商務(wù)活動(dòng)模式。是網(wǎng)上訂票活動(dòng)更平安、可靠、快速、明確和方便。

9、對(duì)航空公司來說,航空訂票管理系統(tǒng)既能擴(kuò)大效勞圍,擴(kuò)大公司影響,減少營(yíng)業(yè)費(fèi)用,又對(duì)穩(wěn)固航空公司的客源有著重要的輔助作用;站在旅客的角度,航空公司提供的這種效勞提供了更多的方便,節(jié)省了很多時(shí)間。建立航空訂票管理系統(tǒng)是表達(dá)和提高航空公司領(lǐng)導(dǎo)業(yè)績(jī)的一條捷徑。2問題分析通過此系統(tǒng)可以實(shí)現(xiàn)如下功能:錄入:可以錄入航班情況數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)構(gòu)造、具體數(shù)據(jù)自定查詢:可以查詢*個(gè)航線的情況如,輸入航班號(hào),查詢起降時(shí)間,起飛抵達(dá)城市,航班票價(jià),票價(jià)折扣,確定航班是否滿倉(cāng);可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況;訂票:訂票情況可以存在一個(gè)數(shù)據(jù)文件中,構(gòu)造自己設(shè)定可以訂票,如果該航班已經(jīng)無票,可以提供

10、相關(guān)可選擇航班;退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有,證件號(hào),訂票數(shù)量及航班情況,訂單要有編號(hào)。修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件1-. z3需求分析3.1 用戶需求分析用戶使用此程序所要完成的工作主要為:錄入和查詢所有航線信息、查看已訂票客戶信息、查詢航線、辦理訂票業(yè)務(wù)、辦理退票業(yè)務(wù)。通過此系統(tǒng)可以方便的進(jìn)展上述工作。每條航線所涉及的信息有:終點(diǎn)站名、航班號(hào)、飛行時(shí)間、票價(jià)、乘員定額、余票量。已訂票的客戶信息包括、訂票量、艙位等級(jí)1,2 或 3。等候替補(bǔ)的客戶信息包括、所需票量。查詢航線功能可以根據(jù)旅客提出的終點(diǎn)站名輸出航班號(hào)、飛行時(shí)間、票價(jià)、乘員定額、余票量。訂

11、票業(yè)務(wù)功能根據(jù)客戶提出的要求航班號(hào)、訂票數(shù)額查詢?cè)摵桨嗥鳖~情況,假設(shè)尚有余票,則為客戶辦理訂票手續(xù),輸出座位號(hào);假設(shè)已滿員或余票額少于定票額,則需重新詢問客戶要求。假設(shè)需要,可登記排隊(duì)候補(bǔ)購(gòu)票。退票業(yè)務(wù)功能根據(jù)客戶提供的情況航班號(hào)、為客戶辦理退票手續(xù),然后查詢?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首先詢問排在第一的客戶,假設(shè)所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其他排隊(duì)候補(bǔ)的客戶。3.2功能需求分析1.功能模塊說明:將航班的根本信息錄入到系統(tǒng)中。根據(jù)航班號(hào)或者根據(jù)起飛地點(diǎn)、降落地點(diǎn)查詢所需航班信息。輸入和所要訂航班的航班號(hào)訂票。輸入和所訂航班的航班號(hào)辦理退票。輸入航班號(hào),修改該航班的起飛和

12、降落時(shí)間以修改航班的起降時(shí)間。退出的同時(shí)將信息寫入文件。2. 訂票系統(tǒng)功能圖2-. z訂票系統(tǒng)錄辦辦查查航退入理理詢?cè)儼喑龊接喭撕接喰畔蛋嗥逼卑鄦蜗⒔y(tǒng)信業(yè)業(yè)信信修息務(wù)務(wù)息息改圖 3.1 訂票系統(tǒng)構(gòu)造圖3.3 系統(tǒng)需求分析開發(fā)環(huán)境:PC 機(jī),Windows 7 系統(tǒng)運(yùn)行軟件:Microsoft Visual C 6.04邏輯設(shè)計(jì)數(shù)據(jù)構(gòu)造航班的信息:航班的情況存儲(chǔ)構(gòu)造采用單鏈表,每個(gè)元素表示一個(gè)航班的情況,包括航班號(hào)、起飛時(shí)間、降落時(shí)間、起飛城市、抵達(dá)城市、航班票價(jià)、票價(jià)折扣、確定航班是否滿倉(cāng)和空座數(shù)九個(gè)數(shù)據(jù)項(xiàng):3.1 航班信息的數(shù)據(jù)構(gòu)造表數(shù)據(jù)項(xiàng)數(shù)據(jù)類型航班號(hào)字符串char起飛時(shí)間字符串 (cha

13、r)降落時(shí)間字符串 (char)起飛城市字符串 (char)抵達(dá)城市字符串 (char)航班是否滿倉(cāng)整型 (int)空座數(shù)整型 (int)票價(jià)浮點(diǎn)數(shù) (float)票價(jià)折扣浮點(diǎn)數(shù) (float)typedef struct passengernode /定義客戶資料結(jié)點(diǎn) char name20; / char ID_num20; /證件號(hào) char flight_num10; /航班號(hào) int order_num; /訂單號(hào) int ticket_num; /訂票數(shù)量 struct passengernode *ne*t; /指向下一個(gè)結(jié)點(diǎn) passengernode; 3 客戶鏈表:每個(gè)數(shù)據(jù)

14、元素包括頭指針和尾指針兩個(gè)數(shù)據(jù)項(xiàng): 每個(gè)結(jié)點(diǎn)包括兩個(gè)指針域: C 語(yǔ)言描述如下: typedef struct passengerList passengernode *head; passengernode *rear; passengerList;4.2各功能模板函數(shù)之間的調(diào)用關(guān)系。4.3 函數(shù)說明 void init_flight(flightnode *&h):要建立一個(gè)以 h 為頭結(jié)點(diǎn)的空鏈表,錄入航班信息和增加航班后將航班結(jié)點(diǎn)插入該鏈表。 void init_passengerList(passengerList *&pList):建立一個(gè)帶有頭指針和尾指針的空鏈表,存儲(chǔ)帶有顧客信

15、息的結(jié)點(diǎn)。 頭指針域 尾指針域 void save_flight(flightnode *h):保存航班信息到指定數(shù)據(jù)文件中。 void load_flight(flightnode *&h):從存儲(chǔ)航班信息的文件導(dǎo)入航班信息到航班鏈表中。 void save_passenger(passengerList *PList):保存客戶信息到指定數(shù)據(jù)文件中。 void load_passenger(passengerList *&PList):從存儲(chǔ)客戶信息的文件導(dǎo)入客戶信息到客戶鏈表中。 void add_flight(flightnode *&h):錄入航班信息后調(diào)用 insert_fligh

16、t 函數(shù)增加班。 void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int left,float price,float price_discount,int isFull):在錄入航班情況或增加新的航班后,將新的航班結(jié)點(diǎn)插入到航線鏈表中。 int book(flightnode *&l,passengerList *&PList):要完成客戶訂票,將客戶結(jié)點(diǎn)插入客戶鏈表中,并修改相應(yīng)的航班信息。 void in

17、sert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num):在顧客訂票后,將該顧客結(jié)點(diǎn)插入到顧客鏈表中,并修改相應(yīng)的航班信息。 void find_same_flight(flightnode *l,char *flight_num):在客戶訂票時(shí),當(dāng)客戶輸入的航班號(hào)對(duì)應(yīng)的航班已滿倉(cāng)時(shí),提供其他可選航班并輸出顯示。 void cancel(passengerList *&PList,flightnode *&h):完成客戶退票,將

18、客戶的訂單從客戶鏈表中刪除,并修改相應(yīng)的航班信息。 int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num):按照要退票的顧客的和證件號(hào)查找該顧客結(jié)點(diǎn),進(jìn)展刪除操作。 void flight_check(flightnode *h):選擇使用何種方式對(duì)航班信息進(jìn)展查詢。 void check_all_flight(flightnode *l):瀏覽所有航班信息。 int place_check(flightnode *l,char *start_place,char *end_place

19、):按照起飛抵達(dá)城市查詢航班信息。 int flight_num_check(flightnode *l,char *flight_num):按照航班號(hào)查詢航班信息。 void passenger_check(passengerList *PList):選擇使用何種方式對(duì)訂單信息進(jìn)展查詢。 void check_all_passenger(passengerList *PList):瀏覽所有訂單信息。 int order_num_check(passengerList *PList,int order_num):按訂單號(hào)查詢訂單信息。 int ID_name_check(passengerLi

20、st *PList,char *name,char *ID_num):按客戶和證件號(hào)查詢訂單信息。 void modify_flight(flightnode *&h,passengerList *&PList):修改航班信息,包括添加航班信息,刪除航班信息,修改航班起飛抵達(dá)時(shí)間。 void delete_flight(flightnode *&h,passengerList *&PList):按照*個(gè)航班號(hào)刪除航班結(jié)點(diǎn)。 5 詳細(xì)設(shè)計(jì)5.1 錄入航班信息在主函數(shù)中輸入1,調(diào)用 void add_flight(flightnode *&h)函數(shù),此函數(shù)將航班指針*p指向已存在航班鏈表*h 的頭

21、結(jié)點(diǎn),利用 for(;p-ne*t!=NULL;p=p-ne*t)使*p 指向航線鏈表的最后一個(gè)結(jié)點(diǎn),然后讓用戶輸入航班信息,然后調(diào)用 void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int left,float price,float price_discount,int isFull)函數(shù),用 malloc 函數(shù)申請(qǐng)一個(gè)航班結(jié)點(diǎn),并用指針*q 指向,將航班信息賦到新申請(qǐng)的結(jié)點(diǎn)中,p-ne*t=q;p=p-n

22、e*t;該操作將該結(jié)點(diǎn)插入航班鏈表中。流程圖如下5.2 顧客訂票模塊在主函數(shù)中輸入2,調(diào)用 int book(flightnode *&h,passengerList *&PList)函數(shù)完成客戶的訂票。用航班指針*p 指向已存在航班鏈表*h 的頭結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn),請(qǐng)客戶輸入起飛抵達(dá)城市,分別存于 start_place 和 end_place 中。調(diào)用 int place_check(flightnode *l,char *start_place,char *end_place)函數(shù),如果函數(shù)返回1則請(qǐng)客戶輸入要訂的航班號(hào),如果輸入的航班號(hào)不存在,輸出提示信息, 如果航班存在則提示客戶輸入訂

23、的票數(shù)、客戶的和證件號(hào),調(diào)用 void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num)函數(shù),定義航班指針*p=h-ne*t,使用 for 循環(huán)匹配 flight_num和 p-flight_num,找到后,執(zhí)行 p-left=p-left-ticket_num,修改相應(yīng)航班的空座數(shù)。用malloc 函數(shù)申請(qǐng)一個(gè)客戶結(jié)點(diǎn),并用指針*q 指向,將客戶信息和航班號(hào)賦到新申請(qǐng)的結(jié)點(diǎn)中,PList-rear-ne*t=q;P

24、List-rear=q;該操作將該結(jié)點(diǎn)插入客戶鏈表中。 如果該航班已滿倉(cāng)或該航班的空座數(shù)不夠,輸出可供選擇的航班,讓客戶選擇,之后調(diào)用 void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num)函數(shù)將客戶結(jié)點(diǎn)插入客戶鏈表中. 5.3 顧客退票模塊 在主函數(shù)中輸入3,調(diào)用 void cancel(passengerList *&PList,flightnode *&h)函數(shù)完成客戶的退票。提示客戶輸入客戶的和證件號(hào)以及

25、要退的航班號(hào),此函數(shù)再調(diào)用 int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num,char *flight_num)函數(shù),用客戶結(jié)點(diǎn)指針*pr 等于已存在客戶鏈表結(jié)點(diǎn) Plist 的頭指針,相當(dāng)于將*pr 指向客戶鏈表的頭結(jié)點(diǎn),用客戶結(jié)點(diǎn)指針*p 指向 pr 的下一個(gè)結(jié)點(diǎn)。使用 while 循環(huán)尋找匹配、證件號(hào)、航班號(hào)的客戶結(jié)點(diǎn),找到后定義航班指針*f=h-ne*t,使用 for 循環(huán)找到匹配航班號(hào)的航班結(jié)點(diǎn),執(zhí)行 f-left=f-left+p-ticket_num,修改退票后相應(yīng)航

26、班結(jié)點(diǎn)的空座數(shù),之后執(zhí)行 pr-ne*t=p-ne*t;free(p);刪除要退票的客戶訂單信息。如果沒有找到匹配的客戶結(jié)點(diǎn),輸出提示信息.5.4 查詢航班模塊 在主函數(shù)中輸入4,調(diào)用 void flight_check(flightnode *h)函數(shù)選擇使用哪一種查詢方式進(jìn)展查詢。提示客戶輸入查詢方式,如客戶輸入1,則調(diào)用 int flight_num_check(flightnode *l,char *flight_num)函數(shù)按航班號(hào)對(duì)航班進(jìn)展查詢,提示客戶輸入航班號(hào),存于 flight_num 中;如客戶輸入2,則調(diào)用 int place_check(flightnode *l,ch

27、ar *start_place,char *end_place)函數(shù)按起飛抵達(dá)城市對(duì)航班進(jìn)展查詢,提示客戶輸入起飛抵達(dá)城市,分別存于 start_place 和 end_place 中;如客戶輸入3,則調(diào)用 void check_all_flight(flightnode *l)函數(shù)瀏覽全部航班信息。 在 int flight_num_check(flightnode *l,char *flight_num)函數(shù)中,定義航班指針*p=h,使用 for 循環(huán)匹配 flight_num 和 p-flight_num,找到匹配的航班節(jié)點(diǎn)后,輸出該航班的所有信息。 在 int place_check(

28、flightnode *l,char *start_place,char *end_place)函數(shù)中,定義航班指針*p=h,使用 for 循環(huán)尋找匹配 start_place 和 start_place 的結(jié)點(diǎn),找到匹配的航班結(jié)點(diǎn)后,輸出該航班的所有信息。 在 void check_all_flight(flightnode *l)函數(shù)中,定義航班指針*p=h,使用 for 循環(huán)輸出所有航班信息。 5.5 查詢訂單模塊在主函數(shù)中輸入5,調(diào)用 void passenger_check(passengerList *PList)函數(shù)選擇使用哪一種查詢方式進(jìn)展查詢。提示客戶輸入查詢方式,如客戶輸入

29、1,則調(diào)用 int ID_name_check(passengerList *PList,char *name,char *ID_num)函數(shù)按客戶的和證件號(hào)對(duì)訂單進(jìn)展查詢,提示客戶輸入和證件號(hào),分別存于 name 和 ID_num 中;如客戶輸入2,則調(diào)用 int order_num_check(passengerList *PList,int order_num)函數(shù)按訂單號(hào)對(duì)訂單進(jìn)展查詢,提示客戶輸入訂單號(hào),存于 order_num 中;如客戶輸入3,則調(diào)用 void check_all_passenger(passengerList *PList)函數(shù)瀏覽全部訂單信 在 int ID_

30、name_check(passengerList *PList,char *name,char *ID_num)函數(shù)中,定義客戶指針*p= PList-head-ne*t,使用 for 循環(huán)尋找匹配 name 和 ID_num 的結(jié)點(diǎn),找到匹配的訂單節(jié)點(diǎn)后,輸出該訂單的所有信息。 在 int order_num_check(passengerList *PList,int order_num)函數(shù)中,定義客戶指針*p=PList-head-ne*t,使用 for 循環(huán)尋找匹配 order_num 的結(jié)點(diǎn),找到匹配的訂單結(jié)點(diǎn)后,輸出該訂單的所有信息。 在 void check_all_passe

31、nger(passengerList *PList)函數(shù)中,定義客戶指針*p=PList-head-ne*t,使用 for 循環(huán)輸出所有訂單信息。 5.6 修改航班模塊在主函數(shù)中輸入6,調(diào)用 void modify_flight(flightnode *&h,passengerList *&PList)函數(shù)對(duì)航班信息進(jìn)展修改。提示客戶輸入修改模式,如客戶輸入1,則調(diào)用 void add_flight(flightnode *&h)函數(shù)添加航班信息;如客戶輸入2,則調(diào)用 void delete_flight(flightnode *&h,passengerList *&PList)函數(shù)刪除指定的

32、航班信息,提示客戶輸入航班號(hào),存于 flight_num 中;如客戶輸入3,則示客戶輸入航班號(hào),如果該航班號(hào)存在,則提示用戶輸入修改后的起飛抵達(dá)時(shí)間。 在 void delete_flight(flightnode *&h,passengerList *&PList)函數(shù)中,定義航班指針*pr=h,定義航班指針 p=pr-ne*t,定義客戶指針*qr=PList-head,定義客戶指針*q=qr-ne*t。使用 while 循環(huán)尋找匹配航班號(hào)的航班結(jié)點(diǎn),找到后執(zhí)行 pr-ne*t=p-ne*t;free(p),刪除指定的航班信息;使用 while 循環(huán)找到匹配航班號(hào)的訂單結(jié)點(diǎn),執(zhí)行 qr-ne

33、*t=q-ne*t;free(q),刪除對(duì)該航班訂票的訂單信息。如果沒有找到匹配的航班結(jié)點(diǎn),輸出提示信息。6.1 合法數(shù)據(jù)測(cè)試結(jié)果 1編譯后顯示菜單 2輸入菜單號(hào)1,開場(chǎng)信息的錄入輸入菜單號(hào)2,進(jìn)入訂票模塊 輸入菜單號(hào)3,進(jìn)入退票模塊 輸入菜單號(hào)4,查詢航班信息 輸入菜單號(hào)1,按航班號(hào)查詢航班信息 b. 輸入菜單號(hào)2,按起飛抵達(dá)城市查詢航班信息 c. 輸入菜單號(hào)3,瀏覽全部航班信息 輸入菜單號(hào)5,查詢訂單信息 輸入菜單號(hào)1,按客戶和證件號(hào)查詢訂單信息 b. 輸入菜單號(hào)2,按訂單號(hào)查詢訂單信息 c. 輸入菜單號(hào)3,瀏覽全部訂單信息 7輸入菜單號(hào)6,進(jìn)入修改模塊 a. 輸入菜單號(hào)1,增加航班 b.

34、 輸入菜單號(hào)2,刪除航班 c. 輸入菜單號(hào)3,修改航班時(shí)間 6.2 非法數(shù)據(jù)測(cè)試結(jié)果 1 選擇訂票效勞后,輸入了沒有開通航班的城市 2 選擇訂票效勞后,輸入了系統(tǒng)中沒有的航班號(hào) (4 選擇退票效勞后,輸入了沒有訂票的客戶和證件號(hào) 5 選擇刪除航班效勞后,輸入了系統(tǒng)中不存在的航班號(hào) 5 選擇航班查詢效勞后,輸入了沒有開通航班的城市 6 選擇航班查詢效勞后,輸入了系統(tǒng)中不存在的航班號(hào) 7 選擇訂單查詢效勞后,輸入了沒有訂票的客戶和證件號(hào) 8 選擇訂單查詢效勞后,輸入了系統(tǒng)中不存在的訂單號(hào) (9 選擇修改航班時(shí)間效勞后,輸入了系統(tǒng)中不存在的航班號(hào)#include #include #include

35、#include typedef struct flightnode char flight_num10; char start_time10; char end_time10; char start_place20; char end_place20; int left; float price; float price_discount; int isFull; struct flightnode *ne*t; flightnode; typedef struct passengernode char name20; char ID_num20; char flight_num10; in

36、t order_num; int ticket_num; struct passengernode *ne*t; passengernode; typedef struct passengerList passengernode *head; passengernode *rear; passengerList; void init_flight(flightnode *&h) h=(flightnode *)malloc(sizeof(flightnode); if(h=NULL) e*it(0); h-ne*t=NULL; void init_passengerList(passenger

37、List *&pList) pList=(passengerList *)malloc(sizeof(passengerList); pList-head=(passengernode *)malloc(sizeof(passengernode); pList-rear=pList-head; pList-rear-order_num=0; pList-head-ne*t=NULL; void save_passenger(passengerList *PList) FILE* fp = fopen(passenger.dat,wb); if(fp=NULL) return; passenge

38、rnode *temp=PList-head-ne*t; while(temp!=NULL) fwrite(temp,sizeof(passengernode),1,fp); temp = temp-ne*t; ; fclose(fp); void load_passenger(passengerList *PList) FILE* fp = fopen(passenger.dat,rb); if(fp=NULL) return; passengernode *q; int n; while(!feof(fp) q=(passengernode *)malloc(sizeof(passenge

39、rnode); n =fread(q,sizeof(passengernode),1,fp); if(n!=1) break; PList-rear-ne*t=q; PList-rear=q; PList-rear-ne*t=NULL; fclose(fp); void save_flight(flightnode *h) FILE* fp = fopen(flightList.dat,wb); if(fp=NULL) return; flightnode *temp=h-ne*t; while(temp!=NULL) fwrite(temp,sizeof(flightnode),1,fp);

40、 temp = temp-ne*t; ; fclose(fp); void load_flight(flightnode *&h) flightnode *pt=h; FILE* fp = fopen(flightList.dat,rb); if(fp=NULL) return; flightnode *q; int n; while(!feof(fp) q=(flightnode *)malloc(sizeof(flightnode); n=fread(q,sizeof(flightnode),1,fp); if(n!=1) break; pt-ne*t=q; pt=q; pt-ne*t=N

41、ULL; fclose(fp); int find_same_flight(flightnode *h,char *flight_num) flightnode *t=h-ne*t,*p=h-ne*t; int mark=0; printf(%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8sn,航班號(hào),起飛城市,抵達(dá)城市,起飛時(shí)間,抵達(dá)時(shí)間,價(jià)格,折扣,是否滿倉(cāng),空座數(shù)); while(t!=NULL & strcmp(t-flight_num,flight_num)!=0) t=t-ne*t; while(p!=NULL) if(strcmp(t-start_

42、place,p-start_place)=0)&(strcmp(t-end_place,p-end_place)= 0)&(strcmp(t-flight_num,p-flight_num)!=0) printf(%-8s%-12s%-12s%-10s%-10s%-8.2f%-6.2f%-10d%-8dn,p-flight_num, p-start_place,p-end_place,p-start_time,p-end_time,p-price,p-price_discount,p-isFull,p-left); mark=1; p=p-ne*t; if(mark=0) printf(tt

43、抱歉,沒有可選的航班!n); return 0; return 1; void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int left,float price,float price_discount,int isFull) flightnode *q; flightnode *p=h; q=(flightnode *)malloc(sizeof(flightnode); strcpy(q-flight_num

44、,flight_num); strcpy(q-start_place,start_place); strcpy(q-end_place,end_place); strcpy(q-start_time,start_time); strcpy(q-end_time,end_time); q-left=left; q-price=price; q-price_discount=price_discount; q-isFull=isFull; q-ne*t=p-ne*t; p-ne*t=q; p=p-ne*t; void insert_passengerList(flightnode *&h,pass

45、engerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num) flightnode *p=h-ne*t; for(;p!=NULL;p=p-ne*t) if(strcmp(p-flight_num,flight_num)=0) p-left=p-left-ticket_num; if(p-left=0) p-isFull=1; passengernode *q=(passengernode *)malloc(sizeof(passengernode);/新建結(jié)點(diǎn),存放新的客戶訂單信息 strcpy(q-na

46、me,name); strcpy(q-ID_num,ID_num); strcpy(q-flight_num,flight_num); q-ticket_num=ticket_num; q-ne*t=NULL; PList-rear-ne*t=q; q-order_num=PList-rear-order_num+1; PList-rear=q; void delete_flight(flightnode *&h,passengerList *&PList) flightnode *p,*pr; passengernode *q,*qr; char flight_num10; int mark

47、=1; qr=PList-head; q=qr-ne*t; pr=h; p=pr-ne*t; printf(tt 請(qǐng)輸入你要?jiǎng)h除的航班號(hào):); scanf(%s,flight_num); while(p!=NULL) if(strcmp(flight_num,p-flight_num)=0) pr-ne*t=p-ne*t; free(p); printf(tt 刪除%s 航班成功!n,flight_num); mark=0; p=NULL; if(pr-ne*t!=NULL) pr=pr-ne*t; p=pr-ne*t; if(mark=1) printf(tt 無此航班,無法刪除!n); e

48、lse while(q!=NULL) if(strcmp(flight_num,q-flight_num)=0) qr-ne*t=q-ne*t; free(q); q=NULL; if(qr-ne*t!=NULL) qr=qr-ne*t; q=qr-ne*t; int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num) passengernode *p,*pr=PList-head; p=pr-ne*t; while(p!=NULL) if(strcmp(name,p-name)=0&st

49、rcmp(ID_num,p-ID_num)=0) for(flightnode *f=h-ne*t;f!=NULL;f=f-ne*t) if(strcmp(p-flight_num,f-flight_num)=0) f-left=f-left+p-ticket_num; f-isFull=0; break; pr-ne*t=p-ne*t; free(p); printf(tt 顧客%s,%s 退票成功!n,name,ID_num); return 1; pr=pr-ne*t; p=pr-ne*t; printf(tt 無此顧客,無法退票!n); return 0; void add_fligh

50、t(flightnode *&h) flightnode *p=h; char flight_num10,start_time10,end_time10,start_place20,end_place20; int left,isFull,mark=1; float price,price_discount; for(;p-ne*t!=NULL;p=p-ne*t) while(mark=1) printf(tt 請(qǐng)輸入你要增加的航班號(hào):); scanf(%s,flight_num); printf(tt 請(qǐng)輸入出發(fā)地:); scanf(%s,start_place); printf(tt 請(qǐng)輸

51、入目的地:); scanf(%s,end_place); printf(tt 請(qǐng)輸入起飛時(shí)間:); scanf(%s,start_time); printf(tt 請(qǐng)輸入抵達(dá)時(shí)間:); scanf(%s,end_time); printf(tt 請(qǐng)輸入票價(jià):); scanf(%f,&price); printf(tt 請(qǐng)輸入折扣:); scanf(%f,&price_discount); printf(tt 請(qǐng)輸入剩余座位數(shù):); scanf(%d,&left); printf(tt 請(qǐng)輸入是否滿倉(cāng)(0 表示沒有滿倉(cāng) 1 以滿倉(cāng)):); scanf(%d,&isFull); insert_fl

52、ight(p,flight_num,start_place,end_place,start_time,end_time,left,price, price_discount,isFull); printf(tt 增加航班%s 成功!n,flight_num); printf(tt 是否繼續(xù)錄入航班信息(1 表示繼續(xù)錄入;0 表示停頓錄入).n); printf(tt 請(qǐng)輸入:); scanf(%d,&mark); int flight_num_check(flightnode *h,char *flight_num) flightnode *p=h; printf(%-8s%-12s%-12s

53、%-10s%-10s%-8s%-6s%-10s%-8sn,航班號(hào),起飛城市,抵達(dá)城市,起飛時(shí)間,抵達(dá)時(shí)間,價(jià)格,折扣,是否滿倉(cāng),空座數(shù)); for(;p!=NULL;p=p-ne*t) if(strcmp(p-flight_num,flight_num)=0) printf(%-8s%-12s%-12s%-10s%-10s%-8.2f%-6.2f%-10d%-8dn,p-flight_num, p-start_place,p-end_place,p-start_time,p-end_time,p-price,p-price_discount,p-isFull,p-left); return 1

54、; printf(tt 抱歉,沒有航班號(hào)為%s 的航班信息!n,flight_num); return 0; int place_check(flightnode *h,char *start_place,char *end_place) flightnode *p=h; int mark=0; printf(%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8sn,航班號(hào),起飛城市,抵達(dá)城市,起飛時(shí)間,抵達(dá)時(shí)間,價(jià)格,折扣,是否滿倉(cāng),空座數(shù)); for(;p!=NULL;p=p-ne*t) if(strcmp(p-start_place,start_place)=

55、0&strcmp(p-end_place,end_place)=0) printf(%-8s%-12s%-12s%-10s%-10s%-8.2f%-6.2f%-10d%-8dn,p-flight_num, p-start_place,p-end_place,p-start_time,p-end_time,p-price,p-price_discount,p-isFull,p-left); mark=1; if(mark=0) printf(tt 抱歉,沒有從%s 到%s 的航班信息!n,start_place,end_place); return 0; return 1; void check

56、_all_flight(flightnode *h) flightnode *p=h; int m=0; printf(%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8sn,航班號(hào),起飛城市,抵達(dá)城市,起飛間,抵達(dá)時(shí)間,價(jià)格,折扣,是否滿倉(cāng),空座數(shù)); for(;p!=NULL;p=p-ne*t) printf(%-8s%-12s%-12s%-10s%-10s%-8.2f%-6.2f%-10d%-8dn,p-flight_num, p-start_place,p-end_place,p-start_time,p-end_time,p-price,p-price_

57、discount,p-isFull,p-left); m=1; if(m=0) printf(tt 航班信息為空!n); void flight_check(flightnode *h) flightnode *p=h-ne*t; char flight_num10,start_place20,end_place20; char a; printf(tt 請(qǐng)選擇航班查詢方式:n); printf(tt1 表示按航班號(hào)進(jìn)展查詢;n); printf(tt2 表示按起飛抵達(dá)城市進(jìn)展查詢;n); printf(tt3 表示瀏覽全部航班信息.ntt 請(qǐng)選擇輸入:); a=getch(); printf

58、(%cn,a); if(a=1) printf(tt 請(qǐng)輸入航班號(hào):); scanf(%s,flight_num); flight_num_check(p,flight_num); else if(a=2) printf(tt 請(qǐng)輸入起飛城市:); scanf(%s,start_place); printf(tt 請(qǐng)輸入抵達(dá)城市:); scanf(%s,end_place); place_check(p,start_place,end_place); else if(a=3) check_all_flight(p); else return; int ID_name_check(passeng

59、erList *PList,char *name,char *ID_num) passengernode *p=PList-head-ne*t; int mark=0; printf(%-8s%-20s%-20s%-10s%-8s%n,訂單號(hào),證件號(hào),航班號(hào),訂票數(shù)量); for(;p!=NULL;p=p-ne*t) if(strcmp(p-ID_num,ID_num)=0&strcmp(p-name,name)=0) printf(%-8d%-20s%-20s%-10s%-8d%n,p-order_num,p-name,p-ID_num, p-flight_num,p-ticket_num)

60、; mark=1; if(mark=0) printf(tt 抱歉,沒有%s,%s 的訂單信息!n,name,ID_num); return 0; return 1; int order_num_check(passengerList *PList,int order_num) passengernode *p=PList-head-ne*t; printf(%-8s%-20s%-20s%-10s%-8s%n,訂單號(hào),證件號(hào),航班號(hào),訂票數(shù)量); for(;p!=NULL;p=p-ne*t) if(p-order_num=order_num) printf(%-8d%-20s%-20s%-10

溫馨提示

  • 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)論