數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)c語言版《飛機(jī)訂票系統(tǒng)》

上傳人:燈火****19 文檔編號:40519717 上傳時間:2021-11-16 格式:DOCX 頁數(shù):41 大小:304.04KB
收藏 版權(quán)申訴 舉報(bào) 下載
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)c語言版《飛機(jī)訂票系統(tǒng)》_第1頁
第1頁 / 共41頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)c語言版《飛機(jī)訂票系統(tǒng)》_第2頁
第2頁 / 共41頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)c語言版《飛機(jī)訂票系統(tǒng)》_第3頁
第3頁 / 共41頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)c語言版《飛機(jī)訂票系統(tǒng)》》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)c語言版《飛機(jī)訂票系統(tǒng)》(41頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、軟件工程專業(yè)14級 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告 設(shè)計(jì)題目: 飛機(jī)訂票系統(tǒng) 班 級:軟件14 姓 名: 指導(dǎo)教師: 2015 年11月20日 一、設(shè)計(jì)任務(wù)與要求 1 1.1 總體目標(biāo)與任務(wù)要求 1 1.2 題目選擇與目的意義 1 1.3 所選題目的主要工作 1 二、需求分析 2 2.1 用戶需求分析 2 2.2 功能需求分析 2 2.3 系統(tǒng)需求分析 2 三、概要設(shè)計(jì) 3 3.1 各模塊的算法設(shè)計(jì)說明 3 3.2 存儲結(jié)構(gòu)設(shè)計(jì)說明 8 四、詳細(xì)設(shè)計(jì) 10

2、五、源代碼 11 六、運(yùn)行結(jié)果分析 21 七、收獲與體會 28 八、主要參考資料 28 、設(shè)計(jì)任務(wù)與要求 1.1 總體目標(biāo)與任務(wù)要求 制作一個訂票系統(tǒng),通過此系統(tǒng)可以實(shí)現(xiàn)如下功能: 1)錄入 可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù) 自定)。 2 )查詢 可以查詢某個航線的情況 (如, 輸入航班號, 查詢起降時間, 起飛抵達(dá)城市, 航班票價,票價折扣,確定航班是否滿倉)可以輸入起飛抵達(dá)城市,查詢飛機(jī)航 班情況。 3 )訂票 可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇的航班(訂票情況可 以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己

3、設(shè)定 ) 。 4 )退票 可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號,訂票數(shù)量及 航班情況,訂單要有編號。 5 )修改航班信息 當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件。 根據(jù)以上功能說明,設(shè)計(jì)航班信息,訂票信息的存儲結(jié)構(gòu),設(shè)計(jì)程序完成功 能。 6 .2 題目選擇與目的意義 選擇這個題目的原因是,訂票系統(tǒng)在現(xiàn)實(shí)生活中應(yīng)用很廣泛,通過這個系統(tǒng) 可以使訂票、退票等變得簡便。與傳統(tǒng)的人工用紙、筆來記錄辦理訂票、退票等 相比, 使用這個系統(tǒng)也會增加工作效率。 這個題目做出來的系統(tǒng)還是比較實(shí)用的, 所以我選擇了訂票系統(tǒng)這個題目。 完成此系統(tǒng),需要綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程中學(xué)到

4、的幾種典型數(shù)據(jù)結(jié)構(gòu),以及程 序設(shè)計(jì)語言(C語言),自行實(shí)現(xiàn)一個較為完整的應(yīng)用系統(tǒng)的設(shè)計(jì)與開發(fā)。通過課程 設(shè)計(jì),自己通過系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、編程調(diào)試,寫實(shí)驗(yàn)報(bào)告等環(huán)節(jié),進(jìn)一步掌握 應(yīng)用系統(tǒng)設(shè)計(jì)的方法和步驟,靈活運(yùn)用并深刻理解典型數(shù)據(jù)結(jié)構(gòu)在軟件開發(fā)中的應(yīng) 用。學(xué)會將知識應(yīng)用于實(shí)際的方法,提高分析和解決問題的能力,增加綜合能力。 7 .3 所選題目的主要工作 這個題目的主要工作是使訂票系統(tǒng)可以錄入航班情況,查詢某個航線的情 況、辦理訂票、辦理退票、修改航班信息、查詢訂票信息等。 二、需求分析 2.1 用戶需求分析 用戶使用此程序所要完成的工作主要為:查詢所有航線信息、查看已訂票

5、客 戶信息、查詢航線、辦理訂票業(yè)務(wù)、辦理退票業(yè)務(wù)。通過此系統(tǒng)可以方便的進(jìn)行 上述工作。 每條航線所涉及的信息有:終點(diǎn)站名、航班號、飛行時間、票價、乘員定額、 余票量。 已訂票的客戶名單信息包括姓名、訂票量、艙位等級(1, 2或3)。 等候替補(bǔ)的客戶名單信息包括姓名、所需票量。 查詢航線功能可以根據(jù)旅客提出的終點(diǎn)站名輸出航班號、飛行時間、票價、乘 員定額、余票量。 訂票業(yè)務(wù)功能根據(jù)客戶提出的要求 (航班號、訂票數(shù)額)查詢該航班票額情況, 若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號;若已滿員或余票額少于定票額, 則需重新詢問客戶要求。若需要,可登記排隊(duì)候補(bǔ)購票。 退票業(yè)務(wù)功能根據(jù)客戶

6、提供的情況(航班號、姓名)為客戶辦理退票手續(xù),然 后查詢該航班是否有人排隊(duì)候補(bǔ),首先詢問排在第一的客戶,若所退票額能滿足他 的要求,則為他辦理訂票手續(xù),否則依次詢問其他排隊(duì)候補(bǔ)的客戶。 2.2 功能需求分析 功能需求分析模塊圖如圖 2.1所示。 開始 退出系統(tǒng) 辦理訂票業(yè)務(wù) 查詢航線 瀏覽已訂票客戶信息 瀏覽航線信息 辦理退票業(yè)務(wù) 圖2.1功能模塊圖 第 13頁 2.3 系統(tǒng)需求分析 開發(fā)環(huán)境:Windows 7系統(tǒng) 使用軟件:編寫實(shí)驗(yàn)報(bào)告: Microsoft Office Word 制作 程序:Microsoft Visual C++ 6.0

7、 三、概要設(shè)計(jì) 3.1 各模塊的算法設(shè)計(jì)說明 1 .瀏覽航線信息功能,調(diào)用 display函數(shù)進(jìn)行輸出。如圖3.1所示。瀏覽 航線信息流程圖: 圖3.1瀏覽航線信息流程圖: 其中display函數(shù)的流程圖如圖3.2 display 函數(shù)流程圖: 2. 圖3.3 圖3.2 display 函數(shù)流程圖 瀏覽已訂票客戶信息功能,按順序輸出客戶信息鏈表中的信息。流程圖如 瀏覽已訂票客戶信息功能流程圖: 圖3.3瀏覽已訂票客戶信息功能流程圖 3. 。流程圖如圖3.4 查詢航線功能,根據(jù)客戶提出的終點(diǎn)站名輸出航線信息 查詢航線流程圖: 圖3.4查詢航線流

8、程圖 4.辦理訂票業(yè)務(wù)功能, 根據(jù)客戶提出的航線信息等進(jìn)行訂票 。流程圖如圖 3.5辦理訂票業(yè)務(wù)功能流程圖: 痂人航班號 對不 札族 購 睜! 時您票己乘 否排隊(duì) ,的量過衢 登記信息等并 輸出琬鐮1 愉快「 輸出項(xiàng)迎您下 次歉訂勒. 第建息等 并輸出堆 冊成珈〃 圖3.5辦理訂票業(yè)務(wù)功能流程圖 5.辦理退票業(yè)務(wù)功能, 根據(jù)客戶提出的航線信息等進(jìn)行退票 。流程圖如圖 3.6辦理退票業(yè)務(wù)功能流程圖: 輸入航班號 N 對不起, 你沒有日 過票! 不該末冷 時攙 有該航班 break p2=pl;pl =pl->neit;

9、 圖3.6辦理退票業(yè)務(wù)功能流程圖 6.主函數(shù)流程圖如圖 3.7主函數(shù)流程圖: 初始化,輸出菜 單,請選擇 ■輸出"歡迎使用本系 統(tǒng),再見i "exit(0), 圖3.7主函數(shù)流程圖

10、 /*單鏈隊(duì)列存儲等候替補(bǔ)的客戶信息 */ /*姓名*/ /*訂票量*/ 3.2存儲結(jié)構(gòu)設(shè)計(jì)說明 typedef struct wat_ros { char name[10]; int req_amt; struct wat_ros *next; }qnode,*qptr; typedef struct pqueue /* 等候替補(bǔ)的客戶名單 */ { qptr front; qptr rear; }linkqueue; 上述單鏈隊(duì)列用來存儲排隊(duì)等候的客戶名單,這樣可以通過隊(duì)先進(jìn)先出的特 點(diǎn)來進(jìn)行操作。先排隊(duì)的客戶可以先訂票成功。 /* 乘員名單 */

11、 /* 客戶姓名 */ /* 訂票量 */ /* 艙位等級 */ typedef struct ord_ros { char name[10]; int ord_amt; int grade; struct ord_ros *next; }linklist; 上述單鏈表用來存儲乘員的信息,包括姓名、訂票量、艙位等級。 struct airline /*航線信息 */ { char ter_name[10]; /* 抵達(dá)城市 */ char air_num[10]; /* 航班號 */ char time[10]; /* 飛機(jī)時間 */ char pri[7];

12、/* 票價 */ int tkt_amt; /* 乘員定額 */ int tkt_sur; /* 余票量 */ linklist *order; /*乘員名單域,指向乘員名單鏈表的頭指針 */ linkqueue wait; /* 等候替補(bǔ)的客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭 隊(duì)尾的指針 */ }lineinfo; 這個結(jié)構(gòu)體存儲了航線信息,包括抵達(dá)城市、航班號、飛行時間、票價、乘 員定額、余票量等。 #define MAXSIZE 5 /*定義航線數(shù)量,可修改 */ struct airline air[MAXSIZE]= /* 初始化航線信息 */ { {&quo

13、t;beijing","1","1200","860",30,30}, {"shanghai","2","1000","770",20,20}, {"london","3","1330","960",10,10}, {"harbin","4","1700","760",50,50},

14、 {"dalian","5","1400","550",40,40} }; 通 過 修 改 全 局 變 量 MAXSIZE 的 數(shù) 值 即 可 更 改 航 線 數(shù) 。 在 struct airline air[MAXSIZE] 中可以修改、 增加、 刪除航線信息。 航線信息內(nèi)容依次為抵達(dá)城市、 航班號、飛行時間、票價、乘員定額、余票量(飛行時間 1200 即 12 : 00)。 四、詳細(xì)設(shè)計(jì) 1. 查看航線信息 編 寫 void list() 函 數(shù) 來 查 看 全 部 航 線 信 息 。 其 中 調(diào)

15、 用 了 void display(struct airline *info) 函數(shù),該函數(shù)的功能是打印每條航線的基本信 息。這樣即可按順序打印出 struct airline 鏈表中存儲的全部航線信息。 2. 查看已訂票客戶信息 編寫 void prtlink() 函數(shù)來查看已訂票客戶信息。 這個函數(shù)中需要輸入要查詢的 航線,通過 find() 函數(shù)來尋找這個航線然后輸出該航線乘員域的乘員信息。 3. 查詢航線 編寫 void search() 函數(shù)來實(shí)現(xiàn)查詢航線的功能。 用戶輸入抵達(dá)城市名, 該函數(shù) 會在航線信息鏈表中進(jìn)行查詢。如果有該城市,則會輸出此航線的信息。 4. 辦

16、理訂票業(yè)務(wù) 編寫 void order() 函數(shù)來實(shí)現(xiàn)訂票功能。首先提示用戶輸入航班號,然后調(diào)用 find() 函數(shù)來查找此航班, 如果該航班存在, 則會提示用戶輸入信息并調(diào)用 linklist *insertlink(linklist *head,int amount,char name口,int grade)在訂票乘員名單域中添 加客戶信息。如果余票不足,則會提示用戶進(jìn)行排隊(duì),如果排隊(duì),則會調(diào)用提示 用戶輸入信息并調(diào)用 linkqueue appendqueue(linkqueue q,char name[],int amount) 在排隊(duì)等候乘員名單域中添加客戶信息。 5.

17、辦理退票業(yè)務(wù) 編寫 void return_tkt() 函數(shù)來實(shí)現(xiàn)退票功能。首先提示用戶輸入航班號,然后 調(diào)用 find() 函數(shù)來查找此航班,如果該航班存在,則會提示用戶輸入信息,信息 正確則會提示退票成功。此時將乘員信息中的該乘員信息刪除,然后檢查替補(bǔ)乘 員鏈表中的信息,如果其訂票量可以得到滿足,則會將其插入到訂票客戶名單鏈 表中,提示他訂票成功。 6. 退出系統(tǒng) 主函數(shù)中無限循環(huán)輸出菜單 for(;;) ,用戶在菜單頁面下輸入 6 回車即 exit(0) , 即可退出系統(tǒng)。 五、源代碼 #include <stdio.h> #include <st

18、dlib.h> #include <string.h> #include <conio.h> #include <iostream.h> /*定義航線數(shù)量,可修改 */ #define MAXSIZE 5 typedef struct wat_ros /*單鏈隊(duì)列存儲等候替補(bǔ)的客戶信息 */ { char name[10]; /*姓名 */ int req_amt; /*訂票量 */ struct wat_ros *next; }qnode,*qptr; typedef struct pqueue /*等候替補(bǔ)的客戶名單 */

19、 { qptr front; /*等候替補(bǔ)客戶名單域的隊(duì)頭指針 */ qptr rear; /* 等候替補(bǔ)客戶名單域的隊(duì)尾指針 */ }linkqueue; typedef struct ord_ros /*乘員名單 */ { char name[10]; /*客戶姓名 */ int ord_amt; /* 訂票量 */ int grade; /*艙位等級 */ struct ord_ros *next; }linklist; struct airline { char ter_name[10]; /* 抵達(dá)城市 */ char air_num[10]; /*航班號

20、 */ char time[10]; /* 飛機(jī)時間 */ char pri[7]; /*票價 */ int tkt_amt; int tkt_sur; linklist *order; linkqueue wait; 指針 */ /* 乘員定額 */ /*余票量 */ /*乘員名單域,指向乘員名單鏈表的頭指針 */ /*等候替補(bǔ)的客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的 }lineinfo; struct airline *start; void display(struct airline *info) /*打印每條航線的基本信息 */ { printf(

21、"%8s\t%3s\t%s\t\t%4s\t%3d\t%10d\n",info->ter_name,info->air_num,info->time,i nfo->pri,info->tkt_amt,info->tkt_sur); void list() { struct airline *info; int i=0; info=start; /* 打印全部航線信息 */ } 第 29 頁 printf("終點(diǎn)站名\t航班號\t飛行時間\t票價\t乘員定額\t余票量\n"); while(i&l

22、t;MAXSIZE) { display(info); /*調(diào)用 display函數(shù)來輸出 */ info++; i++; } printf("\n\n"); } void search() { /* 根據(jù)客戶提出的終點(diǎn)站名輸出航線信息 */ struct airline *info,*find(); /*要抵達(dá)的城市名稱 */ char name[10]; int i=0; info=start; printf(" 請輸入要抵達(dá)城市的名稱 :"); scanf("%s",name); whil

23、e(i<MAXSIZE) { if(!strcmp(name,info->ter_name)) /*有該站名 strcmp則返回,if(!0)即break*/ { break; } info++; i++; } if(i>=MAXSIZE) /* 沒有匹配的航線 */ { printf(" 對不起,沒有這條航線 !\n"); } else { printf("終點(diǎn)站名\t航班號\t飛行時間\t票價\t乘員定額\t余票量\n"); display(info); } } struct airline *f

24、ind() { struct airline *info; char number[10]; int i=0; /*調(diào)用display函數(shù)輸出航線信息*/ / *根據(jù)系統(tǒng)提出的航班號查詢并以指針形式返回 */ /*查詢的航班號 */ info=start; printf(" 請輸入航班號 :"); scanf("%s",number); while(i<MAXSIZE) { if(!strcmp(number,info->air_num)) /* 有匹配航班 */ { return info; info++;

25、 i++; } printf(" 對不起,沒有這條航線 !\n"); /* 無匹配航班 */ return NULL; } void prtlink() { linklist *p; struct airline *info; /*打印訂票乘員名單域的客戶名單信息 */ info=find(); p=info->order; if(p!=NULL) { printf(" 客戶姓名 while(p) { /* 按順序輸出客戶信息鏈表 */ 訂票數(shù)額 艙位等級 \n"); printf("%s\t\t%d\t

26、%d\n",p->name,p->ord_amt,p->grade); p=p->next; } } else /*沒有人訂這個航班 */ printf(" 該航線沒有客戶信息 !\n"); } linklist *insertlink(linklist *head,int amount,char name[],int grade) /* 增加訂票乘員名單 域的客戶信息 */ { linklist *p1,*new1; p1=head; new1=(linklist*)malloc(sizeof(linklist));

27、 if(!new1) { /* 存儲空間不足 */ printf("\nOut of memory!!\n"); return NULL; strcpy(new1->name,name); new1->ord_amt=amount; new1->grade=grade; new1->next=

28、NULL; if(head==NULL) /*若原訂票客戶信息為空 */ { head=new1; new1->next=NULL; } else { head=new1; } new1->next=p1; return head; } linkqueue appendqueue(linkqueue q,char name[],int amount) /*增加排隊(duì)等候的客戶名單 域*/ { qptr new1; new1=(qptr)malloc(sizeof(qnode)); strcpy(new1->name,name); new1-&

29、gt;req_amt=amount; new1->next=NULL; if(q.front==NULL) /*若原排隊(duì)等候客戶名單域?yàn)榭?*/ { q.front=new1; } else { q.rear->next=new1; } q.rear=new1; return q; void order() { struct airline *info; int amount,grade; char name[10]; info=start; if(!(info=find())) { return; } printf(" 請輸入您需

30、要的票數(shù) /* 辦理訂票業(yè)務(wù) */ /*訂票數(shù)量 ,艙位等級 */ /*要訂的航班號 */ /* 根據(jù)客戶提供的航班號進(jìn)行查詢,如為空,退出該模塊 */ :"); scanf("%d",&amount); if(amount>info->tkt_amt) { /* 若客戶訂票額超過乘員定票總額,退出 */ printf("\n 對不起,您輸入票數(shù)已經(jīng)超過乘員定額 !"); return; } if(amount<=info->tkt_sur) 等記信息 */ /* 若客戶訂票額末超過余

31、票量,訂票成功并 { int i; printf(" 請輸入您的姓名 :"); scanf("%s",name); printf(" 請輸入您需要的艙位等級 (1,2或):"); scanf("%d",&grade); info->order=insertlink(info->order,amount,name,grade); /* 在訂票乘員名單域 */ for(i=0;i<amount;i++) { printf("%s 的座位號是 /* 依次輸出該訂票

32、客戶的座位號 */ :%d\n",name,info->tkt_amt-info->tkt_sur+i+1); } info->tkt_sur-=amount; /*該航線的余票量應(yīng)減掉該客戶的訂票量 */ printf("\n 祝您乘坐愉快 !\n"); } else /*若滿員或余票額少于訂票額,詢

33、問客戶是否需要進(jìn)行排隊(duì)等候 */ { char r; printf("\n 沒有這么多票了,您需要排隊(duì)等候嗎 ?(Y/N)"); r=getch(); printf("%c",r); if(r=='Y'||r=='y') { printf("\n 請輸入您的姓名 :"); scanf("%s",name); info->wait=appendqueue(info->wait,name,amount); /*在排隊(duì)等候乘員名單域 中添加客戶信息 */ pr

34、intf("\n 注冊排隊(duì)成功 !\n"); } else { printf("\n 歡迎您再次訂購! \n"); } } } void return_tkt() /* 退票模塊 */ { struct airline *info; qnode *t,*back,*f,*r; int grade; linklist *p1,*p2,*head; char cusname[10]; if(!(info=find())) /*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)行搜索 */ { return; } head=info->o

35、rder; p1=head; printf(" 請輸入你的姓名 :"); scanf("%s",cusname); while(p1!=NULL) /* 根據(jù)客戶提供的姓名到訂票客戶名單域進(jìn)行查詢 */ { if(!strcmp(cusname,p1->name)) { break; } p2=p1; p1=p1->next; } if(p1==NULL) { /* 若未找到,退出本模塊 */ printf(" 對不起,您沒有訂過票 !\n"); return; } else /*

36、 若信息查詢成功,刪除訂票客戶名單域中的信息 */ { if(p1==head) { head=p1->next; } else { p2->next=p1->next; } info->tkt_sur+=p1->ord_amt; grade=p1->grade; printf("%s退票成功!\n",p1->name); free(p1); } info->order=head; f=(info->wait).front; r=(info->wait).rear; t=f; /*

37、重新將航線名單域指向訂票單鏈表的頭指針 */ /*f 指向排隊(duì)等候名單隊(duì)列的頭結(jié)點(diǎn) */ /*r 指向排隊(duì)等候名單隊(duì)列的尾結(jié)點(diǎn) */ /*t 為當(dāng)前滿點(diǎn)條件的排隊(duì)候補(bǔ)名單域 */ while(t) { if(info->tkt_sur>=info->wait.front->req_amt) /*若滿足條件者為頭

38、結(jié)點(diǎn) */ { int i; info->wait.front=t->next; printf("%s 訂票成功 !\n",t->name); for(i=0;i<t->req_amt;i++) /* 輸出座位號 */ { printf("%s 的座位號是 :%d\n",t->name,(info->tkt_sur)-i); } info->tkt_sur-=t->req_amt; info->order=insertlink(info->order,t->req_

39、amt,t->name,grade);/* 插入至 U 訂票客 戶名單鏈表中 */ free(t); break; } back=t; t=t->next; if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)/* 若滿足條件者不為頭結(jié)點(diǎn) */ { int i; back->next=t->next; printf("%s 訂票成功 !\n",t->name); for(i=0;i<t->req_amt;i++) /*輸出座位號 */ { pr

40、intf("<%s>'s seat number is:%d\n",t->name,(info->tkt_sur)-i); } info->tkt_sur-=t->req_amt; info->order=insertlink(info->order,t->req_amt,t->name,grade);/* 插入至 U 訂票客 戶名單鏈表中 */ free(t);break; } if(f==r) { break; int menu_select() { int c; /* 菜單界面

41、*/ char s[20]; printf("\t 訂票系統(tǒng) \n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("1. 查看航線信息 \n"); printf("2. 查看已訂票客戶信息 \n"); printf("3. 查詢航線 \n"); printf("4. 辦理訂票業(yè)務(wù) \n"); printf("5. 辦理退票業(yè)務(wù) \n"); printf("6. 退出系統(tǒng) \

42、n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~\n"); do { printf(" 請選擇 (1-6):"); scanf("%s",s); c=atoi(s); }while(c<1||c>6); return c; } void main() { struct airline air[MAXSIZE]= /*初始化航線信息 */ { {"beijing","1","1200","8

43、60",30,30}, {"shanghai","2","1000","770",20,20}, {"london","3","1330","960",10,10}, {"harbin","4","1700","760",50,50}, {"dalian","5","1400"

44、,"550",40,40} }; start=air; for(;;) { system("cls"); switch(menu_select()) { case 1:list(); break; case 2:prtlink(); break; case 3:search(); break; case 4:order(); break; case 5:return_tkt(); break; case 6:printf("\n 感謝您 exit(0); } printf("\n 任意鍵繼續(xù) .

45、..\n") getch(); } } /* 無限循環(huán) (除非用戶選擇 /* 清空屏幕 */ /*打印全部航線信息 */ /*瀏覽已訂票客戶信息 */ /* 查詢航線 */ /* 訂票 */ /*退票 */ ,再見 !\n"); /*退出系統(tǒng) */ /* 正常退出程序 */ /*任意鍵繼續(xù) */ .退出 )*/ 六、運(yùn)行結(jié)果分析 1 . 菜單:進(jìn)入系統(tǒng)后,會出現(xiàn)如下菜單,如圖 6.1 菜單: 第 # 頁 訂票系統(tǒng) 訂票系統(tǒng) Z 2JWAJ/k/ .息 住 戶 息客務(wù)務(wù) 信票業(yè)業(yè) 線訂桀杳示統(tǒng) 航已普退系 詢理理出 f

46、t-*-查辦辦退 第#頁 請選擇a-6):. 圖6.1菜單 用戶根據(jù)自己需求選擇輸入數(shù)字(1-6)即可進(jìn)入相應(yīng)功能。 2 .查看航線信息:在菜單頁面下輸入數(shù)字 1,回車,即可瀏覽全部航線信息。如圖 6.2查看航線信息: 息客務(wù)務(wù) 信票業(yè)業(yè) 線訂蓄1示統(tǒng) 航己普速系 詢理理出 曲*-查辦辦退 ■ ■ 一 ?»? 12 3 4 5 6 請選擇〈―6〉 終點(diǎn)站名 航班號 飛行時間 票價 乘員定額 仝.帛 小十里 beijing 1 1200 S6B 30 30 shanghai 2 1000 770 20 20

47、 london 3 1330 960 10 10 hdPbin 4 1700 76。 5g 50 dalian 5 1480 553 40 40 任意疑繼續(xù)... 圖6.2查看航線信息 3.查看已訂票客戶信息:在菜單頁面下輸入數(shù)字 2,回車,然后輸入航班號即可查 看。如圖6.3查看航線信息: 自5 信 統(tǒng)戶 系息客務(wù)務(wù) 票信票業(yè)業(yè) 訂線訂緒委示統(tǒng) 冊已航訂M-系 喜詢理里出 查查查辦辦退 fMwwv^fw*vf%rfWiVfVfwnjrf%Jvwrv fwrfwru1 rww 請選擇AN 請輸入航班號二. 圖6.3查看航線信息

48、該航線有客戶預(yù)定則顯示客戶預(yù)定的信息。如圖 6.3查看客戶預(yù)定信息: 1 .查看航線信息 2 .查看已訂票客戶信息 3 .查詢品線 ,?辦理訂票業(yè)務(wù) 5 .蘇理退票業(yè)■券 「退出系統(tǒng) ^MSmmmmmmmmjwwrvrwwvrwwtfwrvzzrvrvfwzz 請選怪£1-6”2 請輜入航班號:2 客戶姓名 訂票數(shù)額 艙位等級 hiye 任意鍵繼續(xù)-. 6.3查看客戶預(yù)定信息 如果該航線沒有客戶預(yù)定,則會提示該航線沒有客戶信息。如圖 6.4 無人預(yù)定航 息一 ! 信a 戶 信 息客務(wù)務(wù) 29戶 信票業(yè)業(yè)>:號客 線訂器委示統(tǒng)-6班有 航已齪訂退系

49、C1航?jīng)] 害詢理理出擇入線 杳查查辦辦退選幫 1.2.3.4.5.6.一 請請?jiān)? |任意鍵繼續(xù)…一 圖6.4無人預(yù)定航線 4.查詢航線:在菜單頁面下輸入數(shù)字3,回車,即可進(jìn)入查詢航線功能。如圖6.5 查 詢航線頁面: 訂票系統(tǒng) 2. 自3 信 戶 息客務(wù)務(wù) 信票業(yè)業(yè) 線訂結(jié)一翟示統(tǒng) 航已普退系 一雪詢理理出 *-營查辦辦退 rM^MnrwrvKRrfrewv*wrwiWWiH^nrwwM¥vwwwwwwvMwwwrw 請選擇《1-6) :3 請輸入要抵達(dá)城市的名稱: 圖6.5查詢航線頁面 根據(jù)提示輸入要抵達(dá)城市的名稱即可查詢。 如果有該航線,則會顯

50、示該航線的信息 如圖6.6航線信息: 訂票系統(tǒng) 息 住 戶 息客務(wù)務(wù) 信票業(yè)業(yè) 線訂孝®蔡 航己霞M-系 詢理理出 查宜查辦辦退 2. 第35頁 也 謳 終 beijing 息客務(wù)務(wù) 3城這 信票業(yè)業(yè)>:達(dá)有 線訂善委示統(tǒng)-6蜃 航已航訂退系U要, Wp詢理理出擇入起 杳否查辦辦退選單 自心 任意鍵繼續(xù)... 5.辦理訂票業(yè)務(wù): 如圖6.8訂票頁面: 圖6.7無此航線 在菜單頁面下輸入數(shù)字 4,回車,即可進(jìn)入辦理訂票業(yè)務(wù)功能。 竹祟券統(tǒng) 片訂孥一嗇系統(tǒng)-6班 和已誓退系C1W 一曹詢理理出擇入 查杳香亦辦退選輸 息客

51、務(wù)務(wù) 信票業(yè)業(yè) 白心 旨 戶 d±l 輸入要抵達(dá)城市的名擲;be ij in目 國站名 航班導(dǎo)飛行時 1280 任意韓繼續(xù).?? 圖6.6航線信息 如果沒有該航線,則會顯示對不起,沒有這條航線。如圖 6.7無此航線: I 訂票系統(tǒng) 6.9訂票信息: 圖6.8訂票頁面 用戶根據(jù)提示依次輸入航班號、票數(shù)、姓名、艙位等級即可。如圖 息客務(wù)務(wù) 信票業(yè)業(yè) 線訂緒春系統(tǒng) 航已返系 詢理理出 查甘查辦辦退 !a«?!a, ? 12 3 4 5 6. 訂票系統(tǒng) 請選擇q-6兀4 醯女罐翻票數(shù)式 請曲入您的理Zbiye 請輸入您需要

52、的艙位等級口3或3八 圖6.9訂票信息 6.10訂票成功: 如果訂票成功,則會顯示座位號,并提示祝您乘坐愉快。如圖 訂票系統(tǒng) fftjwwnmjwwvwwinimmnrwuwiruwwwwuwHwwwwwrww1 工.查看航線信息 Z.查看已訂票客戶信息 3 .查詢航線 4 ?辦理訂票業(yè)務(wù) 5 .辦理退票業(yè)務(wù) 6 .退出系統(tǒng) 請選搔 《1-6>二4 情輸入航班號9 請輸A你需要的票數(shù)9 請輸入傷超姓名;B1YE 請輸入健需要的舲位等級1.2或3):2 EIYE的座位號星:1 祝穿乘坐愉快? 任意鍵繼續(xù),一 圖6.10訂票成功 如果在輸入訂票信息時,輸入的

53、票數(shù)大于額定乘員數(shù),則會訂票失敗并提示。 訂票系統(tǒng) 工.查看航線信息 2 .查看已訂票卷戶信息 ③,查詢航線 4 .辦理訂票業(yè)務(wù) 5 .辦理退票業(yè)務(wù) 6 .退出系統(tǒng) 請選擇《1-6)二4 請輸入航班號" 請輸入您需要的票數(shù)"口 樹不起,穿輸入票數(shù)已經(jīng)超過乘員定額? 任意鍵繼續(xù)?一 圖6.11訂票失敗 如果在輸入訂票信息時,輸入的票數(shù)小于額定乘員數(shù),大于余票數(shù),則會提示沒有 這么多票了,詢問是否進(jìn)行排隊(duì)等候。如圖 6.12詢問是否排隊(duì)等候: 訂票系統(tǒng) 3, 4. 5, 信 自3客務(wù)務(wù) 信票業(yè)業(yè) 線訂線票票統(tǒng) 航已航訂退系 看看詢理理,+,

54、 查查查辦亦返 請選怪”-63二4 灣輸入航班號二2 請輸入您需要的票數(shù)門9 沿有這么方票了,窗需要排隊(duì)等候嗎? 圖6.12詢問是否排隊(duì)等候 如果輸入N,代表不排隊(duì),則會提示歡迎下次訂購。如果輸入 Y,代表進(jìn)行排隊(duì)等 候。這是會提示用戶輸入姓名進(jìn)行排隊(duì)。如圖 6.13排隊(duì)等候: 訂票系統(tǒng) 1 ?查看航線信息 2 .查看已訂票客戶信息 3 .查詢航線 4 .辦理訂票業(yè)務(wù) 5 .辦理退票業(yè)務(wù) 6 .退出系統(tǒng) 請選擇b-6兀4 諳輸入航班號:2 請輸入蒯需要的票數(shù):仃 沒有這么多票了,弱需要排隊(duì)等候嗎"“N>y 請輸入族的姓名:LI LI 注冊排

55、隊(duì)成功? 任意鍵繼續(xù).一 圖6.13排隊(duì)等候 6.辦理退票業(yè)務(wù):在菜單頁面下輸入數(shù)字 5,回車,即可進(jìn)入辦理退票業(yè)務(wù)功能。 如圖6.14辦理退票業(yè)務(wù)頁面: 訂票系統(tǒng) I.查看航線信息 2 .查看已訂票客戶信息 3 .查詢戰(zhàn)陽 心辦理訂票業(yè)務(wù) 5 .辦理退票業(yè)務(wù) E.退出家統(tǒng) ir*uwHmjwwvir>uwxmr«WMWwwwHmLnr>uwxmr«wwwwHmjwrkr 請輸入航班號:. 圖6.14辦理退票業(yè)務(wù)頁面 根據(jù)提示輸入航線號和姓名即可進(jìn)行退票。如果此時這條航線有人排隊(duì)等候,余票 數(shù)可以滿足其需求,其訂票即可成功。如圖

56、6.15排隊(duì)等候訂票成功: 訂票系統(tǒng) 1 .查看航線信息 2 .查看已訂票客戶信息 3 .查詢航線 4 ?辦理訂票業(yè)務(wù) 5 .辦理退票業(yè)務(wù) 6 .退出系統(tǒng) 清選怪《1-6'=5 請輸入航班號:2 請扁人春的姓名:biye ,詢匕退票成功, LILI訂票成功, LILI的座位號皋二20 LILI的座位號是二19 LILI的座位號星:18 LILI的座位號呈:17 LI”的座位號呈 LILI的座位號星:15 LILI的座位號界■:I4 LI”的座位號呈這3 LILI的座位號是:12 LILI的座位號幕:11 LI”的座位號品:10 LILI的座位號是:9 LILI的座位號是

57、二8 LILI的座位號是,7 LILI的座位號杲遙 LI”的座位號是力 LILI的座位號是二4 LILI的座位號是:3 LILI的座位號舁二2 圖6.15排隊(duì)等候訂票成功 7 .退出系統(tǒng):在菜單頁面下輸入數(shù)字 6,回車,即可退出系統(tǒng)。如圖 6.16退出系 統(tǒng): 訂票系統(tǒng) 查看航線信息 2 .查看已訂票客戶信息 3 .查詢航線 4 .辦理訂票業(yè)務(wù) E.辦理退票業(yè)務(wù) 退出系統(tǒng) 請選擇d〉二6 感謝瓢的使用?再見,. Press any key to cointinuie 圖6.16退出系統(tǒng) 七、收獲與體會 在編寫的時候只使用了相對較為簡單的基礎(chǔ)語言,代替了相對較為復(fù)

58、雜的語言,降 低了運(yùn)行效率。測試輸入的數(shù)據(jù)也有一定的局限性,但是基本可以滿足訂票系統(tǒng)的需求。 這個程序有許多地方可以改進(jìn),例如: ① 數(shù)據(jù)全部存儲在內(nèi)存中,可以考慮繼續(xù)編寫將數(shù)據(jù)保存在文件中,這樣不會丟 失。 ②航線信息只能通過修改代碼來修改,可以編寫一個函數(shù)來修改航線信息并將其 保存在文件中。 ③ 使用的語言較基礎(chǔ),運(yùn)行效率較低,可以考慮寫一些較為復(fù)雜但運(yùn)行效率高的 語言0 ④ 界面不夠美觀,菜單也只是局限在左上角,可以修改。 八、參考文獻(xiàn) [1]嚴(yán)蔚敏,吳偉民,數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].清華大學(xué)出版社,1997. [2]夏濤.C語言程序設(shè)計(jì),北京郵電大學(xué)出版社,2007. [3]譚浩強(qiáng).C程序設(shè)計(jì)(第三版)[M].清華大學(xué)出版社,2006. [4]百度.百度知道.百度文庫 第37頁

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!