C語言版飛機訂票系統(tǒng)_第1頁
C語言版飛機訂票系統(tǒng)_第2頁
C語言版飛機訂票系統(tǒng)_第3頁
C語言版飛機訂票系統(tǒng)_第4頁
C語言版飛機訂票系統(tǒng)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

/訂票系統(tǒng)1.需求分析任務:通過此系統(tǒng)可以實現(xiàn)如下功能:錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達城市,查詢飛機航班情況;訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設定)可以訂票,如果該航班已經(jīng)無票,可以提供相關可選擇航班;退票:可退票,退票后修改相關數(shù)據(jù)文件;客戶資料有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號。修改航班信息:當航班信息改變可以修改航班數(shù)據(jù)文件要求:根據(jù)以上功能說明,設計航班信息,訂票信息的存儲結(jié)構(gòu),設計程序完成功能;2:主要設計思路:算法構(gòu)造流程圖:A:主菜單:主菜單0123456789輸入航班的信息列出航班的信息按航班號查詢航班信息按城市來查詢航班訂票程序退票系統(tǒng)修改飛機航班的信息保存文件讀取文件、下載文件退出B:各分塊模板的構(gòu)造流程圖:0.輸入航班的信息航班號起飛城市降落城市出發(fā)時間降落時間剩下的座位價格折扣1.列出航班的信息繼續(xù)y退出n2.按航班號查詢航班信息輸入所需要查詢的航班號顯示這個航班的的信息3.按城市來查詢航班輸入起飛城市輸入降落城市顯示這個航班的信息4.訂票程序輸入號碼輸入名字輸入需要定的票數(shù)航班號5.退票系統(tǒng)輸入航班號輸入你確定退票1否定06.修改飛機航班的信息輸入要修改的航班號重新輸入新的航班信息7.保存文件顯示保存成功3:功能函數(shù)設計:(1):訂票系統(tǒng)主菜單函數(shù)()本函數(shù)主要構(gòu)造系統(tǒng)的主菜單,系統(tǒng)需要實現(xiàn)很多功能,并且各個功能需要各自的函數(shù)支持,所以通過主菜單可以輕松的進入各個函數(shù)下實現(xiàn)各自的功能,故主菜單顯得尤為重要。其實就是通過鍵盤輸入選擇項,然后通過接受,在通過判斷進入各個選擇項。(2):工作人員管理函數(shù)()()系統(tǒng)需要各個航班的詳細信息,所以需要工作人員把信息輸入系統(tǒng)里,以供乘客查詢訂票。()函數(shù)的構(gòu)造就是為了解決這個問題。而有可能航班線路更改或由于天氣等原因飛機的起飛時間發(fā)生了更改,故工作人員需要及時更改信息,所以需要構(gòu)造()函數(shù)。(3):列出航班信息的函數(shù)()乘客需要查詢各個航班的信息,所以通過系統(tǒng)要能調(diào)出上面工作人員已經(jīng)錄入好的航班信息,所以構(gòu)造本函數(shù)來實現(xiàn)這個功能。(4)乘客具體查詢函數(shù)()本函數(shù)分兩個分函數(shù):1()和2(),它們分別實現(xiàn)乘客的按航班查詢和按出發(fā)及抵達城市的兩種查詢方案。(5)票務管理函數(shù)()()通過()函數(shù)可以實現(xiàn)乘客的訂票操作,通過()可以實現(xiàn)乘客的退票操作。(6)文件操作函數(shù)()()3.源程序代碼:(下運行)<><><><>N20Q40/*定義數(shù)據(jù)結(jié)構(gòu)*//*乘客信息*/{[10]*編號*/[20];/*證件號*/[10];/*姓名*/;/*訂票數(shù)*/[10]*乘坐航班號*/};/*航班信息*/{[10]*航班號*/[20]*起飛城市*/[20]*抵達城市*/[20]*起飛時間*/[20]*降落時間*/;/*艙位數(shù)*/[5];/*票價*/[5];/*折扣*/[20];;};/*菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項*/(){c;("按任意鍵返回主菜單\n")*提示壓任意鍵繼續(xù)*/();/*讀入任意字符*/("\n\n");("\n\n");("************************************\n\n");("0.輸入航班信息\n");("1.列出航班的信息\n");("2.按航班號查詢航班信息\n");("3.按城市來查詢航班\n");("4.訂票程序\n");("5.退票系統(tǒng)\n");("6.修改飛機航班的信息\n");("7.保存文件\n");("8.讀取和下載文件\n");("9.退出\n");("*****************************************\n\n");{("\n輸入你的選擇項(0~9):");/*提示輸入選項*/("");/*輸入選擇項*/}(c<0>9);/*選擇項不在~9之間重輸*/c;/*返回選擇項,主程序根據(jù)該數(shù)調(diào)用相應的函數(shù)*/}/*輸入函數(shù)*/(t[]){;*s;("輸入航線總數(shù)(n<=40):")*輸入航線總數(shù)*/("");(n>40<0){("輸入錯誤!!再次輸入(0<n<=40):")*輸入航線總數(shù)*/("");}("輸入航班的信息\n\n")*提示信息*/("航班號起飛城市降落城市出發(fā)時間降落時間剩下的座位價格折扣\n");("\n");(0<){(""[i])*輸入姓名*/(""[i])*輸入起飛城市*/(""[i])*輸入降落城市*/(""[i])*輸入起飛時間*/(""[i])*輸入降落時間*/(""[i])*輸入艙位數(shù)*/(""[i])*輸入票價*/(""[i])*輸入折扣*/}("\n");(0<)t[i]0;n;/*返回記錄條數(shù)*/}/*顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù)*/(t[]n){i;("航班號起飛城市降落城市出發(fā)時間降落時間剩下的座位價格折扣\n");("\n");(0<)("1212101210777s\n"[i][i][i][i][i][i][i][i]);("*******************************************\n");}/*按航班號查找記錄*/1(t[]n){s[20];/*保存待查找航班名字符串*/i;("輸入你想查找的航班名:");("");/*輸入待查找航班名*/(0<)/*從第一條記錄開始,直到最后一條*/{(([i])0)/*記錄中的航班名和待比較的是否相等*/;/*相等,則返回該記錄的下標號,程序提前結(jié)結(jié)束*/}(i>1)/*如果整數(shù)i值大于1,說明沒找到*/("沒有找到\n");{("航班號起飛城市降落城市出發(fā)時間降落時間剩下的座位價格折扣\n");/*顯示記錄*/("\n");("1212101210777s\n"[i][i][i][i][i][i][i][i]);}}/*按起降城市查找記錄*/2(t[]n){s1[20];s2[20];i;("輸入起飛城市名稱:");(""1);/*輸入起飛城市名*/("輸入降落城市名稱:");(""2);/*輸入降落城市名*/(0<)/*從第一條記錄開始,直到最后一條*/{(((s1[i])0)((s2[i])0))/*記錄中的城市和待比較的是否相等*/;/*相等,則返回該記錄的下標號,程序提前結(jié)結(jié)束*/}(i>1)/*如果整數(shù)i值大于1,說明沒找到*/("沒有找到\n");{("航班號起飛城市降落城市出發(fā)時間降落時間剩下的座位價格折扣\n");/*找到,顯示記錄*/("\n");("1212101210777s\n"[i][i][i][i][i][i][i][i]);}}/*訂票*/(t[]n){s[20]1[10]1[10]1[20]1[10];01;("輸入你想預訂的票數(shù):");("");("號碼姓名證件號訂的票數(shù)航班號\n");/*提示信息*/("\n");(0<){(""1);(""1)*輸入訂票客戶姓名*/(""1)*輸入證件號*/(""1)*輸入訂票票數(shù)*/(""1)*輸入航班號*/(0<)/*從第一條記錄開始,直到最后一條*/{((1[i])0)/*記錄中的航班名和待比較的是否相等*/{[i];(t[i][j]1);(t[i][j]1);(t[i][j]1);t[i][j]1;(t[i][j]1);t[i][i]1;t[i];;/*相等,則返回該記錄的下標號,程序提前結(jié)結(jié)束*/}}(i>1)/*如果整數(shù)i值大于1,說明沒找到*/{("對不起!沒有此航班\n");2;;}}}/*退票*/(t[]n){s1[20]2[20];/*保存待查找航班名和證件號字符串*/;("請輸入你想退訂的航班號:");(""1);/*輸入待查找航班名*/("請輸入你的證件號:");(""2);/*輸入待查找證件號*/("號碼姓名證件號訂的票數(shù)航班號\n");/*顯示提示*/("\n");(0<)/*從第一條記錄開始,直到最后一條*/{(0<t[i])(((s1[i][j])0)((s2[i][j])0)){("1116161410s\n"[i][j][i][j][i][j][i][j][i][j]);t[i][i][i][j];;;;}};(i>1)/*如果整數(shù)i值大于1,說明沒找到*/("沒有找到\n");{("你是否確認刪除(1/0)\n");/*確認是否要刪除*/("");/*輸入一個整數(shù)或*/(1)/*如果確認刪除整數(shù)為*/{(1<t[i]){(t[i][1][i][k]);/*將后一條記錄的姓名拷貝到前一條*/(t[i][1][i][k]);(t[i][1][i][k]);t[i][1][i][k];(t[i][1][i][k]);}t[i];}("退票成功!!\n")*提示退票成功*/}}/*修改航班信息*/(t[]n){s[20];/*要刪除記錄的姓名*/;("請輸入你要修改的航班號:");/*提示信息*/("")*輸入航班名*/(0<)/*從第一條記錄開始,直到最后一條*/{(([i])0)/*記錄中的航班名和待比較的是否相等*/;/*相等,則返回該記錄的下標號,程序提前結(jié)結(jié)束*/}(i>1)/*如果整數(shù)i值大于1,說明沒找到*/("沒有找到\n");{("航班號起飛城市降落城市出發(fā)時間降落時間剩下的座位價格折扣\n");/*找到,顯示原先記錄*/("\n");("1212101210777s\n"[i][i][i][i][i][i][i][i]);(":\n");(""[i])*輸入航班名*/(""[i])*輸入起始城市*/(""[i])*輸入終點城市*/(""[i])*輸入起飛時間*/(""[i])*輸入降落時間*/(""[i])*輸入座位號*/(""[i])*輸入票價*/(""[i])*輸入折扣*/}}/*保存資料*/(t[]n){;*;/*指向文件的指針*/((("1","")))/*打開文件,并判斷打開是否正常*/{("\n")*沒打開*/(1);/*退出*/}("\n保存文件\n");/*輸出提示信息*/(,"");/*將記錄數(shù)寫入文件*/(,"\r\n");/*將換行符號寫入文件*/(0<){(,""[i][i][i][i][i][i][i][i]);(,"\r\n");/*將換行符號寫入文件*/(,""[i]);/*將記錄數(shù)寫入文件*/(,"\r\n");/*將換行符號寫入文件*/(0<t[i]){(,""[i][j][i][j][i][j][i][j][i][j])*格式寫入記錄*/(,"\r\n");/*將換行符號寫入文件*/}}()*關閉文件*/("****恭喜!保存成功***\n");/*顯示保存成功*/}/*讀入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組*/(t[]){;*;/*指向文件的指針*/((("1","")))/*打開文件*/{("不能打開\n");/*不能打開*/(1);/*退出*/}(,"");/*讀入記錄數(shù)*/(0<){(,""[i][i][i][i][i][i][i][i]);(,""[i]);/*讀入記錄數(shù)*/(0<t[i])(,""[i][j][i][j][i][j][i][j][i][j]);/*按格式讀入記錄*/}();/*關閉文件*/("你已經(jīng)成功從文件讀取數(shù)據(jù)!!!\n\n\n\n");/*顯示讀取成功*/n;/*返回記錄數(shù)*/}/*主函數(shù)*/(){i;[Q];;/*保存記錄長度*/(;;)/*無限循環(huán)*/{(())/*調(diào)用主菜單函數(shù),返回值整數(shù)作開關語句的條件*/{0()*輸入記錄*/1();/*顯示全部記錄*/21();/*查找記錄*/32();/*查找記錄*/4();/*訂票*/5();/*退票*/6();/*修改航班信息*/7();/*保存文件*/8();;/*讀文件*/9(0);/*如返回值為則程序結(jié)束*/}}}4.系統(tǒng)運行時窗口截圖:(6.0下的運行結(jié)果)訂票系統(tǒng)菜單窗口0.輸入航班的信息1.列出航班的信息2.按航班號查詢航班信息3.按城市來查詢航班4.訂票程序5.退票系統(tǒng)6.修改飛機航班的信息7.保存文件8.讀取文件、下載文件圖的遍歷過程演示需求分析:設計程序完成如下功能:對給定的圖的結(jié)構(gòu)和起點,產(chǎn)生深度優(yōu)先遍歷和廣度優(yōu)先遍歷,并列出求解的過程動態(tài)演示。主要設計思路:設計思想:簡而言之,深度優(yōu)先,就是先遍歷它的一個鄰接點,這個鄰接點的鄰接點……然后才遍歷其他的鄰接點。廣度優(yōu)先,就是先把它所有的鄰接點都遍歷完以后,再遍歷它每個鄰接點的鄰接點。存儲結(jié)構(gòu)為圖的鄰接多重表,它是無向圖的一種鏈式存儲結(jié)構(gòu)。深度優(yōu)先遍歷:設x是當前被訪問頂點,在對x做過訪問標記后,選擇一條從x出發(fā)的未檢測過的邊(x,y)。若發(fā)現(xiàn)頂點y已訪問過,則重新選擇另一條從x出發(fā)的未檢測過的邊,否則沿邊(x,y)到達未曾訪問過的y,對y訪問并將其標記為已訪問過;然后從y開始搜索,直到搜索完從y出發(fā)的所有路徑,即訪問完所有從y出發(fā)可達的頂點之后,才回溯到頂點x,并且再選擇一條從x出發(fā)的未檢測過的邊。上述過程直至從x出發(fā)的所有邊都已檢測過為止。此時,若x不是源點,則回溯到在x之前被訪問過的頂點;否則圖中所有和源點有路徑相通的頂點(即從源點可達的所有頂點)都已被訪問過,若圖G是連通圖,則遍歷過程結(jié)束,否則繼續(xù)選擇一個尚未被訪問的頂點作為新源點,進行新的搜索過程。

廣度優(yōu)先遍歷:設x和y是兩個相繼要被訪問的未訪問過的頂點。它們的鄰接點分別記為x1,x2,…,和y1,y2,…,。

為確保先訪問的頂點其鄰接點亦先被訪問,在搜索過程中使用隊列來保存已訪問過的頂點。當訪問x和y時,這兩個頂點相繼入隊。此后,當x和y相繼出隊時,我們分別從x和y出發(fā)搜索其鄰接點x1,x2,…,和y1,y2,…,,對其中未訪者進行訪問并將其入隊。這種方法是將每個已訪問的頂點入隊,故保證了每個頂點至多只有一次入隊。圖的算法構(gòu)造思想:1.()初始條件是圖的頂點集是圖中弧的集合.操作結(jié)果:按V和是定義構(gòu)造圖G.2.()初始條件:圖G存在操作結(jié)果:銷毀圖G3.()初始條件:圖G存在和G中頂點有相同的特征操作結(jié)果:若圖G中存在頂點u,則返回該頂點在圖中的位置;否則返回其他信息4.()初始條件:圖G存在是G中頂點操作結(jié)果:返回v的值5.()初始條件:圖G存在是G中頂點操作結(jié)果:返回v的第一個鄰接頂點,若頂在圖中沒有鄰接頂點,則返回為空6.()初始條件:圖G存在是G中頂點是v的鄰接頂點操作結(jié)果:返回v的下一個鄰接頂點,若w是v的最后一個鄰接頂點,則返回空7.()初始條件:圖G存在是G中頂點操作結(jié)果:刪除頂點v已經(jīng)其相關的弧8.()初始條件:圖G存在的頂點的應用函數(shù)操作結(jié)果:對圖進行深度優(yōu)先遍歷,在遍歷過程中對每個結(jié)點調(diào)用函數(shù)一次,一旦失敗,則操作失敗9.()初始條件:圖G存在的頂點的應用函數(shù)操作結(jié)果:對圖進行廣度優(yōu)先遍歷,在遍歷過程中對每個結(jié)點調(diào)用函數(shù)一次,一旦失敗,則操作失敗附圖的結(jié)構(gòu)體構(gòu)造:{數(shù)據(jù)對象是具有相同特性的數(shù)據(jù)元素的集合,稱為點集.數(shù)據(jù)關系R:{}{()屬于V,()表示v和w之間存在的路徑}B.隊列的算法構(gòu)造:1.()操作結(jié)果:構(gòu)造一個空隊列Q2.()初始條件:隊列Q已存在。操作結(jié)果:隊列Q被銷毀,不再存在。3.()初始條件:隊列Q已經(jīng)存在操作結(jié)果:插入元素e為Q的新的隊尾元素4.()初始條件為非空隊列操作結(jié)果:刪除Q的隊尾元素,并用e返回其值5.()初始條件:隊列已經(jīng)存在操作結(jié)果:若隊列為空,則返回,否則返回C.本程序包含的模板:1.程序模塊(){取得頂點數(shù)和弧數(shù);生成鄰接表結(jié)構(gòu)的圖;深度遍歷圖;廣度遍歷圖;}2.造鄰接表結(jié)構(gòu)的圖;3.度優(yōu)先遍歷圖;4.度優(yōu)先遍歷圖;5.列的基本操作模塊;6.數(shù)聲明模塊;三.源程序代碼:(6.0下運行)<><><>50圖的最大頂點數(shù)200隊列的最大容量{};定義枚舉變量圖的鄰接表存儲{;該弧所指向的頂點的位置*;指向下一條弧的指針};弧結(jié)點{*[];指向第一條依附該頂點的弧的指針;圖的當前頂點和弧數(shù)};隊列結(jié)構(gòu){[];數(shù)據(jù)域;隊頭指針;隊尾指針};[];全局變量——訪問標志數(shù)組(&);生成圖的鄰接表();深度優(yōu)先搜索遍歷圖();();廣度優(yōu)先搜索遍歷圖(&);初始化一個隊列();判斷隊列是否空();將一個元素入隊列(&);將一個元素出隊列();求圖中某一頂點的第一個鄰接頂點();求某一頂點的下一個鄰接頂點(){G;采用鄰接表結(jié)構(gòu)的圖'y';("題目:編制一個“圖遍歷的演示”的程序.\n");程序解說("\n本程序?qū)⒀菔旧梢粋€圖,并對它進行遍歷.\n");("輸入圖的頂點數(shù)和弧數(shù):\n格式:頂點數(shù),弧數(shù);例如:5,4\n");("接著輸入各邊(弧尾,弧頭):\n例如:5,3\n3,1\n1,2\n2,4\n");("程序會生成一個圖,并對它進行深度和廣度遍歷.\n");("深度遍歷:1->2->4->3->5\n廣度遍歷:1->2->3->4->5\n");('N''n'){("\n請輸入頂點數(shù)和弧數(shù):");("");輸入圖的頂點數(shù)和弧數(shù)(G);生成鄰接表結(jié)構(gòu)的圖(G);深度優(yōu)先搜索遍歷圖(G);廣度優(yōu)先搜索遍歷圖("圖遍歷完畢,繼續(xù)進行嗎?()");("");}}(){構(gòu)造鄰接表結(jié)構(gòu)的圖Gi;;*s;(1<)[i];初始化指針數(shù)組(1<){("");輸入弧的起點和終點(*)(());生成一個弧結(jié)點>[];插入到鄰接表中>;[];{(*)(());>[];>;[];}}}(G){深度優(yōu)先遍歷圖Gi;("深度優(yōu)先遍歷:");(1<)[i];訪問標志數(shù)組初始化(1<)([i])();對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論