免费的毛片网站,大又大粗又爽又黄少妇毛片,久久免费国产视频,菠萝蜜视频网在线www

當(dāng)前位置:  > 航空百科

飛機票訂票系統(tǒng)

作者: 發(fā)布時間: 2022-09-21 07:29:38

簡介:】本篇文章給大家談?wù)劇讹w機票訂票系統(tǒng)》對應(yīng)的知識點,希望對各位有所幫助。本文目錄一覽:
1、飛機訂票系統(tǒng)設(shè)計 c語言


2、請教下網(wǎng)上訂飛機票的程序。


3、簡單的航空航天售

本篇文章給大家談?wù)劇讹w機票訂票系統(tǒng)》對應(yīng)的知識點,希望對各位有所幫助。

本文目錄一覽:

飛機訂票系統(tǒng)設(shè)計 c語言

(已修改,請用最新的代碼)代碼說明:

1級菜單:選擇購買的航班號,并顯示對應(yīng)座位狀態(tài)。

(我只做測試,所以初始化initFlight函數(shù)中我只初始了2個航班,需要自己按照我的代碼添)

(注意:實際開發(fā)軟件,鏈表數(shù)據(jù)是從數(shù)據(jù)庫中讀取的,需要實時同步,如果要多次調(diào)用initFlight函數(shù),記得自己寫一個釋放內(nèi)存的函數(shù),把所有鏈表“SINFO和FLINFO”節(jié)點都釋放掉,釋放函數(shù)我沒寫,需要你自己寫?。。。?/p>

2級菜單:選擇購買對應(yīng)座位號,完成購買,并實時顯示購買結(jié)果。

位置編號、座位最大排數(shù)、艙室類型、折扣等參數(shù)均由常量參數(shù)空值,需要修改自行改常量。

注意:艙室類型(我默認(rèn)3個類型頭等艙、公務(wù)艙、經(jīng)濟艙)對應(yīng)折扣參數(shù):tDiscount二維數(shù)組。如要如要添加新的艙室類型,必須將參數(shù)常量TYPESIZE、typeName、types、tDiscount這4個同時修改,具體看代碼備注??!

座位票價=基礎(chǔ)票價*類型折扣*時段折扣。

因為飛機不讓吸煙,所以我沒做吸煙區(qū)(笑),如果你需要,可以作為類型自行添加!

#includestdio.h

#includestdlib.h

#includeconio.h

#includestring.h

#includemalloc.h

#includetime.h

//-----------------------相關(guān)參數(shù),想改變,在這里修改!?。。。。?!-----------------------------

constfloattimeDiscount=1;//時段折扣,影響所有航班最終價格,默認(rèn)1

constcharcID[5]="ABCD";//位置編號

constintmaxRow=20;//位置最大排號

//注意:如果修改類型數(shù)量,types和tDiscount必須同時修改!??!

#defineTYPESIZE3//類型數(shù)量

constchartypeName[TYPESIZE][10]={"頭等艙","公務(wù)艙","經(jīng)濟艙"};

constinttypes[TYPESIZE][2]={{1,2},{3,4},{5,20}};//排號對應(yīng)類型。1~2排頭等艙,3~4排公務(wù)艙,5~20排經(jīng)濟艙

constfloattDiscount[TYPESIZE]={1.5,1.3,1};//類型折扣。頭等艙1.5倍,公務(wù)艙1.3倍,經(jīng)濟艙1倍

//-------------------------------------------------------------------------------

typedefstructseatInfo//座位信息,一條鏈表對應(yīng)一個航班信息,鏈表順序從第一排左邊第一個開始往后A1~D1,A2~D2。。。

{

charcloID;//位置編號A、B、C、D

introw;//位置排號

inttype;//座位所屬類型:0:頭等艙、1:公務(wù)艙、2:經(jīng)濟艙,不同類型對應(yīng)不同的類型折扣tDiscount

intsell;//出售狀態(tài),0:未出售;1:已出售

structseatInfo*next;

}SINFO;

typedefstructflightInfo//航班信息

{

charfid[10];//航班號

time_ttfTime;//起飛時間

time_tldTime;//降落時間

chartoCity[20];//抵達(dá)城市

floattPrice;//基礎(chǔ)票價,不同位置具有不同折扣,座位票價=基礎(chǔ)票價*類型折扣*時段折扣

structflightInfo*next;

structseatInfo*sHead;//對應(yīng)座位鏈表的頭節(jié)點

}FLINFO;

voidmeError(void*p);

SINFO*getSINFO();//獲取座位鏈表

//addFLINFO:添加航班信息鏈表的節(jié)點flinfoHead:頭節(jié)點(第一次傳NULL會自動生成),flinfoTail:尾節(jié)點,fNew:要添加的結(jié)構(gòu)信息(成員指針無需賦值)

FLINFO*addFLINFO(FLINFO**ffHead,FLINFO*flinfoTail,FLINFOfNew);//返回尾節(jié)點

time_tgetTime_tfromStr(char*sTime);//將YYYY-MM-DDhh:mm:ss格式的時間字符串轉(zhuǎn)換成time_t型數(shù)值

FLINFO*initFlight();//初始化航班信息,返回航班鏈表頭節(jié)點,如果想手動輸入,請在這里添加?。?!正常軟件開發(fā),這一步應(yīng)該是從數(shù)據(jù)庫讀?。?/p>

char*getTString(structtm*tm0);//通過tm獲取時間字符串

voidshowSinfo(FLINFO*flinfo);//顯示航班對應(yīng)座位信息

voidprintfFlinfo(FLINFO*flinfoHead);

FLINFO*selectFlinfo(FLINFO*flinfoHead,char*fid);//選擇航班號,返回節(jié)點

voidshowSinfo(FLINFO*flinfo);//顯示航班對應(yīng)座位信息

SINFO*selectSinfo(FLINFO*flinfo,char*sid);//選擇座位,返回節(jié)點

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("請輸入要購買的航班號:");

scanf("%s",fid);

ffSelect=selectFlinfo(flinfoHead,fid);

if(!ffSelect)

{

printf("未找到對應(yīng)航班,按任意鍵繼續(xù)-----\n");

getch();

system("cls");

continue;

}

system("cls");

printf("航班號:%s座位信息如下:\n",ffSelect-fid);

showSinfo(ffSelect);

printf("請輸入要購買的座位編號(輸入0返回主菜單):");

scanf("%s",sid);

if(!strcmp(sid,"0"))

{

system("cls");

continue;

}

else

{

sfSelect=selectSinfo(ffSelect,sid);

if(!sfSelect||sfSelect-sell)

{

printf("未找到對應(yīng)座位或該座位已出售,請重新輸入!按任意鍵繼續(xù)-----\n");

getch();

system("cls");

continue;

}

printf("購買成功!按任意鍵繼續(xù)-----");

sfSelect-sell=1;

getch();

system("cls");

}

}

return0;

}

SINFO*selectSinfo(FLINFO*flinfo,char*sid)//選擇座位,返回節(jié)點

{

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)//顯示航班對應(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)//選擇航班號,返回節(jié)點

{

while(flinfoHead-next)

{

if(!strcmp(flinfoHead-next-fid,fid))

returnflinfoHead-next;

flinfoHead=flinfoHead-next;

}

returnNULL;

}

voidprintfFlinfo(FLINFO*flinfoHead)

{

while(flinfoHead-next)

{

printf("目的地:%s,航班號:%s\n----起飛時間:%s,抵達(dá)時間:%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獲取時間字符串

{

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格式的時間字符串轉(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é)點,如果想手動輸入,請在這里添加?。?!正常軟件開發(fā),這一步應(yīng)該是從數(shù)據(jù)庫讀取!

{

FLINFO*ffHead=NULL,*flinfoTail=NULL,fNew;

//--------添加一個航班信息----需要增加按照我下面調(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,"臺北");

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é)點

//添加航班信息鏈表的節(jié)點flinfoHead:頭節(jié)點(第一次傳NULL會自動生成),flinfoTail:尾節(jié)點,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--)//按順序生成對應(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)存申請失敗

{

if(p==NULL)

{

printf("\n異常:內(nèi)存申請失敗!回車結(jié)束程序!\n");

while(getch()!='\r');

exit(0);

}

}

請教下網(wǎng)上訂飛機票的程序。

1、網(wǎng)上訂票流程:

登陸訂票網(wǎng)站,可以注冊,也可以不注冊。然后用它們的機票信息查詢系統(tǒng),一般可選擇出發(fā)城市,目的地城市,乘機時間等,然后查詢。在查詢出來的結(jié)果后面選擇你要預(yù)訂的航班。預(yù)訂完了,如果有網(wǎng)上支付的網(wǎng)站,可以直接在網(wǎng)上支付。有些網(wǎng)站則需要通過銀行轉(zhuǎn)賬或者票到付款。

2、登機流程:

現(xiàn)在都是用電子客票,也就是說只要你預(yù)訂了這個服務(wù),因為機票是實名制,與你的姓名和證件號碼對應(yīng)的,就有一個服務(wù)代碼。到了機場,拿著你的證件,就可以辦理登機牌,然后候機登機。如果不需要報銷,這樣就可以了,如果需要報銷,就讓給你訂票的機構(gòu)送發(fā)票給你。

3、網(wǎng)上訂票可靠嗎?

掌握了嘗試,就可靠。A、選擇國內(nèi)知名的機構(gòu)就沒有問題。如攜程、億龍、辦公通差旅等。B、選擇的機構(gòu)只要是常年服務(wù)的,就沒有問題。他們不會因為你的一張票就咋了自己的招牌,一張票幾百元,做一個機票網(wǎng)站,運營幾年也不至于幾百元吧。C、選擇正規(guī)單位,唯一的標(biāo)準(zhǔn)時看他有沒有機票代理資質(zhì),你可以致電這些機構(gòu),然他們告訴你他們的機票代理資質(zhì)編號和他們單位的名稱,你可以上中國民航協(xié)會的官網(wǎng),驗證他們的信息。

4、機票與身份確認(rèn):

在網(wǎng)站訂票,給誰訂,就需要填寫誰的姓名和證件號碼,如果有若干個人,一一填寫,這些信息就會和航班對應(yīng)。完了就會有對應(yīng)的信息錄入航空機票系統(tǒng)。到了機場,憑證件就可以辦理登機了。

5、如何退票:

現(xiàn)在國內(nèi)的機票預(yù)訂網(wǎng)站一般不提供網(wǎng)上退票。但是他們都有自己的客服電話,如果需要退票,致電他們的客服就可以了。

6、網(wǎng)上預(yù)訂機票需要注意的事項:

A、選擇合適的機構(gòu),就是上面給你的那幾個都可以。

B、網(wǎng)上訂票,很多人也會選擇網(wǎng)上支付。注意在家里的電腦上支付,不要造成密碼外泄等問題。

C、需要不需要報銷,在預(yù)訂的時候需要說清楚。

D、預(yù)訂時乘機人姓名和證件類型及號碼一定要說正確。否則會造成無法登機。

簡單的航空航天售票系統(tǒng)程序,請用C++編寫,越簡單越好

#include iostream

#include string.h

#include stdio.h

using namespace std;

int main();

//*****************************************

void dingpiao()

{

cout"歡迎您訂購飛機票!"endl;

cout"非常感謝!"endl;

cout"我們將為您提供最優(yōu)質(zhì)的服務(wù)!"endl;

cout" 0 返回上級菜單 "endl;

int i=0;

while(i)

{

cout"請選擇按鍵(0):";

cini;

if(i!=0)

cout" 0 返回上級菜單 "endl;

}

}

void tuipiao()

{

cout"您可以退飛機票!"endl;

cout"無論何時"endl;

cout"我們都會為您提供最優(yōu)質(zhì)的服務(wù)!"endl;

cout" 0 返回上級菜單 "endl;

int i=0;

while(i)

{

cout"請選擇按鍵(0):";

cini;

if(i!=0)

cout" 0 返回上級菜單 "endl;

}

}

void watch()

{

cout"您現(xiàn)在可以查看航空公司的票務(wù)情況!"endl;

cout"無論何時"endl;

cout"我們都會為您提供最優(yōu)質(zhì)的服務(wù)!"endl;

cout" 0 返回上級菜單 "endl;

int i=0;

while(i)

{

cout"請選擇按鍵(0):";

cini;

if(i!=0)

cout" 0 返回上級菜單 "endl;

}

}

void browseticket()

{

cout"您可以查詢航空公司的飛機航線信息!"endl;

cout"無論何時"endl;

cout"我們都會為您提供最優(yōu)質(zhì)的服務(wù)!"endl;

cout" 0 返回上級菜單 "endl;

int i=0;

while(i)

{

cout"請選擇按鍵(0):";

cini;

if(i!=0)

cout" 0 返回上級菜單 "endl;

}

}

void change()

{

cout"您現(xiàn)在可以修改航班信息(當(dāng)修改信息不存在時,不運行)!"endl;

cout"無論何時"endl;

cout"我們都會為您提供最優(yōu)質(zhì)的服務(wù)!"endl;

cout" 0 返回上級菜單 "endl;

int i=0;

while(i)

{

cout"請選擇按鍵(0):";

cini;

if(i!=0)

cout" 0 返回上級菜單 "endl;

}

}

void fn()

{

int i=1;

while(i)

{

coutendlendl;

cout"輸入航班信息:"endlendl;

cout" 1 訂購機票(航班號為0結(jié)束輸入) "endl;

cout" 2 反退機票 "endl;

cout" 3 查看航班信息 "endl;

cout" 4 查詢航班信息 "endl;

cout" 5 修改航班信息 "endl;

cout" 0 返回主頁面 "endl;

cout"請選擇按鍵(0-5):";

cini;

coutendl;

if(i=0i=5)

{

switch(i)

{

case 1:dingpiao();break;

case 2:tuipiao();break;

case 3:watch();break;

case 4:browseticket();break;

case 5:change();break;

case 0:

{

cout"謝謝使用!"endl;

};break;

}

}

else

cout"按鍵錯誤!請重新按鍵!"endl;

coutendl;

}

}

void fn1()

{

int i=1;

while(i)

{

coutendlendl;

cout"輸入航班信息:"endlendl;

cout" 1 訂購機票(航班號為0結(jié)束輸入) "endl;

cout" 2 反退機票 "endl;

cout" 3 查看航班信息 "endl;

cout" 4 查詢航班信息 "endl;

cout" 0 返回主頁面 "endl;

cout"請選擇按鍵(0-4):";

cini;

coutendl;

if(i=0i=4)

{

switch(i)

{

case 1:dingpiao();break;

case 2:tuipiao();break;

case 3:watch();break;

case 4:browseticket();break;

case 0:

{

cout"謝謝使用!"endl;

};break;

}

}

else

cout"按鍵錯誤!請重新按鍵!"endl;

coutendl;

}

}

int main()

{

int j=1;

while(j)

{

coutendlendlendl;

cout" $-----------------------------------------$ "endl;

cout" | | "endl;

cout" | ** 歡迎進(jìn)入民航管理系統(tǒng) ** | "endl;

cout" | | "endl;

cout" $-----------------------------------------$ "endl;

cout"管理員進(jìn)入請按1,客戶進(jìn)入請按2:";

cinj;

if(j=1j=2)

{

switch(j)

{

case 1:

{

char f[]= "123456";

printf("請輸入密碼并以回車鍵結(jié)束:");

scanf("%s",f);

if(strcmp(f,"123456")==0)

fn();

else

cout"密碼錯誤!請重新選擇按鍵!"endl;

};break;

case 2:

{

cout"^_^客戶能查看和查詢航空信息^_^"endl;

fn1();

break;

};break;

}

}

}

return 0;

}

我寫了一個,基本的功能都實現(xiàn)了,需要的話可以自己更改,供樓主參考。

希望能夠滿意!

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計——航空訂票系統(tǒng)(C語言)

1、任務(wù):航空客運定票的業(yè)務(wù)活動包括:查詢航線、客票預(yù)定和辦理退票等。試設(shè)計一個航空客運定票系統(tǒng),以使上述業(yè)務(wù)可以借助計算機來完成。 2、功能要求: 1) 錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具 體數(shù)據(jù)自定) 2) 查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵 達(dá)城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達(dá)城市, 查詢飛機航班情況; 3) 訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果 該航班已經(jīng)無票,可以提供相關(guān)可選擇航班; 4) 退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件; 5) 客戶資料:有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號; 6) 修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件。 3、要有一個好的界面~~~~~~~~~~~~~~~~~~~~~~~~4、需求分析 系統(tǒng)需求(系統(tǒng)要求實現(xiàn)的功能的具體情況)5、 概要設(shè)計 系統(tǒng)分析(分析系統(tǒng)的功能和具體模塊的劃分) 系統(tǒng)流程(系統(tǒng)的流程圖) 程序詳細(xì)代碼:

C語言程序?qū)戯w機訂票系統(tǒng)

#include stdio.h

#include string.h

#include conio.h

#include ctype.h

#include stdlib.h

#include malloc.h

#include math.h//overflow

#define ok 1

typedef struct Yidingkehu

{//單鏈表

char name[15];//已訂票的客戶姓名

int dingpiaoshu;//已訂票數(shù)量

struct Yidingkehu *next1;//

}Yidingkehu,*Link;

typedef struct Weidingkehu

{//單鏈隊

char name[15];//預(yù)訂票的客戶姓名

int yudingpiao;// 要訂票數(shù)量

struct Weidingkehu *next2;//下一個鏈隊結(jié)點指針

}Weidingkehu,*Qptr;

typedef struct Hangxian

{//創(chuàng)建一個含有六個信息的結(jié)構(gòu)體

char hangbanhao[15];//航班號-

char feijihao[15];//飛機號

int feixingriqi;//起飛時間

int chenkerenshu;//座位數(shù)

int yupiao;//余票

char zhongdianzhai[15];//降落城市

struct Hangxian *next;//指向下一個鏈結(jié)點的指針

struct Yidingkehu *yiding;//定義一個指向已訂票客戶的頭結(jié)點指針

struct Weidingkehu *yudingqueue;

}Hangxian,*Linklist;

Linklist InitLinklist();//01

int InsertLinklist(Linklist head1);//02

void hbhchaxun();//通過航班號查詢

void mddchaxun();//通過目的地查詢

void lurugongneng();//初始化錄入功能

void chaxungongnen();//查詢功能

void dingpiaogongnen();//訂票功能

void tuipiaogongnen();//退票功能

void main()

{

int n;

do{ //打印主界面

printf("\t 歡迎使用航空客運訂票系統(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請選擇:");

scanf("%d",n);printf("\n");

switch(n)

{

case 1: lurugongneng();//錄入功能

break;

case 2: chaxungongnen();//查詢功能

break;

case 3: dingpiaogongnen();//訂票功能

break;

case 4:tuipiaogongnen();//退票功能

break;

default :exit(0);//退出

}

}while(n==1||n==2||n==3||n==4);

}

void lurugongneng()//初始化的單鏈表*********************************************************錄入功能

{

Linklist p;

//int m,n;

if(!p) exit(OVERFLOW);

printf("\t請依次輸入下面幾項內(nèi)容:\n\n");//這里的輸入采用一個個單獨輸入,避免了亂賦值的現(xiàn)象

printf("航班號\n");

gets(p-hangbanhao);//這里的二個gets主要是因為在回車鍵的輸入,其中的第一個是來接收上次的回車

gets(p-hangbanhao);

printf("飛機號\n");

gets(p-feijihao);

printf("終點站\n");

gets(p-zhongdianzhai);

printf("飛行日期\n");

scanf("%d",p-feixingriqi);

printf("乘客總數(shù)\n");

scanf("%d",p-chenkerenshu);

printf("余票數(shù)\n");

scanf("%d",p-yupiao);

}

void chaxungongnen()//******************************************************************查詢功能

{

int n;

printf("\t 查 找 航 線 信 息 \n");

printf("\t+++++++++++++++++++++++++++++\n");

printf("\t==1. 通過目的地查詢 ==\n");

printf("\t==2. 通過航班號查詢 ==\n");

printf("\t+++++++++++++++++++++++++++++\n");

printf("\t請選擇:");

scanf("%d",n);

printf("\n");//格式化

switch(n)

{

case 1:mddchaxun();

break;

case 2:hbhchaxun();

break;

default :break;

}

}

void mddchaxun()//通過目的地查詢

{

char c[15];

int m;

Linklist p=L;

printf("\t請輸入要查詢的目的地:");

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航班號:%s\n",p-hangbanhao);

printf("\t飛機號:%s\n",p-feijihao);

printf("\t飛行時間:周%d\n",p-feixingriqi);

printf("\t余票量:%d\n",p-yupiao);

}

}

else

{//如果不匹配的話就做

printf("\t對不起沒有你要找的目的地:\n\n"); m=0;

}

}while(m!=0);

}

void hbhchaxun()//通過目的地查詢

{

char c[15];

int m;

Linklist p=L;

printf("\t請輸入要查詢的航班號:");

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航班號:%s\n",p-hangbanhao);

printf("\t飛機號:%s\n",p-feijihao);

printf("\t飛行時間:周%d\n",p-feixingriqi);

printf("\t余票量:%d\n\n",p-yupiao);

}

}

else

{//如果不匹配的話就做

printf("\t對不起沒有你要找的航班號:\n"); m=0;

}

}while(m!=0);

}

void dingpiaogongnen()//***************************************************************訂票功能

{

char c[15];

int m=1,piao,ydpiao=0,yd=0,n;//

gets(c);

printf("請輸入終點站名:"); gets(c); printf("\n");

p=L-next;

if(p) {

do{//查找一下,是否有這個航班

if(!p)

{

printf("對不起,沒有你要找的航班:\n\n");

goto loop1;

}

m=strcmpi(p-zhongdianzhai,c);

if(m==0)

{

printf("航班信息:\n");

printf("航班號:%s\n",p-hangbanhao);

printf("飛機號:%s\n",p-feijihao);

printf("飛行時間:周%d\n",p-feixingriqi);

printf("余票量:%d\n",p-yupiao);}

else p=p-next;

}while(m!=0);

if(m==0)

{

do{

printf("\n請輸入你要訂的票數(shù):"); scanf("%d",piao);

if(piao=p-yupiao)

{

h=p-yiding;

if(h)

{

h1=h;

h=h-next1;

h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu));

printf("請輸入你的名字:");

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("對不起,余票 %d 張不足,不能完成訂票\n\n",p-yupiao);

printf(" 是否要重新訂票?\n");

printf("需要請輸入1 否則請按2 預(yù)訂請輸入3 : ");

scanf("%d",m);

printf("\n");

if(m==3) goto loop3;

}

}while(m==1);

}

}

else if(!p)

{

loop3: struct Weidingkehu *q3;

printf("對不起,該航班的票已售完\n");

q.front=p-yudingqueue;

if(q.front==q.rear) printf("沒有人預(yù)訂票,是否要預(yù)訂?\n");

else if(q.front!=q.rear) printf("已有人預(yù)訂票,是否要預(yù)訂?\n");

printf("預(yù)訂請輸入1 否則輸入2 : ");

scanf("%d",n);

printf("\n");

if(n==1)

{

printf("請輸入你的姓名"); gets(q3-name); gets(q3-name);//q3不能指向name???

printf("請輸入訂票數(shù)"); scanf("%d",q3-yudingpiao);

q3-next2=NULL;

q.rear-next2=q3;

q.rear=q3;

printf(" 你已經(jīng)預(yù)訂了 !\n");

}

}

loop1:;

}

void tuipiaogongnen()//***************************************************************退票功能

{

}

請采納答案,支持我一下。

c語言程序設(shè)計飛機訂票系統(tǒng)

呵呵 這個也是我在網(wǎng)上搜的 挺不錯 沒有錯誤

#includestdio.h //標(biāo)準(zhǔn)輸入、輸出頭文件

#includestring.h //包含字符串函數(shù)處理頭文件

#includestdlib.h //包含動態(tài)存儲與釋放函數(shù)頭文件

#define N 10000

struct air //定義結(jié)構(gòu)體數(shù)組

{

int num;

char start[20];

char over[20];

char time[10];

int count;

}s[N];

int i;

int m=0;

#define PRINT "%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //定義輸出格式

void input(); //輸入航班信息

void print(); //輸出航班信息

void save(); //保存航班信息

void read(); //讀取航班信息

void search(); //查找航班信息

void shanchu(); //刪除航班信息

void dingpiao(); //訂票信息

void tuipiao(); //退票信息

void xiugai(); //修改信息

void main()

{

int j;

printf(" ★---您好,歡迎進(jìn)入中國民航管理系統(tǒng)!---★\n");

printf("================================================================================\n");

do

{

printf(" -------- ☆ 1.輸入航班信息 ☆-------- \n\n"

" -------- ☆ 2.瀏覽航班信息 ☆-------- \n\n"

" -------- ☆ 3.修改航班信息 ☆-------- \n\n"

" -------- ☆ 4.查找航班信息 ☆-------- \n\n"

" -------- ☆ 5.刪除航班信息 ☆-------- \n\n"

" -------- ☆ 6.訂票信息 ☆-------- \n\n"

" -------- ☆ 7.退票信息 ☆-------- \n\n"

" -------- ☆ 0.退出 ☆-------- \n\n");

printf("================================================================================\n");

printf("請在0-7中選擇以回車鍵結(jié)束:\n\n");

scanf("%d",j);

switch(j)

{

case 1: input();//調(diào)用輸入模塊

break;

case 2:print();//調(diào)用打印模塊

break;

case 3:xiugai();//調(diào)用修改模塊

break;

case 4:search();//調(diào)用查找模塊

break;

case 5:shanchu(); //調(diào)用刪除模塊

break;

case 6:dingpiao();//調(diào)用訂票模塊

break;

case 7:tuipiao();//調(diào)用退票模塊

break;

case 0:;

break;

}

}while(j!=0); //判斷結(jié)束

printf("謝謝使用,再見!\n");

}//主函數(shù)結(jié)束

void input()//打印模塊程序

{

char f[]="2008china"; //設(shè)置密碼

int y;

printf("請輸入密碼并以回車鍵結(jié)束:\n\n");

scanf("%s",f); //讀取密碼

if(strcmp(f,"2008china")==0)

{

printf("請依次輸入航班信息(機票數(shù)位0結(jié)束輸入):\n\n"

"完成輸入信息請鍵入w以回車鍵結(jié)束\n\n"); //打印提示信息

printf("--------------------------------------------------------------------------\n");

for(i=0;iN;i++)

{

printf("請輸入航班號:\n");

scanf("%d",s[i].num); //讀取航班號

printf("請輸入起始站:\n");

scanf("%s",s[i].start);//讀取起始站

printf("請輸入終點站:\n");

scanf("%s",s[i].over);//讀取終點站

printf("請輸入時間:\n");

scanf("%s",s[i].time);//讀取時間

printf("請輸入機票數(shù)(機票數(shù)為0結(jié)束輸入):\n",m);

scanf("%d",s[i].count);//讀取機票數(shù)

m++;

printf("第%d個信息已經(jīng)輸完是否繼續(xù)?按任意鍵繼續(xù),按 0結(jié)束",m);

scanf("%d",y);

if(y==0)

{

save();//將結(jié)構(gòu)體信息存盤

print();//輸出輸入的航班信息

break;

}

}

}

else

printf("輸入密碼錯誤!請檢查您的密碼是否正確!謝謝!再見!\n\n");

}

void save()//保存模塊程序

{

FILE *fp,*fp1;//定義文件指針

if((fp=fopen("chen.dat","wb"))==NULL)//打開文件并判斷是否出錯

{

printf("創(chuàng)建文件失敗!\n\n");//打印出錯提示

getchar();

return;

}

if((fp1=fopen("hao.dat","wb"))==NULL)//打開文件并判斷是否出錯

{

printf("創(chuàng)建文件失敗!\n\n");//打印出錯提示

getchar();

return;

}

for(i=0;im;i++)

if(fwrite(s[i],sizeof(struct air),1,fp)==0)//向文件寫入數(shù)據(jù),并判斷是否出錯

printf("向文件輸入數(shù)據(jù)失敗!\n\n");

fprintf(fp1,"%d",m);

fclose(fp);//關(guān)閉文件

fclose(fp1);//關(guān)閉文件

}

void read()//從文件讀取信息模塊

{

FILE *fp,*fp1;//定義文件指針

if((fp=fopen("chen.dat","rb"))==NULL)//打開文件,并判斷是否出錯

{

printf("出錯,請檢查文件是否存在,按任意鍵返回住菜單");//打印出錯提示

getchar();

}

if((fp1=fopen("hao.dat","rb"))==NULL)//打開文件并判斷是否出錯

{

printf("創(chuàng)建文件失敗!\n\n");//打印出錯提示

getchar();

return;

}

fscanf(fp1,"%d",m);

fclose(fp1);//關(guān)閉文件

for(i=0;im;i++)

{

fread(s[i],sizeof(air),1,fp);//從文件中讀取信息

}

fclose(fp);//關(guān)閉文件

}

void print()//打印模塊

{

char w[10];

read();//調(diào)用讀取文件函數(shù)

printf("航班號 起始站 終點站 時間 機票數(shù)\n");

for(i=0;im;i++)

{

printf(PRINT);//打印信息

}

printf("請按任意鍵回車鍵結(jié)束返回上層菜單以:\n");

scanf("%s",w);

}

void search()//查詢模塊

{

char name1[20];

char name2[20];

char ii[10];

int n,no;

do

{

printf("請選擇查找方式:\n\n");//打印查詢方式菜單

printf("1.按航班號查找\n\n"

"2.按終點站查找\n\n"

"3.按航線查找\n\n"

"0.返回\n\n");

printf("請在0-3中選擇:\n\n"

"按其他鍵以回車鍵結(jié)束返回主菜單:\n\n");

scanf("%d",n);//讀取查找方式

if(n==0)

break;

switch(n)

{

case 1:

printf("請輸入航班號:\n");

scanf("%d",no);//航班號

break;

case 2:

printf("請輸入終點站名稱:\n");

scanf("%s",name2);//讀取終點站

break;

case 3:

printf("請輸入起始站名稱:\n");

scanf("%s",name1);//讀取起始站

printf("請輸入終點站名稱:\n");

scanf("%s",name2);//終點站

break;

}

read();//調(diào)用讀取函數(shù)

for(i=0;im;i++)

{

if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按終點站起始站判斷輸出條件

{

printf("\n查找航班信息成功!\n");

printf("航班號 起始站 終點站 時間 機票數(shù)\n");

printf(PRINT);//打印信息

break;

}

if(s[i].num==no)//按航班號判斷輸出條件

{

printf("\n查找航班信息成功!\n");

printf("航班號 起始站 終點站 時間 機票數(shù)\n");

printf(PRINT);//打印信息

break;

}

}

no=0;//將航班號賦值為0

printf("沒有您需要的信息或查找完畢:\n\n"

"是否繼續(xù)查找?請鍵入yes或no以回車鍵結(jié)束\n");

scanf("%s",ii);

}while(strcmp(ii,"yes")==0);//判斷結(jié)束

}

void shanchu()//刪除模塊

{

char name1[20];

char name2[20];

char ii[10];

char f[]="2008china";//設(shè)置密碼

int no,n;

printf("請輸入密碼并以回車鍵結(jié)束:\n\n");

scanf("%s",f);//讀取密碼

if(strcmp(f,"2008china")==0) //判斷密碼是否正確

{

do

{

printf("請選擇刪除以方式回車鍵結(jié)束:\n\n");//打印刪除方式菜單

printf("*1.按航班號刪除\n\n"

"*2.按航線刪除\n\n"

"*0.返回\n\n");

printf("請在0-2中選擇以回車鍵結(jié)束:\n");

scanf("%d",n);//讀取刪除方式

if(n==0)

break; //跳出循環(huán)

switch(n)

{

case 1:

printf("請輸入航班號:\n");

scanf("%d",no);//讀取航班號

read();//調(diào)用讀取函數(shù)

break;//跳出循環(huán)

case 2:

printf("請輸入起始站 名稱:\n");

scanf("%s",name1);//讀取起始站

printf("請輸入終點站名稱:\n");

scanf("%s",name2);//讀取終點站

read();//調(diào)用讀取函數(shù)

break;//跳出循環(huán)

}

for(i=0;im;i++)

{

if(s[i].num==no||strcmp(s[i].start,name1)==0strcmp(s[i].over,name2)==0)//判斷輸入信息是否存在

{

s[i]=s[m-1];

m--;

}

}

printf("查找完畢或沒有這個信息\n\n");

printf("是否繼續(xù)刪除\n");

printf("請鍵入yes或no以回車鍵結(jié)束\n");

scanf("%s",ii); //讀取是否繼續(xù)信息

save(); //調(diào)用讀取函數(shù)

if(!strcmp(ii,"yes")) //判斷是否繼續(xù)刪除

printf("請按任意鍵以回車鍵結(jié)束返回上層菜單:\n");

break;

}while(n!=1n!=2n!=3n!=4n!=0); //判斷結(jié)束

}

else

printf("對不起密碼錯誤!您不是管理員,不能使用此項功能!謝謝!再見!\n\n");

}

void dingpiao()//訂票模塊

{

int n;

char a[10];

do

{

search();//調(diào)用查詢模塊

printf("請輸入您要訂的機票數(shù)以回車鍵結(jié)束:\n");

scanf("%d",n);//讀取所訂機票數(shù)

if(n0)

{

printf("請輸入有效的機票數(shù)!\n");//判斷機票數(shù)是否出錯

break;

}

if(s[i].count!=0s[i].count=n)//判斷是否出錯

{

s[i].count=s[i].count-n;

save();//調(diào)用保存函數(shù)

printf("訂票成功!\n\n");

break;

}

if(s[i].countn)//判斷是否出錯

{

printf("請輸入有效的機票數(shù):\n");

break;

}

printf("是否繼續(xù)? 請輸入yes或no以回車鍵結(jié)束:\n");//判斷是否繼續(xù)訂票

scanf("%s",a);

}while(!strcmp(a,"yes"));//判斷結(jié)束

}

void tuipiao()//退票模塊

{

int n;

char a[10];

do

{

search();//調(diào)用查詢模塊

printf("請輸入您要退的機票數(shù)目:\n");

scanf("%d",n);//輸入所退票數(shù)

if(n0) //判斷票數(shù)是否有效

printf("請輸入有效的機票數(shù)!\n");

s[i].count=s[i].count+n;

save(); //調(diào)用保存模塊

printf("退票成功!\n\n");

printf("是否繼續(xù)? 請鍵入yes或no以回車鍵結(jié)束:\n\n");//判斷是否繼續(xù)退票

scanf("%s",a);

}while(!strcmp(a,"yes"));//判斷并跳出循環(huán)

getchar();

}

void xiugai() //修改模塊

{

struct xiu //定義結(jié)構(gòu)體

{

int no;

char name1[20];

char name2[20];

char time[20];

int count;

}x[1];

char j[10];

char f[]="2008china";//設(shè)置密碼

int n;

printf("請輸入密碼并以回車鍵結(jié)束:\n\n");

scanf("%s",f);//讀取密碼

if(strcmp(f,"2008china")==0)//判斷是否出錯

{

read();//調(diào)用讀取模塊

do

{

printf( "請選擇修改方式:\n\n"

"*1,按航班號修改:\n\n"

"*2,按航線修改: \n\n");

printf("請在1---2中修改以回車鍵結(jié)束:\n\n");

scanf("%d",n);//讀取修改方式

switch(n)

{

case 1:printf("請輸入航班號:\n");

scanf("%d",x[0].no);//讀取航班號

break;

case 2:printf("請輸入起始站:\n");

scanf("%s",x[0].name1);//讀取起始站

printf("請輸入終點站:\n");

scanf("%s",x[0].name2);//讀取終點站

break;

}

for(i=0;im;i++)

{

if(strcmp(s[i].over,x[0].name1)==0strcmp(s[i].over,x[0].name2)==0)//判斷輸出條件

{

printf("航班號 起始站 終點站 時間 機票數(shù)\n");

printf(PRINT);

break;

}

if(s[i].num==x[0].no)//判斷輸出條件

{

printf("航班號 起始站 終點站 時間 機票數(shù)\n");

printf(PRINT);

break;

}

}

x[0].no=0; //將結(jié)構(gòu)體中的號為零

printf("請輸入新航班號、起始站、終點站、時間(星期幾)、機票數(shù):\n");

scanf("%d%s%s%s%d",x[0].no,x[0].name1,x[0].name2,x[0].time,x[0].count);//定義輸入格式

s[i].num=x[0].no;//替換航班號

strcpy(s[i].start,x[0].name1);//替換其始站

strcpy(s[i].over,x[0].name2);//替換終點站

strcpy(s[i].time,x[0].time);//替換時間

s[i].count=x[0].count;//替換機票數(shù)

save();//調(diào)用保存模塊

printf("是否繼續(xù)?請鍵入yes或no以回車鍵結(jié)束:\n\n");

scanf("%s",j);

}while(strcmp(j,"yes")==0); //判斷結(jié)束

}

else

printf("對不起密碼錯誤!您不是管理員,不能使用此項功能!謝謝!再見!\n\n");

}

關(guān)于《飛機票訂票系統(tǒng)》的介紹到此就結(jié)束了。

尚華空乘 - 航空資訊_民航新聞_最新航空動態(tài)資訊
備案號:滇ICP備2021006107號-341 版權(quán)所有:蓁成科技(云南)有限公司    網(wǎng)站地圖
本網(wǎng)站文章僅供交流學(xué)習(xí),不作為商用,版權(quán)歸屬原作者,部分文章推送時未能及時與原作者取得聯(lián)系,若來源標(biāo)注錯誤或侵犯到您的權(quán)益煩請告知,我們將立即刪除。