數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-航班的信息系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-航班的信息系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-航班的信息系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-航班的信息系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-航班的信息系統(tǒng)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-航班的信息系統(tǒng)目 錄需求分析11.1系統(tǒng)主要功能11.2系統(tǒng)要求1 TOC o 1-5 h z 概要設(shè)計(jì)22.1系統(tǒng)功能模塊圖22.2算法設(shè)計(jì):22.2.1錄入模塊 22.2.2訂票退票模塊 22.2.3查詢修改模塊32.3存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)42.4 C語言描述 5詳細(xì)設(shè)計(jì)63.1錄入航班信息模塊63.2訂票模塊63.3退票模塊63.4查詢航班模塊63.6修改航線模塊63.7保存退出模塊6調(diào)試分析 7 用戶說明13收獲及體會(huì)13源代碼141、需求分析1.1系統(tǒng)主要功能(1)錄入:可以錄入航班情況。(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù) 據(jù)自定)(2)查詢:可以查詢某個(gè)航線

2、的情況(如,輸入航班號(hào),查詢起降時(shí)間,起飛抵達(dá)城市, 航班票價(jià),票價(jià)折扣,確定航班是否滿倉);可以輸入起飛抵達(dá)城市,查詢飛機(jī) 航班情況。(3)訂票:可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班。(訂票情況可 以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)(4)退票:可以退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號(hào),訂票數(shù)量 及航班情況,訂單要有編號(hào)。(5)修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件。1.2系統(tǒng)要求首先錄入航班的信息:包括航班號(hào),查詢起降時(shí)間,起飛抵達(dá)城市,航班票 價(jià),票價(jià)折扣,確定航班是否滿倉。根據(jù)提示完成相應(yīng)的要求如:查詢航班、訂 票、退票、修改航班等。航班信息如

3、表1.1所示。訂票客戶的信息也錄入其中如: 姓名,證件號(hào),訂票數(shù)量及航班情況。所有信息根據(jù)數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文 件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定??蛻粜畔⑷绫?.2所示。表1.2客戶信息航班號(hào) 姓名 證件號(hào) 訂票數(shù) 票價(jià)MU5138張三 72013141375表1.1航班信息航班號(hào)起飛時(shí)間降落時(shí)間起飛城市降落城市票價(jià) 折扣是 否滿倉CN8963 12:00 13:00 郴州 長沙125 7.5 否MU456714:00 15:00 北京上海 355 3.3 否CN1234 9:0011:00 武漢長沙 215 3.5是概要設(shè)計(jì)2.1系統(tǒng)功能模塊圖圖2.1主程序流程圖2.2算法設(shè)計(jì):2.2.1錄

4、入模塊查找單鏈表的鏈尾,在鏈尾插入一個(gè)“航班信息”的新結(jié)點(diǎn)。流程圖如2.2.1 所示。2.2.2訂票退票模塊(1)訂票模塊:輸入起飛到達(dá)城市顯示錄入航班信息,查找乘客要訂的班 號(hào),判斷此航班是否有空位,有則輸入乘客有關(guān)信息,訂票成功,否則失敗。(2)退票模塊:輸入要退票的乘客姓名以及證件號(hào)碼,查找乘客資料的鏈 表中是否有這位乘客,有則刪去此結(jié)點(diǎn),無則退票失敗。流程圖如圖2.2.2所示。2.2.3查詢修改模塊(1)查詢模塊:提供兩種查方式:按航號(hào)和按航線查詢,1代表按航號(hào)查 詢,2代表按航線查詢。3則表示瀏覽全部航班信息。順著單鏈表查找,如果與 航班號(hào)(航線)一致,輸出相關(guān)信息,否則,查詢不成功

5、。(2)修改模塊: 在航線信息修改菜單中選擇修改內(nèi)容,若存在修改航班, 則在航班信息鏈表中查找要修改的結(jié)點(diǎn),進(jìn)行修改,否則不能修改。流程圖如 2.2.3所示。圖2.2錄入航線的流程圖NY圖2.3訂票退票流程圖2.4修改航班流程圖2.3存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)航班的信息:為了便于查找和修改,航班的情況存儲(chǔ)結(jié)構(gòu)采用單鏈表, 如圖2.3所示結(jié)構(gòu)每個(gè)元素表示一個(gè)航班的情況,包括航班號(hào),查詢起降時(shí)間, 起飛抵達(dá)城市,航班票價(jià),票價(jià)折扣,是否滿倉。旅客的資料:為了便于插入、刪除和修改,其采用單鏈表存儲(chǔ)結(jié)構(gòu), 每個(gè)數(shù)據(jù)元素包括姓名、證件號(hào)碼、航班號(hào)、訂票數(shù)和票價(jià)。圖2.3單鏈表存儲(chǔ)結(jié)構(gòu)2.4 C語言描述typedef

6、struct flightnodechar flight_num10; 航班號(hào)char start_time10; 降落時(shí)間char end_time10; /起飛時(shí)間char start_place20; /出發(fā)點(diǎn)char end_place20;/到達(dá)點(diǎn)int left;/余座位數(shù)float price; /票價(jià)float price_discount;/折扣int isFull;/票的余額struct flightnode *next;*flightlist;typedef struct passengernodechar name20;/訂票人的姓名char ID_num20;/訂票人

7、的證件號(hào)char flight_num10;/航班號(hào)char order_num;/訂單號(hào)int ticket_num;/訂單數(shù)量struct passengernode *next;/指向下一個(gè)結(jié)點(diǎn)*passengerlist;/客戶結(jié)點(diǎn)typedef struct pnode passengerlist head;passengerlist rear;*plist;詳細(xì)設(shè)計(jì)3.1錄入航班信息模塊在鍵盤上輸入航班的基本信息,對(duì)它們輸入后,要存進(jìn)原文件,采用fprintf 函數(shù)來實(shí)現(xiàn)該功能。再用戶輸入完成后,程序會(huì)詢問是否繼續(xù)輸入,這個(gè)功能更 具人性化,可以省去返回到主函數(shù)在進(jìn)入這個(gè)函數(shù)的麻煩

8、!3.2訂票模塊按照起始站跟終點(diǎn)站查詢票,并且查看是否還有票,帶訂票成功之后還要把 信息重新寫入文件中。3.3退票模塊按照客戶姓名、證件號(hào)進(jìn)行查詢,一旦查到就退票,然后重新把信息寫入文 件。3.4查詢航班模塊基本信息的查詢按查詢可供選擇的方式比較豐富,可按航班號(hào)、起飛抵達(dá)城 市查詢。在查詢小模塊中采用了直接查找的方法。還可以直接瀏覽全部航班信息。3.5查詢訂單模塊與航班信息查詢相同,訂單可按客戶姓名和證件號(hào)、訂單號(hào)查詢。3.6修改航線模塊修改包括增加航班,刪除航班和修改航班時(shí)間。修改航班時(shí)間按照航班號(hào)查 詢到航班進(jìn)行修改。航班起飛抵達(dá)城市不變?nèi)粢薷目赏ㄟ^取消即刪除航班或增加航班來修改。3.7

9、保存退出模塊完成前面各項(xiàng)操作之后,數(shù)據(jù)保存至文件中退出系統(tǒng)。調(diào)試分析開始時(shí)程序能執(zhí)行,但是有些功能不夠完善。后來經(jīng)過修改逐漸得到完善。我們用到單鏈表的存儲(chǔ)結(jié)構(gòu),由于對(duì)鏈表的性質(zhì)和用法不夠清晰在編寫程 序的時(shí)候出現(xiàn)了許多錯(cuò)誤,對(duì)于要求實(shí)現(xiàn)的功能達(dá)不到要求。經(jīng)過看書和跟其他 同學(xué)討論,都逐漸得到解決。輸入的航班信息、客戶信息保存到文件中。開始時(shí)我們使用的是fprintf 函數(shù)輸入文件始終不能寫入到文件中。后來經(jīng)過看書討論將其改為fscanf函數(shù) 后解決了這個(gè)問題。錄入信息后,顯示錄入信息后面兩項(xiàng)出現(xiàn)亂碼,后來進(jìn)過修改發(fā)現(xiàn)在寫程 序的時(shí)候?qū)⒏袷讲粚?duì),整形輸出弄成了字符串。經(jīng)過修改后得到了解決。其中還

10、遇到了許多錯(cuò)誤,例如未定義使用、書寫錯(cuò)誤等。經(jīng)過修改都得到 了解決。圖4.1主界面圖4.2錄入航班信息圖4.3訂票圖4.4按航班號(hào)查詢圖4.5按起飛抵達(dá)城市查詢圖4.6瀏覽全部航班信息圖4.7按客戶姓名和證件號(hào)查詢訂單圖4.8按訂單號(hào)查詢訂單圖4.9退票圖4.10修改航班信息圖4.11退出界面用戶說明運(yùn)行環(huán)境vc+6.0用戶界面操作過程:進(jìn)入主界面,按照提示可以完成錄入、訂退票、查詢航班和訂 單、修改等功能。各功能數(shù)據(jù)測(cè)試輸出的功能如圖4.1、圖4.2、圖4.3、圖4.4、 圖 4.5、圖 4.6、圖 4.7、圖 4.8、圖 4.9、圖 4.10、圖 4.11。收獲及體會(huì)我負(fù)責(zé)的模塊是修改和保

11、存這2個(gè)部分,在修改程序中,我直接借鑒了書中 例題 2.1 中算法中插入的做法 void modify_flight flightlist &h,plist PList,而后用到了 if語句來進(jìn)行增加,刪除,修改航班的操作的選擇,再用 for循環(huán)跟if語句對(duì)修改后的起飛和抵達(dá)時(shí)間進(jìn)行核對(duì)和插入。而在這個(gè)保存 程序中只用了 c+里面的方式FILE *fp fopen flightList.txt,w ;用寫入 的方式將文件保存到flightList.txt中。在這次課程設(shè)計(jì)中體會(huì)到了數(shù)據(jù)結(jié)構(gòu) 中算法的用法,又回顧了前面的知識(shí),讓我懂得了團(tuán)隊(duì)合作的重要性。這次課程設(shè)計(jì)我擔(dān)任組長負(fù)責(zé)錄入航班信息、訂

12、票、鏈表的初始化以及排版。 對(duì)我來說是一次很好的鍛煉。我了解到了自己的不足之處,同時(shí)鞏固和加深了對(duì) 數(shù)據(jù)結(jié)構(gòu)的理解,提高了綜合運(yùn)用本課程所學(xué)知識(shí)的能力。認(rèn)識(shí)到了算法的重要 性,通過這次課程設(shè)計(jì)我了解到,只有好的算法才能寫出好的程序。要提高自己 的編程能力,就必須親自去體驗(yàn)。即使會(huì)出現(xiàn)許多的錯(cuò)誤也是會(huì)有收獲的,至少 能夠加深鞏固對(duì)知識(shí)點(diǎn)的掌握,鍛煉了邏輯思維能力。這次課程設(shè)計(jì)讓我受益匪 淺。在這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)中,我負(fù)責(zé)的模塊是訂單查詢和航班查詢。此模塊 是最接近用戶需求的模塊,也是我們課程設(shè)計(jì)系統(tǒng)非常有價(jià)值的功能模塊。其中 用了大量的For循環(huán)和If語句的嵌套使用,讓我的邏輯思維得到很大的提

13、升。 查詢功能就避免不了許多字符串比較Strcmp函數(shù),讓我懂得了字符串的具體結(jié) 構(gòu)和操作算法。我真正意義上的體會(huì)到了團(tuán)隊(duì)合作的力量,我們有著十分負(fù)責(zé)、細(xì)心的 組長帶領(lǐng)我們團(tuán)體不斷進(jìn)步,還有一群努力不懈的組員。當(dāng)我遇到語法或邏輯錯(cuò) 誤時(shí)候,組員和組長都會(huì)給予我及時(shí)的幫助,讓我少走彎路。所謂三個(gè)臭皮匠賽 過諸葛亮。在我們的共同努力之下,終于得到了滿意的成果。這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)并非僅僅為了熟練語言技巧,而是鍛煉我們的思 維邏輯能力。我感覺到了我的思維得到了很大的提升?,F(xiàn)在我能夠有自己的思維 想法,而不是敲鍵盤的木頭人。我非常感謝這次課程設(shè)計(jì)給予的寶貴機(jī)會(huì),這必 定是我人生道路上的一次不可磨滅的經(jīng)

14、歷。我負(fù)責(zé)的是退票函數(shù)cancel需要調(diào)用delete_passenger ,主函數(shù),結(jié) 構(gòu)體的定義等,通過本次課程設(shè)計(jì),我學(xué)到了很多,我感覺到理論永遠(yuǎn)比不上實(shí) 踐。在我負(fù)責(zé)的這一模塊當(dāng)中,我遇到了很多的問題,比如結(jié)構(gòu)體的定義,在編 寫退票模塊代碼時(shí),設(shè)計(jì)先輸入退票先比較航班號(hào)是否相同,然后指針慢慢移動(dòng)。 由于我對(duì)while()循環(huán)條件沒有設(shè)置好,結(jié)果總是達(dá)不到想要的效果,同時(shí)在 主函數(shù)的調(diào)用方面我還是有些模糊,有很多地方需要改進(jìn),但是在同組同學(xué)的幫助下,有些問題慢慢得到了解決,我體會(huì)到團(tuán)體合作的重要性。這次課程設(shè)計(jì)的 最大問題就是對(duì)基礎(chǔ)知識(shí)的掌握不足,不能熟練的把學(xué)過的知識(shí)串聯(lián)起來,頭腦 不

15、靈活,考慮不全面。根據(jù)我在設(shè)計(jì)中遇到的題,我將在以后的的學(xué)習(xí)過程中注 意以下方面:1,、認(rèn)真上好專業(yè)課,多在實(shí)踐中鍛煉自己。2、寫程序的過程中 要考慮周到點(diǎn),嚴(yán)密些。3、在做設(shè)計(jì)的時(shí)候要有耐心,切勿浮躁。4、在課余時(shí) 間多寫程序,熟練掌握在調(diào)試程序的過程中遇到的常見錯(cuò)誤,以便能節(jié)省調(diào)試程 序的時(shí)間。雖然在應(yīng)用中顯得很不自如,但是我漸漸體會(huì)到了編程的快樂,特別 是在經(jīng)過一次次的改代碼過后運(yùn)行出結(jié)果后。在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時(shí)總是分不清它與 C語言的區(qū)別,總覺得算法就是程序,然而通過這次課程設(shè)計(jì),我漸漸明白了, 其實(shí)算法是解決問題的思想,而程序是算法的代碼實(shí)現(xiàn),算法要靠程序來完成功 能,程序需要算法作為靈

16、魂,兩者間相互聯(lián)系,密不可分。源代碼#include#include#include#includetypedef struct flightnodechar flight_num10; 航班號(hào)char start_time10; 降落時(shí)間char end_time10; /起飛時(shí)間char start_place20; /出發(fā)點(diǎn)char end_place20;/到達(dá)點(diǎn)int left;/余座位數(shù)float price; /票價(jià)float price_discount;/折扣int isFull;/票的余額struct flightnode *next;*flightlist;typedef

17、 struct passengernodechar name20;/訂票人的姓名char ID_num20;/訂票人的證件號(hào)char flight_num10;/航班號(hào)char order_num;/訂單號(hào)int ticket_num;/訂單數(shù)量struct passengernode *next;/指向下一個(gè)結(jié)點(diǎn)*passengerlist;/客戶結(jié)點(diǎn)typedef struct pnodepassengerlist head;passengerlist rear;*plist;void init_flight flightlist &h /目的是要建立一個(gè)以h為頭結(jié)點(diǎn)的空鏈表,錄入航班信息

18、和增加航班后降航班結(jié)點(diǎn)插入該鏈表h flightlist malloc sizeof flightnode ;/ 申請(qǐng)頭結(jié)點(diǎn)的空間 if h NULL exit 0 ;h- next NULL;/將頭結(jié)點(diǎn)h的指針域置為空void init_passengerList plist &pListpList plist malloc sizeof pnode ;pList- head passengerlist malloc sizeof passengernode ;/創(chuàng)建 頭結(jié)點(diǎn)pList- rear pList- head;pList- rear- order_num 0;/訂單從 0 開始計(jì)

19、數(shù)pList- head- next NULL;void save_passenger plist PListFILE *fp fopen passenger.txt,w ;if fp NULLreturn;passengerlist temp PList- head- next;while temp! NULLfprintf fp,%s%s%s%s%dn,temp- name,temp- ID_num,tempflight_num,temp- order_num,temp- ticket_num ;temp temp- next;fclose fp ;void load_passenger

20、plist &PListFILE *fp fopen passenger.txt,r ;if fp NULLreturn;passengerlist q;int n;while !feof fpq passengerlist malloc sizeof passengernode ;n fscanf fp,%s %s %s %s %d”,&q- name,&q- ID_num,&q- flight_num,&q- order_num,&q- ticket_num ;if n! 1break;PList- rear- next q;PList- rear q;PList- rear- next

21、NULL;fclose fp ;void save_flight flightlist hFILE *fp fopen flightList.txt,w ;if fp NULLreturn;flightlist temp h- next;while temp! NULLfprintf fp,%s %s %s %s %s %d %f %f %dn”,temp- flight_num,temp- start_time,temp- end_time,temp- start_place,temp- end_place,temp- left,temp- price,temp- price_discoun

22、t,temp- isFull ;temp temp- next;fclose fp ;void load_flight flightlist &hflightlist pt h;FILE *fp fopen flightList.txt,r ;if fp NULLreturn;flightlist q;int n;while !feof fpq flightlist malloc sizeof flightnode ;n fscanf fp,s%s%s%s%s%d%f%f%d,&q- flight_num,&q- start_time,&q- end_time,&q- start_place,

23、&q- end_place,&q- left,&q- price,&q- price_discount,&q- isFull ;if n! 1break;pt- next q;pt q;pt- next NULL;fclose fp ;int find_same_flight flightlist h,char *flight_num /航班查詢flightlist t h- next,p h- next;int mark 0;printf -8s%-11s%-12s%-10s%-10s%-8s%-6s%-10s%-8sn, 航班號(hào),起飛城市,抵達(dá)城市,起飛時(shí)間,抵達(dá)時(shí)間,價(jià)格,折扣,是否倉滿

24、, 空座數(shù);while t! NULL&strcmp t- flight_num,flight_num ! 0 t t- next;while p! NULLif strcmp t- start_place,p- start_place 0 & strcmp t- end_place,p- end_place 0 & strcmp t- flight_num,p- flight_num ! 0printf -8s%-12s%-12s%-10s%-10s%-8.2f%-6.2f%-10d%-8dn,p- flight_num,p- start_place,p- end_place,p- star

25、t_time,p- end_time,p- price,p- price_discount,p- isFull,p- left ;mark 1;p p- next;if mark 0printf tt抱歉,沒有可選航班!n”;return 0;return 1;void insert_flight flightlist &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在

26、錄入航班情況或增加新的航班后,將新的航班結(jié)點(diǎn)插入到航線鏈表中flightlist q;/定義q為新增加的航班結(jié)點(diǎn)的指針的形參 flightlist p h;q flightlist malloc sizeof flightnode ;為 q 結(jié)點(diǎn)申請(qǐng)空間 strcpy q- flight_num,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 lef

27、t;q- price price;q- price_discount price_discount;q- isFull isFull;/以上是用strcpy函數(shù)將新增加航班的各種信息復(fù) 制到q結(jié)點(diǎn)中q- next p- next;/將q結(jié)點(diǎn)的指針域置為空 p- next q;p p- next; 將指針后移/ save_flight flight ;void insert_passengerList flightlist &h,plist &PList,char *name,char *ID_num,char *flight_num,int ticket_num /購票人的信息flightli

28、st p h- next;for ;p! NULL;p p- nextif strcmp p- flight_num,flight_num 0p- left p- left-ticket_num;if p- left 0p- isFull 1;passengerlist q passengerlist malloc sizeof passengernode ;/ 建立新結(jié)點(diǎn),存放新的客戶訂單信息strcpy q- name,name ;strcpy q- ID_num,ID_num ;strcpy q- flight_num,flight_num ;q- ticket_num ticket_n

29、um;q- next NULL;/將新訂單連接到鏈表中PList- rear- next q;q- order_num PList- rear- order_num+1;/生成訂單號(hào)PList- rear q;/ save_passenger PList ;void delete_flight flightlist &h,plist &PList 刪除航班號(hào)flightlist p,pr;passengerlist q,qr;char flight_num10;int mark 1;qr PList- head;/pr為顧客鏈接表的的頭結(jié)點(diǎn)q qr- next;pr h;p pr- next;

30、/用p作為中間指針對(duì)顧客鏈表中要?jiǎng)h除的顧客結(jié)點(diǎn)進(jìn)行查 找printf tt請(qǐng)你輸入你要?jiǎng)h除的航班號(hào):;scanf s,flight_num ;while p! NULL 要?jiǎng)h除的航班存在,下面進(jìn)行刪除操作if strcmp flight_num,p- flight_num 0pr- next p- next;/移動(dòng)指針找著要?jiǎng)h除的航班結(jié)點(diǎn)free p ;/刪除操作 printf tt 刪除s 航班成功!n”,flight_num ;mark 0;p NULL;if pr- next! NULLpr pr- next;p pr- next;if mark 1printf tt無此航班,無法刪除!

31、n”;elsewhile q! NULL 要?jiǎng)h除的顧客存在,下面進(jìn)行刪除操作if strcmp flight_num,q- flight_num 0qr- next q- next;/移動(dòng)指針找著要?jiǎng)h除的顧客結(jié)點(diǎn) free q ;q NULL;if qr- next! NULLqr qr- next;q qr- next;int delete_passenger plist &PList,flightlist &h,char *name,char *ID_num 退票操作passengerlist p,pr PList- head;/pr 指向顧客鏈表的頭結(jié)點(diǎn) p pr- next;int i

32、;while p! NULLif strcmp name,p- name 0&strcmp ID_num,p- ID_num 0for flightlist f h- next;f! NULL;f f- nextif strcmp p- flight_num,f- flight_num 0f- left f- left+p- ticket_num;f- isFull 0;break;pr- next p- next;free p ;printf tt顧客名s,證件s退票成功!n”, name,ID_numprintf 按 1 返回;scanf %d,&i ;if i 1return 1;pr

33、pr- next;p pr- next;printf tt無此顧客,無法退票!n”;printf 按 1 返回;scanf %d,&i ;if i 1return 1;void add_flight flightlist &h / 錄入信息 flightlist p h;charflight_num10,start_time10,end_time10,start_place20,end_place 20;int left,isFull 1,mark 1;float price,price_discount;for ;p- next! NULL;p p- next/移動(dòng)指針,找到最后一個(gè)結(jié)點(diǎn)wh

34、ile mark 1printf tt請(qǐng)輸入你要增加的航班號(hào):;scanf %s,flight_num ;printf tt請(qǐng)輸入出發(fā)地:;scanf %s,start_place ;printf tt請(qǐng)輸入目的地:;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ù):;scan

35、f %d,&left ;if left 0 isFull 0;insert_flightp,flight_num,start_place,end_place,start_time,end_time,left,price,pri ce_discount,isFull ;printf tt 增加航班,成功!n”,flight_num ;printf tt是否繼續(xù)錄入航班信息1表示繼續(xù)錄入;0表示停止錄 入 n;printf tt 請(qǐng)輸入:n”;scanf %d,&mark ;int flight_num_check flightlist h,char *flight_num /選擇航班號(hào)進(jìn) 行查詢

36、flightlist p h;int i;printf -8s%-11s%-11s%-10s%-10s%-8s%-6s%-10s%-8sn, 航班號(hào),起飛城市,抵達(dá)城市,起飛時(shí)間,抵達(dá)時(shí)間,價(jià)格,折扣,是否倉滿,空座數(shù);for ;p! NULL;p p- nextif strcmp p- flight_num,flight_num 0printf -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-

37、 price_discount,p- isFull,p- left ;printf tt輸入i為1返回;scanf %d,&i ;if i 1return 1;printf tt抱歉,沒有航班號(hào)為%,的航班信息!n”,flight_num ;printf tt輸入i為1返回;scanf %d,&i ;if i 1return 0;int place_check flightlist h,char *start_place,char *end_place /選擇起飛抵達(dá)城市進(jìn)行查詢flightlist p h;int mark 0,i;printf -8s%-11s%-11s%-10s%-10s

38、%-8s%-6s%-10s%-8sn, 航班號(hào),起飛城市,抵達(dá)城市,起飛時(shí)間,抵達(dá)時(shí)間,價(jià)格,折扣,是否倉滿,空座數(shù);for ;p! NULL;p p- nextif strcmp p- start_place,start_place 0&strcmp p-end_place,end_place 0printf-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-

39、isFull,p- left ;printf tt輸入i為1返回;scanf %d,&i ;if i 1mark 1;if mark 0printf tt 抱歉沒有從%s到%s的航班信 息!n”,start_place,end_place ;printf tt輸入i為1返回;scanf %d,&i ;if i 1return 0;return 1;void check_all_flight flightlist h /瀏覽全部航班信息flightlist p h;int m 0,i;printf -8s%-11s%-12s%-10s%-10s%-8s%-6s%-10s%-8sn, 航班號(hào) ,起

40、飛城市,抵達(dá)城市,起飛時(shí)間,抵達(dá)時(shí)間,價(jià)格,折扣,是否倉滿,空座數(shù)for p;p! NULL;p p- next 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 ; m 1;if m 0printf tt航班信息為空!n”;printf tt輸入i為1返回;scanf %d,&i ;if i 1return ;voi

41、d flight_check flightlist h /查詢航班flightlist p h- next;char flight_num10,start_place20,end_place20;int a;printf tt1請(qǐng)選擇航班號(hào)進(jìn)行查詢:n”;printf tt2請(qǐng)選擇起飛抵達(dá)城市進(jìn)行查詢:n”;printf tt3表示瀏覽全部航班信息.ntt請(qǐng)選擇輸入:scanf %d ,&a if a 1printf tt請(qǐng)輸入航班號(hào):;scanf %s,flight_num ;flight_num_check p,flight_num ;/選擇航班號(hào)進(jìn)行查詢else if a 2printf

42、 tt請(qǐng)輸入起飛城市:;scanf %s,start_place ;printf tt請(qǐng)輸入抵達(dá)城市:;scanf %s,end_place ;place_check p,start_place,end_place ;/選擇起飛抵達(dá)城市進(jìn)行查 詢else if a 3check_all_flight p ;/瀏覽全部航班信息elsereturn;int ID_name_check plist PList,char *name,char *ID_num /表示按客戶姓名和證件號(hào)進(jìn)行查passengerlist p PList- head- next;int mark 0,i;printf -8s

43、%-20s%-20s%T0s%-8sn, 訂單號(hào),姓名,證件號(hào), 航班號(hào),訂單數(shù)量;for ;p! NULL;p p- nextif strcmp p- ID_num,ID_num 0&strcmp p- name,name 0printf %-8d%-20s%-20s%-10s%-8d%n,p- order_num,p- name,p- ID_num,p- flight_num,p- ticket_num ;mark 1;if mark 0printf tt抱歉,沒有%s,%s的訂單信息! n”,name,ID_num ;printf tt輸入i為1返回;scanf %d,&i ;if i

44、1return 0;printf tt輸入i為1返回;scanf %d,&i ;if i 1return 1;int order_num_check plist PList,int order_num /表示按訂單號(hào)進(jìn)行查 詢passengerlist p PList- head- next;int i;printf -8s%-20s%-20s%T0s%-8s%n, 訂單號(hào),姓名,證件號(hào), 航班號(hào),訂單數(shù)量;for ;p! NULL;p p- nextif p- order_num order_numprintf %-8d%-20s%-20s%-10s%-8d%n,p- order_num,p

45、- name,p- ID_num,p- flight_num,p- ticket_num ;printf tt輸入i為1返回;scanf %d,&i ;return 1;printf tt抱歉,沒有訂單號(hào)為%d的訂單信息!n”,order_num ;printf tt輸入i為1返回;scanf %d,&i ;if i 1return 1;void check_all_passenger plist PList /表示查看全部訂單信息passengerlist p PList- head- next;int m 0,i;printf -8s%-20s%-20s%T0s%-8s%n, 訂單號(hào),姓名

46、,證件號(hào), 航班號(hào),訂單數(shù)量;for ;p! NULL;p p- nextprintf %-8d%-20s%-20s%-10s%-8d%n,p- order_num,p- name,p- ID_num,p- flight_num,p- ticket_num ;m 1;printf tt訂單信息為空!n”;printf tt輸入i為1返回;scanf %d,&i ;if i 1 return;void passenger_check plist PList /查詢訂單char name20,ID_num15;int order_num;int a;printf tt1表示按客戶姓名和證件號(hào)進(jìn)行查

47、:n”;printf tt2表示按訂單號(hào)進(jìn)行查詢:n”;printf tt3表示查看全部訂單信息ntt請(qǐng)選擇輸入:scanf %d,&a ;if a 1printf tt請(qǐng)輸入客戶姓名:;scanf %s,name ;printf tt請(qǐng)輸入客戶證件號(hào):;scanf %s,ID_num ;ID_name_check PList,name,ID_num ;/表示按客戶姓名和證件號(hào)進(jìn)行查else if a 2printf tt請(qǐng)輸入訂單號(hào):;scanf d,&order_num ;order_num_check PList,order_num ;/表示按訂單號(hào)進(jìn)行查詢else if a 3chec

48、k_all_passenger PList ;/表示查看全部訂單信息ntt請(qǐng)選擇輸入elsereturn;void modify_flight flightlist &h,plist PList /修改航班flightlist p h- next;char flight_num10,start_time10,end_time10;int a;printf tt* 航線信息修改 *n;printf tt*n;printf tt*增加航班*n;printf tt*刪除航班*n修改航班時(shí)間-3*nprintf tt*n;printf tt 請(qǐng)選擇:; if a 1add_flight h ;/增加航

49、班else if a 2delete_flight h,PList ;/刪除航班else if a 3 /修改航班時(shí)間printf tt請(qǐng)輸入要修改的航班號(hào):;scanf %s,flight_num ;if flight_num_check p,flight_num 1printf tt請(qǐng)輸入修改后的起飛時(shí)間:;scanf %s,start_time ;printf tt請(qǐng)輸入修改后的抵達(dá)時(shí)間:;scanf %s,end_time ;for ;p! NULL;p p- nextif strcmp flight_num,p- flight_num 0strcpy p- start_time,st

50、art_timestrcpy p- end_time,end_time ;printf tt 航班s 時(shí)間修改成功!n”,flight_numelsereturn;int book flightlist &h,plist &PList /訂票char name20;char ID_num20;char flight_num10;char start_place20;char end_place20;int ticket_num;int k,i;flightlist p h- next;printf tt 請(qǐng)輸入信息!n”;printf tt請(qǐng)輸入起飛城市:;scanf %s,start_pla

51、ce ;printf tt請(qǐng)輸入抵達(dá)城市:;scanf %s ,end_place ;if place_check h,start_place,end_place 1printf tt 航班號(hào):;scanf s,flight_num ;while flight_num NULLprintf 航班號(hào)不能為空!n ;printf tt 航班號(hào):;scanf s,flight_num ;while p! NULLif strcmp p- flight_num,flight_num 0printf tt 姓名:;scanf s,name ;printf tt 證件號(hào):;scanf s,ID_num ;printf -tt 訂票數(shù)量:;scanf d,&ticket_num ;while name NULLprintf 客戶姓名不能為空!n printf tt 姓名:;scanf %s,name ;while ID_num NULLprintf 客戶證件號(hào)不能為空!n”;printf tt 證件號(hào):;scanf s,ID_num ;while ticket_num 0printf 客戶訂票數(shù)量不能為空!n ;printf tt訂票數(shù)量:偵;scanf d,&ticket_num ;if p- left 0&p- left tic

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論