



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!航空客運(yùn)訂票系統(tǒng)姓名: xxx班級(jí): xxxx學(xué)號(hào): xxxxxxxxx目錄一、問題描述 .1二、設(shè)計(jì)要求 .1三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) .2四、詳細(xì)設(shè)計(jì)程序 .3五、運(yùn)行與測(cè)試 . .9六、收獲及體會(huì) .13一、問題描述設(shè)計(jì)一個(gè)航空客運(yùn)訂票系統(tǒng),為乘客提供各種航空客運(yùn)信息服務(wù)。二、設(shè)計(jì)要求1 每條航線所涉及的信息有:終點(diǎn)站名、航班號(hào)、飛機(jī)號(hào)、飛行日(星期幾) 、乘員定額、余票量、已訂票的客戶名單(包括姓名、訂票量、艙位等級(jí) 1,2 或 3)以及等候替補(bǔ)的客戶名單(包括姓名、所需票量) ;2 系統(tǒng)能實(shí)現(xiàn)的操作和功能如下:a) 查詢航線:根據(jù)旅客提出的終點(diǎn)站名輸出下列
2、信息:航班號(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ù),否則依次詢問其他排隊(duì)候補(bǔ)的客戶。三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!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)訂票的客戶名單(包括姓名、訂票量、艙位等級(jí)1, 2 或 3)typedef struct ord_ros char name10;/* 客戶姓名 */int ord_amt;/* 訂票量 */int grade;/* 艙位等級(jí) */struct ord_ros
4、 *next;linklist;c)每條航線所涉及的信息:終點(diǎn)站名、航班號(hào)、飛機(jī)號(hào)、飛行日(星期幾)、乘員定額、余票量、已訂票的客戶名單、以及等候替補(bǔ)的客戶名單struct airlinechar zong_name10;/* 終點(diǎn)站名 */char air_num10;/* 航班號(hào) */char plane_num10;/* 飛機(jī)號(hào) */char date7;/* 飛行日期(星期幾)*/int tkt_amt;/* 乘員定額 */int tkt_sur;/* 余票量 */linklist *order;/*乘員名單域,指向乘員名單鏈表的頭指針*/linkqueue wait;/* 等候替補(bǔ)的
5、客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/lineinfo;四、詳細(xì)設(shè)計(jì)程序本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!主函數(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("請(qǐng)選擇 :");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)站名航班號(hào) */飛機(jī)號(hào)*/char date7;/*飛行日期(星期幾)*/本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!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航班號(hào) t飛機(jī)號(hào) 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("請(qǐng)輸入終點(diǎn)站名:");scanf("%s",name);while(i<MAXSIZE)if(!strcmp(name,info->zong_name) break;info+;i+;if(i>=MAXSIZE)printf("對(duì)不起,該航線未找到!n");else本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!printf(" 終點(diǎn)站名 t 航班號(hào) t 飛機(jī)號(hào) t 飛行日期 t 乘員定額 t 余票量 n"); displ
12、ay(info);struct airline *find()/* 根據(jù)系統(tǒng)提出的航班號(hào)查詢并以指針形式返回*/ 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
13、 prtlink()/* 打印訂票乘員名單域的客戶名單信息*/ linklist *p;struct airline *info;info=find();p=info->order;if(p!=NULL)printf("客戶姓名訂票數(shù)額艙位等級(jí) 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;本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!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ù)客戶提供的航班號(hào)進(jìn)行查詢,如為空,退出該模塊*/printf("請(qǐng)輸入你訂票所需要的數(shù)量:");scanf("%d",&amount);if(amount>info->tkt_am
17、t)/*若客戶訂票額超過乘員定票總額,退出*/ printf("n對(duì)不起,您輸入的票的數(shù)量已經(jīng)超過乘員定額!");return;if(amount<=info->tkt_sur)/*若客戶訂票額末超過余票量,訂票成功并等記信息*/int i;printf("請(qǐng)輸入您的姓名(訂票客戶):");scanf("%s",name);printf("請(qǐng)輸入 %s票的艙位等級(jí):",name);scanf("%d",&grade);info->order=insertlink(inf
18、o->order,amount,name,grade);/*在訂票乘員名單域中添加客戶信息*/for(i=0;i<amount;i+)/*依次輸出該訂票客戶的座位號(hào)*/printf("%s的座位號(hào)是 :%dn",name,info->tkt_amt-info->tkt_sur+i+1);本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!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請(qǐng)輸入您的姓名(排隊(duì)訂票客戶):");scanf("%s",name);info->wait=appendqueue(info->wait,name,amount);/*在排隊(duì)等候乘員名單域中添加客戶信息printf("n注冊(cè)成功 !n");*/else printf("
20、;n歡迎您下次再次訂購(gòu)!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("請(qǐng)輸入你的姓名(退票客戶):");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("對(duì)不起,你沒有訂過票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)*/本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!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的座位號(hào)是輸出座位號(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;
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+)/*輸出座位號(hào) */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等.壓縮文件請(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45721.1-2025半導(dǎo)體器件應(yīng)力遷移試驗(yàn)第1部分:銅應(yīng)力遷移試驗(yàn)
- GB/T 45716-2025半導(dǎo)體器件金屬氧化物半導(dǎo)體場(chǎng)效應(yīng)晶體管(MOSFETs)的偏置溫度不穩(wěn)定性試驗(yàn)
- GB/T 45718-2025半導(dǎo)體器件內(nèi)部金屬層間的時(shí)間相關(guān)介電擊穿(TDDB)試驗(yàn)
- 國(guó)家開放大學(xué)學(xué)習(xí)網(wǎng)電大傳感器與測(cè)試技術(shù)形考作業(yè)1234答案
- 醫(yī)學(xué)美容技術(shù)專業(yè)教學(xué)標(biāo)準(zhǔn)(高等職業(yè)教育專科)2025修訂
- 2025年中國(guó)可穿戴醫(yī)療監(jiān)測(cè)智能設(shè)備行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 2025年中國(guó)精細(xì)陶瓷行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 中國(guó)裝飾畫行業(yè)市場(chǎng)評(píng)估分析及發(fā)展前景調(diào)研戰(zhàn)略研究報(bào)告
- 中國(guó)二氧化氯發(fā)生器行業(yè)發(fā)展前景預(yù)測(cè)及投資策略研究報(bào)告
- 培訓(xùn)職工課件
- 2025年養(yǎng)老護(hù)理員職業(yè)考試試題及答案
- 揭陽惠來縣紀(jì)委監(jiān)委等部門屬下事業(yè)單位招聘筆試真題2024
- 春蘇教版六年級(jí)數(shù)學(xué)總復(fù)習(xí)30課時(shí)教學(xué)設(shè)計(jì)
- 黨課課件含講稿:以作風(fēng)建設(shè)新成效激發(fā)干事創(chuàng)業(yè)新作為
- 西安美術(shù)學(xué)院《舞臺(tái)編導(dǎo)藝術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 城投公司工程管理制度
- 2025全國(guó)農(nóng)業(yè)(水產(chǎn))行業(yè)職業(yè)技能大賽(水生物病害防治員)選拔賽試題庫(含答案)
- 油浸式變壓器 電抗器 檢修規(guī)范標(biāo)準(zhǔn)
- 2025年中國(guó)膨潤(rùn)土貓砂項(xiàng)目投資可行性研究報(bào)告
- 職業(yè)技術(shù)學(xué)院2024級(jí)智能機(jī)器人技術(shù)專業(yè)人才培養(yǎng)方案
- 猩紅熱課件完整版本
評(píng)論
0/150
提交評(píng)論