數據結構航空訂票系統課程設計報告_第1頁
數據結構航空訂票系統課程設計報告_第2頁
數據結構航空訂票系統課程設計報告_第3頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、WORD格式*學院學生課程設計報告摘要摘要飛機在現代的生活中扮演者非常重要的角色。 它能夠快速的把人們送到自己想要去的地方,既快速,又方便。所以現在坐飛機時很普遍的。但是都到機場去買票浪費時間,因此,航空訂票系統應運而生。有了航空訂票系統,用戶可以在該系統進展飛機票的查詢,訂票,退票等操作。方便了大家關鍵詞航空訂票系統、查詢、訂票、退票專業資料整理WORD格式I專業資料整理WORD格式目錄摘要 .I1需求分析.11.1需求概述 . .11.2需求環境 . .11.3功能描述 . .12概要設計.22.1程序功能模塊 . .22.2程序流程圖 . .22.3課程設計的思想 . .23詳細設計 .

2、33.1程序初始化 . .33.1.1代碼功能 . .33.1.2功能實現代碼 .33.2查詢航班信息 . .53.2.1代碼功能 . .53.2.3功能實現代碼 .63.3訂票模塊 . .73.3.1代碼功能 .73.3.2功能實現代碼 .74測試與運行.135完畢語.166參考文獻 .177附錄 .18專業資料整理WORD格式1專業資料整理WORD格式*學院學生課程設計報告需求分析1 需求分析1.1需求概述航線管理。每條航線所涉及的信息有:終點站名、航班號、飛機號、飛行周日星期幾、乘員定額、余票量客戶管理。有關訂票的客房信息包括*、訂票量、艙位等級 (1,2 和 3) 以及等替補的客房包括

3、*、所需標量 。系統實現主要操作操作和功能。系統實現的主要操作規程和功能如下: 查詢航線。根據旅客提出的終點站名輸出以下信息:航班號、飛機號、飛行日期、余標額。承辦訂票業務。根據客戶提出的要求航班號、訂票數額查詢該航班票額情況,假設有余票,那么為客戶辦理訂票手續,輸出座位號;假設已滿或者余票少于訂票額,那么需要重新詢問客戶要求;假設需要,可等待排隊侯補承辦退票業務。根據客戶提供的情況日期、航班 ,為客戶輸退票手續,然后查詢該航班是否有人排隊候補, 首先詢問排在第一的客戶, 假設所退票額滿足該客戶的要求, 那么為其訂票手續, 否那么依次詢問其他排隊候補的客戶。1.2需求環境本課程設計需要的設備為

4、硬件要求和軟件配置要求具體要求如下:硬件要求:一臺計算機。軟件配置: WINDOWS7/VC+6。.01.3功能描述本次課程設計是航空訂票系統主要是由查詢航班信息,訂票還有退票三大主要功能。除此之外,還有系統的界面等等。專業資料整理WORD格式1專業資料整理WORD格式*學院學生課程設計論文概要設計2 概要設計2.1程序功能模塊由需求分析知, 本次課程設計是航空訂票系統其主要由三大模塊構成, 即查詢模塊這局部由我負責 ,訂票系統模塊和退票系統模塊構成。2.2程序流程圖專業資料整理WORD格式開場航空訂票系統該程序開場運行后進如航空訂票系統用戶可以進展航班信息的查詢,訂票和退票操作。專業資料整理

5、WORD格式查詢模塊訂票系統模塊退票系統模塊使用完畢,退出系統圖 2.1 為該系統總的流程圖2.3課程設計的思想由需求分析知道需要實現幾個功能定義了兩個構造體。 這兩個構造體分別用來表示顧客信息和航班信息。 有構造體可以知道一些根本信息, 比方顧客的*,定的機票和航班的時間等等信息。使得實驗代碼的可讀性大大增強。專業資料整理WORD格式2專業資料整理WORD格式3 詳細設計3.1程序初始化3.1.1 代碼功能這一塊還是由我負責。我初始化了五個航班的根本信息。在初始化程序中,主要是航班的根本信息。 比方航班號,出發時間和剩下的機票數目等等根本信息。通過運用指針和鏈表來進展對初始化信息的書寫。 在

6、初始化時將三個重點的信息分別初始化為:*航班號 005飛機號 PZH113機票數 120*航班號 004飛機號 PZH121機票數 120航班號 003飛機號 PZH133機票數 120*航班號 002飛機號 PZH132機票數 120*航班號 001飛機號 PZH122機票數 1203.1.2功能實現代碼void InitLine()/ 初始化航線信息airline *p,*q;/航線L=(airline *)malloc(sizeof(airline);L->booked=NULL;L->wait=NULL;L->next=NULL;strcpy(L->end_ad

7、dr,"00000000");/終點站strcpy(L->line_num,"000");/航班號strcpy(L->plant_num,"0000000");/飛機號L->day=L->left=L->total=0;q=L;p=(airline *)malloc(sizeof(airline);/*p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"* ");strcpy(p->line_num,"005

8、");strcpy(p->plant_num,"PZH113");專業資料整理WORD格式3專業資料整理WORD格式p->day=5;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline);/*p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"* ");strcpy(p->line_num,"004"

9、;);strcpy(p->plant_num,"PZH121");p->day=4;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline);/p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"");strcpy(p->line_num,"003");strcpy(p->plant_num,"P

10、ZH133");p->day=1;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline);/*p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"* ");專業資料整理WORD格式4專業資料整理WORD格式strcpy(p->line_num,"002");strcpy(p->plant_num,"PZH132

11、");p->day=2;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline);/*p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"* ");strcpy(p->line_num,"001");strcpy(p->plant_num,"PZH122");p->day=3;p->left

12、=120;p->total=120;p->next=q->next;q->next=p;3.2查詢航班信息3.2.1 代碼功能此模塊主要由我負責,在此模塊我實現了查詢航班的功能。當進入查詢功能時,通過輸入數字用戶可以查詢航班的根本信息, 比方目的地,剩下的機票數目,出發的時間等等根本信息。 如果輸入的數字在界面中沒有顯示那么會提示用戶沒有這次航班。在這個模塊我使用了個 switch 語句來實現對查詢方式的選擇。通過判斷輸入的數字進入到相對應的查詢方式。 如果輸入的信息有誤的話, 系統將會提示用戶沒有這次航班,需要重新輸入。專業資料整理WORD格式5專業資料整理WORD格

13、式3.2.2 查詢模塊流程圖查詢1234航班號飛機號飛行日期航班終點3.2.2 查詢模塊的流程圖在該模塊用戶可以進展查詢功能。 用戶根據提示可以按照航班號、 飛機號、飛行日期和航班重點來查詢航班的根本信息。 這些根本信息包括了飛行航班號、 飛機號、剩余票量和處分日期等等。 在該模塊用戶必須根據提示進展輸入, 否那么系統會提示輸入有誤,需要重新輸入。3.2.3功能實現代碼void search()/ 航班查詢系統int i;int flag=0;airline *p;PR(" 請輸入查詢航班的方式:n");PR(" 航班號 ->1n");PR(&qu

14、ot; 飛機號 ->2n");PR(" 飛行日期 ->3n");PR(" 航班終點 ->4n");SC("%d",&i);for(;!flag;)switch(i)/switch語句來進展航班的查詢方式專業資料整理WORD格式6專業資料整理WORD格式case 1: p=search_line();flag=1;break;case 2: p=search_plant();flag=1;break;case 3: p=search_day();flag=1;break;case 4: p=searc

15、h_addr();flag-=1;break;default:PR("操作錯誤 , 請重新輸入 n");break;if(p)PR("終點站航班號飛機號飛行周日余票量n");PR("%-20s%10s%10s%8d%8dn",p->end_addr,p->line_num,p->plant_num,p->day,p->left);PR("是否訂票確定請按1");SC("%d",&i);if(i=1)book();elsePR("沒有該航班 n&qu

16、ot;);3.3訂票模塊3.3.1代碼功能在此模塊可以根據提示可以從航班號,飛行日期和終點站來進展訂票。如果訂票時余票缺乏所需要的票的數目時就可以進展排隊購票選擇。3.3.2功能實現代碼void book()/ 訂票系統int i;int flag=0;airline *p;customer *cst,*c;PR("請輸入查詢航班的方式:n");PR("航班號 ->1n");專業資料整理WORD格式7專業資料整理WORD格式PR("終點站 ->2n");PR("飛行日期 ->3n");for(;!

17、flag;)SC("%d",&i);switch(i)/運用一個 switch語句進展航班查詢case 1: p=search_line();flag=1;break;case 2: p=search_addr();flag=1;break;case 3: p=search_day();flag=1;break;default:PR("操作錯誤 , 請重新輸入 n");break;if(p)PR("終點站航班號飛機號飛行周日余票量 n");PR("%-20s%10s%10s%8d%8dn",p->en

18、d_addr,p->line_num,p->plant_num,p ->day,p->left);cst=(customer *)malloc(sizeof(customer);PR("請輸入訂票數量: ");SC("%d",&cst->num);PR("請輸入艙位等級 1/2/3 ");SC("%d",&cst->level);PR("請輸入您的名字 ");SC("%s",cst->name);if(cst->

19、num<=p->left)cst->next=p->booked;p->booked=cst;p->left=p->left-cst->num;PR("訂票成功,座位號為 %d%dn",p->total-p->left-cst->num+1,p->total-p->left);else/ 當需要的飄得數量大于剩余的票數的時候進展詢問是否進展排隊購票PR("余票缺乏,是否排隊等候 n 是 yn 否 n n"); SC("%d",&flag);if(fl

20、ag)if(!p->wait)專業資料整理WORD格式8專業資料整理WORD格式cst->next=p->wait;p->wait=cst;elsec=p->wait;for(;c->next;c=c->next);cst->next=c->next;c->next=cst;elsePR("沒有該航班 n");guide();排隊訂票時的排隊訂票系統:void waited(airline *p)/ 排隊訂票系統int flag;customer *q,*q0,*h;if(!p->wait) return;q

21、=(customer *)malloc(sizeof(customer);q->level=0;q->num=123;strcpy(q->name,"00000");q->next=p->wait;h=q;for(;p->left>0&&q->next;)if(q->next->num<p->left)PR("%s,您正在排隊定 %dX票,現有票,是否認 n 是yn 否n n",q->next->name,q->next->num);SC(&q

22、uot;%d",&flag);if(flag)q0=q->next;q->next=q->next->next;專業資料整理WORD格式9專業資料整理WORD格式q0->next=p->booked;p->booked=q0;p->left=p->left-q0->num;PR("排隊訂票成功 nn");elseq=q->next;elseq=q->next;p->wait=h->next;3.4 退票系統模塊3.4.1 代碼功能在此模塊,用戶可以根據系統的提示進展退票操作

23、。 當進展退票操作時需要進展信息的核對,如果正確,打印出信息,再詢問是否退票。3.4.2 功能實現代碼void refund()/ 退票系統int flag;char a20;airline *p;customer *c,*c1;p=search_line();c=p->booked;if(!p)PR("沒有該航班 nn");guide();return;PR("請輸入您的* ");SC("%s",a);if(!p->booked->name)/進展信息的查找判斷是否有用戶的信息PR("對不起,沒有找到您的

24、信息nn");guide();return ;專業資料整理WORD格式10專業資料整理WORD格式if(!strcmp(a,p->booked->name) /核對完信息后輸出要退票乘客的信息PR("退票信息n姓名/終點站/票數n%s/%s/%dn",p->booked->name,p->end_addr,p->booked->num); PR("確認要退票 n 是 yn 否 n)n"); scanf("%d",&flag);if(flag)p->booked=p-&g

25、t;booked->next;p->left=p->left+c->num;free(c);PR("退票成功 nn");waited(p);guide();elsefor(;c->next;c=c->next)if(!strcmp(a,c->next->name)break;if(!c->next)PR("對不起,沒有找到您的信息nn");guide();return ;elsePR("退票信息n姓名/終點站/票數n%s/%s/%dn",c->next->name,p-

26、>end_addr,c->next->num);PR("確認要退票? n 是 yn 否 n)n");/詢問是否退票scanf("%d",&flag);if(flag)c1=c->next;c->next=c->next->next;p->left=p->left+c1->num;free(c1);PR("退票成功 nn");waited(p);guide();專業資料整理WORD格式11專業資料整理WORD格式以上三個模塊是改程序最主要的功能實現的代碼。 初次之外還有

27、局部其他顯示模塊。專業資料整理WORD格式12專業資料整理WORD格式4 測試與運行由需求分析可知該程序運行后實現功能后的結果。此處是功能界面,用戶可以按照提示進展操作進展查詢功能時:專業資料整理WORD格式13專業資料整理WORD格式進展查詢模塊式會顯示出查詢方式,按照查詢方式可以準確的得到航班的信息進展訂票模塊時:在此處模塊,訂票可以根據提示進展購票,可以訂多X票,輸入艙位的等級和訂票人名字排隊訂票系統:如果該航班剩余的票量小于所要購置的數量,那么會提示是否進展排隊購票。專業資料整理WORD格式14專業資料整理WORD格式退票系統:在該模塊,進展退票操作時,系統會進展信息的核對,如果正確,

28、將會顯示客戶的信息。然后提示是否退票。專業資料整理WORD格式15專業資料整理WORD格式5 完畢語此次數據構造課程設計為航空訂票系統。 在寫程序的時候還是遇到了很多的問題。有些功能怎么也實現不了。 經過和同學的探討還有上網查找資料, 最后終于抑制了這些問題,成功的運行出了程序。通過這次學習, 使我對編寫程序的興趣更大了。 除此之外, 此次課程設計幫我們熟練地運用所學習的知識, 還讓我們熟練的去融合他們, 寫出一個全新的程序來。在這次課程設計中要衷心的感謝教師對我們的幫助, 使得我們對所學知識的熟練運用。總而言之,這次的課程設計既有趣又訓練了我們對知識的運用。專業資料整理WORD格式16專業資

29、料整理WORD格式6 參考文獻1 阮宏一,魯靜"數據構造課程設計 C/C+描述" . 電子工業2 馬巧梅,龐曉瓊等 . "數據構造課程設計案例教程"第三版 . 人民郵電3 袁蔚敏 . "數據構造" 清華大學專業資料整理WORD格式17專業資料整理WORD格式7源代碼源代碼:#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>#define PR printf#define SC scanftyped

30、ef struct customer/ 客戶信息char name20;/ 客戶*int num;/ 訂票量int level;/ 艙位等級customer *next;customer,*Lcustomer;typedef struct airline/ 航線信息char end_addr20;/ 航線終點char line_num5;/ 航班號char plant_num8;/ 飛機號int day;/ 飛行日期int total;/ 定員int left;/ 剩余票數customer *booked;/ 已定客戶信息customer *wait;/ 排隊等候訂票信息airline *ne

31、xt;airline,*Lairline;airline *L;/ 將航班信息定義為全局變量,減少參數傳遞Lairline search_line()/ 按航班號查找航班char a5;airline *p;p=L->next;PR("請輸入航班號 ");SC("%s",a);for(;p;p=p->next)if(!strcmp(a,p->line_num) break;return p;專業資料整理WORD格式18專業資料整理WORD格式Lairline search_plant()/ 按飛機號查找航班char a8;airline

32、 *p;p=L->next;PR("請輸入飛機號 ");SC("%s",a);for(;p;p=p->next)if(!strcmp(a,p->plant_num) break;return p;Lairline search_day()/ 按飛行日期查找航班int a;airline *p;p=L->next;PR("請輸入飛行日期 ");SC("%d",&a);for(;p;p=p->next)if(a=p->day) break;return p;Lairline

33、search_addr()/ 按航班終點查找航班char a20;airline *p;p=L->next;PR("請輸入航班終點 ");SC("%s",a);for(;p;p=p->next)if(!strcmp(a,p->end_addr) break;return p;void guide()/ 主菜單界面PR("-航空訂票客服系統 -n");PR("=n"); PR("tt 顯示所有航線 => 1n");專業資料整理WORD格式19專業資料整理WORD格式PR(&

34、quot;tt查詢航線信息 => 2n");PR("tt訂票業務=> 3n");PR("tt退票業務=> 4n");PR("tt退出系統=> 0n");PR("=n");PR("tt去除屏幕信息 => 9nn");PR("請按上面指引操作 :t");void print_customer(airline *p)/ 顯示航班客戶信息customer *c;if(p->booked)c=p->booked;PR("已定

35、票客戶信息 n 票數 t/t客戶* n");for(;c;c=c->next)PR("%5dt/t%sn",c->num,c->name);PR("nn");elsePR("暫時沒有客戶訂票 nn");if(p->wait)c=p->wait;PR("排隊訂票客戶信息 n 票數 t/t 客戶* n"); for(;c;c=c->next)PR("%5dt/t%sn",c->num,c->name);PR("nn");e

36、lsePR("暫時沒有客戶排隊訂票 nn");void book()/ 訂票系統int i;int flag=0;airline *p;customer *cst,*c;專業資料整理WORD格式20專業資料整理WORD格式PR("請輸入查詢航班的方式:n");PR("航班號 ->1n");PR("終點站 ->2n");PR("飛行日期 ->3n");for(;!flag;)SC("%d",&i);switch(i)case 1: p=search_l

37、ine();flag=1;break;case 2: p=search_addr();flag=1;break;case 3: p=search_day();flag=1;break;default:PR("操作錯誤 , 請重新輸入 n");break;if(p)PR("終點站航班號飛機號飛行周日余票量 n");PR("%-20s%10s%10s%8d%8dn",p->end_addr,p->line_num,p->plant_num,p ->day,p->left);cst=(customer *)ma

38、lloc(sizeof(customer);PR("請輸入訂票數量: ");SC("%d",&cst->num);PR("請輸入艙位等級 1/2/3 ");SC("%d",&cst->level);PR("請輸入您的名字 ");SC("%s",cst->name);if(cst->num<=p->left)cst->next=p->booked;p->booked=cst;p->left=p->

39、left-cst->num;PR("訂票成功,座位號為 %d%dn",p->total-p->left-cst->num+1,p->total-p->left);elsePR("余票缺乏,是否排隊等候?n 是 y n 否 nn");SC("%d",&flag);if(flag)專業資料整理WORD格式21專業資料整理WORD格式if(!p->wait)cst->next=p->wait;p->wait=cst;elsec=p->wait;for(;c->n

40、ext;c=c->next);cst->next=c->next;c->next=cst;elsePR("沒有該航班 n");guide();void waited(airline *p)/ 排隊訂票系統int flag;customer *q,*q0,*h;if(!p->wait) return;q=(customer *)malloc(sizeof(customer);q->level=0;q->num=123;strcpy(q->name,"00000");q->next=p->wait;

41、h=q;for(;p->left>0&&q->next;)if(q->next->num<p->left)PR("%s,您正在排隊定 %dX票,現有票,是否認 n 是yn 否nn",q->next->name,q->next->num);SC("%d",&flag);if(flag)q0=q->next;q->next=q->next->next;q0->next=p->booked;p->booked=q0;專業資料整理W

42、ORD格式22專業資料整理WORD格式p->left=p->left-q0->num;PR("排隊訂票成功 nn");elseq=q->next;elseq=q->next;p->wait=h->next;void refund()/ 退票系統int flag;char a20;airline *p;customer *c,*c1;p=search_line();c=p->booked;if(!p)PR("沒有該航班 nn");guide();return;PR("請輸入您的* ");S

43、C("%s",a);if(!p->booked->name)PR("對不起,沒有找到您的信息nn");guide();return ;if(!strcmp(a,p->booked->name)PR("退票信息 n * / 終點站 / 票數n%s/%s/%dn",p->booked->name,p->end_addr,p->booked->num); PR("確認要退票 "n 是 yn 否 n)n");scanf("%d",&

44、flag);if(flag)p->booked=p->booked->next;p->left=p->left+c->num;專業資料整理WORD格式23專業資料整理WORD格式free(c);PR("退票成功 nn");waited(p);guide();elsefor(;c->next;c=c->next)if(!strcmp(a,c->next->name)break;if(!c->next)PR("對不起,沒有找到您的信息nn");guide();return ;elsePR("退票信息 n * / 終點站 / 票數 n%s/%s/%dn",c->next->name,p->end_addr,c->next->num);PR("確認要退票? n 是 yn 否 n)n");scanf("%d",&flag);if(flag)c1=c->next;c->next=c->next->next;p->left=p->left+c1->num;free(c1);PR("退票成功 nn");waited(p);gui

溫馨提示

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

評論

0/150

提交評論