數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)《飛機(jī)訂票系統(tǒng)》
軟件工程專業(yè) 14 級(jí) 設(shè)計(jì)題目:飛機(jī)訂票系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 班 級(jí): _ 姓 名: _ 2016一、設(shè)計(jì)任務(wù)與要求 . 1 總體目標(biāo)與任務(wù)要求 . 1. 題目選擇與目的意義 . 1. 所選題目的主要工作 . 1 二、需求分析 . 2 用戶需求分析 . 2 功能需求分析 . 2 系統(tǒng)需求分析 . 2 三、概要設(shè)計(jì) . 3 各模塊的算法設(shè)計(jì)說明 . 3 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說明 . 8 四、詳細(xì)設(shè)計(jì) . 10 五、源代碼 . 11 六、運(yùn)行結(jié)果分析 . 21 七、收獲與體會(huì) . 28 八、主要參考資料 . 28 、設(shè)計(jì)任務(wù)與要求 總體目標(biāo)與任務(wù)要求 制作一個(gè)訂票系統(tǒng),通過此系統(tǒng)可以實(shí)現(xiàn)如下功能: 1)錄入 可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體 數(shù)據(jù)自定)。 2)查詢 可以查詢某個(gè)航線的情況(如,輸入航班號(hào),查詢起降時(shí)間,起飛抵達(dá) 城市,航班票價(jià),票價(jià)折扣,確定航班是否滿倉)可以輸入起飛抵達(dá)城市,查詢 飛機(jī)航班情況。 3)訂票 可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇的航班(訂票情 況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定 )。 4)退票 可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號(hào),訂票數(shù)量及 航班情況,訂單要有編號(hào)。 5)修改航班信息 當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件。 根據(jù)以上功能說明,設(shè)計(jì)航班信息,訂票信息的存儲(chǔ)結(jié)構(gòu),設(shè)計(jì)程序完 成功能。 題目選擇與目的意義 選擇這個(gè)題目的原因是,訂票系統(tǒng)在現(xiàn)實(shí)生活中應(yīng)用很廣泛,通過這個(gè)系統(tǒng) 可以使訂票、退票等變得簡便。與傳統(tǒng)的人工用紙、筆來記錄辦理訂票、退票等 相比,使用這個(gè)系統(tǒng)也會(huì)增加工作效率。 這個(gè)題目做出來的系統(tǒng)還是比較實(shí)用的, 所以我選擇了訂票系統(tǒng)這個(gè)題目。 完成此系統(tǒng), 需要綜合運(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ā)。通過課程 設(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é)會(huì)將知識(shí)應(yīng)用于實(shí)際的方法,提高分析和解決問題的能力,增加綜合能力。 所選題目的主要工作 這個(gè)題目的主要工作是使訂票系統(tǒng)可以錄入航班情況,查詢某個(gè)航線的情 況、辦理訂票、辦理退票、修改航班信息、查詢訂票信息等。 用戶需求分析 用戶使用此程序所要完成的工作主要為:查詢所有航線信息、查看已訂票客 戶信息、查詢航線、辦理訂票業(yè)務(wù)、辦理退票業(yè)務(wù)。通過此系統(tǒng)可以方便的進(jìn)行 上述工作。 每條航線所涉及的信息有:終點(diǎn)站名、航班號(hào)、飛行時(shí)間、票價(jià)、乘員定額、 余票量。 已訂票的客戶名單信息包括姓名、訂票量、艙位等級(jí)(1,2或3)。 等候替補(bǔ)的客戶名單信息包括姓名、所需票量。 查詢航線功能可以根據(jù)旅客提出的終點(diǎn)站名輸出航班號(hào)、飛行時(shí)間、票價(jià)、乘 員定額、余票量。 訂票業(yè)務(wù)功能根據(jù)客戶提出的要求 (航班號(hào)、訂票數(shù)額)查詢該航班票額情況, 若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號(hào);若已滿員或余票額少于定票額, 則需重新詢問客戶要求。若需要,可登記排隊(duì)候補(bǔ)購票。 退票業(yè)務(wù)功能根據(jù)客戶提供的情況(航班號(hào)、姓名)為客戶辦理退票手續(xù),然 后查詢該航班是否有人排隊(duì)候補(bǔ),首先詢問排在第一的客戶,若所退票額能滿足他 的要求,貝U為他辦理訂票手續(xù),否則依次詢問其他排隊(duì)候補(bǔ)的客戶。 功能需求分析 功能需求分析模塊圖如圖所示。 開始 系統(tǒng)需求分析需求分析 開發(fā)環(huán)境:Windows 7系統(tǒng) 使用軟件:編寫實(shí)驗(yàn)報(bào)告: Microsoft Office Word 希9 作 程序:Microsoft Visual C+ 三、概要設(shè)計(jì) 各模塊的算法設(shè)計(jì)說明 1 瀏覽航線信息功能,調(diào)用 display函數(shù)進(jìn)行輸出。如圖所示 信息流程圖: 瀏覽航線 其中display函數(shù)的流程圖如圖 display函數(shù)流程圖: 圖 display 函數(shù)流程圖 2瀏覽已訂票客戶信息功能,按順序輸出客戶信息鏈表中的信息。流程圖如 圖 瀏覽已訂票客戶信息功能流程圖: 3查詢航線功能,根據(jù)客戶提出的終點(diǎn)站名輸出航線信息。流程圖如圖 詢航線流程圖: 4辦理訂票業(yè)務(wù)功能,根據(jù)客戶提出的航線信息等進(jìn)行訂票。 流程圖如圖 辦 理訂票業(yè)務(wù)功能流程圖: 圖辦理訂票業(yè)務(wù)功能流程圖 5辦理退票業(yè)務(wù)功能,根據(jù)客戶提出的航線信息等進(jìn)行退票。 流程圖如圖 辦 理退票業(yè)務(wù)功能流程圖:gi甜息每 并囂岀堆 Wr LJAH1 I辭訂穀1 | 對(duì)不起 您鬍入的 已邂過 乘貞定額 輸出砲您下 次敵訂購 6主函數(shù)流程圖如圖 主函數(shù)流程圖: 開始 N N Y Y s=4 5=& 結(jié)束 return tkt 0 1st () 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說明 typedef struct wat_ros char n int req_amt; struct wat_ros *n ext; qno ? i圖主函/*單鏈隊(duì)列存儲(chǔ)等候替補(bǔ)的客戶信息 */ /*姓名*/ /*訂票量*/ 初始化,輸出菓 單,請選擇 break, break; order search 0 break; struct airline /*航線信息 */ lineinfo; 這個(gè)結(jié)構(gòu)體存儲(chǔ)了航線信息,包括抵達(dá)城市、航班號(hào)、飛行時(shí)間、票價(jià)、乘 員定額、余票量等。#define MAXSIZE 5 struct airline airMAXSIZE= /* 定義航線數(shù)量,可修改 */ /* 初始化航線信息 */ typedef struct pqueue qptr front; qptr rear; /* 等候替補(bǔ)的客戶名單 */ linkqueue; 上述單鏈隊(duì)列用來存儲(chǔ)排隊(duì)等候的客戶名單,這樣可以通過隊(duì)先進(jìn)先出的特 點(diǎn)來進(jìn)行操作。先排隊(duì)的客戶可以先訂票成功。 typedef struct ord_ros char name10; int ord_amt; int grade; struct ord_ros *next; /* 乘員名單 */ /* 客戶姓名 */ /* 訂票量 */ /* 艙位等級(jí) */ linklist; 上述單鏈表用來存儲(chǔ)乘員的信息,包括姓名、訂票量、艙位等級(jí)。 char ter_name10; char air_num10; char time10; char pri7; int tkt_amt; int tkt_sur; linklist *order; linkqueue wait; 隊(duì)尾的指針 */ /* 抵達(dá)城市 */ /* 航班號(hào) */ /* 飛機(jī)時(shí)間 */ /* 票價(jià) */ /* 乘員定額 */ /* 余票量 */ /* 乘員名單域,指向乘員名單鏈表的頭指針 */ /* 等候替補(bǔ)的客戶名單域, 分別指向排隊(duì)等候名單隊(duì)頭 beijing,1,1200,860,30,30, shanghai,2,1000,770,20,20, london,3,1330,960,10,10, harbin,4,1700,760,50,50, dalian,5,1400,550,40,40 ; 通過修改全局變量 MAXSIZE的數(shù)值即可更改航線數(shù)。 在struct airline airMAXSIZE 中可以修改、增加、刪除航線信息。航線信息內(nèi)容依次為抵達(dá)城市、航班號(hào)、飛 行時(shí)間、票價(jià)、乘員定額、余票量(飛行時(shí)間 1200 即 12:00)。 四、詳細(xì)設(shè)計(jì) 1. 查看航線信息 編寫void list()函數(shù)來查看全部航線信息。 其中調(diào)用了 void display(struct airline *info) 函數(shù),該函數(shù)的功能是打印每條航線的基本信息。這樣即可按順序打印出 struct airline 鏈表中存儲(chǔ)的全部航線信息。 2. 查看已訂票客戶信息 編寫 void prtlink() 函數(shù)來查看已訂票客戶信息。 這個(gè)函數(shù)中需要輸入要查詢的 航線,通過find()函數(shù)來尋找這個(gè)航線然后輸出該航線乘員域的乘員信息。 3. 查詢航線 編寫void search()函數(shù)來實(shí)現(xiàn)查詢航線的功能。 用戶輸入抵達(dá)城市名, 該函數(shù) 會(huì)在航線信息鏈表中進(jìn)行查詢。如果有該城市,則會(huì)輸出此航線的信息。 4. 辦理訂票業(yè)務(wù) 編寫 void order() 函數(shù)來實(shí)現(xiàn)訂票功能。首先提示用戶輸入航班號(hào),然后調(diào)用 find() 函數(shù)來查找此航班, 如果該航班存在, 則會(huì)提示用戶輸入信息并調(diào)用 linklist *insertlink(linklist *head,int amount,char name,int grade) 在訂票乘員名單域中添 加客戶信息。如果余票不足,則會(huì)提示用戶進(jìn)行排隊(duì),如果排隊(duì),則會(huì)調(diào)用提示 用戶輸入信息并調(diào)用 linkqueue appendqueue(linkqueue q,char name,int amount) 在排隊(duì)等候乘員名單域中添加客戶信息。 5. 辦理退票業(yè)務(wù) 編寫 void return_tkt() 函數(shù)來實(shí)現(xiàn)退票功能。首先提示用戶輸入航班號(hào),然后 調(diào)用find()函數(shù)來查找此航班,如果該航班存在,則會(huì)提示用戶輸入信息,信息 正確則會(huì)提示退票成功。此時(shí)將乘員信息中的該乘員信息刪除,然后檢查替補(bǔ)乘 員鏈表中的信息,如果其訂票量可以得到滿足,則會(huì)將其插入到訂票客戶名單鏈 表中,提示他訂票成功。 6. 退出系統(tǒng) 主函數(shù)中無限循環(huán)輸出菜單 for(;),用戶在菜單頁面下輸入 6回車即exit(O), 即可退出系統(tǒng)。 /* 等候替補(bǔ)的客戶名單 */ /* 等候替補(bǔ)客戶名單域的隊(duì)頭指針 */ /* 等候替補(bǔ)客戶名單域的隊(duì)尾指針 */ linkqueue; typedef struct ord_ros /* 乘員名單 */ char name10; /* 客戶姓名 */ int ord_amt; /* 訂票量 */ int grade; /* 艙位等級(jí) */ struct ord_ros *next; linklist; struct airline char ter_name10; /* 抵達(dá)城市 */ char air_num10; /* 航班號(hào) */ 五、源代碼 #include #include #include #include #include #define MAXSIZE 5 /* 定義航線數(shù)量,可修改 */ typedef struct wat_ros char name10; int req_amt; /* 單鏈隊(duì)列存儲(chǔ)等候替補(bǔ)的客戶信息 */ /* 姓名 */ /* 訂票量 */ struct wat_ros *next; qnode,*qptr; typedef struct pqueue qptr front; qptr rear; char time10; /* 飛機(jī)時(shí)間 */ char pri7; /* 票價(jià) */ /* 乘員定額 */ /* 余票量 */ /* 乘員名單域,指向乘員名單鏈表的頭指針 */ /* 等候替補(bǔ)的客戶名單域 ,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的 lineinfo; struct airline *start; void display(struct airline *info) /* 打印每條航線的基本信息 */ printf(%8st%3st%stt%4st%3dt%10dn,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(iMAXSIZE) displaynfo); /* 調(diào)用 display函數(shù)來輸出 */ info+; i+; printf(nn); void search() /* 根據(jù)客戶提出的終點(diǎn)站名輸出航線信息 */ struct airline *info,*find(); char name10; /* 要抵達(dá)的城市名稱 */ int i=0; info=start;int tkt_amt; int tkt_sur; linklist *order; linkqueue wait; 指針*/ printf( 請輸入要抵達(dá)城市的名稱 :); scanf(%s,name); while(iter_name) /* 有該站名 strcmp則返回,if(!O)即 break*/ break; info+; i+; if(i=MAXSIZE) /* 沒有匹配的航線 */ printf( 對(duì)不起,沒有這條航線 !n); else printf(終點(diǎn)站名t航班號(hào)t飛行時(shí)間t票價(jià)t乘員定額t余票量n); info=start; printf( 請輸入航班號(hào) :); scanf(%s,number); while(iair_num) return info;display(info); struct airline *find() struct airline *info; char number1O; int i=O; /*調(diào)用display函數(shù)輸出航線信息*/ / *根據(jù)/* 查詢的航班號(hào) */ /* 有匹配航班 */ info+; i+; printf( 對(duì)不起,沒有這條航線 !n); /* 無匹配航班 */ return NULL; void prtlink() linklist *p; struct airline *info; /* 打印訂票乘員名單域的客戶名單信息 */ info=find(); p=info-order; if(p!=NULL) printf( 客戶姓名 while(p) /* 按順序輸出客戶信息鏈表 */ 訂票數(shù)額 艙位等級(jí) n); printf(%stt%dt%dn,p-name,p-ord_amt,p-grade); p=p-next; else /* 沒有人訂這個(gè)航班 */ printf( 該航線沒有客戶信息 !n); linklist *insertlink(linklist *head,int amount,char name,int grade) /* 增加訂票乘員名單 域的客戶信息 */ 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) /* 若原訂票客戶信息為空 */ head=new1; new1-next=NULL; else head=new1; new1-next=p1; return head; linkqueue 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=NULL) /* 若原排隊(duì)等候客戶名單域?yàn)榭?*/ =new1; else next=new1; =new1; return q;/* 增加排隊(duì)等候的客戶名 /* 訂票數(shù)量 ,艙位等級(jí) */ /* 要訂的航班號(hào) */ /* 根據(jù)客戶提供的航班號(hào)進(jìn)行查詢,如為空,退出該模塊 */ printf( 請輸入您需要的票數(shù) :); scanf(%d,&amount); if(amountinfo-tkt_amt) /* 若客戶訂票額超過乘員定票總額,退出 */ printf(n 對(duì)不起,您輸入票數(shù)已經(jīng)超過乘員定額 !); return; if(amounttkt_sur) /* 若客戶訂票額末超過余票量,訂票成功并 等記信息 */ int i; printf( 請輸入您的姓名 :); scanf(%s,name); printf( 請輸入您需要的艙位等級(jí) (1,2或):); scanf(%d,&grade); info-order=insertlink(info-order,amount,name,grade); /* 在訂票乘員名單域 中添加客戶信息 */ for(i=0;itkt_amt-info-tkt_sur+i+1); info-tkt_sur-=amount; /* 該航線的余票量應(yīng)減掉該客戶的訂票量 */ printf(n 祝您乘坐愉快 !n);void order() struct airline *info; int amount,grade; char name10; info=start; if(!(info=find() return; /* 辦理訂票業(yè)務(wù) */ /* 若滿員或余票額少于訂票額,詢問客戶是否需要進(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ì)等候乘員名單域 中添加客戶信息 */ printf(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 cusname10; if(!(info=find() /* 調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)行搜索 */ return; head=info-order; p1=head; printf( 請輸入你的姓名 :); scanf(%s,cusname); while(p1!=NULL) /* 根據(jù)客戶提供的姓名到訂票客戶名單域進(jìn)行查詢 */ if(!strcmp(cusname,p1-name) break; else p2=p1; p1=p1-next; 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=f; /* 重新將航線名單域指向訂票單鏈表的頭指針 */ /*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-req_amt) /* 若滿足條件者為頭結(jié) 點(diǎn) */ int i; info-=t-next; printf(%s 訂票成功 !n,t-name); for(i=0;ireq_amt;i+) /* 輸出座位號(hào) */ printf(%s 的座位號(hào)是 :%dn,t-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; 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;ireq_amt;i+) /* 輸出座位號(hào) */ printf(s seat number is:%dn,t-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; int menu_select() int c; char s20; printf(t 訂票系統(tǒng) n); printf( printf(1. 查看航線信息 n); printf(2. 查看已訂票客戶信息 n); printf(3. 查詢航線 n); printf(4. 辦理訂票業(yè)務(wù) n); printf(5. 辦理退票業(yè)務(wù) n); printf(6. 退出系統(tǒng) n); printf(n); do printf( 請選擇 (1-6):); scanf(%s,s); c=atoi(s); while(c6); return c; void main() struct airline airMAXSIZE= /* 初始化航線信息 */ beijing,1,1200,860,30,30, shanghai,2,1000,770,20,20, london,3,1330,960,10,10, harbin,4,1700,760,50,50,/* 菜單界面 */ dalian,5,1400,550,40,40 ; start=air; for(;) system(cls); switch(menu_select() case 1:list(); break; /*無限循環(huán)(除非用戶選擇 .退出)*/ /* 清空屏幕 */ /* 打印全部航線信息 */ case 2:prtlink(); break; case 3:search(); break; /* 瀏覽已訂票客戶信息 */ /* 查詢航線 */ /* 訂票 */ case 4:order(); break; case 5:return_tkt(); break; case 6:printf(n感謝您的使用,再見!n); /*退出系統(tǒng)*/ exit(0); /*正常退出程序 */ /* 退票 */ printf(n 任意鍵繼續(xù) .n); getch(); /* 任意鍵繼續(xù) */ 六、運(yùn)行結(jié)果分析 1.菜單:進(jìn)入系統(tǒng)后,會(huì)出現(xiàn)如下菜單,如圖 菜單: 圖菜單 用戶根據(jù)自己需求選擇輸入數(shù)字(1-6)即可進(jìn)入相應(yīng)功能。 2.查看航線信息:在菜單頁面下輸入數(shù)字1,回車,即可瀏覽全部航線信息。如圖 查 看航線信息: FFFi 示 丄查看航裁社包 B 查暑已訂票客戶信息 辦理卩建業(yè)務(wù) 亦理逋熏業(yè)勢 退出系統(tǒng) nnwWtfVWUWTWUMVruwnnvfvrvnjnrrurvrurirrvrw 任意犍繼續(xù) 圖查看航線信息 3.查看已訂票客戶信息:在菜單頁面下輸入數(shù)字 2,回車,然后輸入航班號(hào)即可查 圖查看航線信息 自3 信 戶 息胸窮務(wù) 信票業(yè)業(yè) 線訂緯翼票統(tǒng) 航己ffi口墩 詢理番 杳查查亦辦退 請選拝f(xié) 終點(diǎn)話名 be ij insr shangrhAl london hai*I) )in dalian 航班號(hào)飛行時(shí)間 1 1200 2 1090 3 133S0 4 1709 票價(jià) 乘貝定額 8G0 30 30 770 20 20 90 19 10 760 50 50 550 40 40 看。 如圖 查看航線信息: 自薯務(wù)- 線訂曙軍11 11 航已呼遍系 專詢理理岀 查查查辦辦退 訂票系統(tǒng) 請選 該航線有客戶預(yù)定則顯示客戶預(yù)定的信息。如圖 查看客戶預(yù)定信息: 訂票系茄 fuwvumnmmrrviiruTwruwvnjvuwvwtfwwxmmmrTunrni1 匚杳看航線信息 氛查看己訂菓專戶信息 3璋嚙航或 4 .辦理訂票業(yè)務(wù) 5 辦理退累業(yè)務(wù) J 退出系統(tǒng) 請選擇= 2 請輸入航班號(hào)吃 容戶姓名 訂票數(shù)飆 飽位等級(jí) hiye 任竜鍵繼績 查看客戶預(yù)定信息 如果該航線沒有客戶預(yù)定,則會(huì)提示該航線沒有客戶信息。如圖 任意犍繼續(xù)- 圖無人預(yù)定航線 訂票系統(tǒng) 2Z2222 書隸嶷韻市的名幣 圖查詢航線頁面 根據(jù)提示輸入要抵達(dá)城市的名稱即可查詢。 如果有該航線,則會(huì)顯示該航線的信息 如圖航線信息:無人預(yù)定航線: 息 信 息 戶 -置 息客務(wù)務(wù)2:12:1戶 信票業(yè)業(yè)-兀號(hào)客 線訂答篥統(tǒng)班有 航己肌訂退系=航?jīng)] 詢理理出擇入線 查查查外外退選餐 B B- -IJIJ- -I4,2 I4,2 亦 j 住握鋰 4.查詢航線:在菜單頁面 詢航線頁面: F輸入數(shù)字 3,回車,即可進(jìn)入查詢航線功能。如圖 自8 息客 信票業(yè)業(yè) 線訂筆集統(tǒng) . 一如1J1J艮芋 詢理理出 查查查辦靈 1.查看航線信息 2 查著已訂票容戶信息 蘇理口節(jié)業(yè)務(wù) 亦理追索業(yè)第 退出系繞 KWvmjVWXMWtfWWWWWMrMWiNMWMWMifWVWrWWftftAmr 任意犍繼續(xù) 圖航線信息 如果沒有該航線,則會(huì)顯示對(duì)不起,沒有這條航線。如圖 無此航線: 任惹犍繼續(xù)八 圖無此航線 5辦理訂票業(yè)務(wù):在菜單頁面下輸入數(shù)字 4,回車,即可進(jìn)入辦理訂票業(yè)務(wù)功能 如圖訂票頁面: 圖訂票頁面 用戶根據(jù)提示依次輸入航班號(hào)、票數(shù)、姓名、艙位等級(jí)即可。如圖 訂票信息:請選擇1-6:3 喬笹入妾抵達(dá)城市的名禰:ie ij inff 終買站名 航班尋 飛行吋間 heijirag 1200 票價(jià) 乘員定額 余票量 860 30 30 C C i i e e b b n n u u 1 1 HH 自心 戶 息客務(wù)勞 信票業(yè)業(yè) MgMg- -wiwi- - -6 6賽 舵己朋口晶系11要 騫詢理理岀擇入起 杳_杳_杳蘇辦退選隼 g g- -沢久2請注那 心達(dá)旨 息 信 戶 息客務(wù)務(wù) 信票業(yè)業(yè) 銭訂裁需蔬 航己M M訂退系 看看詢理 擊董查辦辦迪 訂票系統(tǒng) 圖訂票信息 如果訂票成功,則會(huì)顯示座位號(hào),并提示祝您乘坐愉快。如圖 訂票成功: 訂票系扌充 1 查看航線信息 囂查看已訂幕容戶信息 扎查詢航線 勺辦理訂票業(yè)務(wù) 靈辦孑里退票業(yè)務(wù) 退出系統(tǒng) 請選棒Qf心 請輸天航班號(hào);1 請揄入鏗需蘿的票數(shù) 諳輸入傾的姓務(wù)U1YE 請繪f入偵需要閔艙檢等級(jí): 2 RHE的座位號(hào)曇:1 祝您乘坐愉快! 任鳶鍵繼裁 圖訂票成功 如果在輸入訂票信息時(shí),輸入的票數(shù)大于額定乘員數(shù),則會(huì)訂票失敗并提示。 訂票系統(tǒng) rwwwijwnjwnmaruv*uwwwKlMvwhfumLrwwnn_nxnFUYhjr 一查看航線當(dāng),恿 2 -查著自訂票客戶信息 乩査周航殘 4 辦理訂票業(yè)務(wù) 覚辦理退票業(yè)務(wù) 3 退出系統(tǒng) fWTwrwwnmnvrurvTvruwviwwwwvwwxmmrnrivnwum 請選擇小 請輸入航班號(hào)M 諳輸入您需喪的票=111 對(duì)不起.您揄入幕數(shù)己經(jīng)超過乘員定頷賈 任鳶籬繼績 息客務(wù)務(wù) 信票業(yè)業(yè) 踐訂線_篥統(tǒng) 舵己龜訂涯系 詢理理出 查查査辦辦退 1 2 3 4 1 2 3 4 U GU G : :EKIEKIn n 數(shù)IVIV位 票=D=D艙 4:1:1的一雀K1K1- - :號(hào)轟要 -&垂EE需 a躺心您您 擇入入入入 選 請請請壬 圖訂票失敗 如果在輸入訂票信息時(shí),輸入的票數(shù)小于額定乘員數(shù),大于余票數(shù),則會(huì)提示沒有 這么多票了,詢問是否進(jìn)行排隊(duì)等候。如圖 詢問是否排隊(duì)等候: 訂票系統(tǒng) 查看航線信息 2 -查看己訂票客戶信息 3 -查藥航聶 H樸理iT票業(yè)務(wù) 5辦理退票業(yè)務(wù) 退出系統(tǒng) 請選擇YAM 請騎入航班號(hào)汐 請輸入您需要的票 = 19 沿有這么多票了.您需要排隊(duì)等候嗎2. 圖詢問是否排隊(duì)等候 如果輸入N,代表不排隊(duì),則會(huì)提示歡迎下次訂購。如果輸入 Y,代表進(jìn)行排隊(duì)等 候。這是會(huì)提示用戶輸入姓名進(jìn)行排隊(duì)。如圖 排隊(duì)等候: 訂票縈統(tǒng) 查看航線僖息 2 查看已訂票客戶信息 芫查詢ffi;線 4 -辦士里iT票業(yè)務(wù) J 辦理退票業(yè)務(wù) 退出柔統(tǒng) rfanrwzrijrwwnjwfwrwzfwrwfVfvmrinrvrvnjrvmErwrv 請選擇灶-小4 請輸人腕班號(hào)龍 請輸人檢需要的票教曲 澄有這么多票了,您需要排隊(duì)等候嗎他心 請輸人燃的姓名=LILI 注冊排隊(duì)成功* 任議雌綾 圖排隊(duì)等候 6.辦理退票業(yè)務(wù):在菜單頁面下輸入數(shù)字 5,回車,即可進(jìn)入辦理退票業(yè)務(wù)功能 如圖 辦理退票業(yè)務(wù)頁面: 訂票系統(tǒng) -查看航線信息 壬-查看已訂票宮戶信息 在查詢航線 乳辦理訂票業(yè)務(wù) 5 -辦理想票業(yè)務(wù) 退出系統(tǒng) rwvwwtmrzffwrvnrwvrvfVfVfVfvrvrMwvfvrMrvrvrvfv 諳選怪 請輸入航班號(hào)= 圖辦理退票業(yè)務(wù)頁面 根據(jù)提示輸入航線號(hào)和姓名即可進(jìn)行退票。如果此時(shí)這條航線有人排隊(duì)等候,余票 數(shù)可以滿足其需求,其訂票即可成功。如圖 排隊(duì)等候訂票成功: 訂黑系統(tǒng) RjwunjiwrvnrrvruwvinmnfvwiivnfwunjiruinjvwrvfKirvEfv 4 查看航線信息 2 查看已訂票容戶信息 趴查詢航線 4 辦理訂票業(yè)務(wù) 5 辦理退票業(yè)務(wù) 退出系統(tǒng) ivwwwwftmmMWMnwwwvwwftnwftjfwwmfwwww 請選擇燈-G :5 請輸人航班號(hào)沌 請輸入枷俞姓名:biyte hi般退票成血, Lis訂票成功? LILI的座位號(hào):20 LILI的座位號(hào)旱:19 ULI的座位號(hào)是小 LILI的座位號(hào):17 LILI的座位號(hào)杲江6 ULI的座位號(hào) L1LI的座曾號(hào)&:14 L【LI的座位號(hào)|-:13 LILI的座位號(hào) = 12 LI的座位號(hào)杲;1丄 LIU的座位號(hào)杲曲0 L1LI的座位號(hào)杲?jīng)A LILI的座位號(hào)是胡 ULI的座位號(hào)是汐 LIU的座位號(hào)是M LILI&座屈號(hào)是汚 1-1 Lift座位號(hào)舁赳 LILI的座位號(hào)杲估 LIU的座位號(hào)杲沙 任鳶鍵績 圖排隊(duì)等候訂票成功 7退出系統(tǒng):在菜單頁面下輸入數(shù)字 6,回車,即可退出系統(tǒng)。如圖 退出系統(tǒng): 訂苧系統(tǒng) 查看航線僖息 羅查看已訂票害戶信息 乳查詢航線 乩辦理訂票業(yè)務(wù) 乩辦理退票業(yè)齊 追出系統(tǒng) rwruwwuwuwtfumfxrinmmjmnunnjvuwiiunLnuTunmrE 請選iS=6 感謝您的使用,再恥! Press anv ke to continue 圖退出系統(tǒng) 七、收獲與體會(huì) 在編寫的時(shí)候只使用了相對(duì)較為簡單的基礎(chǔ)語言,代替了相對(duì)較為復(fù)雜的語言,降 低了運(yùn)行效率。測試輸入的數(shù)據(jù)也有一定的局限性,但是基本可以滿足訂票系統(tǒng)的需求。 這個(gè)程序有許多地方可以改進(jìn),例如: 數(shù)據(jù)全部存儲(chǔ)在內(nèi)存中,可以考慮繼續(xù)編寫將數(shù)據(jù)保存在文件中,這樣不會(huì)丟 失。 航線信息只能通過修改代碼來修改,可以編寫一個(gè)函數(shù)來修改航線信息并將其 保存在文件中。 使用的語言較基礎(chǔ),運(yùn)行效率較低,可以考慮寫一些較為復(fù)雜但運(yùn)行效率高的 界面不夠美觀,菜單也只是局限在左上角,可以修改 八、參考文獻(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 百度.百度知道.百度文庫