?? book sys.txt
字號:
訂票系統
通過此系統可以實現如下功能:
錄入:可以錄入航班情況(數據可以存儲在一個數據文件中,數據結構、具體數據自定)
查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達城市,查詢飛機航班情況;
訂票:(訂票情況可以存在一個數據文件中,結構自己設定)可以訂票,如果該航班已經無票,可以提供相關可選擇航班;
退票: 可退票,退票后修改相關數據文件;客戶資料有姓名,證件號,訂票數量及航班情況,訂單要有編號。
修改航班信息:當航班信息改變可以修改航班數據文件
要求:根據以上功能說明,設計航班信息,訂票信息的存儲結構,設計程序完成以上功能。
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#include<time.h>
const MAX=20;
typedef struct time
{
char day[20];
int hour;
int min;
}Time;
typedef struct flight
{
char id[MAX];//航班號
Time leatime;//飛機起飛時間
Time arrtime;//飛機降落時間
char tocity[MAX];//飛機抵達城市
int price;//票價
float discout;//票價折扣
int manren;//能載的人數
int xianren;//現定票的人數
}Flight ,*FL;
typedef struct dpiao
{
int id;
char name[MAX];
char zjnum[MAX];
int dingnum;
FL df;
}Dpiao,*DP;
typedef struct dpxx
{
DP dpx;
struct dpxx *next;
}Dpxx,*DPL;
typedef struct hban
{
Flight *fli;
struct hban *next;
}Hban,*HB;
void init(DPL &d,HB &h)
{
d=new Dpxx;
d->dpx=new Dpiao;
d->next=NULL;
d->dpx->id=0;
h=new Hban;
h->fli=new Flight;
h->next=NULL;
}
void in(HB &h)
{
HB p;
FL q;
p=h;
while(p->next)
p=p->next;
q=new Flight;
cout<<"請輸入航班號:"<<endl;
cin>>q->id;
cout<<"請輸入起飛時間:"<<endl;
cin>>q->leatime.day>>q->leatime.hour>>q->leatime.min;
cout<<"請輸入降落時間:"<<endl;
cin>>q->arrtime.day>>q->arrtime.hour>>q->arrtime.min;
cout<<"請輸入抵達城市:"<<endl;
cin>>q->tocity;
cout<<"請輸入票價,票價折扣:"<<endl;
cin>>q->price>>q->discout;
cout<<"請輸入滿倉人數,現定票人數:"<<endl;
cin>>q->manren>>q->xianren;
p->next=new Hban;
p->next->fli=new Flight;
p->next->fli =q;
p=p->next;
p->next=NULL;
}
void printff(FL f)
{
cout<<"該航班的情況為: "<<endl;
cout<<"\n"<<endl;
cout<<"航班號為: "<<f->id<<endl;
cout<<"\n"<<endl;
cout<<"起飛時間為: "<<f->leatime.day<<" ";
cout<<f->leatime.hour<<" "<<f->leatime.min<<endl;
cout<<"\n"<<endl;
cout<<"降落時間為: "<<f->arrtime.day<<" ";
cout<<f->arrtime.hour<<" "<<f->arrtime.min<<endl;
cout<<"\n"<<endl;
cout<<"抵達城市為: "<<f->tocity<<endl;
cout<<"\n"<<endl;
cout<<"票價為: "<<f->price<<endl;
cout<<"\n"<<endl;
cout<<"票價折扣為: "<<f->discout<<endl;
cout<<"\n"<<endl;
cout<<"滿倉人數為: "<<f->manren<<endl;
cout<<"\n"<<endl;
cout<<"現定票人數為: "<<f->xianren<<endl;
system("pause");
}
void printd(DP d)
{
cout<<"該訂單的情況為: "<<endl;
cout<<"\n"<<endl;
cout<<"號碼為: "<<d->id<<endl;
cout<<"\n"<<endl;
cout<<"客戶姓名為: "<<d->name <<endl;
cout<<"\n"<<endl;
cout<<"客戶證件號碼為: "<<d->zjnum <<endl;
cout<<"\n"<<endl;
cout<<"訂的數量為: "<<d->dingnum <<endl;
cout<<"\n"<<endl;
cout<<"該客戶訂的航班 "<<endl;
printff(d->df);
}
FL chaid(HB &h,char c[])
{
HB p;
p=h->next;
while(p->next)
{
if(!strcmp(p->fli->id,c))
{
printff(p->fli);
return(p->fli);
break;
}
p=p->next ;
}
if(!p->next&&strcmp(p->fli->id,c))
{
cout<<"對不起,沒有該航班情況,請檢查航班號是否輸入錯誤!"<<endl;
cout<<"\n"<<endl;
cout<<"您輸入的航班號為:"<<c<<endl;
cout<<"\n"<<endl;
cout<<"重新輸入請按1,退出請按0"<<endl;
int sel;
cin>>sel;
char cfx[MAX];
if(sel)
{
cout<<"輸入要查詢的航班的航班號:"<<endl;
cin>>cfx;
FL a;
a=chaid(h,cfx);
return a;
}
else
return(NULL);
}
else
{ printff(p->fli);
return(p->fli);
}
}
HB chacity(HB &h,char c[])
{
HB p,q=NULL,r=q;
p=h->next ;
int i=0;
while(p->next)
{
if(!strcmp(p->fli->tocity,c))
{
if(!i)
r=q=p;
else
{
r->next->fli =p->fli;
r=r->next;
}
printff(p->fli);
i++;
}
p=p->next;
}
if(!strcmp(p->fli->tocity,c))
{
printff(p->fli);
i++;
}
if(!i)
{
cout<<"航班信息中沒有抵達該城市的航班!"<<endl;
cout<<"\n"<<endl;
cout<<"請檢查城市名是否輸入錯誤!"<<endl;
cout<<"\n"<<endl;
cout<<"您輸入的城市名為;"<<c<<endl;
cout<<"\n"<<endl;
cout<<"重新輸入請按1,退出請按0"<<endl;
int se;
cin>>se;
if(se)
{
cout<<"輸入要查詢的航班的抵達城市:"<<endl;
char a[MAX];
cin>>a;HB b;
b=chacity(h,a);
return b;
}
else
return q;
}
else
return q;
}
void dengj(DP &book)
{
cout<<"請輸入您的姓名:"<<endl;
cin>>book->name;
cout<<"\n"<<endl;
cout<<"請輸入您的證件號碼:"<<endl;
cin>>book->zjnum;
cout<<"\n"<<endl;
cout<<"輸入您要訂的該航班的票的數量:"<<endl;
cin>>book->dingnum;
}
void bookt(DPL &d,HB h)
{
DPL q=d;
FL hb;
DP book;
book=new Dpiao;
HB cd;
char a[MAX];
cout<<"輸入要訂的航班的航班號:"<<endl;
cin>>a;
hb=chaid(h,a);
if(hb)
{
dengj(book);
book->df=new Flight;
book->df=hb;
if(hb->xianren+book->dingnum>hb->manren)
{
cout<<"該航班的票不夠!"<<endl;
goto city;
}
else
{
hb->xianren+=book->dingnum;
while(q->next)
q=q->next;
book->id=q->dpx->id+1;
q->next=new Dpxx;
q->next->dpx=new Dpiao;
q->next->dpx =book;
q=q->next;
q->next=NULL;
}
}
else
{
cout<<"沒有您要訂的航班";
char city[MAX];
city:
cout<<"請輸入您要去的城市:"<<endl;
cin>>city;
cout<<"\n"<<endl;
cd=chacity(h,city);
if(cd)
{
cout<<"您可以在這些航班中選擇一個!"<<endl;
bookt(d,h);
}
}
}
void tui(DPL &d)
{
DPL p,q;
p=q=d;
cout<<"請輸入您訂單的號碼:"<<endl;
int n;
cin>>n;
while(p)
{
if(p->dpx->id==n)
{
if(p==d)
d=d->next;
else
q->next=p->next;
p->dpx->df->xianren-=p->dpx->dingnum;
}
p=p->next;
}
if(p)
{
cout<<"沒有您輸入的號碼的訂單!"<<endl;
cout<<"\n"<<endl;
cout<<"1-重新輸入號碼 2-退出"<<endl;
xuan:
cout<<"請選擇:"<<endl;
int select;
cin>>select;
if(select==1)
tui(d);
else
if(select==2)
exit(0);
else
{
cout<<"選擇錯誤,請重新選擇:"<<endl;
goto xuan;
}
}
}
void xiugai(HB &h)
{
FL f;
cout<<"請輸入要修改的航班的航班號:"<<endl;
char hbh[MAX];
cin>>hbh;
f=chaid(h,hbh);
if(f)
{
while(1)
{
system("cls");
cout<<"**********請選擇要修改的信息***********"<<endl;
cout<<"\n"<<endl;
cout<<"* 1-航班號 * 2-起飛、抵達時間"<<endl;
cout<<"* 3-抵達城市 * 4-票價、票價折扣"<<endl;
cout<<"* 5- 能載的人數 * 6-現訂票的人數"<<endl;
cout<<"* 0-退出"<<endl;
cout<<"\n"<<endl;
cout<<"***請選擇(0-6):"<<endl;
int select;
cin>>select;
switch (select)
{
case 1:cout<<"請輸入要修改成的航班號:"<<endl;
cin>>hbh;strcpy(f->id,hbh);
break;
case 2:cout<<"請輸入起飛時間:"<<endl;
cin>>f->leatime.day>>f->leatime.hour>>f->leatime.min;
cout<<"請輸入降落時間:"<<endl;
cin>>f->arrtime.day>>f->arrtime.hour>>f->arrtime.min;
break;
case 3:cout<<"請輸入抵達城市:"<<endl;
cin>>f->tocity;
break;
case 4:cout<<"請輸入票價,票價折扣:"<<endl;
cin>>f->price>>f->discout;break;
case 5:cout<<"請輸入滿倉人數:"<<endl;
cin>>f->manren;break;
case 6:cout<<"請輸入現定票人數:"<<endl;
cin>>f->xianren;break;
case 0:exit(0);
default:cout<<"輸入的選擇錯誤!請重新選擇!"<<endl;
break;
}
}
}
else
cout<<"航班信息中沒有您要修改的航班!"<<endl;
}
void main()
{
DPL d;
HB h;
init(d,h);
while(1)
{
system("cls");
cout<<"現在時間為:"<<endl;
system(" date/t");
system(" time/t");
cout<<endl;
cout<<" ***訂票系統***"<<endl;
cout<<"\n "<<endl;
cout<<" * 1 錄入 *"<<endl;
cout<<" * 2 查詢 *"<<endl;
cout<<" * 3 訂票 *"<<endl;
cout<<" * 4 退票 *"<<endl;
cout<<" * 0 退出 *"<<endl;
cout<<"\n "<<endl;
cout<<" 請選擇(0-4):"<<endl;
int s;
cin>>s;
switch(s)
{
case 1:
cout<<"您選擇的是錄入!"<<endl;
in(h);
break;
case 2:
cout<<"您選擇的是查詢!"<<endl;
cout<<"\n "<<endl;
cout<<" ***查詢選項***:"<<endl;
cout<<"\n "<<endl;
cout<<" * 1 按航班號"<<endl;
cout<<" * 2 按抵達城市"<<endl;
cout<<"\n "<<endl;
cout<<" 請選擇(1-2):"<<endl;
int ss;
cin>>ss;
FL z;
if(ss==1)
{
cout<<"您選擇的是按航班號查詢!"<<endl;
cout<<"\n "<<endl;
cout<<"請輸入航班號:"<<endl;
char a[MAX];
cin>>a;
z=chaid(h,a);
}
else
if(ss==2)
{
HB j;
cout<<"您選擇的是按抵達城市查詢!"<<endl;
cout<<"\n "<<endl;
cout<<"請輸入抵達城市:"<<endl;
char c[MAX];
cin>>c;
j=chacity(h,c);
}
else
cout<<"選擇錯誤!"<<endl;
break;
case 3:
cout<<"您選擇的是訂票!"<<endl;
bookt(d,h);
break;
case 4:
cout<<"您選擇的是退票!"<<endl;
tui(d);
break;
case 0:
cout<<"您選擇的是退出!"<<endl;
exit(0);
default:
cout<<"選擇錯誤!"<<endl;
system("pause");
break;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -