數(shù)據(jù)結(jié)構(gòu)航空客運(yùn)訂票系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)航空客運(yùn)訂票系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)航空客運(yùn)訂票系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)航空客運(yùn)訂票系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)航空客運(yùn)訂票系統(tǒng)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課程設(shè)計(jì)報(bào)告課程名稱:數(shù)據(jù)構(gòu)造設(shè)計(jì)題目:航空客運(yùn)訂票系統(tǒng)院系:班級(jí):設(shè)計(jì)者:學(xué)號(hào):指導(dǎo)教師:

課程設(shè)計(jì)報(bào)告一、題目分析重要功效涉及:1、錄入:能夠錄入航班狀況(如:輸入航班號(hào),飛機(jī)編號(hào),查詢起降時(shí)間,起飛到達(dá)都市,剩余的票數(shù))。2、查詢:能夠查詢某個(gè)航線的狀況(如:輸入航班號(hào),飛機(jī)編號(hào),查詢起降時(shí)間,起飛到達(dá)都市,剩余的票數(shù));能夠輸入降落都市及航班號(hào),查詢飛機(jī)航班狀況。3、訂票:根據(jù)客戶規(guī)定(航班號(hào)、訂票數(shù)量)查詢該航班的余票數(shù)狀況,若有余票,則能夠訂票;若余票數(shù)局限性,則需要重新詢問客戶規(guī)定,否則不能完畢訂票。4、退票:可退票,根據(jù)客戶的姓名,訂票數(shù)量查詢與否為真實(shí)信息,為客戶辦理退票。5、退出系統(tǒng)。二、總體設(shè)計(jì)拿到課程設(shè)計(jì)題目后,通過認(rèn)真的研究,還是決定做航空客運(yùn)訂票系統(tǒng),它能夠使自己較好的鞏固在數(shù)據(jù)構(gòu)造當(dāng)中所學(xué)到的知識(shí)以及各算法,做到學(xué)以致用,并在運(yùn)用的基礎(chǔ)上,進(jìn)一步去創(chuàng)新。主程序流程圖及其闡明主程序的流程圖以下圖所示:航空客運(yùn)訂票系統(tǒng)航空客運(yùn)訂票系統(tǒng)1、錄入航班信息2、查詢航班信息3、預(yù)定機(jī)票4、退定機(jī)票5、退出系統(tǒng)運(yùn)用switch語句,顧客只需根據(jù)自己的需要,輸入對應(yīng)的命令即可達(dá)成效果。例如,若需要查詢航班信息時(shí),則輸入2;需要為客戶預(yù)定機(jī)票時(shí),則輸入4;若需要退出系統(tǒng),則輸入5即可。2、子程序流程圖及其闡明⑴、錄入航班信息的流程圖及其闡明:重要功效是將新的航班信息寫入新建鏈表中,然后把新鏈表與儲(chǔ)存航班的鏈表合并,得到新的航班信息,實(shí)現(xiàn)對新航班的增加。錄入航班信息的流程圖以下圖所示:1、錄入航班信息1、錄入航班信息建立新的鏈表新增航班信息對新鏈表置空,訂票表頭初始化1.返回菜單2.繼續(xù)操作⑵、查詢航班信息流程圖及其闡明:先輸入所要查找的航班,可通過降落都市查詢或根據(jù)航班號(hào)查詢。然后判斷該航班與否存在,若存在,則輸出有關(guān)的航班信息;若不存在,則提示該航班不存在。查詢航班信息的流程圖以下圖所示:2、查詢航班信息2、查詢航班信息1、通過降落都市查詢2、通過航班號(hào)查詢判斷航班與否存在顯示該航班信息返回主菜單⑶、訂票、退票流程圖及其闡明:訂票闡明:先輸入降落都市,找到該航班并顯示該航班信息,若找不到則提示不存在該航班。再通過需要訂票的數(shù)量來判斷余票量與否足夠。若足夠則錄入客戶姓名,完畢訂票;若余票局限性,則提示與否要取消并重新訂票。訂票的流程圖以下圖所示:3、訂票功效3、訂票功效與否有該航班輸入所需的訂票信息(客戶姓名及要訂的票數(shù))余票與否充足訂票成功返回主菜單退票闡明:先通過輸入客戶的姓名及訂票數(shù)目,擬定與否存在該客戶信息,若符合條件,則完畢退票;若無該客戶信息,則提示該航班沒有人訂票或者是該客戶沒有訂該航班的票。退票的流程圖以下圖所示:4、退票功效4、退票功效與否有該航班輸入客戶姓名及訂票數(shù)客戶信息與否對的退票成功返回主菜單三、具體設(shè)計(jì)1、數(shù)據(jù)構(gòu)造設(shè)計(jì)typedefstructbooked{//單鏈表 charname1[15];//已訂票客戶姓名intnumber1;//已訂票數(shù)量structbooked*next1;}booked,*Link;typedefstructbook{//單鏈表 charname2[15];//預(yù)定票客戶姓名intnumber2;//要訂票數(shù)量structbook*next2;//下一種鏈隊(duì)結(jié)點(diǎn)指針}book,*Qptr;typedefstruct{ Qptrfront;//單鏈隊(duì)頭結(jié)點(diǎn) Qptrrear;//單鏈隊(duì)尾結(jié)點(diǎn)}linkQueue;2、函數(shù)闡明(1)主函數(shù)main()允許顧客通過菜單進(jìn)行功效選擇,使用對應(yīng)的功效代碼來調(diào)用對應(yīng)的函數(shù)功效。(2)其它各功效函數(shù)涉及函數(shù)名功效voidenter()錄入航班信息voidrefer()查詢航線信息intInsertLinklist(Linklist&head1);聲明錄入航班信息voidcityrefer();通過降落都市查詢voidflynumrefer();通過航班號(hào)查詢voidreserve();訂票voidrefund();退票3、分工函數(shù)設(shè)計(jì)(截圖分析及有關(guān)闡明)⑴、主函數(shù)voidmain(){ H=(structbooked*)malloc(sizeof(booked)); Q.front=Q.rear=(Qptr)malloc(sizeof(book));//申請空間并初始化隊(duì)列 InitLinklist(); intn; do{//打印主界面 printf("\t+++++++++++++++++++++++++++++\n\n"); printf("\t*->1.錄入航班信息*\n\n"); printf("\t*->2.查詢航班信息*\n\n"); printf("\t*->3.訂票功效*\n\n"); printf("\t*->4.退票功效*\n\n"); printf("\t*->5.退出*\n\n"); printf("\t+++++++++++++++++++++++++++++\n"); printf("\t請選擇:"); scanf("%d",&n); printf("\n"); switch(n) {case1:enter();//錄入功效 break; case2:refer();//查詢功效 break; case3:reserve();//訂票功效 break; case4:refund();//退票功效 break; case5: printf("【感謝使用航空客運(yùn)訂票系統(tǒng)】\n"); break;//退出 } }while(n==1||n==2||n==3||n==4);}[運(yùn)行成果]:、錄入航班信息voidenter()//錄入航班信息{ intj=1,m; do{ if(!InsertLinklist(L))//向其中加入航班信息 { printf("內(nèi)存已滿\n"); }//向鏈表中加一結(jié)點(diǎn) printf("\t與否要輸入下一種航線統(tǒng)計(jì)?\n"); printf("\t是請輸入1\n"); printf("\t否請輸入2\n"); scanf("%d",&m);//選擇與否輸入下一條航線 }while(m==1);}LinklistInitLinklist(){ L=(Linklist)malloc(sizeof(fly)); if(!L) L->next=NULL;//建立一種帶有頭結(jié)點(diǎn)的單鏈表 return(L);}intInsertLinklist(Linklist&L)//向航線鏈表添加新的結(jié)點(diǎn){ Linklistp; p=(Linklist)malloc(sizeof(fly));//為一種新的結(jié)點(diǎn)分派空間 printf("\t請依次輸入下面幾項(xiàng)內(nèi)容:\n\n"); printf("航班號(hào):"); scanf("%s",p->flynum); printf("飛機(jī)編號(hào):"); scanf("%s",p->plane); printf("起飛都市:"); scanf("%s",p->city1); printf("降落都市:"); scanf("%s",p->city); printf("飛行日期:"); scanf("%s",p->date); printf("剩余的票數(shù):"); scanf("%d",&p->rest); p->booked=(booked*)malloc(sizeof(booked));//申請存儲(chǔ)空間 p->book=Q.front=Q.rear=(Qptr)malloc(sizeof(book));//申請存儲(chǔ)空間 p->next=L->next; L->next=p; return1;}[運(yùn)行成果]:、查詢航班信息①.通過降落都市查詢voidcityrefer()//通過降落都市查詢{ charc[15]; Linklistp=L; intm; printf("\t請輸入你要查詢的降落都市:"); scanf("%s",c); do{ p=p->next; if(p) { if(stricmp((*p).city,c)==0) { printf("\t航班信息:\n"); printf("\t航班號(hào):%s\n",p->flynum); printf("\t飛機(jī)編號(hào):%s\n",p->plane); printf("\t起飛都市:%s\n",p->city1);printf("\t降落都市:%s\n",p->city); printf("\t飛行日期:%s\n",p->date); printf("\t剩余的票數(shù):%d\n",p->rest); break; } else { printf("\t【對不起,沒有您要查找的降落都市.】\n\n"); m=0; } } }while(m!=0);}[運(yùn)行成果]:②.通過航班號(hào)查詢voidflynumrefer()//通過航班號(hào)查詢{ charc[15]; Linklistp=L; intm; printf("\t請輸入你要查詢的航班號(hào):"); scanf("%s",c); do{ p=p->next; if(p) { if(strcmpi((*p).flynum,c)==0) { printf("\t航班信息:\n"); printf("\t航班號(hào):%s\n",p->flynum); printf("\t飛機(jī)編號(hào):%s\n",p->plane);printf("\t起飛都市:%s\n",p->city1);printf("\t降落都市:%s\n",p->city); printf("\t飛行日期:%s\n",p->date); printf("\t剩余的票數(shù):%d\n",p->rest); break; } else { printf("\t【對不起,沒有您要查找的航班.】\n"); m=0; } } }while(m!=0);}[運(yùn)行成果]:四、源程序代碼#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>typedefstructbooked{//單鏈表 charname1[15];//已訂票客戶姓名intnumber1;//已訂票數(shù)量structbooked*next1;}booked,*Link;typedefstructbook{//單鏈表 charname2[15];//預(yù)定票客戶姓名intnumber2;//要訂票數(shù)量structbook*next2;//下一種鏈隊(duì)結(jié)點(diǎn)指針}book,*Qptr;typedefstruct{ Qptrfront;//單鏈隊(duì)頭結(jié)點(diǎn) Qptrrear;//單鏈隊(duì)尾結(jié)點(diǎn)}linkQueue;typedefstructfly{//創(chuàng)立一種航線的構(gòu)造體 charflynum[15];//航班號(hào) charplane[15];//飛機(jī)編號(hào) chardate[12];//飛行日期 charcity1[15];//起飛都市 charcity[15];//降落都市 intrest;//剩余的票數(shù) structfly*next;//指向下一種鏈結(jié)點(diǎn)的指針 structbooked*booked;//定義一種指向已訂票客戶的頭結(jié)點(diǎn)指針 structbook*book;}fly,*Linklist;structfly*L=NULL;//定義全局變量structbooked*H;//為已訂票客戶鏈隊(duì)來申請空間linkQueueQ;//linkQueue類型的來申請空間LinklistInitLinklist();//聲明intInsertLinklist(Linklist&head1);//聲明錄入航班信息voidcityrefer();//通過降落都市查詢voidflynumrefer();//通過航班號(hào)查詢voidenter();//錄入信息voidrefer();//查詢信息voidreserve();//訂票voidrefund();//退票voidmain(){ H=(structbooked*)malloc(sizeof(booked)); Q.front=Q.rear=(Qptr)malloc(sizeof(book));//申請空間并初始化隊(duì)列 InitLinklist(); intn; do{//打印主界面 printf("\t+++++++++++++++++++++++++++++\n\n"); printf("\t*->1.錄入航班信息*\n\n"); printf("\t*->2.查詢航班信息*\n\n"); printf("\t*->3.訂票功效*\n\n"); printf("\t*->4.退票功效*\n\n"); printf("\t*->5.退出*\n\n"); printf("\t+++++++++++++++++++++++++++++\n"); printf("\t請選擇:"); scanf("%d",&n); printf("\n"); switch(n) {case1:enter();//錄入功效 break; case2:refer();//查詢功效 break; case3:reserve();//訂票功效 break; case4:refund();//退票功效 break; case5: printf("【感謝使用航空客運(yùn)訂票系統(tǒng)】\n"); break;//退出 } }while(n==1||n==2||n==3||n==4);}voidenter()//錄入航班信息{ intj=1,m; do{ if(!InsertLinklist(L))//向其中加入航班信息 { printf("內(nèi)存已滿\n"); }//向鏈表中加一結(jié)點(diǎn) printf("\t與否要輸入下一種航線統(tǒng)計(jì)?\n"); printf("\t是請輸入1\n"); printf("\t否請輸入2\n"); scanf("%d",&m);//選擇與否輸入下一條航線 }while(m==1);}LinklistInitLinklist(){ L=(Linklist)malloc(sizeof(fly)); if(!L) L->next=NULL;//建立一種帶有頭結(jié)點(diǎn)的單鏈表 return(L);}intInsertLinklist(Linklist&L)//向航線鏈表添加新的結(jié)點(diǎn){ Linklistp; p=(Linklist)malloc(sizeof(fly));//為一種新的結(jié)點(diǎn)分派空間 printf("\t請依次輸入下面幾項(xiàng)內(nèi)容:\n\n"); printf("航班號(hào):"); scanf("%s",p->flynum); printf("飛機(jī)編號(hào):"); scanf("%s",p->plane); printf("起飛都市:"); scanf("%s",p->city1); printf("降落都市:"); scanf("%s",p->city); printf("飛行日期:"); scanf("%s",p->date); printf("剩余的票數(shù):"); scanf("%d",&p->rest); p->booked=(booked*)malloc(sizeof(booked));//申請存儲(chǔ)空間 p->book=Q.front=Q.rear=(Qptr)malloc(sizeof(book));//申請存儲(chǔ)空間 p->next=L->next; L->next=p; return1;}voidrefer()//查詢航線信息{ intn; printf("\t查找航線信息\n"); printf("\t++++++++++++++++++++++++++++++++\n\n"); printf("\t*->1.通過降落都市查詢*\n\n"); printf("\t*->2.通過航班號(hào)查詢*\n\n"); printf("\t++++++++++++++++++++++++++++++++\n"); printf("\t請選擇:"); scanf("%d",&n); switch(n) { case1:cityrefer(); break; case2:flynumrefer(); break; default:break; }}voidcityrefer()//通過降落都市查詢{ charc[15]; Linklistp=L; intm; printf("\t請輸入你要查詢的降落都市:"); scanf("%s",c); do{ p=p->next; if(p) { if(stricmp((*p).city,c)==0) { printf("\t航班信息:\n"); printf("\t航班號(hào):%s\n",p->flynum); printf("\t飛機(jī)編號(hào):%s\n",p->plane); printf("\t起飛都市:%s\n",p->city1);printf("\t降落都市:%s\n",p->city); printf("\t飛行日期:%s\n",p->date); printf("\t剩余的票數(shù):%d\n",p->rest); break; } else { printf("\t【對不起,沒有您要查找的降落都市.】\n\n"); m=0; } } }while(m!=0);}voidflynumrefer()//通過航班號(hào)查詢{ charc[15]; Linklistp=L; intm; printf("\t請輸入你要查詢的航班號(hào):"); scanf("%s",c); do{ p=p->next; if(p) { if(strcmpi((*p).flynum,c)==0) { printf("\t航班信息:\n"); printf("\t航班號(hào):%s\n",p->flynum); printf("\t飛機(jī)編號(hào):%s\n",p->plane);printf("\t起飛都市:%s\n",p->city1);printf("\t降落都市:%s\n",p->city); printf("\t飛行日期:%s\n",p->date); printf("\t剩余的票數(shù):%d\n",p->rest); break; } else { printf("\t【對不起,沒有您要查找的航班.】\n"); m=0; } } }while(m!=0);}voidreserve()//訂票{ Linklistp=L;//Linklist類型的L來指向鏈表頭 booked*h=H,*h1;//booked定義客戶的結(jié)點(diǎn),方便插入與刪除 charc[15]; intm=1,ticket; intbookedt=0,bookt=0; printf("請輸入降落都市:"); scanf("%s",c); p=L->next; if(p){ do{//查找與否有該航班 if(!p) { printf("【對不起,沒有您要查找的航班.】\n\n"); return; } m=stricmp(p->city,c); //通過比較來鑒定 if(m==0) { printf("\t航班信息:\n"); printf("\t航班號(hào):%s\n",p->flynum); printf("\t飛機(jī)編號(hào):%s\n",p->plane); printf("\t起飛都市:%s\n",p->city1);printf("\t降落都市:%s\n",p->city); printf("\t飛行日期:%s\n",p->date); printf("\t剩余的票數(shù):%d\n",p->rest); } else p=p->next;//促使循環(huán) }while(m!=0); if(m==0) {//當(dāng)有該航班時(shí),進(jìn)行訂票 do{ printf("\n請輸入您要訂的票數(shù):\n"); scanf("%d",&ticket); if(ticket<=p->rest) { h=p->booked; if(h) { h1=h; h=h->next1; h=(structbooked*)malloc(sizeof(booked)); printf("請輸入客戶姓名:\n"); scanf("%s",h->name1); h->number1=ticket; h->next1=h1->next1; h1->next1=h; p->rest=p->rest-ticket; printf("【訂票成功!】\n"); m=2; } } else//當(dāng)余票量局限性時(shí) { printf("剩余的票數(shù):%d\n",p->rest); printf("對不起,剩余票%d張局限性,不能完畢訂票.\n",p->rest); printf("與否需要重新訂票?\n"); printf("需要請輸入1不需要請輸入2:\n"); scanf("%d",&m); } }while(m==1); } }}voidrefund()//退票{ Linklistp=L; booked*h=H,*h1,*h2; charc[15],name3[15]; intm=1,ticket; printf("請輸入航班號(hào):"); scanf("%s",c); p=L->next; if(p) { do{ if(!p) { printf("\n對不起,沒有你要查找的航班.\n"); } if(stricmp((*p).flynum,c)==0)//比較航班號(hào) { printf("\t航班信息:\n"); printf("\t航班號(hào):%s\n",p->flynum); printf("\t飛機(jī)編號(hào):%s\n",p->plane); printf("\t起飛都市:%s\n",p->city1); printf("\t降落都市:%s\n",p->city); printf("\t飛行日期:%s\n",p->date); printf("\t剩余的票數(shù):%d\n",p->rest); m=0; } elsep=p->next; }while(m!=0); if(m==

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論