【簡(jiǎn)介:】本篇文章給大家談?wù)劇讹w機(jī)訂票程序》對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助。本文目錄一覽:
1、飛機(jī)訂票系統(tǒng)設(shè)計(jì) c語(yǔ)言
2、國(guó)內(nèi)的C艙是什么艙位,和F有區(qū)別嗎
3、c語(yǔ)言如何編寫
本篇文章給大家談?wù)劇讹w機(jī)訂票程序》對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助。
本文目錄一覽:
- 1、飛機(jī)訂票系統(tǒng)設(shè)計(jì) c語(yǔ)言
- 2、國(guó)內(nèi)的C艙是什么艙位,和F有區(qū)別嗎
- 3、c語(yǔ)言如何編寫飛機(jī)訂票系統(tǒng)?
飛機(jī)訂票系統(tǒng)設(shè)計(jì) c語(yǔ)言
(已修改,請(qǐng)用最新的代碼)代碼說明:
1級(jí)菜單:選擇購(gòu)買的航班號(hào),并顯示對(duì)應(yīng)座位狀態(tài)。
(我只做測(cè)試,所以初始化initFlight函數(shù)中我只初始了2個(gè)航班,需要自己按照我的代碼添)
(注意:實(shí)際開發(fā)軟件,鏈表數(shù)據(jù)是從數(shù)據(jù)庫(kù)中讀取的,需要實(shí)時(shí)同步,如果要多次調(diào)用initFlight函數(shù),記得自己寫一個(gè)釋放內(nèi)存的函數(shù),把所有鏈表“SINFO和FLINFO”節(jié)點(diǎn)都釋放掉,釋放函數(shù)我沒寫,需要你自己寫!?。。?/p>
2級(jí)菜單:選擇購(gòu)買對(duì)應(yīng)座位號(hào),完成購(gòu)買,并實(shí)時(shí)顯示購(gòu)買結(jié)果。
位置編號(hào)、座位最大排數(shù)、艙室類型、折扣等參數(shù)均由常量參數(shù)空值,需要修改自行改常量。
注意:艙室類型(我默認(rèn)3個(gè)類型頭等艙、公務(wù)艙、經(jīng)濟(jì)艙)對(duì)應(yīng)折扣參數(shù):tDiscount二維數(shù)組。如要如要添加新的艙室類型,必須將參數(shù)常量TYPESIZE、typeName、types、tDiscount這4個(gè)同時(shí)修改,具體看代碼備注??!
座位票價(jià)=基礎(chǔ)票價(jià)*類型折扣*時(shí)段折扣。
因?yàn)轱w機(jī)不讓吸煙,所以我沒做吸煙區(qū)(笑),如果你需要,可以作為類型自行添加!
#includestdio.h
#includestdlib.h
#includeconio.h
#includestring.h
#includemalloc.h
#includetime.h
//-----------------------相關(guān)參數(shù),想改變,在這里修改!?。。。。?!-----------------------------
constfloattimeDiscount=1;//時(shí)段折扣,影響所有航班最終價(jià)格,默認(rèn)1
constcharcID[5]="ABCD";//位置編號(hào)
constintmaxRow=20;//位置最大排號(hào)
//注意:如果修改類型數(shù)量,types和tDiscount必須同時(shí)修改!??!
#defineTYPESIZE3//類型數(shù)量
constchartypeName[TYPESIZE][10]={"頭等艙","公務(wù)艙","經(jīng)濟(jì)艙"};
constinttypes[TYPESIZE][2]={{1,2},{3,4},{5,20}};//排號(hào)對(duì)應(yīng)類型。1~2排頭等艙,3~4排公務(wù)艙,5~20排經(jīng)濟(jì)艙
constfloattDiscount[TYPESIZE]={1.5,1.3,1};//類型折扣。頭等艙1.5倍,公務(wù)艙1.3倍,經(jīng)濟(jì)艙1倍
//-------------------------------------------------------------------------------
typedefstructseatInfo//座位信息,一條鏈表對(duì)應(yīng)一個(gè)航班信息,鏈表順序從第一排左邊第一個(gè)開始往后A1~D1,A2~D2。。。
{
charcloID;//位置編號(hào)A、B、C、D
introw;//位置排號(hào)
inttype;//座位所屬類型:0:頭等艙、1:公務(wù)艙、2:經(jīng)濟(jì)艙,不同類型對(duì)應(yīng)不同的類型折扣tDiscount
intsell;//出售狀態(tài),0:未出售;1:已出售
structseatInfo*next;
}SINFO;
typedefstructflightInfo//航班信息
{
charfid[10];//航班號(hào)
time_ttfTime;//起飛時(shí)間
time_tldTime;//降落時(shí)間
chartoCity[20];//抵達(dá)城市
floattPrice;//基礎(chǔ)票價(jià),不同位置具有不同折扣,座位票價(jià)=基礎(chǔ)票價(jià)*類型折扣*時(shí)段折扣
structflightInfo*next;
structseatInfo*sHead;//對(duì)應(yīng)座位鏈表的頭節(jié)點(diǎn)
}FLINFO;
voidmeError(void*p);
SINFO*getSINFO();//獲取座位鏈表
//addFLINFO:添加航班信息鏈表的節(jié)點(diǎn)flinfoHead:頭節(jié)點(diǎn)(第一次傳NULL會(huì)自動(dòng)生成),flinfoTail:尾節(jié)點(diǎn),fNew:要添加的結(jié)構(gòu)信息(成員指針無需賦值)
FLINFO*addFLINFO(FLINFO**ffHead,FLINFO*flinfoTail,FLINFOfNew);//返回尾節(jié)點(diǎn)
time_tgetTime_tfromStr(char*sTime);//將YYYY-MM-DDhh:mm:ss格式的時(shí)間字符串轉(zhuǎn)換成time_t型數(shù)值
FLINFO*initFlight();//初始化航班信息,返回航班鏈表頭節(jié)點(diǎn),如果想手動(dòng)輸入,請(qǐng)?jiān)谶@里添加?。?!正常軟件開發(fā),這一步應(yīng)該是從數(shù)據(jù)庫(kù)讀?。?/p>
char*getTString(structtm*tm0);//通過tm獲取時(shí)間字符串
voidshowSinfo(FLINFO*flinfo);//顯示航班對(duì)應(yīng)座位信息
voidprintfFlinfo(FLINFO*flinfoHead);
FLINFO*selectFlinfo(FLINFO*flinfoHead,char*fid);//選擇航班號(hào),返回節(jié)點(diǎn)
voidshowSinfo(FLINFO*flinfo);//顯示航班對(duì)應(yīng)座位信息
SINFO*selectSinfo(FLINFO*flinfo,char*sid);//選擇座位,返回節(jié)點(diǎn)
intmain()
{
FLINFO*flinfoHead=initFlight(),*ffSelect=NULL;
SINFO*sfSelect=NULL;
charfid[10]={0},sid[10]={10};
while(1)
{
ffSelect=NULL;
sfSelect=NULL;
memset(fid,0,10);
memset(sid,0,10);
printfFlinfo(flinfoHead);
printf("請(qǐng)輸入要購(gòu)買的航班號(hào):");
scanf("%s",fid);
ffSelect=selectFlinfo(flinfoHead,fid);
if(!ffSelect)
{
printf("未找到對(duì)應(yīng)航班,按任意鍵繼續(xù)-----\n");
getch();
system("cls");
continue;
}
system("cls");
printf("航班號(hào):%s座位信息如下:\n",ffSelect-fid);
showSinfo(ffSelect);
printf("請(qǐng)輸入要購(gòu)買的座位編號(hào)(輸入0返回主菜單):");
scanf("%s",sid);
if(!strcmp(sid,"0"))
{
system("cls");
continue;
}
else
{
sfSelect=selectSinfo(ffSelect,sid);
if(!sfSelect||sfSelect-sell)
{
printf("未找到對(duì)應(yīng)座位或該座位已出售,請(qǐng)重新輸入!按任意鍵繼續(xù)-----\n");
getch();
system("cls");
continue;
}
printf("購(gòu)買成功!按任意鍵繼續(xù)-----");
sfSelect-sell=1;
getch();
system("cls");
}
}
return0;
}
SINFO*selectSinfo(FLINFO*flinfo,char*sid)//選擇座位,返回節(jié)點(diǎn)
{
SINFO*sinfoHead=flinfo-sHead;
while(sinfoHead-next)
{
if(sinfoHead-next-cloID==sid[0]sinfoHead-next-row==atoi(sid+1))
returnsinfoHead-next;
sinfoHead=sinfoHead-next;
}
returnNULL;
}
voidshowSinfo(FLINFO*flinfo)//顯示航班對(duì)應(yīng)座位信息
{
SINFO*sinfoHead=flinfo-sHead,*sfp=NULL;
inti,j,k,row=maxRow,clo=strlen(cID);
chartypeStr[10]={0};
for(i=0;irow;i++)
{
//---------讀取座位所屬艙室------------
memset(typeStr,0,10);
for(k=0;kTYPESIZE;k++)
if(i+1=types[k][0]i+1=types[k][1])
strcpy(typeStr,typeName[k]);
//--------------------------------------
printf("\n");
for(j=0;jclo;j++)
printf("-------------");
printf("\n");
sfp=sinfoHead;
for(j=0;jclo;j++)
{
printf("|%c%02d|",sfp-next-cloID,sfp-next-row);
sfp=sfp-next;
}
printf("\n");
sfp=sinfoHead;
for(j=0;jclo;j++)
{
printf("|%c|",sfp-next-sell?2:1);
sfp=sfp-next;
}
printf("\n");
sfp=sinfoHead;
for(j=0;jclo;j++)
{
printf("|%6s:%4.0f|",typeStr,flinfo-tPrice*tDiscount[sfp-next-type]*timeDiscount);
sfp=sfp-next;
}
printf("\n");
sinfoHead=sfp;
}
for(j=0;iclo;j++)
printf("-------");
printf("\n");
}
FLINFO*selectFlinfo(FLINFO*flinfoHead,char*fid)//選擇航班號(hào),返回節(jié)點(diǎn)
{
while(flinfoHead-next)
{
if(!strcmp(flinfoHead-next-fid,fid))
returnflinfoHead-next;
flinfoHead=flinfoHead-next;
}
returnNULL;
}
voidprintfFlinfo(FLINFO*flinfoHead)
{
while(flinfoHead-next)
{
printf("目的地:%s,航班號(hào):%s\n----起飛時(shí)間:%s,抵達(dá)時(shí)間:%s\n\n",flinfoHead-next-toCity,flinfoHead-next-fid,getTString(localtime(flinfoHead-next-tfTime)),getTString(localtime(flinfoHead-next-ldTime)));
flinfoHead=flinfoHead-next;
}
}
char*getTString(structtm*tm0)//通過tm獲取時(shí)間字符串
{
char*str=(char*)malloc(sizeof(char)*20),num[5]={0};
meError(str);
memset(str,0,20);
sprintf(num,"%4d",tm0-tm_year+1900);
strcat(str,num);
strcat(str,"-");
memset(num,0,5);
sprintf(num,"%02d",tm0-tm_mon);
strcat(str,num);
strcat(str,"-");
memset(num,0,5);
sprintf(num,"%02d",tm0-tm_mday);
strcat(str,num);
strcat(str,"");
memset(num,0,5);
sprintf(num,"%02d",tm0-tm_hour);
strcat(str,num);
strcat(str,":");
memset(num,0,5);
sprintf(num,"%02d",tm0-tm_min);
strcat(str,num);
strcat(str,":");
memset(num,0,5);
sprintf(num,"%02d",tm0-tm_sec);
strcat(str,num);
returnstr;
}
time_tgetTime_tfromStr(char*sTime)//將YYYY-MM-DDhh:mm:ss格式的時(shí)間字符串轉(zhuǎn)換成time_t型數(shù)值
{
time_trt;
structtm*tm1=NULL;
rt=time(NULL);
tm1=localtime(rt);
sscanf(sTime,("%4d-%2d-%2d%2d:%2d:%2d"),tm1-tm_year,tm1-tm_mon,tm1-tm_mday,tm1-tm_hour,tm1-tm_min,tm1-tm_sec);
tm1-tm_year-=1900;
tm1-tm_mon--;
rt=mktime(tm1);
returnrt;
}
FLINFO*initFlight()//初始化航班信息,返回航班鏈表頭節(jié)點(diǎn),如果想手動(dòng)輸入,請(qǐng)?jiān)谶@里添加?。?!正常軟件開發(fā),這一步應(yīng)該是從數(shù)據(jù)庫(kù)讀??!
{
FLINFO*ffHead=NULL,*flinfoTail=NULL,fNew;
//--------添加一個(gè)航班信息----需要增加按照我下面調(diào)用方式寫--------------------------------
strcpy(fNew.fid,"CI502");
fNew.tfTime=getTime_tfromStr("2019-02-2003:30:30");
fNew.ldTime=getTime_tfromStr("2019-02-2005:20:30");
strcpy(fNew.toCity,"臺(tái)北");
fNew.tPrice=1000;
fNew.next=NULL;
flinfoTail=addFLINFO(ffHead,flinfoTail,fNew);
//--------------------------------------------------------------------------------------------
strcpy(fNew.fid,"9C8921");
fNew.tfTime=getTime_tfromStr("2019-02-2014:30:30");
fNew.ldTime=getTime_tfromStr("2019-02-2016:40:30");
strcpy(fNew.toCity,"香港");
fNew.tPrice=500;
fNew.next=NULL;
flinfoTail=addFLINFO(ffHead,flinfoTail,fNew);
returnffHead;
}
FLINFO*addFLINFO(FLINFO**ffHead,FLINFO*flinfoTail,FLINFOfNew)//返回尾節(jié)點(diǎn)
//添加航班信息鏈表的節(jié)點(diǎn)flinfoHead:頭節(jié)點(diǎn)(第一次傳NULL會(huì)自動(dòng)生成),flinfoTail:尾節(jié)點(diǎn),fNew:要添加的結(jié)構(gòu)信息(成員指針無需賦值)
{
FLINFO*flinfoHead=*ffHead;
if(flinfoHead==NULL)
{
*ffHead=(FLINFO*)malloc(sizeof(FLINFO));
flinfoHead=*ffHead;
meError(flinfoHead);
flinfoHead-next=NULL;
}
FLINFO*flinfoNew=(FLINFO*)malloc(sizeof(FLINFO));
meError(flinfoNew);
flinfoNew-next=NULL;
flinfoNew-fid[0]=0;
strcpy(flinfoNew-fid,fNew.fid);
flinfoNew-ldTime=fNew.ldTime;
flinfoNew-tfTime=fNew.tfTime;
flinfoNew-toCity[0]=0;
strcpy(flinfoNew-toCity,fNew.toCity);
flinfoNew-tPrice=fNew.tPrice;
flinfoNew-sHead=getSINFO();
if(flinfoHead-next==NULL)
flinfoHead-next=flinfoNew;
else
flinfoTail-next=flinfoNew;
flinfoTail=flinfoNew;
returnflinfoTail;
}
SINFO*getSINFO()//獲取座位鏈表
{
intmaxClo=strlen(cID),cnt=maxClo*maxRow,clo=0,row=1,i;
SINFO*sinfoHead=(SINFO*)malloc(sizeof(SINFO)),*sinfoTail=NULL;
meError(sinfoHead);
sinfoHead-next=NULL;
SINFO*sinfoNew=NULL;
while(cnt--)//按順序生成對(duì)應(yīng)數(shù)量的座位鏈表
{
if(clo==maxClo)
clo=0,row++;
if(row==maxRow+1)
row=1;
sinfoNew=(SINFO*)malloc(sizeof(SINFO));
meError(sinfoNew);
sinfoNew-cloID=cID[clo];
sinfoNew-row=row;
for(i=0;iTYPESIZE;i++)
if(row=types[i][0]row=types[i][1])
{
sinfoNew-type=i;
break;
}
sinfoNew-sell=0;
sinfoNew-next=NULL;
if(sinfoHead-next==NULL)
sinfoHead-next=sinfoNew;
else
sinfoTail-next=sinfoNew;
sinfoTail=sinfoNew;
clo++;
}
returnsinfoHead;
}
voidmeError(void*p)//內(nèi)存申請(qǐng)失敗
{
if(p==NULL)
{
printf("\n異常:內(nèi)存申請(qǐng)失??!回車結(jié)束程序!\n");
while(getch()!='\r');
exit(0);
}
}
國(guó)內(nèi)的C艙是什么艙位,和F有區(qū)別嗎
F艙為頭等艙公布價(jià),
C艙為公務(wù)艙公布價(jià)。
機(jī)票中艙位的不同:
只有三種艙位,頭等艙、公務(wù)艙和經(jīng)濟(jì)艙,對(duì)于普通旅客來講前兩種艙位是不打折的,而這個(gè)所謂艙位用旅客的話講就是對(duì)應(yīng)的折扣,對(duì)于售票處不同的折扣用不同的艙位表示以但于其訂座,代表字母分別是F和C,這三種艙位根據(jù)位置空間的大小和服務(wù)的不同而區(qū)分;而通常所說的折扣機(jī)票,是一種抽象的概念。
實(shí)際在飛機(jī)上海南航空的Q艙代表的是經(jīng)濟(jì)艙六折艙位
經(jīng)濟(jì)艙里面又分不同的座位等級(jí)(艙位代碼為B,價(jià)格也不一樣)折扣艙依次往下排列,這些價(jià)格雖然都屬于經(jīng)濟(jì)艙,這種代碼每個(gè)航空公司的標(biāo)識(shí)都不相同、E不等;
1、國(guó)際客票的艙位等級(jí)主要分為頭等艙(艙位代碼為F A)、公務(wù)艙(艙位代碼為C)、M、X、經(jīng)濟(jì)艙(艙位代碼為Y)、公務(wù)艙(艙位代碼為C D J)。但是在大多數(shù)航線上會(huì)以5.5折的價(jià)格出售,顯示為Q1.
2、國(guó)內(nèi)客票的艙位等級(jí)主要分為頭等艙(艙位代碼為F)、H、L,但是低艙位的價(jià)格享受的服務(wù)和高艙位的不大一樣,最明顯的就是提前預(yù)訂機(jī)上座位與餐食服務(wù)(意思就是即使是提前預(yù)訂好了座位與餐食、經(jīng)濟(jì)艙(艙位代碼為Y),也有不能退票的規(guī)定、K頭等艙與經(jīng)濟(jì)艙有著實(shí)質(zhì)的不同。
像波音737、757這樣的飛機(jī),頭等艙一排4個(gè)座位,經(jīng)濟(jì)艙一排六個(gè)座位,可見頭等艙是寬座位的。另外頭等艙餐飲也要比經(jīng)濟(jì)艙好許多,報(bào)刊雜志也豐富些,空姐對(duì)頭等艙的旅客服務(wù)要更周到、完美些。在飛行過程中頭等艙與經(jīng)濟(jì)艙用一塊布簾隔離開。
經(jīng)濟(jì)艙再分成幾個(gè)艙,那只是概念上的,沒有實(shí)質(zhì)性的不同,整個(gè)飛行過程一切待遇都是一樣的。只因購(gòu)票時(shí)的折扣價(jià)不同而分的艙位,而折扣票也僅是退票、延期、簽轉(zhuǎn)等有較多的限制。
c語(yǔ)言如何編寫飛機(jī)訂票系統(tǒng)?
#includestdio.h
#includestring.h
#includeconio.h
#includectype.h
#includestdlib.h
#includemalloc.h
#includemath.h//overflow
#defineok1
typedefstructYidingkehu
{//單鏈表
charname[15];//已訂票的客戶姓名
intdingpiaoshu;//已訂票數(shù)量
structYidingkehu*next1;//
}Yidingkehu,*Link;
typedefstructWeidingkehu
{//單鏈隊(duì)
charname[15];//預(yù)訂票的客戶姓名
intyudingpiao;//要訂票數(shù)量
structWeidingkehu*next2;//下一個(gè)鏈隊(duì)結(jié)點(diǎn)指針
}Weidingkehu,*Qptr;
typedefstructHangxian
{//創(chuàng)建一個(gè)含有六個(gè)信息的結(jié)構(gòu)體
charhangbanhao[15];//航班號(hào)-
charfeijihao[15];//飛機(jī)號(hào)
intfeixingriqi;//起飛時(shí)間
intchenkerenshu;//座位數(shù)
intyupiao;//余票
charzhongdianzhai[15];//降落城市
structHangxian*next;//指向下一個(gè)鏈結(jié)點(diǎn)的指針
structYidingkehu*yiding;//定義一個(gè)指向已訂票客戶的頭結(jié)點(diǎn)指針
structWeidingkehu*yudingqueue;
}Hangxian,*Linklist;
LinklistInitLinklist();//01
intInsertLinklist(Linklisthead1);//02
voidhbhchaxun();//通過航班號(hào)查詢
voidmddchaxun();//通過目的地查詢
voidlurugongneng();//初始化錄入功能
voidchaxungongnen();//查詢功能
voiddingpiaogongnen();//訂票功能
voidtuipiaogongnen();//退票功能
voidmain()
{
intn;
do{//打印主界面
printf("\t歡迎使用航空客運(yùn)訂票系統(tǒng)\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t==1.錄入功能==\n");
printf("\t==2.查詢功能==\n");
printf("\t==3.訂票功能==\n");
printf("\t==4.退票功能==\n");
printf("\t==5.退出==\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t請(qǐng)選擇:");
scanf("%d",n);printf("\n");
switch(n)
{
case1:lurugongneng();//錄入功能
break;
case2:chaxungongnen();//查詢功能
break;
case3:dingpiaogongnen();//訂票功能
break;
case4:tuipiaogongnen();//退票功能
break;
default:exit(0);//退出
}
}while(n==1||n==2||n==3||n==4);
}
voidlurugongneng()//初始化的單鏈表*********************************************************錄入功能
{
Linklistp;
//intm,n;
if(!p)exit(OVERFLOW);
printf("\t請(qǐng)依次輸入下面幾項(xiàng)內(nèi)容:\n\n");//這里的輸入采用一個(gè)個(gè)單獨(dú)輸入,避免了亂賦值的現(xiàn)象
printf("航班號(hào)\n");
gets(p-hangbanhao);//這里的二個(gè)gets主要是因?yàn)樵诨剀囨I的輸入,其中的第一個(gè)是來接收上次的回車
gets(p-hangbanhao);
printf("飛機(jī)號(hào)\n");
gets(p-feijihao);
printf("終點(diǎn)站\n");
gets(p-zhongdianzhai);
printf("飛行日期\n");
scanf("%d",p-feixingriqi);
printf("乘客總數(shù)\n");
scanf("%d",p-chenkerenshu);
printf("余票數(shù)\n");
scanf("%d",p-yupiao);
}
voidchaxungongnen()//******************************************************************查詢功能
{
intn;
printf("\t查找航線信息\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t==1.通過目的地查詢==\n");
printf("\t==2.通過航班號(hào)查詢==\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t請(qǐng)選擇:");
scanf("%d",n);
printf("\n");//格式化
switch(n)
{
case1:mddchaxun();
break;
case2:hbhchaxun();
break;
default:break;
}
}
voidmddchaxun()//通過目的地查詢
{
charc[15];
intm;
Linklistp=L;
printf("\t請(qǐng)輸入要查詢的目的地:");
gets(c);
gets(c);//原因同上
do{
p=p-next;
if(p)
{
m=strcmpi((*p).zhongdianzhai,c);//如果==的話則m=0;
if(m==0)
{
printf("\t航班信息:\n");
printf("\t航班號(hào):%s\n",p-hangbanhao);
printf("\t飛機(jī)號(hào):%s\n",p-feijihao);
printf("\t飛行時(shí)間:周%d\n",p-feixingriqi);
printf("\t余票量:%d\n",p-yupiao);
}
}
else
{//如果不匹配的話就做
printf("\t對(duì)不起沒有你要找的目的地:\n\n");m=0;
}
}while(m!=0);
}
voidhbhchaxun()//通過目的地查詢
{
charc[15];
intm;
Linklistp=L;
printf("\t請(qǐng)輸入要查詢的航班號(hào):");
gets(c);gets(c);printf("\n");
do{
p=p-next;
if(p)
{
m=strcmpi((*p).hangbanhao,c);//如果==的話則m=0;這里的(*p).與p-的作用是一樣的
if(m==0)
{
printf("\t航班信息:\n");
printf("\t航班號(hào):%s\n",p-hangbanhao);
printf("\t飛機(jī)號(hào):%s\n",p-feijihao);
printf("\t飛行時(shí)間:周%d\n",p-feixingriqi);
printf("\t余票量:%d\n\n",p-yupiao);
}
}
else
{//如果不匹配的話就做
printf("\t對(duì)不起沒有你要找的航班號(hào):\n");m=0;
}
}while(m!=0);
}
voiddingpiaogongnen()//***************************************************************訂票功能
{
charc[15];
intm=1,piao,ydpiao=0,yd=0,n;//
gets(c);
printf("請(qǐng)輸入終點(diǎn)站名:");gets(c);printf("\n");
p=L-next;
if(p){
do{//查找一下,是否有這個(gè)航班
if(!p)
{
printf("對(duì)不起,沒有你要找的航班:\n\n");
gotoloop1;
}
m=strcmpi(p-zhongdianzhai,c);
if(m==0)
{
printf("航班信息:\n");
printf("航班號(hào):%s\n",p-hangbanhao);
printf("飛機(jī)號(hào):%s\n",p-feijihao);
printf("飛行時(shí)間:周%d\n",p-feixingriqi);
printf("余票量:%d\n",p-yupiao);}
elsep=p-next;
}while(m!=0);
if(m==0)
{
do{
printf("\n請(qǐng)輸入你要訂的票數(shù):");scanf("%d",piao);
if(piao=p-yupiao)
{
h=p-yiding;
if(h)
{
h1=h;
h=h-next1;
h=(structYidingkehu*)malloc(sizeof(Yidingkehu));
printf("請(qǐng)輸入你的名字:");
gets(h-name);gets(h-name);
h-dingpiaoshu=piao;
h-next1=h1-next1;
h1-next1=h;
p-yupiao=p-yupiao-piao;
printf("訂票成功:\n");m=2;
}
}
else
{
printf("余票量:%d\n",p-yupiao);
printf("對(duì)不起,余票%d張不足,不能完成訂票\n\n",p-yupiao);
printf("是否要重新訂票?\n");
printf("需要請(qǐng)輸入1否則請(qǐng)按2預(yù)訂請(qǐng)輸入3:");
scanf("%d",m);
printf("\n");
if(m==3)gotoloop3;
}
}while(m==1);
}
}
elseif(!p)
{
loop3:structWeidingkehu*q3;
printf("對(duì)不起,該航班的票已售完\n");
q.front=p-yudingqueue;
if(q.front==q.rear)printf("沒有人預(yù)訂票,是否要預(yù)訂?\n");
elseif(q.front!=q.rear)printf("已有人預(yù)訂票,是否要預(yù)訂?\n");
printf("預(yù)訂請(qǐng)輸入1否則輸入2:");
scanf("%d",n);
printf("\n");
if(n==1)
{
printf("請(qǐng)輸入你的姓名");gets(q3-name);gets(q3-name);//q3不能指向name???
printf("請(qǐng)輸入訂票數(shù)");scanf("%d",q3-yudingpiao);
q3-next2=NULL;
q.rear-next2=q3;
q.rear=q3;
printf("你已經(jīng)預(yù)訂了!\n");
}
}
loop1:;
}
voidtuipiaogongnen()//***************************************************************退票功能
{
}
///////////以下是人家的要求//////////
1、本系統(tǒng)采用一個(gè)包含N個(gè)數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個(gè)數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:起飛地、目的地航班號(hào)、座次號(hào)碼、座次訂出與否標(biāo)記、訂座者的姓名和訂座者的身份證號(hào)碼。
2、本系統(tǒng)顯示這樣的菜單:
(1)輸入航班信息
(2)輸出航班信息
(3)查找航班信息
a.顯示空座的數(shù)量
b.顯示空座的信息
c.顯示已訂座的信息
d.起飛時(shí)間
(4)訂票預(yù)約
(5)刪除定票預(yù)約
(6)退出系統(tǒng)
1、本系統(tǒng)成功執(zhí)行菜單的每個(gè)信息,選項(xiàng)4)和5)將要求額外的輸入,并且它們都允許用戶收回其輸入。
2、查找航班信息既可按線路查,也可按目的地查。
4、在兩次運(yùn)行之間,數(shù)據(jù)被保存于一個(gè)文件里,當(dāng)本程序重新開
始的時(shí)候,它首先從該文件讀入數(shù)據(jù)
關(guān)于《飛機(jī)訂票程序》的介紹到此就結(jié)束了。