




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計報告課程名稱: 數(shù)據(jù)結構 設計題目: 航空客運訂票系統(tǒng) 院 系: 班 級: 設 計 者: 學 號: 指導教師: 課程設計報告一、題目分析主要功能包括:1、錄入:可以錄入航班情況(如:輸入航班號,飛機編號,查詢起降時間,起飛抵達城市,剩余的票數(shù))。2、查詢:可以查詢某個航線的情況(如:輸入航班號,飛機編號,查詢起降時間,起飛抵達城市,剩余的票數(shù));可以輸入降落城市及航班號,查詢飛機航班情況。3、訂票:根據(jù)客戶要求(航班號、訂票數(shù)量)查詢該航班的余票數(shù)情況,若有余票,則可以訂票;若余票數(shù)不足,則需要重新詢問客戶要求,否則不能完成訂票。4、退票:可退票,根據(jù)客戶的姓名,訂票數(shù)量查詢是否為真實
2、信息,為客戶辦理退票。5、退出系統(tǒng)。二、總體設計拿到課程設計題目后,經(jīng)過仔細的研究,還是決定做航空客運訂票系統(tǒng),它可以使自己很好的鞏固在數(shù)據(jù)結構當中所學到的知識以及各算法,做到學以致用,并在運用的基礎上,進一步去創(chuàng)新。1、 主程序流程圖及其說明主程序的流程圖如下圖所示:航空客運訂票系統(tǒng)1、錄入航班信息2、查詢航班信息3、預 定機 票4、退 定機 票5、退 出系 統(tǒng)利用switch語句,用戶只需根據(jù)自己的需要,輸入相應的命令即可達到效果。例如,若需要查詢航班信息時,則輸入2;需要為客戶預定機票時,則輸入4;若需要退出系統(tǒng),則輸入5即可。2、子程序流程圖及其說明、錄入航班信息的流程圖及其說明:主要
3、功能是將新的航班信息寫入新建鏈表中,然后把新鏈表與儲存航班的鏈表合并,得到新的航班信息,實現(xiàn)對新航班的增加。錄入航班信息的流程圖如下圖所示:1、錄入航班信息建立新的鏈表新增航班信息對新鏈表置空,訂票表頭初始化1.返回菜單 2.繼續(xù)操作、查詢航班信息流程圖及其說明:先輸入所要查找的航班,可通過降落城市查詢或根據(jù)航班號查詢。然后判斷該航班是否存在,若存在,則輸出相關的航班信息;若不存在,則提示該航班不存在。查詢航班信息的流程圖如下圖所示:2、查詢航班信息1、通過降落城市查詢2、通過航班號查詢判斷航班是否存在顯示該航班信息返回主菜單、訂票、退票流程圖及其說明:訂票說明:先輸入降落城市,找到該航班并顯
4、示該航班信息,若找不到則提示不存在該航班。再通過需要訂票的數(shù)量來判斷余票量是否足夠。若足夠則錄入客戶姓名,完成訂票;若余票不足,則提示是否要取消并重新訂票。訂票的流程圖如下圖所示:3、訂票功能是否有該航班輸入所需的訂票信息(客戶姓名及要訂的票數(shù))余票是否充足訂票成功返回主菜單退票說明:先通過輸入客戶的姓名及訂票數(shù)目,確定是否存在該客戶信息,若符合條件,則完成退票;若無該客戶信息,則提示該航班沒有人訂票或者是該客戶沒有訂該航班的票。退票的流程圖如下圖所示:4、退票功能是否有該航班輸入客戶姓名及訂票數(shù)客戶信息是否正確退票成功返回主菜單三、詳細設計1、數(shù)據(jù)結構設計typedef struct boo
5、ked /單鏈表char name115; /已訂票客戶姓名 int number1; /已訂票數(shù)量 struct booked *next1;booked,*Link;typedef struct book /單鏈表char name215; /預定票客戶姓名 int number2; /要訂票數(shù)量 struct book *next2; /下一個鏈隊結點指針book,*Qptr;typedef structQptr front; /單鏈隊頭結點Qptr rear; /單鏈隊尾結點linkQueue;2、函數(shù)說明(1) 主函數(shù)main()允許用戶通過菜單進行功能選擇,使用相應的功能代碼來調(diào)用
6、對應的函數(shù)功能。(2) 其他各功能函數(shù)包括函數(shù)名功能void enter() 錄入航班信息 void refer() 查詢航線信息int InsertLinklist(Linklist &head1); 聲明錄入航班信息 void cityrefer(); 通過降落城市查詢void flynumrefer(); 通過航班號查詢 void reserve(); 訂票 void refund(); 退票 3、分工函數(shù)設計(截圖分析及相關說明)、主函數(shù)void main()H=(struct booked*)malloc(sizeof(booked);Q.front=Q.rear=(Qptr
7、)malloc(sizeof(book); /申請空間并初始化隊列InitLinklist();int n;do /打印主界面printf("t+nn");printf("t*->1. 錄入航班信息 *nn");printf("t*->2. 查詢航班信息 *nn");printf("t*->3. 訂票功能 *nn");printf("t*->4. 退票功能 *nn");printf("t*->5. 退出 *nn");printf("t+
8、n");printf("t請選擇:");scanf("%d",&n);printf("n");switch(n) case 1:enter(); /錄入功能break;case 2:refer(); /查詢功能break;case 3:reserve(); /訂票功能break;case 4:refund(); /退票功能break;case 5:printf("【感謝使用航空客運訂票系統(tǒng)】n");break; /退出while(n=1 |n=2|n=3|n=4);運行結果:2 、錄入航班信息vo
9、id enter() /錄入航班信息int j=1,m;doif(!InsertLinklist(L) /向其中加入航班信息printf("內(nèi)存已滿n");/向鏈表中加一結點printf("t 是否要輸入下一個航線記錄?n");printf("t 是請輸入 1n");printf("t 否請輸入 2n");scanf("%d",&m); /選擇是否輸入下一條航線while(m=1);Linklist InitLinklist()L=(Linklist)malloc(sizeof(fly)
10、;if(!L)L->next=NULL; /建立一個帶有頭結點的單鏈表return(L);int InsertLinklist(Linklist &L) /向航線鏈表添加新的結點Linklist p;p=(Linklist)malloc(sizeof(fly); /為一個新的結點分配空間printf("t請依次輸入下面幾項內(nèi)容:nn");printf("航班號:");scanf("%s",p->flynum);printf("飛機編號:");scanf("%s",p->
11、plane);printf("起飛城市:");scanf("%s",p->city1);printf("降落城市:");scanf("%s",p->city);printf("飛行日期:");scanf("%s",p->date);printf("剩余的票數(shù):");scanf("%d",&p->rest);p->booked=(booked*)malloc(sizeof(booked); /申請存儲
12、空間p->book=Q.front=Q.rear=(Qptr)malloc(sizeof(book); /申請存儲空間p->next=L->next; L->next=p;return 1;運行結果:3 、查詢航班信息通過降落城市查詢void cityrefer() /通過降落城市查詢char c15;Linklist p=L;int m;printf("t請輸入你要查詢的降落城市:");scanf("%s",c);dop=p->next;if(p)if(stricmp(*p).city,c)=0)printf("
13、t 航班信息:n");printf("t 航班號:%sn",p->flynum);printf("t 飛機編號:%sn",p->plane);printf("t 起飛城市:%sn",p->city1); printf("t 降落城市:%sn",p->city);printf("t 飛行日期:%sn",p->date);printf("t 剩余的票數(shù):%dn",p->rest);break;elseprintf("t【對不
14、起,沒有您要查找的降落城市.】 nn");m=0;while(m!=0);運行結果:通過航班號查詢void flynumrefer() /通過航班號查詢char c15;Linklist p=L;int m;printf("t請輸入你要查詢的航班號:");scanf("%s",c);dop=p->next;if(p)if(strcmpi(*p).flynum,c)=0)printf("t 航班信息:n");printf("t 航班號:%sn",p->flynum);printf("t
15、 飛機編號:%sn",p->plane); printf("t 起飛城市:%sn",p->city1); printf("t 降落城市:%sn",p->city);printf("t 飛行日期:%sn",p->date);printf("t 剩余的票數(shù):%dn",p->rest);break;elseprintf("t【對不起,沒有您要查找的航班.】n");m=0;while(m!=0);運行結果:四、源程序代碼#include<stdio.h>
16、;#include<string.h>#include<stdlib.h>#include<math.h>typedef struct booked /單鏈表char name115; /已訂票客戶姓名 int number1; /已訂票數(shù)量 struct booked *next1;booked,*Link;typedef struct book /單鏈表char name215; /預定票客戶姓名 int number2; /要訂票數(shù)量 struct book *next2; /下一個鏈隊結點指針book,*Qptr;typedef structQptr
17、 front; /單鏈隊頭結點Qptr rear; /單鏈隊尾結點linkQueue;typedef struct fly /創(chuàng)建一個航線的結構體char flynum15; /航班號char plane15; /飛機編號char date12; /飛行日期char city115; /起飛城市char city15; /降落城市int rest; /剩余的票數(shù)struct fly *next; /指向下一個鏈結點的指針struct booked *booked; /定義一個指向已訂票客戶的頭結點指針struct book *book;fly,*Linklist;struct fly *L=N
18、ULL; /定義全局變量struct booked *H; /為已訂票客戶鏈隊來申請空間linkQueue Q; /linkQueue類型的來申請空間Linklist InitLinklist(); /聲明int InsertLinklist(Linklist &head1); /聲明錄入航班信息void cityrefer(); /通過降落城市查詢void flynumrefer(); /通過航班號查詢void enter(); /錄入信息void refer(); /查詢信息void reserve(); /訂票void refund(); /退票void main()H=(str
19、uct booked*)malloc(sizeof(booked);Q.front=Q.rear=(Qptr)malloc(sizeof(book); /申請空間并初始化隊列InitLinklist();int n;do /打印主界面printf("t+nn");printf("t*->1. 錄入航班信息 *nn");printf("t*->2. 查詢航班信息 *nn");printf("t*->3. 訂票功能 *nn");printf("t*->4. 退票功能 *nn"
20、);printf("t*->5. 退出 *nn");printf("t+n");printf("t請選擇:");scanf("%d",&n);printf("n");switch(n) case 1:enter(); /錄入功能break;case 2:refer(); /查詢功能break;case 3:reserve(); /訂票功能break;case 4:refund(); /退票功能break;case 5:printf("【感謝使用航空客運訂票系統(tǒng)】n&quo
21、t;);break; /退出while(n=1 |n=2|n=3|n=4);void enter() /錄入航班信息int j=1,m;doif(!InsertLinklist(L) /向其中加入航班信息printf("內(nèi)存已滿n");/向鏈表中加一結點printf("t 是否要輸入下一個航線記錄?n");printf("t 是請輸入 1n");printf("t 否請輸入 2n");scanf("%d",&m); /選擇是否輸入下一條航線while(m=1);Linklist Init
22、Linklist()L=(Linklist)malloc(sizeof(fly);if(!L)L->next=NULL; /建立一個帶有頭結點的單鏈表return(L);int InsertLinklist(Linklist &L) /向航線鏈表添加新的結點Linklist p;p=(Linklist)malloc(sizeof(fly); /為一個新的結點分配空間printf("t請依次輸入下面幾項內(nèi)容:nn");printf("航班號:");scanf("%s",p->flynum);printf("
23、飛機編號:");scanf("%s",p->plane);printf("起飛城市:");scanf("%s",p->city1);printf("降落城市:");scanf("%s",p->city);printf("飛行日期:");scanf("%s",p->date);printf("剩余的票數(shù):");scanf("%d",&p->rest);p->book
24、ed=(booked*)malloc(sizeof(booked); /申請存儲空間p->book=Q.front=Q.rear=(Qptr)malloc(sizeof(book); /申請存儲空間p->next=L->next; L->next=p;return 1;void refer() /查詢航線信息int n;printf("t 查 找 航 線 信 息 n");printf("t+nn");printf("t*->1. 通過降落城市查詢 *nn");printf("t*->2.
25、通過航班號查詢 *nn");printf("t+n");printf("t請選擇:");scanf("%d",&n);switch(n)case 1:cityrefer();break;case 2:flynumrefer();break;default:break;void cityrefer() /通過降落城市查詢char c15;Linklist p=L;int m;printf("t請輸入你要查詢的降落城市:");scanf("%s",c);dop=p->next
26、;if(p)if(stricmp(*p).city,c)=0)printf("t 航班信息:n");printf("t 航班號:%sn",p->flynum);printf("t 飛機編號:%sn",p->plane);printf("t 起飛城市:%sn",p->city1); printf("t 降落城市:%sn",p->city);printf("t 飛行日期:%sn",p->date);printf("t 剩余的票數(shù):%dn&q
27、uot;,p->rest);break;elseprintf("t【對不起,沒有您要查找的降落城市.】 nn");m=0;while(m!=0);void flynumrefer() /通過航班號查詢char c15;Linklist p=L;int m;printf("t請輸入你要查詢的航班號:");scanf("%s",c);dop=p->next;if(p)if(strcmpi(*p).flynum,c)=0)printf("t 航班信息:n");printf("t 航班號:%sn&qu
28、ot;,p->flynum);printf("t 飛機編號:%sn",p->plane); printf("t 起飛城市:%sn",p->city1); printf("t 降落城市:%sn",p->city);printf("t 飛行日期:%sn",p->date);printf("t 剩余的票數(shù):%dn",p->rest);break;elseprintf("t【對不起,沒有您要查找的航班.】n");m=0;while(m!=0);vo
29、id reserve() /訂票Linklist p=L; /Linklist類型的L來指向鏈表頭booked *h=H,*h1; /booked定義客戶的結點,以便插入與刪除char c15;int m=1,ticket;int bookedt=0,bookt=0;printf("請輸入降落城市:");scanf("%s",c);p=L->next;if(p)do /查找是否有該航班if(!p)printf("【對不起,沒有您要查找的航班.】nn");return;m=stricmp(p->city,c);/通過比較來判
30、定if(m=0)printf("t 航班信息:n");printf("t 航班號:%sn",p->flynum);printf("t 飛機編號:%sn",p->plane);printf("t 起飛城市:%sn",p->city1); printf("t 降落城市:%sn",p->city);printf("t 飛行日期:%sn",p->date);printf("t 剩余的票數(shù):%dn",p->rest);elsep=
31、p->next; /促使循環(huán)while(m!=0);if(m=0) /當有該航班時,進行訂票doprintf("n請輸入您要訂的票數(shù):n");scanf("%d",&ticket);if(ticket<=p->rest)h=p->booked;if(h)h1=h;h=h->next1;h=(struct booked*)malloc(sizeof(booked);printf("請輸入客戶姓名:n");scanf("%s",h->name1);h->number1=
32、ticket;h->next1=h1->next1;h1->next1=h;p->rest=p->rest-ticket;printf("【訂票成功!】n");m=2;else /當余票量不足時printf("剩余的票數(shù):%dn",p->rest);printf("對不起,剩余票%d張不足,不能完成訂票.n",p->rest);printf("是否需要重新訂票?n");printf("需要請輸入1 不需要請輸入2:n");scanf("%d&q
33、uot;,&m);while(m=1);void refund() /退票Linklist p=L;booked *h=H,*h1,*h2;char c15,name315;int m=1,ticket; printf("請輸入航班號:");scanf("%s",c);p=L->next;if(p)doif(!p)printf("n對不起,沒有你要查找的航班.n");if(stricmp(*p).flynum,c)=0) /比較航班號printf("t 航班信息:n");printf("t
34、航班號:%sn",p->flynum);printf("t 飛機編號:%sn",p->plane);printf("t 起飛城市:%sn",p->city1);printf("t 降落城市:%sn",p->city);printf("t 飛行日期:%sn",p->date);printf("t 剩余的票數(shù):%dn",p->rest);m=0;else p=p->next;while(m!=0);if(m=0)h=p->booked;if(h)printf("請輸入客戶姓名:");scanf(&quo
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年計算機系統(tǒng)配套用各種消耗品項目合作計劃書
- 2025年未硫化復合橡膠及其制品項目建議書
- 2025年自動檢票驗票機合作協(xié)議書
- 小學生防性防侵害安全教育
- 2025年企業(yè)人力資源管理師之三級人力資源管理師題庫練習試卷A卷附答案
- 2019-2025年監(jiān)理工程師之合同管理題庫檢測試卷A卷附答案
- 圣誕節(jié)活動主題策劃方案
- 狼圖騰介紹課件
- 脫硫安全文明施工方案
- bim一級考試試題及答案
- 【MOOC】大學英語視聽導學-湖南大學 中國大學慕課MOOC答案
- 2024年高考真題-化學(天津卷) 含解析
- 國開2024年《機械設計基礎》形考任務1-4答案
- 云南鋰電池項目可行性研究報告
- 博物館學概論:第十講 數(shù)字博物館
- 危險化學品企業(yè)安全標準化規(guī)范課件
- 客戶退貨處理流程圖
- 中國民主同盟入盟申請表(樣表)
- 畢業(yè)設計(論文)-軸向柱塞泵設計(含全套CAD圖紙)
- 公安機關通用告知書模板
- 山東省初中學業(yè)水平考試信息技術學科命題要求
評論
0/150
提交評論