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

上傳人:仙*** 文檔編號(hào):85956372 上傳時(shí)間:2022-05-06 格式:DOC 頁(yè)數(shù):31 大?。?60KB
收藏 版權(quán)申訴 舉報(bào) 下載
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)《飛機(jī)訂票系統(tǒng)》_第1頁(yè)
第1頁(yè) / 共31頁(yè)
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)《飛機(jī)訂票系統(tǒng)》_第2頁(yè)
第2頁(yè) / 共31頁(yè)
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)《飛機(jī)訂票系統(tǒng)》_第3頁(yè)
第3頁(yè) / 共31頁(yè)

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

10 積分

下載資源

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

資源描述:

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

1、word 軟件工程專(zhuān)業(yè)14級(jí) 設(shè)計(jì)題目: 飛機(jī)訂票系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 班 級(jí): 姓 名: 2016年 6月1日 目 錄 一、設(shè)計(jì)任務(wù)與要求1 1.1 總體目標(biāo)與任務(wù)要求 1 1.2 題目選擇與目的意義 1 1.3 所選題目的主要工作1 二、需求分析2 2.1 用戶(hù)需求分析2 2.2 功能需求分析2 2.3 系統(tǒng)需求分析2 三、概要設(shè)計(jì)3 3.1 各模塊的算法設(shè)計(jì)說(shuō)明3 3.2 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說(shuō)明8 四、詳細(xì)設(shè)計(jì)

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

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

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

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

6、戶(hù)辦理退票手續(xù),然后查詢(xún)?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首先詢(xún)問(wèn)排在第一的客戶(hù),假如所退票額能滿足他的要求,如此為他辦理訂票手續(xù),否如此依次詢(xún)問(wèn)其他排隊(duì)候補(bǔ)的客戶(hù)。 2.2 功能需求分析 功能需求分析模塊圖如圖2.1所示。 圖2.1 功能模塊圖 2.3 系統(tǒng)需求分析 開(kāi)發(fā)環(huán)境: Windows 7系統(tǒng) 使用軟件:編寫(xiě)實(shí)驗(yàn)報(bào)告:Microsoft Office Word 制 作 程 序: 三、概要設(shè)計(jì) 3.1 各模塊的算法設(shè)計(jì)說(shuō)明 1.瀏覽航線信息功能,調(diào)用display函數(shù)進(jìn)展輸出。如圖3.1所示。 瀏覽航線信息流程圖: 圖3.1 瀏覽航線信息流程圖:

7、其中display函數(shù)的流程圖如圖3.2 display函數(shù)流程圖: 圖3.2 display函數(shù)流程圖 2.瀏覽已訂票客戶(hù)信息功能,按順序輸出客戶(hù)信息鏈表中的信息。流程圖如圖3.3 瀏覽已訂票客戶(hù)信息功能流程圖: 圖3.3 瀏覽已訂票客戶(hù)信息功能流程圖 3.查詢(xún)航線功能,根據(jù)客戶(hù)提出的終點(diǎn)站名輸出航線信息。流程圖如圖3.4 查詢(xún)航線流程圖: 圖3.4 查詢(xún)航線流程圖 4.辦理訂票業(yè)務(wù)功能,根據(jù)客戶(hù)提出的航線信息等進(jìn)展訂票。流程圖如圖3.5 辦理訂票業(yè)務(wù)功能流程圖: 圖3.5 辦理訂票業(yè)務(wù)功能流程圖 5.辦理退票業(yè)務(wù)功能,根據(jù)客戶(hù)提出的航線信息等進(jìn)展

8、退票。流程圖如圖3.6 辦理退票業(yè)務(wù)功能流程圖: 圖3.6 辦理退票業(yè)務(wù)功能流程圖 6.主函數(shù)流程圖如圖3.7 主函數(shù)流程圖: 圖3.7 主函數(shù)流程圖 3.2 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說(shuō)明 typedef struct wat_ros /*單鏈隊(duì)列存儲(chǔ)等候替補(bǔ)的客戶(hù)信息*/ { char name[10]; /**/ int req_amt; /*訂票量*/ struct wat_ros *next; }qnode,*qptr; typedef struct pqueue /*等候替補(bǔ)的客戶(hù)*/ {

9、 qptr front; qptr rear; }linkqueue; 上述單鏈隊(duì)列用來(lái)存儲(chǔ)排隊(duì)等候的客戶(hù),這樣可以通過(guò)隊(duì)先進(jìn)先出的特點(diǎn)來(lái)進(jìn)展操作。先排隊(duì)的客戶(hù)可以先訂票成功。 typedef struct ord_ros /*乘員*/ { char name[10]; /*客戶(hù)*/ int ord_amt; /*訂票量*/ int grade; /*艙位等級(jí)*/ struct ord_ros *next; }linklist; 上述單鏈表用來(lái)存儲(chǔ)乘員

10、的信息,包括、訂票量、艙位等級(jí)。 struct airline /*航線信息*/ { char ter_name[10]; /*抵達(dá)城市*/ char air_num[10]; /*航班號(hào)*/ char time[10]; /*飛機(jī)時(shí)間*/ char pri[7]; /*票價(jià)*/ int tkt_amt; /*乘員定額*/ int tkt_sur; /*余票量*/ linklist *order; /*乘員域,指向乘員鏈表的頭指針*/ linkqueue wa

11、it; /*等候替補(bǔ)的客戶(hù)域,分別指向排隊(duì)等候隊(duì)頭隊(duì)尾的指針*/ }lineinfo; 這個(gè)結(jié)構(gòu)體存儲(chǔ)了航線信息,包括抵達(dá)城市、航班號(hào)、飛行時(shí)間、票價(jià)、乘員定額、余票量等。 #define MAXSIZE 5 /*定義航線數(shù)量,可修改*/ struct airline air[MAXSIZE]= /*初始化航線信息*/ { {"beijing","1","1200","860",30,30}, {"shanghai","2","1000","770",20,20}, {"london","3","1330","960",10,

12、10}, {"harbin","4","1700","760",50,50}, {"dalian","5","1400","550",40,40} }; 通過(guò)修改全局變量MAXSIZE的數(shù)值即可更改航線數(shù)。在struct airline air[MAXSIZE]中可以修改、增加、刪除航線信息。航線信息容依次為抵達(dá)城市、航班號(hào)、飛行時(shí)間、票價(jià)、乘員定額、余票量〔飛行時(shí)間1200即12:00〕。 四、詳細(xì)設(shè)計(jì) 1. 查看航線信息 編寫(xiě)void list()函數(shù)來(lái)查看全部航線信息。其中調(diào)用了void display(struct airline *info)函數(shù),該函數(shù)的功能是打印

13、每條航線的根本信息。這樣即可按順序打印出struct airline鏈表中存儲(chǔ)的全部航線信息。 2. 查看已訂票客戶(hù)信息 編寫(xiě)void prtlink()函數(shù)來(lái)查看已訂票客戶(hù)信息。這個(gè)函數(shù)中需要輸入要查詢(xún)的航線,通過(guò)find()函數(shù)來(lái)尋找這個(gè)航線然后輸出該航線乘員域的乘員信息。 3. 查詢(xún)航線 編寫(xiě)void search()函數(shù)來(lái)實(shí)現(xiàn)查詢(xún)航線的功能。用戶(hù)輸入抵達(dá)城市名,該函數(shù)會(huì)在航線信息鏈表中進(jìn)展查詢(xún)。如果有該城市,如此會(huì)輸出此航線的信息。 4. 辦理訂票業(yè)務(wù) 編寫(xiě)void order()函數(shù)來(lái)實(shí)現(xiàn)訂票功能。首先提示用戶(hù)輸入航班號(hào),然后調(diào)用find()函數(shù)來(lái)查找此航班,如果該航班存

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

15、輸入信息,信息正確如此會(huì)提示退票成功。此時(shí)將乘員信息中的該乘員信息刪除,然后檢查替補(bǔ)乘員鏈表中的信息,如果其訂票量可以得到滿足,如此會(huì)將其插入到訂票客戶(hù)鏈表中,提示他訂票成功。 6. 退出系統(tǒng) 主函數(shù)中無(wú)限循環(huán)輸出菜單for(;;),用戶(hù)在菜單頁(yè)面下輸入6回車(chē)即exit(0),即可退出系統(tǒng)。 五、源代碼 #include #include #include #include #include #define MAXSIZE 5 /*定義航線數(shù)量,可

16、修改*/ typedef struct wat_ros /*單鏈隊(duì)列存儲(chǔ)等候替補(bǔ)的客戶(hù)信息*/ { char name[10]; /**/ int req_amt; /*訂票量*/ struct wat_ros *next; }qnode,*qptr; typedef struct pqueue /*等候替補(bǔ)的客戶(hù)*/ { qptr front; /*等候替補(bǔ)客戶(hù)域的隊(duì)頭指針*/ qptr rear; /*等候替補(bǔ)客戶(hù)域的隊(duì)尾指針*/ }linkqueue;

17、 typedef struct ord_ros /*乘員*/ { char name[10]; /*客戶(hù)*/ int ord_amt; /*訂票量*/ int grade; /*艙位等級(jí)*/ struct ord_ros *next; }linklist; struct airline { char ter_name[10]; /*抵達(dá)城市*/ char air_num[10]; /*航班號(hào)*/ char time[10]; /*飛機(jī)時(shí)間*/ char p

18、ri[7]; /*票價(jià)*/ int tkt_amt; /*乘員定額*/ int tkt_sur; /*余票量*/ linklist *order; /*乘員域,指向乘員鏈表的頭指針*/ linkqueue wait; /*等候替補(bǔ)的客戶(hù)域,分別指向排隊(duì)等候隊(duì)頭隊(duì)尾的指針*/ }lineinfo; struct airline *start; void display(struct airline *info) /*打印每條航線的根本信息*/ { printf("%8s\t%3s\t%s\t\t

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

20、 info++; i++; } printf("\n\n"); } void search() /*根據(jù)客戶(hù)提出的終點(diǎn)站名輸出航線信息*/ { struct airline *info,*find(); char name[10]; /*要抵達(dá)的城市名稱(chēng)*/ int i=0; info=start; printf("請(qǐng)輸入要抵達(dá)城市的名稱(chēng):"); scanf("%s",name); while(iter_name))

21、/*有該站名strcmp如此返回,if(!0)即break*/ { break; } info++; i++; } if(i>=MAXSIZE) /*沒(méi)有匹配的航線*/ { printf("對(duì)不起,沒(méi)有這條航線!\n"); } else { printf("終點(diǎn)站名\t航班號(hào)\t飛行時(shí)間\t票價(jià)\t乘員定額\t余票量\n"); display(info); /*調(diào)用display函數(shù)輸出航線信息*/ } } struct airline *find() / *根

22、據(jù)系統(tǒng)提出的航班號(hào)查詢(xún)并以指針形式返回*/ { struct airline *info; char number[10]; /*查詢(xún)的航班號(hào)*/ int i=0; info=start; printf("請(qǐng)輸入航班號(hào):"); scanf("%s",number); while(iair_num)) /*有匹配航班*/ { return info; } info++; i++; }

23、 /*無(wú)匹配航班*/ printf("對(duì)不起,沒(méi)有這條航線!\n"); return NULL; } void prtlink() /*打印訂票乘員域的客戶(hù)信息*/ { linklist *p; struct airline *info; info=find(); p=info->order; if(p!=NULL) /*按順序輸出客戶(hù)信息鏈表*/ { printf("客戶(hù) 訂票數(shù)額 艙位等級(jí)\n"); while(p)

24、 { printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade); p=p->next; } } else /*沒(méi)有人訂這個(gè)航班*/ printf("該航線沒(méi)有客戶(hù)信息!\n"); } linklist *insertlink(linklist *head,int amount,char name[],int grade) /*增加訂票乘員域的客戶(hù)信息*/ {

25、 linklist *p1,*new1; p1=head; new1=(linklist*)malloc(sizeof(linklist)); if(!new1) /*存儲(chǔ)空間不足*/ { printf("\nOut of memory!!\n"); return NULL; } strcpy(new1->name,name); new1->ord_amt=amount; new1->grade=grade; new1->next=NULL; if(head==NULL)

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

27、ame); new1->req_amt=amount; new1->next=NULL; if(q.front==NULL) /*假如原排隊(duì)等候客戶(hù)域?yàn)榭?/ { q.front=new1; } else { q.rear->next=new1; } q.rear=new1; return q; } void order() /*辦理訂票業(yè)務(wù)*/ { struct airline *info; int amount,grade; /*訂票數(shù)量,艙位等級(jí)*/ cha

28、r name[10]; /*要訂的航班號(hào)*/ info=start; if(!(info=find())) /*根據(jù)客戶(hù)提供的航班號(hào)進(jìn)展查詢(xún),如為空,退出該模塊*/ { return; } printf("請(qǐng)輸入您需要的票數(shù):"); scanf("%d",&amount); if(amount>info->tkt_amt) /*假如客戶(hù)訂票額超過(guò)乘員定票總額,退出*/ { printf("\n對(duì)不起,您輸入票數(shù)已經(jīng)超過(guò)乘員定額!"); return; } if(amount<=in

29、fo->tkt_sur) /*假如客戶(hù)訂票額末超過(guò)余票量,訂票成功并等記信息*/ { int i; printf("請(qǐng)輸入您的:"); scanf("%s",name); printf("請(qǐng)輸入您需要的艙位等級(jí)(1,2或):"); scanf("%d",&grade); info->order=insertlink(info->order,amount,name,grade); /*在訂票乘員域中添加客戶(hù)信息*/ for(i=0;i

30、++) /*依次輸出該訂票客戶(hù)的座位號(hào)*/ { printf("%s的座位號(hào)是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1); } info->tkt_sur-=amount; /*該航線的余票量應(yīng)減掉該客戶(hù)的訂票量*/ printf("\n祝您乘坐愉快!\n"); } else /*假如滿員或余票額少于訂票額,詢(xún)問(wèn)客戶(hù)是否需要進(jìn)展排隊(duì)等候*/ { char r; printf("\n沒(méi)有這么多票了,您需要排隊(duì)等候嗎?(Y/N)"); r=ge

31、tch(); printf("%c",r); if(r=='Y'||r=='y') { printf("\n請(qǐng)輸入您的:"); scanf("%s",name); info->wait=appendqueue(info->wait,name,amount); /*在排隊(duì)等候乘員域中添加客戶(hù)信息*/ printf("\n注冊(cè)排隊(duì)成功!\n"); } else { printf("\n歡迎您再次訂購(gòu)!\n"); } } } void return_tkt() /*退票模塊*/

32、 { struct airline *info; qnode *t,*back,*f,*r; int grade; linklist *p1,*p2,*head; char cusname[10]; if(!(info=find())) /*調(diào)用查詢(xún)函數(shù),根據(jù)客戶(hù)提供的航線進(jìn)展搜索*/ { return; } head=info->order; p1=head; printf("請(qǐng)輸入你的:"); scanf("%s",cusname); while(p1!=NULL) /*根據(jù)客戶(hù)提供的到訂票客戶(hù)域進(jìn)

33、展查詢(xún)*/ { if(!strcmp(cusname,p1->name)) { break; } p2=p1; p1=p1->next; } if(p1==NULL) /*假如未找到,退出本模塊*/ { printf("對(duì)不起,您沒(méi)有訂過(guò)票!\n"); return; } else /*假如信息查詢(xún)成功,刪除訂票客戶(hù)域中的信息*/ { if(p1==head) { head=p1->next; } els

34、e { 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; /*f指向排隊(duì)等候隊(duì)列的頭結(jié)點(diǎn)*/ r=(info->wait).rear; /*r指向排隊(duì)等候隊(duì)列的尾結(jié)點(diǎn)*/ t=f;

35、 /*t為當(dāng)前滿點(diǎn)條件的排隊(duì)候補(bǔ)域*/ while(t) { if(info->tkt_sur>=info->wait.front->req_amt) /*假如滿足條件者為頭結(jié)點(diǎn)*/ { int i; info->wait.front=t->next; printf("%s訂票成功!\n",t->name); for(i=0;ireq_amt;i++) /*輸出座位號(hào)*/ { printf("%s的座位號(hào)是:%d\n",t->name,(info->tkt_sur)-i);

36、 } info->tkt_sur-=t->req_amt; info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到訂票客戶(hù)鏈表中*/ 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->na

37、me); for(i=0;ireq_amt;i++) /*輸出座位號(hào)*/ { printf("<%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);/*插入到訂票客戶(hù)鏈表中*/ free(t);break; } if(f==r) { break

38、; } } } int menu_select() /*菜單界面*/ { int c; char s[20]; printf("\t訂票系統(tǒng)\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("1.查看航線信息\n"); printf("2.查看已訂票客戶(hù)信息\n"); printf("3.查詢(xún)航線\n"); printf("4.辦理訂票業(yè)務(wù)\n"); printf("5.辦理退票業(yè)務(wù)\n"); printf("6.退出系統(tǒng)\n"); printf("~~

39、~~~~~~~~~~~~~~~~~~~~~~~\n"); do { printf("請(qǐng)選擇(1-6):"); scanf("%s",s); c=atoi(s); }while(c<1||c>6); return c; } void main() { struct airline air[MAXSIZE]= /*初始化航線信息*/ { {"beijing","1","1200","860",30,30}, {"shanghai","2","1000","770",20,20}, {"london","3",

40、"1330","960",10,10}, {"harbin","4","1700","760",50,50}, {"dalian","5","1400","550",40,40} }; start=air; for(;;) /*無(wú)限循環(huán)(除非用戶(hù)選擇.退出)*/ { system("cls"); /*清空屏幕*/ switch(menu_select()) { case 1:list(); /*打印全部航線信息*/

41、 break; case 2:prtlink(); /*瀏覽已訂票客戶(hù)信息*/ break; case 3:search(); /*查詢(xún)航線*/ break; case 4:order(); /*訂票*/ break; case 5:return_tkt(); /*退票*/ break; case 6:printf("\n感您的使用,再見(jiàn)!\n"); /*退出系統(tǒng)*/ exit(0); /*正常退出程序*

42、/ } printf("\n任意鍵繼續(xù)...\n"); getch(); /*任意鍵繼續(xù)*/ } } 六、運(yùn)行結(jié)果分析 1.菜單:進(jìn)入系統(tǒng)后,會(huì)出現(xiàn)如下菜單,如圖6.1 菜單: 圖6.1 菜單 用戶(hù)根據(jù)自己需求選擇輸入數(shù)字〔1-6〕即可進(jìn)入相應(yīng)功能。 2.查看航線信息:在菜單頁(yè)面下輸入數(shù)字1,回車(chē),即可瀏覽全部航線信息。如圖6.2 查看航線信息: 圖6.2 查看航線信息 3.查看已訂票客戶(hù)信息:在菜單頁(yè)面下輸入數(shù)字2,回車(chē),然后輸入航班號(hào)即可查看。如圖6.3 查看航線信息: 圖6.3 查看航線信

43、息 該航線有客戶(hù)預(yù)定如此顯示客戶(hù)預(yù)定的信息。如圖6.3 查看客戶(hù)預(yù)定信息: 6.3 查看客戶(hù)預(yù)定信息 如果該航線沒(méi)有客戶(hù)預(yù)定,如此會(huì)提示該航線沒(méi)有客戶(hù)信息。如圖6.4 無(wú)人預(yù)定航線: 圖6.4 無(wú)人預(yù)定航線 4.查詢(xún)航線:在菜單頁(yè)面下輸入數(shù)字3,回車(chē),即可進(jìn)入查詢(xún)航線功能。如圖6.5 查詢(xún)航線頁(yè)面: 圖6.5 查詢(xún)航線頁(yè)面 根據(jù)提示輸入要抵達(dá)城市的名稱(chēng)即可查詢(xún)。如果有該航線,如此會(huì)顯示該航線的信息。如圖6.6 航線信息: 圖6.6 航線信息 如果沒(méi)有該航線,如此會(huì)顯示對(duì)不起,沒(méi)有這條航線。如圖6.7 無(wú)此航線: 圖6.7 無(wú)此航線 5.辦理訂票業(yè)務(wù)

44、:在菜單頁(yè)面下輸入數(shù)字4,回車(chē),即可進(jìn)入辦理訂票業(yè)務(wù)功能。如圖6.8 訂票頁(yè)面: 圖6.8 訂票頁(yè)面 用戶(hù)根據(jù)提示依次輸入航班號(hào)、票數(shù)、、艙位等級(jí)即可。如圖6.9 訂票信息: 圖6.9 訂票信息 如果訂票成功,如此會(huì)顯示座位號(hào),并提示祝您乘坐愉快。如圖6.10 訂票成功: 圖6.10 訂票成功 如果在輸入訂票信息時(shí),輸入的票數(shù)大于額定乘員數(shù),如此會(huì)訂票失敗并提示。 圖6.11 訂票失敗 如果在輸入訂票信息時(shí),輸入的票數(shù)小于額定乘員數(shù),大于余票數(shù),如此會(huì)提示沒(méi)有這么多票了,詢(xún)問(wèn)是否進(jìn)展排隊(duì)等候。如圖6.12 詢(xún)問(wèn)是否排隊(duì)等候: 圖6.12 詢(xún)問(wèn)是否排

45、隊(duì)等候 如果輸入N,代表不排隊(duì),如此會(huì)提示歡迎下次訂購(gòu)。如果輸入Y,代表進(jìn)展排隊(duì)等候。這是會(huì)提示用戶(hù)輸入進(jìn)展排隊(duì)。如圖6.13 排隊(duì)等候: 圖6.13 排隊(duì)等候 6.辦理退票業(yè)務(wù):在菜單頁(yè)面下輸入數(shù)字5,回車(chē),即可進(jìn)入辦理退票業(yè)務(wù)功能。如圖6.14 辦理退票業(yè)務(wù)頁(yè)面: 圖6.14 辦理退票業(yè)務(wù)頁(yè)面 根據(jù)提示輸入航線號(hào)和即可進(jìn)展退票。如果此時(shí)這條航線有人排隊(duì)等候,余票數(shù)可以滿足其需求,其訂票即可成功。如圖6.15 排隊(duì)等候訂票成功: 圖6.15 排隊(duì)等候訂票成功 7.退出系統(tǒng):在菜單頁(yè)面下輸入數(shù)字6,回車(chē),即可退出系統(tǒng)。如圖6.16 退出系統(tǒng): 圖6.

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

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

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

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

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


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