航空客運(yùn)訂票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
航空客運(yùn)訂票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
航空客運(yùn)訂票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計(jì)說明書課程名稱題目航空客運(yùn)訂票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_院系_班級(jí)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名 指導(dǎo)教師 日期_數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書課程設(shè)計(jì)題目航空客運(yùn)訂票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)姓名學(xué)號(hào)專業(yè)班級(jí)計(jì)算機(jī)科學(xué)與技術(shù)組別組長同組 成員指導(dǎo)教 師課程設(shè) 計(jì)目的設(shè)計(jì)一個(gè)航班訂票系統(tǒng),提高對(duì)信息管理、信息查找和排序算法 的應(yīng)用能力。課程設(shè) 計(jì)環(huán)境386以上的微機(jī)上進(jìn)行,運(yùn)行環(huán)境為 TurboC課程設(shè) 計(jì)任務(wù) 和要求1、承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(飛機(jī)抵達(dá)城市、起降時(shí)間、訂票數(shù)量)查新該航班信息(包括票價(jià)、折 扣和剩余位置),若滿足要求,則為客戶辦理訂票 手續(xù),輸出座位號(hào)。2、 承辦退票業(yè)務(wù):根據(jù)客戶提供的情

2、況(航班號(hào)、訂票數(shù)量),為客戶辦理退票手續(xù)。3、查詢功能:a)查詢航線信息:根據(jù)飛機(jī)降落地點(diǎn),輸入下列信息:航班號(hào)、飛機(jī)號(hào)、起降時(shí)間、航班票價(jià)、票價(jià)折扣和剩余位 置。b)查詢客戶預(yù)訂信息:根據(jù)客戶證件號(hào),輸出卜列信息:航班號(hào)、飛機(jī)號(hào)和座位號(hào)。參考 文獻(xiàn)1、楊秀金等.數(shù)據(jù)結(jié)構(gòu)(C語言版).西安電子科技大學(xué)出版社20042、譚浩強(qiáng).C語言程序設(shè)計(jì).清華大學(xué)出版社.20023、李春保.數(shù)據(jù)結(jié)構(gòu)教程上機(jī)實(shí)驗(yàn)指導(dǎo).清華大學(xué)出版社.2005時(shí)間進(jìn)度安排序號(hào)起止日期工作內(nèi)容12011.12.192011.12.22下達(dá)課程設(shè)計(jì)任務(wù)、查閱資料、確定 萬案22011.12.232011.12.28編寫程序、調(diào)試

3、、運(yùn)行32011.12.29驗(yàn)收、撰寫課程設(shè)計(jì)報(bào)告42011.12.30驗(yàn)收、撰寫課程設(shè)計(jì)報(bào)告、提交文檔指導(dǎo)教師:時(shí)間:航空客運(yùn)訂票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)、簡介1設(shè)計(jì)目的:1 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)是綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程中學(xué)到的幾種典型數(shù)據(jù)結(jié) 構(gòu),以及程序設(shè)計(jì)語言( C 語言),自行實(shí)現(xiàn)一個(gè)較為完整的應(yīng)用系統(tǒng)的設(shè)計(jì)與 開發(fā)2 通過課程設(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)用 。3 學(xué)會(huì)將知識(shí)應(yīng)用于實(shí)際的方法,提高分析和解決問題的能力,增加綜合 能力。航空空訂票系統(tǒng):(1)熟練掌握鏈表存儲(chǔ)結(jié)構(gòu)及其建

4、立過程和常用操作;(2)熟練掌握隊(duì)列的建立過程和常用操作;(3)學(xué)會(huì)自己調(diào)試程序的方法并掌握一定的技巧。2問題的描述:航空客運(yùn)訂票的業(yè)務(wù)包括查詢航線和客票預(yù)定的信、客票預(yù)定和辦理退票等,設(shè)計(jì)一 個(gè)程序以使上述任務(wù)借助計(jì)算機(jī)完成。二、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì):( 1 )航班信息:飛機(jī)抵達(dá)城市、航班號(hào)、飛機(jī)號(hào)、起降時(shí)間、航班票價(jià)、票價(jià)折 扣、總位置和剩余位置、以訂票的客戶名單。(2)客戶信息:客戶姓名、證件號(hào)、座位號(hào)。三、功能(函數(shù))設(shè)計(jì):1 每條航線所涉及的信息有:終點(diǎn)站名、航班號(hào)、飛機(jī)號(hào)、飛行日(星 期幾)、載客量、余票量、票價(jià)格,折扣,已訂票的客戶名單(包括姓名、訂票 量、艙位等級(jí) 1,2 或 3)以

5、及等候替補(bǔ)的客戶名單(包括姓名、所需票量) ; 2 全部數(shù)據(jù)可以只放在內(nèi)存中;3 系統(tǒng)能實(shí)現(xiàn)的操作和功能如下:a)查詢航線: 根據(jù)旅客提出的終點(diǎn)站名輸出下列信息:航班號(hào)、飛機(jī)號(hào)、星期幾飛行, 最近一天航班的日期和余票額;b)承辦訂票業(yè)務(wù): 根據(jù)客戶提出的要求(航班號(hào)、訂票數(shù)額)查詢?cè)摵桨嗥鳖~情況,若尚有 余票,則為客戶辦理訂票手續(xù), 輸出座位號(hào);若已滿員或余票額少于定票額,則需重新詢問客戶要求。若 需要,可登記排隊(duì)候補(bǔ);c)退票業(yè)務(wù): 根據(jù)客戶提供的情況(日期、航班) ,為客戶辦理退票手續(xù),然后查詢?cè)?航班是否有人排隊(duì)候補(bǔ),首先詢問排在第一的客戶,若所退票額能滿足他 的要求,則為他辦理訂票手續(xù)

6、,否則依次詢問其他排隊(duì)候補(bǔ)的客戶系統(tǒng)結(jié)構(gòu)圖(功能模塊圖)見1m占詢,巴f 7-:_ I- -1逼莊條紀(jì)1鑄序功能模塊說明(1) 顯示已初始化的全部航線信息(2) 瀏覽已訂票客戶信息(3) 根據(jù)客戶提出的終點(diǎn)站名,調(diào)用 find ()函數(shù)尋找航線信息,調(diào)用list ()函數(shù)輸出航線信息(4) 辦理訂票業(yè)務(wù):根據(jù)客戶提供的航班號(hào)進(jìn)行查詢航線信息,若客戶訂票額 超過乘員定票總額,退出,若客戶訂票額末超過余票量,訂票成功并登記信息,在訂票乘員名單域中添加客戶信息;如果暫時(shí)沒有票,詢問客戶是否要排 隊(duì)等侯,如果是,貝恠等候隊(duì)列增加該客戶的訂票信息。(5) 辦理退票業(yè)務(wù):調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)

7、行搜索根據(jù)客戶提 供的姓名到訂票客戶名單域進(jìn)行查詢。退票成功后,重新將航線名單域指向訂 票單鏈表的頭指針。根據(jù)隊(duì)列中從出的客戶信息判斷是否滿足要求,如果滿足,則將該客戶的信息插入到乘客信息鏈表中。(6) 退出本系統(tǒng)四、界面設(shè)計(jì):界面簡潔易懂,包括1.瀏覽航線信息;2.瀏覽已訂票客戶信 息;3.查詢航線;4.辦理訂票業(yè)務(wù);5.辦理退票業(yè)務(wù);6.查看剩余 票數(shù)并排序。五、程序設(shè)計(jì):FlowChar七start riirMulti pkKVlultl pirnpTi:jfi"MPi、;iifv ke.六、運(yùn)行與測(cè)試:1、測(cè)試的數(shù)據(jù)及其結(jié)果:(1) 通過按鍵“1”瀏覽航線信息,結(jié)果輸出五行事

8、先輸入的數(shù)據(jù)。頓三習(xí)區(qū)匚霽系粋?cè)麛?shù) 叢票 L吏* 已訂剩 岡辦吉_2 4- &a省理瀏查辦MKKK14 KM MXMMMMMM MM XMK> MMMMMN MM KM WMMMKM KM MM MM MMKMMKMM KM KMMMMMMKMMMMXMMMMMM MM MJ1亠屠陽?N峙 畫北上一 選點(diǎn)W 青導(dǎo) 甲飛機(jī)弓1 A14012 1111023 L1UU34 鴛5 FliOfl訓(xùn)日-五三為 星星星星載客星殺票星票價(jià)恪折扣31BfW925C606131MJ4G4-?005636005anjj keu to ceiritInuet(2) 通過按鍵“3”查詢航線,輸入終點(diǎn)站名

9、后,結(jié)果輸出相關(guān)航線信息。(3) 通過按鍵“4”辦理訂票業(yè)務(wù),依次輸入航班號(hào),訂票數(shù) 量,客戶姓名,證件號(hào)后,結(jié)果輸出客戶的座位號(hào),訂票成功。航空客運(yùn)訂黑科毓*< W N V: W M tf M *W V M W hrEM UXXN Ul» hc u; MV W M M IM1.瀏側(cè)舞偉克業(yè)勞從耳?仏退匕系址"貝Hi鼻鳴C貝 ra " ft 鼻H瀏克己訂解 理訂票丘 查看卿帝票?h * " iM Es 具 4 科 H 貝 * £戶信冷LIH JI Al JL JI n fl JUJh-)* 量戶23 隸窯=1 竹號(hào) 芻訂件 矣證-3 4霄

10、¥ 近為戶佇 ;4韓拘用座 樣人入人誇tnimut? *(4)通過按鍵“ 2”瀏覽已定票客戶信息,輸入航班號(hào)后,結(jié)果顯示客戶信息。頊空窘云訂票糸駐址北賈XJIK比址*貿(mào)X XX就就買ItitWKWI!址KKXWHXXJtltKUK WH/NBC*址址北賈*址址息序 戶并 TW季 己訂剩 克理看 ! 2 4 &1票- T0V1SAS選邃3主瘩戶證件號(hào)123456res amyi hey to continuef鼻退出系紙豪資星梵覺恆縫疋豪,廿翼片資養(yǎng)謊好UK*畀廣賢翼Jt氧恆惻恆Mlmlf吟戶)哪戶(5)通過按鍵“ 5”辦理退票業(yè)務(wù),輸入航班號(hào),客戶名后,結(jié)果退票成功A5 序

11、営菲 戶并 召在B 己訂剰 貞理看 瀏必萱 2 4 &pess any 加屮 to continuef(6)通過按鍵“ 6”查看剩余票數(shù)并排序,結(jié)果正確氣苻理痕事壯務(wù)詢空客罰荒系筠*2l|'H已遼羊各鬥信息 筑辦理行單業(yè)爵 筑査看剎條票敷嚴(yán)枠序緘退出系紡骯班號(hào)飛衲號(hào)2H11624 和皿只1LI I4M?5 KllkM1nidei星期三星期五星期六雖朋曰賓價(jià)禍護(hù)扣see67W1牙1IW4UUU5S069(7)通過按鍵“ 0”退出系統(tǒng),結(jié)果正確。2、運(yùn)行與測(cè)試期間遇到的問題及其解決辦法。(1 )因本人能力有限,在編寫的時(shí)候只使用了相對(duì)較為簡單的基礎(chǔ)語言,代替了相對(duì)較為復(fù)雜的語言,降

12、低了運(yùn)行效率。(2)程序在起初設(shè)計(jì)的時(shí)候,經(jīng)常出現(xiàn)溢出錯(cuò)誤,而且不只一處。為了 修正這些溢出錯(cuò)誤,耗費(fèi)了大量的時(shí)間,修正解釋之后再看源程序,才發(fā)現(xiàn)原 來只是因?yàn)殚_始的函數(shù)定義的數(shù)據(jù)類型出現(xiàn)了問題,對(duì)函數(shù)的定義不清楚,字 符的不正確定義造成了后期大量的糾錯(cuò)工作,(3)由于忘記了一些 c語言的規(guī)范使得在調(diào)試過程中一些錯(cuò)誤沒有發(fā)現(xiàn)。例如,調(diào)用函數(shù)時(shí),數(shù)組只需要傳遞數(shù)組名即可;字符0'和整形的0是不同的文明不可以直接對(duì)其畫等號(hào)。(4)測(cè)試用例具有一定的廣泛性。運(yùn)行程序時(shí)輸入了多種不同字符信 息,經(jīng)過多次修改結(jié)果達(dá)到了預(yù)期效果。說明程序具有一定的可靠性和穩(wěn)定 性。七、設(shè)計(jì)后的思考:經(jīng)過這次課程設(shè)

13、計(jì),我對(duì)調(diào)試掌握的更加熟練了,改變了過去只調(diào)試不知道如 何對(duì)照程序語言修改程序的壞習(xí)慣,對(duì)調(diào)試也有了新的認(rèn)識(shí),意識(shí)到了程序語 言的規(guī)范性以及我們?cè)诰幊虝r(shí)要有嚴(yán)謹(jǐn)?shù)膽B(tài)度,同時(shí)在寫程序時(shí)如果加一定量 的注釋,既增加了程序的可讀性,也可以使自己在讀程序時(shí)更容易。代碼:#in elude <stdio.h>#in elude <stdlib.h>#in elude <stri ng.h> #in elude vconi o.h> #define MAXSIZE 5 typedef struct wat_ros char name10;int req_amt;s

14、truct wat_ros *next;qnode,*qptr;typedef struct pqueue qptr front;qptr rear;linkqueue;typedef struct ord_ros char name10;int ord_amt;int grade;struct ord_ros *next;linklist;struct airline char ter_name10;char air_num10;char plane_num10;char date7;int tkt_amt;int tkt_sur;int tkt_pri;int tkt_reb;linkli

15、st *order;linkqueue wait;lineinfo;struct airline *start;struct airline airMAXSIZE=" 北京","1","A1401"," 星期日",3,1,800,9,"上海","2","H1102","星期一 ",2,5,600,6,"洛陽","3","L1003","星期五",1,3,10

16、0,4,"杭州","4","H1035"," 星期三",5,4,700,5,"呼和浩特","5","F1100"," 星期六",6,3,800,5;void display(struct airline *info) printf("%8st%3st%st%7st%7dt%10dt%5dt%3dn",info->ter_name,info->air_num,info->plane_num,info-

17、>date,info- >tkt_amt,info->tkt_sur,info->tkt_pri,info->tkt_reb);void list() struct airline *info;int i=0;info=start;printf("終點(diǎn)站tt 航班號(hào)t飛機(jī)號(hào)t飛行日期t載客量t余票量t票價(jià)格 t 折扣 n");while(i<MAXSIZE)display(info);info+;i+;printf("nn");void search() struct airline *info,*find();cha

18、r name10;int i=0;info=start;printf(" 請(qǐng)輸入終點(diǎn)站名 :");scanf("%s",name);while(i<MAXSIZE)if(!strcmp(name,info->ter_name) break;info+;i+;if(i>=MAXSIZE)printf(" 對(duì)不起,該航線未找到 !n");elseprintf(" 終點(diǎn)站 tt 航班號(hào) t 飛機(jī)號(hào) t 飛行日期 t 載客量 t 余票量 t 票價(jià)格 t 折扣 n");display(info);struc

19、t airline *find() struct airline *info;char number10;int i=0;info=start;printf(" 請(qǐng)輸入航班號(hào) :");scanf("%s",number);while(i<MAXSIZE)if(!strcmp(number,info->air_num) return info;info+;i+;printf(" 對(duì)不起,該航線末找到 !n");return NULL;void prtlink() linklist *p;struct airline *inf

20、o; info=find(); p=info->order; if(p!=NULL) printf(" 客戶姓名 訂票數(shù)額 客戶證件號(hào) n"); while(p) printf("%stt%dt%dn",p->name,p->ord_amt,p->grade); p=p->next;elseprintf(" 該航線沒有客戶信息 !n");linklist *insertlink(linklist *head,int amount,char name,int grade) linklist *p1,*new

21、1;p1=head;new1=(linklist *)malloc(sizeof(linklist);if(!new1) printf("nOut of memory!n");return NULL; strcpy(new1->name,name);new1->ord_amt=amount;new1->grade=grade;new1->next=NULL;if(head=NULL) head=new1;new1->next=NULL; elsehead=new1; new1->next=p1;return head;linkqueue

22、appendqueue(linkqueue q,char name,int amount) qptr new1;new1=(qptr)malloc(sizeof(qnode); strcpy(new1->name,name);new1->req_amt=amount; new1->next=NULL;if(q.front=NULL)q.front=new1;elseq.rear->next=new1; q.rear=new1; return q;void order() struct airline *info;int amount,grade;char name10;

23、info=start;if(!(info=find() return;printf(" 請(qǐng)輸入你訂票所需要的數(shù)量 :");scanf("%d",&amount);if(amount>info->tkt_amt) printf("n 對(duì)不起,您輸入的票的數(shù)量已經(jīng)超過乘員定額 !"); return;if(amount<=info->tkt_sur)int i;printf("請(qǐng)輸入您的姓名(訂票客戶) :");scanf("%s",name);printf(&quo

24、t;請(qǐng)輸入s票的證件號(hào):",name);scanf("%d",&grade);info->order=insertlink(info->order,amount,name,grade); for(i=0;i<amount;i+)printf("%s的 座 位 號(hào) 是 :%dn",name,info->tkt_amt-info->tkt_sur+i+1);info->tkt_sur-=amount;printf("n 祝您乘坐愉快! n");else char r;printf(&q

25、uot;n 已經(jīng)沒有更多的票,您需要排隊(duì)等候嗎 ?(Y/N)");r=getch();printf("%c",r);if(r='Y'|r='y') printf("n 請(qǐng)輸入您的姓名(排隊(duì)訂票客戶) :");scanf("%s",name); info->wait=appendqueue(info->wait,name,amount); printf("n 注冊(cè)成功 !n");else printf("n 歡迎您下次再次訂購! n");voi

26、d return_tkt() struct airline *info;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname10; if(!(info=find() return; head=info->order;p1=head;printf(" 請(qǐng)輸入你的姓名(退票客戶) :"); scanf("%s",cusname);while(p1!=NULL) if(!strcmp(cusname,p1->name) break; p2=p1;p1=p1->ne

27、xt;if(p1=NULL) printf("對(duì)不起,你沒有訂過票 !n");return;else 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=

28、f;while(t) if(info->tkt_sur=info->wait.front->req_amt)int i;info->wait.front=t->next;printf("%s 訂票成功! n",t->name); for(i=0;i<t->req_amt;i+)printf("%s 的座位號(hào)是 :%dn",t->name,(info->tkt_sur)-i); info->tkt_sur-=t->req_amt;info->order=insertlink(in

29、fo->order,t->req_amt,t- >name,grade);free(t);break; back=t;t=t->next; if(info->tkt_sur)>=(t->req_amt)&&t!=NULL) int i;back->next=t->next;printf("%s 訂票成功! n",t->name);for(i=0;i<t->req_amt;i+)printf("<%s>'s seat number is:%dn",t

30、->name,(info->tkt_sur)-i);info->tkt_sur-=t->req_amt; info->order=insertlink(info->order,t->req_amt,t->name,grade); free(t);break;if(f=r) break;void sort_tkt()int j;struct airline t,*info,*p,*q;p=info=air;for(p=info;(p+1)->tkt_sur;p+)for(q=p+1;q->tkt_sur;q+)if(p->tkt_sur<q->tkt_sur)t=*p;*p=*q;*q=t;printf("終點(diǎn)站tt航班號(hào)t飛機(jī)號(hào)t飛行日期t載客量t余票量t票價(jià)格t

溫馨提示

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

評(píng)論

0/150

提交評(píng)論