版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄目錄 總體設(shè)計(jì)總體設(shè)計(jì) .2 概要設(shè)計(jì)概要設(shè)計(jì) .2 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) .3 調(diào)試分析調(diào)試分析 .11 測(cè)試數(shù)據(jù)及截圖.11 時(shí)間復(fù)雜度分析.15 問(wèn)題思考.15 算法的改進(jìn)設(shè)想.15 課設(shè)總結(jié)體會(huì)課設(shè)總結(jié)體會(huì) .15 附錄附錄 .17 程序說(shuō)明.17 源代碼.17 主要參考文獻(xiàn)主要參考文獻(xiàn) .30 總體設(shè)計(jì)總體設(shè)計(jì) 通過(guò)此系統(tǒng)可以實(shí)現(xiàn)如下功能: 1) 錄入:可以錄入航班情況(數(shù)據(jù)存儲(chǔ)在一個(gè)數(shù)據(jù)文件中) 2) 查詢(xún):可以查詢(xún)某個(gè)航線(xiàn)的情況(如,輸入航班號(hào),查詢(xún)起降時(shí)間,起飛抵 達(dá)城市,航班票價(jià),票價(jià)折扣,確定航班是否滿(mǎn)倉(cāng)) ; 可以輸入起飛抵達(dá)城市,查詢(xún)飛機(jī)航班情況; 3) 訂票:(訂票情
2、況存在一個(gè)數(shù)據(jù)文件中) 可以訂票,如果該航班已經(jīng)無(wú)票,可以提供相關(guān)可選擇航班; 4) 退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件; 客戶(hù)資料有姓名,證件號(hào),訂票數(shù)量及航班情況,訂單要有編號(hào)。 5) 修改航班信息: 當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件 概要設(shè)計(jì)概要設(shè)計(jì) 主函數(shù) 錄入航線(xiàn) 信息 瀏覽航線(xiàn) 信息 修改航線(xiàn) 信息 查詢(xún)航線(xiàn) 信息 辦理訂票 業(yè)務(wù) 辦理退票 業(yè)務(wù) 退出系統(tǒng) 將航線(xiàn)信息和乘 客信息寫(xiě)入文件 每個(gè)模塊的算法設(shè)計(jì)說(shuō)明如下: (1)錄入模塊: 查找單鏈表的鏈尾,在鏈頭插入一個(gè)“航班信息”的新結(jié)點(diǎn)。 (2)瀏覽模塊: 順著單鏈表輸出航班信息。 (3)修改模塊: 輸入密碼,確認(rèn)是否有權(quán)限
3、對(duì)航班信息進(jìn)行修改,有則進(jìn)行修改,否則不能修改。 提供兩種修改方式:添加航班和對(duì)已有的航班信息進(jìn)行改動(dòng)(修改和刪除) ,1 添加航 線(xiàn),0 對(duì)已有的航班信息進(jìn)行改動(dòng)(修改和刪除) 。 對(duì)已有的航班信息進(jìn)行改動(dòng)(修改和刪除):順著單鏈表查找,若找到則進(jìn)行相關(guān)操 作。 (4)查詢(xún)模塊: 提供兩種查方式:按航號(hào)和起飛抵達(dá)城市查詢(xún),0 代表按航號(hào)查詢(xún),1 代表按起飛抵達(dá) 城市查詢(xún)。 順著單鏈表查找,如果與航班號(hào)(起飛抵達(dá)城市)一致,輸出相關(guān)信息并詢(xún)問(wèn)乘客是 否要訂票,若訂進(jìn)入訂票模塊;否則,查詢(xún)不成功。 (5)訂票模塊: 查找乘客要訂的航班號(hào),判斷此航班是否有空位,有則輸入乘客有關(guān)信息,訂票成功; 否
4、則查找這個(gè)月此乘客起飛城市和降落城市的有空位航班,供乘客選擇,若有則訂票,若 無(wú)則訂票不成功并把此乘客的信息錄入此航班等候訂票隊(duì)列中,退出訂票。 (6)退票模塊: 輸入要退票的乘客姓名以及所退票的編號(hào),查找乘客資料的鏈表中是否有這位乘客, 有則刪去此結(jié)點(diǎn),并判斷是否有等候訂票的乘客(有則通知等候訂票乘客訂票,無(wú)則余票 加乘客所退票數(shù)) ;無(wú)則退票失敗。 (7)文件模塊: 順著單鏈表把鏈表的信息寫(xiě)入文件。 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) N Y Y N N Y 開(kāi)始 p=H-next p!=NULL P 所指向的航班信息寫(xiě)入文件 p=p-next 結(jié)束 將航線(xiàn)信息寫(xiě)入文件將航線(xiàn)信息寫(xiě)入文件 開(kāi)始 p=H-ne
5、xt p!=NULL q=p-order-next q!=NULL 將 q 所指向的乘客信息寫(xiě)入文件 q=q-next p=p-next 結(jié)束 將乘客信息寫(xiě)入文件將乘客信息寫(xiě)入文件 開(kāi)始 設(shè)置管理員密碼 a m=0,t=1 輸入 c c=1 進(jìn)入錄入航線(xiàn)m=1文件操作 c=2 進(jìn)入瀏覽航線(xiàn) c=3m=1 進(jìn)入修改航線(xiàn) xxian 文件操作 c=4m=1 進(jìn)入查詢(xún)航線(xiàn) 航班線(xiàn) xxian 文件操作 c=5m=1 進(jìn)入訂票 xxian 文件操作 c=6 進(jìn)入退票 xxian 文件操作 c=0 t=1 t=0 提示沒(méi)有您選擇的操作 結(jié)束 Y Y Y Y Y Y YY Y Y Y Y N N N N
6、N N N N N N N 主函數(shù)主函數(shù) 輸入要插入的信息 p 參數(shù) H 傳入 入 p-next=H-next Y Y N 開(kāi)始 H-next=p 結(jié)束 插入操作插入操作 開(kāi)始 傳入?yún)?shù) H 輸入要查找的信息 s p=H-next p!=NULL p=s 結(jié)束 q=p p=p-next N 查找操作查找操作 開(kāi)始 傳入?yún)?shù) H 輸入要修改的信息 p 查找 p 輸入 p 修改后信息 結(jié)束 修改操作修改操作 開(kāi)始 傳入?yún)?shù) H 輸入要?jiǎng)h除的信息 p 查找 p 并記住 p 的前一個(gè)點(diǎn) q q-next=p-next 釋放 p 的空間 結(jié)束 刪除操作刪除操作 開(kāi)始 初始化 inext 瀏覽操作瀏覽操作
7、 N Y p=H-next 是否找到此航班 Y 開(kāi)始 輸入訂單編號(hào) 查找此編號(hào)所在航班 刪除此編號(hào) 此航班是否有等候訂票乘客 通知等候訂票乘客進(jìn)入訂票 余票量加退票乘客的退票量 結(jié)束 N N Y 退票操作退票操作 說(shuō)明: 此流程圖中的查找 編號(hào)所在的航班為上面 已畫(huà)出的查找操作的流 程 結(jié)束修改航班信息修改航班信息 說(shuō)明: c 為選擇添加航線(xiàn)操 作還是改動(dòng)航班信息, c=1 為添加航班信息,c=0 時(shí)為改動(dòng)航班信息。 d 為選擇修改航班信 息操作還是刪除航班信息, d=0 為修改航班信息,d=1 為刪除航班信息 N Y N N NN N N Y Y Y Y Y 開(kāi)始 參數(shù) H 傳入并輸入密碼
8、S 輸入 c c!=0/*姓名*/ char phone15;/*等候訂票乘客的聯(lián)系方式*/ struct wat_ros *next; qnode,*qptr; typedef struct pqueue qptr front;/*等候替補(bǔ)客戶(hù)名單域的頭指針*/ qptr rear;/*等候替補(bǔ)客戶(hù)名單域的屬指針*/ linkqueue; typedef struct ord_ros char name20;/*客戶(hù)姓名*/ char IDnum20;/*客戶(hù)有效證件的編號(hào)*/ char airnum7;/*航班號(hào)*/ int dpl;/*訂票量*/ char piaohaio20;/票的編
9、號(hào),由航班號(hào)起飛日期此航班訂票前的余票量 struct ord_ros *next; Lnode ,*linklist; typedef struct airline char qdname20;/*起點(diǎn)站名*/ char zhname20;/*終點(diǎn)站名 */ char air_num7;/*航班號(hào)*/ char plane_num10;/*飛機(jī)型號(hào)*/ char year5; char month3; char day3;/*飛行日期*/ char qhour3; char qminute3;/*起飛時(shí)間*/ char jhour3; char jminute3;/*降落時(shí)間*/ float
10、 zhekou;/*沒(méi)有折扣為十折*/ float price;/*票價(jià)*/ int tkt_amt;/*乘員定額*/ int tkt_sur;/*余票量*/ Lnode *order;/*本航班乘客名單域,指向乘客名單鏈表的頭指針*/ linkqueue *wait;/*本航班等候替補(bǔ)的客戶(hù)名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/ struct airline *next;/*指向下一個(gè)結(jié)點(diǎn)*/ lineinfo,*lineair; 調(diào)試分析調(diào)試分析 測(cè)試數(shù)據(jù)及截圖測(cè)試數(shù)據(jù)及截圖 時(shí)間復(fù)雜度分析時(shí)間復(fù)雜度分析 錄入為線(xiàn)性表的初始化,所以時(shí)間復(fù)雜度:O(1); 瀏覽遍歷整張線(xiàn)性表所以時(shí)間
11、復(fù)雜度:O(1) ; 修改航班信息為線(xiàn)性表的查找、線(xiàn)性表的插入和線(xiàn)性表的刪除操作,其平均移動(dòng)元素 個(gè)數(shù)分別為(n+1)/2、n/2、(n-1)/2,所以時(shí)間復(fù)雜度:O(n); 查詢(xún)?yōu)榫€(xiàn)性表的查找,所以時(shí)間復(fù)雜度:O(n) ; 訂票為線(xiàn)性表的查找所以時(shí)間復(fù)雜度:O(n) ; 退票是查找兩張線(xiàn)性表,所以時(shí)間復(fù)雜度:O(n*e); 其中的 n 為航班總數(shù),e 為對(duì)應(yīng)航班已定票人數(shù)。 問(wèn)題思考問(wèn)題思考 (1)在事先就把航班信息寫(xiě)入文件,從文件中獲取信息,但取數(shù)時(shí)怎樣控制文件 指針,也就是怎樣取數(shù)的問(wèn)題。 (2)輸入密碼時(shí)像平時(shí)在上網(wǎng)登錄某一賬號(hào)時(shí)輸入密碼一樣顯示“*” 。 (3)管理員能夠在系統(tǒng)上瀏覽
12、乘客信息。 解決第一個(gè)問(wèn)題需要在讀取文件信息時(shí)與靈活運(yùn)用文件的指針的定位,在寫(xiě)入文 件信息需嚴(yán)格按照一定的格式,不然文件指針不好定位;解決第二個(gè)問(wèn)題用不回顯接 收函數(shù) getch(),然后調(diào)用 printf()函數(shù)打印出一個(gè)*號(hào);第三個(gè)問(wèn)題只需在瀏覽操作 時(shí),設(shè)立一個(gè)管理員入口,輸入管理員密碼就對(duì)每條航線(xiàn)的乘客信息進(jìn)行遍歷,并把 每條航班和對(duì)應(yīng)的乘客信息輸出。 算法的改進(jìn)設(shè)想算法的改進(jìn)設(shè)想 (1)在算法效率,由于此課程設(shè)計(jì)所用到的是線(xiàn)性表的建立、查找、插入、刪除和 隊(duì)列的建立、插入、刪除,所涉及的是查找和排序問(wèn)題,所以可以在建立插入時(shí)按照起飛 和抵達(dá)城市進(jìn)行排序,若起飛和抵達(dá)城市相同則再按日期
13、進(jìn)行排序,查找時(shí)采用分塊查找, 當(dāng)然要實(shí)現(xiàn)這些操作,對(duì)航班信息的存儲(chǔ)應(yīng)采指針數(shù)組存儲(chǔ)。 (2)在函數(shù)重組,把處理不同問(wèn)題相同算法思想(如線(xiàn)性表的插入、刪除、查找等 等)寫(xiě)在一個(gè)函數(shù)中,其他函數(shù)要用到這種操作時(shí)只需調(diào)用這些函數(shù),減少整個(gè)程序的代 碼量,方便理解、閱讀和使用。 課設(shè)總結(jié)體會(huì)課設(shè)總結(jié)體會(huì) 此次課程設(shè)計(jì)我們組選了訂票系統(tǒng)這個(gè)選題。為了實(shí)現(xiàn)某個(gè)功能,必須使用相應(yīng)的結(jié) 構(gòu)體,我們首先在網(wǎng)上搜索了幾套別人所做訂票系統(tǒng)的課程設(shè)計(jì),看了一下他們所定義的 結(jié)構(gòu)體和我們課程設(shè)計(jì)選題所要實(shí)現(xiàn)的功能,覺(jué)得他們的結(jié)構(gòu)體相對(duì)于我們的選題來(lái)說(shuō)還 是有一定的缺陷。我們的選題主要運(yùn)用線(xiàn)性結(jié)構(gòu)來(lái)存儲(chǔ)數(shù)據(jù),進(jìn)行線(xiàn)性表
14、、隊(duì)列的一些基 本操作。根據(jù)選題要實(shí)現(xiàn)的功能和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的優(yōu)點(diǎn),我們最終決定隊(duì)列和線(xiàn)性表都采 用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)存儲(chǔ),并定義相應(yīng)的結(jié)構(gòu)體。 在敲源代碼時(shí),發(fā)現(xiàn)航班結(jié)構(gòu)體中的已定票乘客信息和等待訂票乘客信息的結(jié)構(gòu)不太 好操作,經(jīng)過(guò)一番思考最終改為源代碼中所定義的結(jié)構(gòu)體。從中知道了結(jié)構(gòu)體的定義決定 了源程序的難易。 在打程序時(shí),沒(méi)有把文件操作的代碼打進(jìn)源程序。在調(diào)試沒(méi)有文件操作的代碼時(shí),沒(méi) 有很多錯(cuò)誤,但是犯了一個(gè)大錯(cuò),就是在有一個(gè)字符串的復(fù)制中使用了賦值,調(diào)試過(guò)程指 出錯(cuò)錯(cuò)誤半天都不知道改,后來(lái)看了整個(gè)程序才反應(yīng)過(guò)來(lái)。在運(yùn)行調(diào)試過(guò)程中瀏覽信息沒(méi) 有輸出想要的輸出結(jié)果,檢查程序原來(lái)是格式控制字符串中
15、的一個(gè)字符打成了大寫(xiě);查詢(xún) 信息只能查詢(xún)鏈表中的第一條航線(xiàn),檢查程序原來(lái)是多用了 break 造成過(guò)早跳出循環(huán),不 能查找后面的航線(xiàn);乘客訂多張票后瀏覽信息發(fā)現(xiàn)余票只減了一張,檢查程序發(fā)現(xiàn)乘客訂 票后只對(duì)余票做了自減,在運(yùn)行調(diào)試過(guò)程中就出現(xiàn)了這么些大的錯(cuò)誤,在這過(guò)程中還對(duì)輸 出窗口界面做了一些調(diào)整。 加入文件操作代碼后進(jìn)行調(diào)試,沒(méi)有出現(xiàn)什么錯(cuò)誤。最終運(yùn)行時(shí)老在文件操作時(shí)終止 程序,經(jīng)過(guò)調(diào)試和自己的摸索原來(lái)是文件檢測(cè)函數(shù)運(yùn)用錯(cuò)誤,改正后程序正常運(yùn)行。運(yùn)行 程序后打開(kāi)所寫(xiě)的文件,發(fā)現(xiàn)航班信息的余票量沒(méi)有隨乘客的訂票而減少,還是初始值, 這時(shí)才發(fā)現(xiàn)每進(jìn)行一次訂票后都要重新對(duì)航班信息的文件重新寫(xiě)入,改
16、后最終就確定了上 交源代碼。 在敲代碼和在程序的調(diào)試、運(yùn)行過(guò)程中我們發(fā)現(xiàn)我們半天才能想出幾句語(yǔ)句,整個(gè)代 碼敲了二十幾個(gè)小時(shí),調(diào)試調(diào)了二三十個(gè)小時(shí),主要原因使我們練得還不夠,C 語(yǔ)言功底 還不是很扎實(shí),要增加敲的代碼量。 數(shù)據(jù)結(jié)構(gòu)是為了解決實(shí)際問(wèn)題,提出了一些結(jié)構(gòu),這些東西是我們以后解決一些問(wèn)題 時(shí)所要用到的,所以一定要熟練掌握,要多敲代碼。 此次課程設(shè)計(jì),使我們對(duì)鏈表和鏈隊(duì)列的基本操作更加熟練,讓我們深深地體會(huì)到要 學(xué)好數(shù)據(jù)結(jié)構(gòu)需要多練。 附錄附錄 程序說(shuō)明程序說(shuō)明 此課程設(shè)計(jì)程序無(wú)需安裝,只需打開(kāi)在 VC+6.0 上編譯、 連接、運(yùn)行即可。程序的 源代碼在本模塊中。 源代碼源代碼 #inc
17、lude #include #include typedef struct wat_ros /*等候訂票乘客的信息*/ char name20;/*姓名*/ char phone15;/*等候訂票乘客的聯(lián)系方式*/ struct wat_ros *next; qnode,*qptr; typedef struct pqueue qptr front;/*等候替補(bǔ)客戶(hù)名單域的頭指針*/ qptr rear;/*等候替補(bǔ)客戶(hù)名單域的屬指針*/ linkqueue; typedef struct ord_ros char name20;/*客戶(hù)姓名*/ char IDnum20;/*客戶(hù)有效證件的編
18、號(hào)*/ char airnum7;/*航班號(hào)*/ int dpl;/*訂票量*/ char piaohaio20;/票的編號(hào),由航班號(hào)起飛日期此航班訂票前的余票量 struct ord_ros *next; Lnode ,*linklist; typedef struct airline char qdname20;/*起點(diǎn)站名*/ char zhname20;/*終點(diǎn)站名 */ char air_num7;/*航班號(hào)*/ char plane_num10;/*飛機(jī)型號(hào)*/ char year5; char month3; char day3;/*飛行日期*/ char qhour3; cha
19、r qminute3;/*起飛時(shí)間*/ char jhour3; char jminute3;/*降落時(shí)間*/ float zhekou;/*沒(méi)有折扣為十折*/ float price;/*票價(jià)*/ int tkt_amt;/*乘員定額*/ int tkt_sur;/*余票量*/ Lnode *order;/*本航班乘客名單域,指向乘客名單鏈表的頭指針*/ linkqueue *wait;/*本航班等候替補(bǔ)的客戶(hù)名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/ struct airline *next;/*指向下一個(gè)結(jié)點(diǎn)*/ lineinfo,*lineair; void Explorer(li
20、neair H) /*瀏覽航線(xiàn)信息*/ lineinfo *p; p=H-next; printf(航班號(hào) 起飛站 終點(diǎn)站 機(jī)型 飛行日期 起、降時(shí)間 票價(jià) 折扣 成員定額 余票量n); while(p) printf(%s %s %s %s %s/%s/%s %.2s:%.2s %.2s:%.2s %5.1f %3.1f %d %dn,p-air_num,p- qdname,p-zhname,p-plane_num,p-year,p-month,p-day,p-qhour,p-qminute,p-jhour,p-jminute,p-price,p- zhekou,p-tkt_amt,p-tk
21、t_sur); p=p-next; int Greatelist(lineair int i; lineinfo *p; if(!(H=(lineair)malloc(sizeof(lineinfo) printf(分配空間出錯(cuò)); a=getchar(); return(0); H-next=NULL; if(!(H-order=(linklist)malloc(sizeof(lineinfo) printf(分配空間出錯(cuò)); a=getchar(); return 0; H-order-next=NULL; if(!(H-wait=(linkqueue*)malloc(sizeof(lin
22、einfo) printf(分配空間出錯(cuò)); a=getchar(); return 0; H-wait-rear=H-wait-front=NULL; printf(n 開(kāi)始錄入航班信息:n); printf(起點(diǎn) 終點(diǎn) 航班號(hào) 機(jī)型 年 月 日 起降時(shí)間 折扣 票價(jià) 乘員定額n);/*起飛時(shí)間和降落時(shí)間包含時(shí)分*/ for(i=0;iqdname,p-zhname,p-air_num,p-plane_num,p-year,p- month,p-day,p-qhour,p-qminute,p-jhour,p-jminute, p-tkt_sur=p-tkt_amt; if(!(p-order
23、=(linklist)malloc(sizeof(lineinfo) printf(分配空間出錯(cuò)); a=getchar(); return 0; p-order-next=NULL; if(!(p-wait=(linkqueue*)malloc(sizeof(lineinfo) printf(分配空間出錯(cuò)); a=getchar(); return 0; p-wait-rear=p-wait-front=NULL; p-next=H-next; H-next=p; return 1; int Dinpiao(lineair H) /*訂票*/ int m,k=0,x,v=0,c=1,d; l
24、ineinfo *p,*t; Lnode *q; char a,*b; qnode *s; char year5; char month3; char day3;/*飛行日期*/ char air_num7;/*航班號(hào)*/ p=H-next; t=H-next; printf(請(qǐng)輸入所定的航班號(hào),票的年、月、日:n); scanf(%s,air_num); scanf(%s,year); scanf(%s,month); scanf(%s,day); while(p) if(!(strcmp(air_num,p-air_num) if(p-tkt_sur) printf(此航班還有%d 張票可
25、訂,請(qǐng)輸入您要訂票的張數(shù):,p-tkt_sur); scanf(%d, if(mtkt_sur) printf(您已成功訂到%d 張票!n 請(qǐng)輸入您的姓名:,m); if(!(q=(linklist)malloc(sizeof(Lnode) printf(分配空間出錯(cuò)); a=getchar(); return 0; scanf(%s,q-name); printf(請(qǐng)輸入您的身份證號(hào)碼:); scanf(%s,q-IDnum); q-dpl=m; if(!(b=(char*)malloc(sizeof(char) printf(分配空間出錯(cuò)); a=getchar(); return 0;
26、strcpy(q-airnum,p-air_num); itoa(p-tkt_sur,b,10); strcpy(q-piaohaio,p-air_num); strcat(q-piaohaio,p-year); strcat(q-piaohaio,p-month); strcat(q-piaohaio,p-day); strcat(q-piaohaio,b); printf(您所訂票的編號(hào):%s,q-piaohaio); p-tkt_sur-=m; q-next=p-order-next; p-order-next=q; return 1; else printf(對(duì)不起余票量不夠,請(qǐng)選擇其
27、他航班!); k=1; if(!p-tkt_sur|k=1) printf(航班已經(jīng)滿(mǎn)倉(cāng),您可以選擇以下相關(guān)航班:n); while(t) if(!(strcmp(t-year,p-year) t=t-next; printf(有沒(méi)有您可以乘坐的航班t0 沒(méi)有 t 非 0 整數(shù) 有t 請(qǐng)選擇:); scanf(%d, if(!x) printf(請(qǐng)輸入您的姓名、聯(lián)系方式n); if(!(s=(qptr)malloc(sizeof(qnode) printf(分配空間出錯(cuò)!); a=getchar(); return 0; scanf(%s,s-name); scanf(%s,s-phone);
28、 s-next=NULL; if(p-wait-front=NULL else s-next=p-wait-rear-next; p-wait-rear-next=s; p-wait-rear=s; printf(如果有人退票,我們會(huì)在第一時(shí)間聯(lián)系您!n); return 0; else return Dinpiao(H); p=p-next; if(c) printf(沒(méi)有您所指定的航班,0 菜單欄 非 0 數(shù)字 重新輸入航班號(hào),票的年、月、日n); scanf(%d, if(d) return Dinpiao(H); else return 0; return 1; int Locatea
29、ir(lineair H) /*查詢(xún)*/ int m,k=1,t; lineinfo *p; char qdname20;/*起點(diǎn)站名*/ char zhname20;/*終點(diǎn)站名*/ char air_num7;/*航班號(hào)*/ p=H-next; printf(輸入 0 按航班號(hào)查詢(xún),輸入 1 按起飛抵達(dá)城市查詢(xún),請(qǐng)輸入您的選擇:); scanf(%d, while(m1) printf(請(qǐng)您重新選擇,輸入 0 按航班號(hào)查詢(xún),輸入 1 按起飛抵達(dá)城市查詢(xún):); scanf(%d, if(m) printf(請(qǐng)分別輸入起飛抵達(dá)城市:n); scanf(%s,qdname); scanf(%s,
30、zhname); printf(機(jī)型 航班號(hào) 飛行日期 起降時(shí)間 票價(jià) 折扣 余票量n); while(p) if(!(strcmp(p-qdname,qdname) k=0; p=p-next; else printf(請(qǐng)輸入要查詢(xún)的航班號(hào):); scanf(%s,air_num); while(p) if(!(strcmp(p-air_num,air_num) printf(機(jī)型 航班號(hào) 起飛城市 抵達(dá)城市 飛行日期 起降時(shí)間 票價(jià) 折扣 余票量n%s %s %s %s %s /%s/%s %.2s:%.2s %.2s:%.2s %5.1f %3.1f %dn ,p-plane_num,p
31、-air_num,p-qdname,p- zhname,p-year,p-month,p-day,p-qhour,p-qminute,p-jhour,p-jminute,p-price,p-zhekou,p-tkt_sur); k=0; p=p-next; if(k) printf(沒(méi)有您要查詢(xún)的航線(xiàn)!n); return 0; else printf(有沒(méi)有您要訂票的航班!n); do printf(1 有 0 沒(méi)有 請(qǐng)選擇:n); scanf(%d, while(!(t=1) if(t) returnDinpiao(H); else return 0; int Tuipiao(lineai
32、r H) /退票 lineinfo *p; int m=0,t; Lnode *q,*f; char b20; scanf(%s,b); p=H-next; while(p) q=p-order-next; if(!(strcmp(b,q-piaohaio) m=1; p-order-next=q-next; t=q-dpl; free(q); break; while(q-next) if(!(strcmp(b,q-next-piaohaio) m=1; f=q-next; t=f-dpl; q-next=f-next; free(f); break; q=q-next; if(m) bre
33、ak; p=p-next; if(!m) printf(對(duì)不起沒(méi)有搜索到您的訂單,請(qǐng)重新輸入訂單編號(hào)!); Tuipiao(H); else printf(您已成功退票!n); p-tkt_sur+=t; if(p-wait-rear=p-wait-front) return 1; else /機(jī)場(chǎng)訂票系統(tǒng)服務(wù)人員馬上通知本次航班等候訂票乘客 printf(通知等候訂票的乘客,通知成功后按任意鍵n); getchar(); return Dinpiao(H); int Alter(lineair H,char b) /*修改航班*/ lineinfo *p,*q; char year5; ch
34、ar a,s20; char month3; char day3;/*飛行日期*/ char air_num7;/*航班號(hào)*/ int c,i,n,d,r=0; printf(請(qǐng)輸入密碼:n); scanf(%s,s); if(strcmp(s,b) printf(輸入密碼錯(cuò)誤!); return 0; do printf(1 添加航線(xiàn) 0 對(duì)已有的航班信息進(jìn)行改動(dòng)(修改和刪除) ,請(qǐng)選擇:); scanf(%d, while(c!=1 if(c) printf(請(qǐng)輸入您要添加航班的條數(shù)); scanf(%d, printf(起點(diǎn) 終點(diǎn) 航班號(hào) 機(jī)型 年 月 日 起降時(shí)間 折扣 票價(jià) 乘員定額
35、n);/*起飛時(shí)間和降落時(shí)間包含時(shí) 分*/ for(i=0;iqdname,p-zhname,p-air_num,p-plane_num,p- year,p-month,p-day,p-qhour,p-qminute,p-jhour,p-jminute, if(!(p-order=(linklist)malloc(sizeof(lineinfo) printf(分配空間出錯(cuò)); a=getchar(); return 0; p-order-next=NULL; if(!(p-wait=(linkqueue*)malloc(sizeof(lineinfo) printf(分配空間出錯(cuò)); a=g
36、etchar(); return 0; p-tkt_sur=p-tkt_amt; p-wait-front=NULL; p-wait-rear=p-wait-front; p-next=H-next; H-next=p; printf(已成功添加%d 條航線(xiàn)n,n); else do printf(1 刪除航班 0 修改航班信息,請(qǐng)選擇:); scanf(%d, while(d!=1 if(d) printf(請(qǐng)輸入要?jiǎng)h除的航班條數(shù):); scanf(%d, for(i=1;inext; q=H; while(p) if(!(strcmp(air_num,p-air_num) q=p; p=p
37、-next; if(!p) printf(沒(méi)有您要?jiǎng)h除的航線(xiàn),請(qǐng)核對(duì)后再進(jìn)行刪除!n); r+; else q-next=p-next; printf(已成功刪除第%d 條航線(xiàn)n,n); free(p); if(rn) return 1; else return 0; else printf(請(qǐng)輸入要修改航班要修改航班的條數(shù):); scanf(%d, for(i=1;inext; while(p) if(!(strcmp(air_num,p-air_num) p=p-next; if(!p) printf(沒(méi)有您要修改的航線(xiàn),請(qǐng)核對(duì)后再進(jìn)行修改!n); r+; else printf(請(qǐng)輸入此
38、修改航班的航班信息!n); printf(起點(diǎn) 終點(diǎn) 航班號(hào) 機(jī)型 年、月、日 起降時(shí)間 折扣 票價(jià) 乘員定額n);/*起飛時(shí)間 和降落時(shí)間包含時(shí)分*/ scanf(%s%s%s%s%s%s%s%s%s%s%s%f%f%d,p-qdname,p-zhname,p-air_num,p- plane_num,p-year,p-month,p-day,p-qhour,p-qminute,p-jhour,p-jminute, printf(您已成功修改了第%d 條航線(xiàn)n,i); if(rnext; fp=fopen(航班信息.txt,w); fprintf(fp,%s%c%s%c%s%c%c%s%c%
39、s%c%s%c%s%c%s%s%c%s%s%c%s%c%s%c%s%c%s%c,航班號(hào) ,32,起點(diǎn),32,終點(diǎn),32,32,機(jī)型,32,年,32,月,32,日,32,起時(shí),分,32,降時(shí),分,32,票價(jià),32,折扣,32,定員,32,余票 量,32); while(p) fprintf(fp,%c%s%c%s%c%s%c%s%c%s%c%s%c%s%c%.2s%c%.2s%c%.2s%c%.2s%c%5.1f%c%3.1f%c%c%d%c%c %c%d%c,n, p-air_num,32,p-qdname,32,p-zhname,32,p-plane_num,32,p-year,p-month,p-day,32,p- qhour,:,p-qminute,32,p-jhour,:,p-jminute,32,p-price,32,p-zhekou,32,32,p-tkt_amt,32,32,32,p-tkt_sur,n); p=p-next; a=ferror(fp); fclose(fp); if(j) c=1; fp=fopen(訂票信息.txt,w); p=H-next; fprintf(fp,%s%c%s%c%s%c%s%c%s%c,姓名,t,證件號(hào)碼,t,航班號(hào),32,訂票量,32,編號(hào),n); while(p) if(p-order-next) q
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版租賃融資合同
- 2025年度數(shù)據(jù)中心設(shè)備安裝與維護(hù)合同2篇
- 2024年環(huán)保型板材購(gòu)銷(xiāo)合同
- 2024影視作品版權(quán)區(qū)域經(jīng)銷(xiāo)合同
- 2024承諾合同書(shū)范本
- 2025版餐廳后廚承包合同書(shū)涵蓋餐飲衛(wèi)生安全標(biāo)準(zhǔn)3篇
- 2024年離婚彩禮清算合同指導(dǎo)文本版B版
- 二零二五個(gè)人創(chuàng)業(yè)投資抵押借款合同范本2篇
- 2024店面庫(kù)存管理合同3篇
- 2025版勞動(dòng)合同轉(zhuǎn)移至新公司員工福利及保障合同3篇
- 2025蛇年春節(jié)春聯(lián)對(duì)聯(lián)帶橫批(276副)
- 企業(yè)節(jié)能獎(jiǎng)懲管理制度(3篇)
- 統(tǒng)編版2024-2025學(xué)年三年級(jí)上冊(cè)語(yǔ)文期末情景試卷 (無(wú)答案)
- 2024年時(shí)事政治試題【有答案】
- 中國(guó)PHM系統(tǒng)行業(yè)投資方向及市場(chǎng)空間預(yù)測(cè)報(bào)告(智研咨詢(xún)發(fā)布)
- 造價(jià)咨詢(xún)部組織架構(gòu)及基本工作流程
- 新媒體代運(yùn)營(yíng)協(xié)議合同書(shū)
- 2024質(zhì)量管理復(fù)習(xí)題
- 2025年中學(xué)德育工作計(jì)劃
- 全套教學(xué)課件《工程倫理學(xué)》
- 人音版六年級(jí)上冊(cè)全冊(cè)音樂(lè)教案(新教材)
評(píng)論
0/150
提交評(píng)論