版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、本文檔如對你有幫助,請幫忙下載支持!航空客運(yùn)訂票系統(tǒng)姓名: xxx班級: xxxx學(xué)號: xxxxxxxxx目錄一、問題描述 .1二、設(shè)計(jì)要求 .1三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) .2四、詳細(xì)設(shè)計(jì)程序 .3五、運(yùn)行與測試 . .9六、收獲及體會(huì) .13一、問題描述設(shè)計(jì)一個(gè)航空客運(yùn)訂票系統(tǒng),為乘客提供各種航空客運(yùn)信息服務(wù)。二、設(shè)計(jì)要求1 每條航線所涉及的信息有:終點(diǎn)站名、航班號、飛機(jī)號、飛行日(星期幾) 、乘員定額、余票量、已訂票的客戶名單(包括姓名、訂票量、艙位等級 1,2 或 3)以及等候替補(bǔ)的客戶名單(包括姓名、所需票量) ;2 系統(tǒng)能實(shí)現(xiàn)的操作和功能如下:a) 查詢航線:根據(jù)旅客提出的終點(diǎn)站名輸出下列
2、信息:航班號、飛機(jī)號、星期幾飛行,最近一天航班的日期和余票額;b) 承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(航班號、訂票數(shù)額)查詢該航班票額情況,若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號;若已滿員或余票額少于定票額,則需重新詢問客戶要求。若需要,可登記排隊(duì)候補(bǔ);c) 承辦退票業(yè)務(wù):根據(jù)客戶提供的情況(日期、航班) ,為客戶辦理退票手續(xù),然后查詢該航班是否有人排隊(duì)候補(bǔ),首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其他排隊(duì)候補(bǔ)的客戶。三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)本文檔如對你有幫助,請幫忙下載支持!a)等候替補(bǔ)的客戶名單(包括姓名、所需票量)typedef struct wa
3、t_ros char name10;/* 姓名 */int req_amt;/* 訂票量 */struct wat_ros *next;qnode,*qptr;typedef struct pqueu qptr front;/* 等候替補(bǔ)客戶名單域的頭指針*/qptr rear;/* 等候替補(bǔ)客戶名單域的屬指針*/linkqueue;b)訂票的客戶名單(包括姓名、訂票量、艙位等級1, 2 或 3)typedef struct ord_ros char name10;/* 客戶姓名 */int ord_amt;/* 訂票量 */int grade;/* 艙位等級 */struct ord_ros
4、 *next;linklist;c)每條航線所涉及的信息:終點(diǎn)站名、航班號、飛機(jī)號、飛行日(星期幾)、乘員定額、余票量、已訂票的客戶名單、以及等候替補(bǔ)的客戶名單struct airlinechar zong_name10;/* 終點(diǎn)站名 */char air_num10;/* 航班號 */char plane_num10;/* 飛機(jī)號 */char date7;/* 飛行日期(星期幾)*/int tkt_amt;/* 乘員定額 */int tkt_sur;/* 余票量 */linklist *order;/*乘員名單域,指向乘員名單鏈表的頭指針*/linkqueue wait;/* 等候替補(bǔ)的
5、客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/lineinfo;四、詳細(xì)設(shè)計(jì)程序本文檔如對你有幫助,請幫忙下載支持!主函數(shù):int menu_select()/* 菜單界面 */ int c;char s20;printf("ntt航空客運(yùn)訂票系統(tǒng) n");printf("*n");printf("1.瀏覽航線信息 n");printf("2.瀏覽已訂票客戶信息n");printf("3.查詢航線 n");printf("4.辦理訂票業(yè)務(wù) n");printf("
6、;5.辦理退票業(yè)務(wù) n");printf("6.查看剩余票數(shù)并排序n");printf("0.退出系統(tǒng) n");printf("*n");doprintf("請選擇 :");scanf("%s",s);c=atoi(s);while(c<0|c>7);return c;void main()start=air;for(;)switch(menu_select()case 1:list();break;case 2:prtlink();break;case 3:search(
7、);break;case 4:order();break;case 5:return_tkt();break;case 6:sort_tkt();break;case 0:printf("n歡迎使用本系統(tǒng),再見!n");exit(0);printf("nPress any key to continue!n");getch();航線信息:struct airlinechar zong_name10;/* char air_num10;/*終點(diǎn)站名航班號 */飛機(jī)號*/char date7;/*飛行日期(星期幾)*/本文檔如對你有幫助,請幫忙下載支持!in
8、t tkt_amt;/* int tkt_sur;/* linklist *order;/* linkqueue wait;/*乘員定額 */余票量 */乘員名單域,指向乘員名單鏈表的頭指針*/等候替補(bǔ)的客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/lineinfo;struct airline *start;struct airline airMAXSIZE="aaa","1","001","SUN",30,15,"bbb","2","002",&q
9、uot;MON",40,10,"ccc","3","003","FRI",50,14,"ddd","4","004","TUE",60,20;void display(struct airline *info)/* 打印每條航線的基本信息*/printf("%8st%3st%st%4stt%3dt%10dn",info->ter_name,info->air_num,info->plane
10、_num,inf o->date,info->tkt_amt,info->tkt_sur);void list()/*打印全部航線信息*/ struct airline *info;int i=0;info=start;printf("終點(diǎn)站名t航班號 t飛機(jī)號 t飛行日期t乘員定額t余票量n");while(i<MAXSIZE)display(info);info+;i+;printf("nn");查詢航線:void search()/* 根據(jù)客戶提出的終點(diǎn)站名輸出航線信息*/ struct airline *info,*fin
11、d(); char name10;int i=0;info=start;printf("請輸入終點(diǎn)站名:");scanf("%s",name);while(i<MAXSIZE)if(!strcmp(name,info->zong_name) break;info+;i+;if(i>=MAXSIZE)printf("對不起,該航線未找到!n");else本文檔如對你有幫助,請幫忙下載支持!printf(" 終點(diǎn)站名 t 航班號 t 飛機(jī)號 t 飛行日期 t 乘員定額 t 余票量 n"); displ
12、ay(info);struct airline *find()/* 根據(jù)系統(tǒng)提出的航班號查詢并以指針形式返回*/ struct airline *info; char number10;int i=0;info=start;printf("請輸入航班號:");scanf("%s",number);while(i<MAXSIZE)if(!strcmp(number,info->air_num) return info;info+;i+;printf("對不起,該航線末找到!n");return NULL;客戶信息 :void
13、 prtlink()/* 打印訂票乘員名單域的客戶名單信息*/ linklist *p;struct airline *info;info=find();p=info->order;if(p!=NULL)printf("客戶姓名訂票數(shù)額艙位等級 n");while(p)printf("%stt%dt%dn",p->name,p->ord_amt,p->grade);p=p->next;elseprintf("該航線沒有客戶信息!n");linklist *insertlink(linklist *head
14、,int amount,char name,int grade)/* 增加訂票乘員名單域的客戶信息*/ linklist *p1,*new1;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
15、)/*若原無訂票客戶信息*/head=new1;new1->next=NULL;elsehead=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->req_amt=amount;new1->next=NULL;if(q.front=NULL)/*若原排隊(duì)等候客戶名單域
16、為空*/q.front=new1;elseq.rear->next=new1;q.rear=new1;return q;訂票業(yè)務(wù):void order()/*辦理訂票業(yè)務(wù)*/ struct airline *info;int amount,grade;char name10;info=start;if(!(info=find() return;/*根據(jù)客戶提供的航班號進(jìn)行查詢,如為空,退出該模塊*/printf("請輸入你訂票所需要的數(shù)量:");scanf("%d",&amount);if(amount>info->tkt_am
17、t)/*若客戶訂票額超過乘員定票總額,退出*/ printf("n對不起,您輸入的票的數(shù)量已經(jīng)超過乘員定額!");return;if(amount<=info->tkt_sur)/*若客戶訂票額末超過余票量,訂票成功并等記信息*/int i;printf("請輸入您的姓名(訂票客戶):");scanf("%s",name);printf("請輸入 %s票的艙位等級:",name);scanf("%d",&grade);info->order=insertlink(inf
18、o->order,amount,name,grade);/*在訂票乘員名單域中添加客戶信息*/for(i=0;i<amount;i+)/*依次輸出該訂票客戶的座位號*/printf("%s的座位號是 :%dn",name,info->tkt_amt-info->tkt_sur+i+1);本文檔如對你有幫助,請幫忙下載支持!info->tkt_sur-=amount;/*該航線的余票量應(yīng)減掉該客戶的訂票量*/printf("n祝您乘坐愉快!n");else/*若滿員或余票額少于訂票額,詢問客戶是否需要進(jìn)行排隊(duì)等候*/ char
19、 r;printf("n已經(jīng)沒有更多的票,您需要排隊(duì)等候嗎?(Y/N)");r=getch();printf("%c",r);if(r='Y'|r='y') printf("n請輸入您的姓名(排隊(duì)訂票客戶):");scanf("%s",name);info->wait=appendqueue(info->wait,name,amount);/*在排隊(duì)等候乘員名單域中添加客戶信息printf("n注冊成功 !n");*/else printf("
20、;n歡迎您下次再次訂購!n");退票業(yè)務(wù):void return_tkt()/* 退票模塊 */ struct airline *info;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname10;if(!(info=find() return;/*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)行搜索head=info->order;p1=head;printf("請輸入你的姓名(退票客戶):");scanf("%s",cusname);while(p1!=NULL) /
21、*根據(jù)客戶提供的姓名到訂票客戶名單域進(jìn)行查詢*/if(!strcmp(cusname,p1->name) break;p2=p1;p1=p1->next;*/if(p1=NULL) printf("對不起,你沒有訂過票else/*若信息查詢成功,刪除訂票客戶名單域中的信息!n");return;/*/若未找到,退出本模塊*/if(p1=head) head=p1->next;else p2->next=p1->next;info->tkt_sur+=p1->ord_amt;grade=p1->grade;printf(&quo
22、t;%s成功退票!free(p1);n",p1->name);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;/*t為當(dāng)前滿點(diǎn)條件的排隊(duì)候補(bǔ)名單域*/while(t)if(info->tkt_sur=info->wait.front->req_amt)/* 若滿足條件者為頭結(jié)點(diǎn)*/int i;info->w
23、ait.front=t->next;printf("%s訂票成功!n",t->name);for(i=0;i<t->req_amt;i+)/*printf("%s的座位號是輸出座位號 */:%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;
24、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+)/*輸出座位號 */printf("<%s>'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;剩票排序:void sort_tkt()/*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇州科技大學(xué)天平學(xué)院《證券投資學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024安裝安全合同范本
- 《竹材的表面潤濕性》課件
- 摩托車駕駛員對洪水和水坑的安全駕駛技巧考核試卷
- 2024建設(shè)工程檢測合同
- 門診部護(hù)理及治療規(guī)范
- 塑料制品在工業(yè)設(shè)計(jì)中的應(yīng)用考核試卷
- 服裝行業(yè)質(zhì)量標(biāo)準(zhǔn)分析
- 建筑施工安全常識教育考核試卷
- 供應(yīng)鏈優(yōu)化項(xiàng)目計(jì)劃書考核試卷
- 頭痛的國際分類(第三版)中文
- 音樂ppt課件《小小的船》
- 幼兒園教學(xué)課件語言教育《雪地里的小畫家》
- 結(jié)構(gòu)化面試經(jīng)典100題及答案
- ESG引領(lǐng)下的西部城市再出發(fā)-新型城市競爭力策略研究白皮書
- 小學(xué)生班干部競選自我介紹PPT模板公開課一等獎(jiǎng)市賽課獲獎(jiǎng)?wù)n件
- 萬科物業(yè)崗位說明書2
- 音樂教學(xué)說課
- 邊坡噴錨施工方案全套資料
- 國家安全教育知到章節(jié)答案智慧樹2023年臨沂職業(yè)學(xué)院
- 檢驗(yàn)科生化項(xiàng)目臨床意義ppt課件-生化室項(xiàng)目臨床意義ppt
評論
0/150
提交評論