📄 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 + -