📄 planebookingsystem.cpp
字号:
if(fd.Rate<=0||fd.Rate>1)
{
printf("折扣应该是大于0小于等于1的数\n");
return 0;
}
printf("8.请输入航班可容乘客数量(例如:200):");
scanf("%d",&fd.MaxPerson);
if(fd.MaxPerson<=0)
{
printf("你输入的数据有错\n");
return 0;
}
printf("9.请输入航班已有乘客数量(例如:100):");
scanf("%d",&fd.Person);
if(fd.Person<0 || fd.Person>fd.MaxPerson)
{
printf("你输入的数据有错\n");
return 0;
}
if(0==insertFly(fl,&fd))return 0;
return 1;
}
//修改航班信息
int changeFly(FlyList fl)
{
int number;
printf("修改航班信息\n请输入航班编号:");
scanf("%d",&number);
PFly q=returnFly(fl,number);
if(q==NULL)return 0;
printf("该航班原来的信息:\n");
printFly(&q->fd);
printf("修改航班信息:\n");
FlyData fd;
printf("1.请输入航班编号(例如:123):");
scanf("%d",&fd.Number);
printf("2.请输入航班起飞时间(例如:2008年08月12日12时30分):");
scanf("%s",fd.Up);
fd.Up[24]='\0';
printf("3.请输入航班降落时间(例如:2008年08月12日14时30分):");
scanf("%s",fd.Down);
fd.Down[24]='\0';
printf("4.请输入航班起飞城市(例如:广州):");
scanf("%s",fd.FromCity);
fd.FromCity[49]='\0';
printf("5.请输入航班抵达城市(例如:北京):");
scanf("%s",fd.ToCity);
fd.ToCity[49]='\0';
printf("6.请输入航班票价(例如:1000.99):");
scanf("%f",&fd.Price);
if(fd.Price<0)
{
printf("票价应该是大于0的数\n");
return 0;
}
printf("7.请输入航班标价折扣(例如:0.8):");
scanf("%f",&fd.Rate);
if(fd.Rate<=0||fd.Rate>1)
{
printf("折扣应该是大于0小于等于1的数\n");
return 0;
}
printf("8.请输入航班可容乘客数量(例如:200):");
scanf("%d",&fd.MaxPerson);
if(fd.MaxPerson<=0)
{
printf("你输入的数据有错\n");
return 0;
}
printf("9.请输入航班已有乘客数量(例如:100):");
scanf("%d",&fd.Person);
if(fd.Person<0 || fd.Person>fd.MaxPerson)
{
printf("你输入的数据有错\n");
return 0;
}
if(0==insertFly(fl,&fd))return 0;
return 1;
}
//查询指定编号的航班情况
int findFly(FlyList fl)
{
int number;
printf("查询指定编号的航班情况\n请输入你要查询的航班编号:");
scanf("%d",&number);
PFly q=returnFly(fl,number);
if(q==NULL)return 0;
printf("查询结果:\n");
printFly(&q->fd);
return 1;
}
PFly returnFromFly(FlyList fl,char* city)
{
PFly q=fl;
while(NULL!=q->next)
{
if(strcmp(q->next->fd.FromCity,city)==0)
return q->next;
q=q->next;
}
return NULL;
}
PFly returnToFly(FlyList fl,char* city)
{
PFly q=fl;
while(NULL!=q->next)
{
if(strcmp(q->next->fd.ToCity,city)==0)
return q->next;
q=q->next;
}
return NULL;
}
//查询指定起飞地点的航班情况
int findFromCity(FlyList fl)
{
char city[50];
printf("查询指定起飞地点的航班情况\n请输入起飞城市名字:");
scanf("%s",city);
PFly q=returnFromFly(fl,city);
if(q==NULL)return 0;
printf("查询结果:\n");
printFly(&q->fd);
return 1;
}
//查询指定抵达地点的航班情况
int findToCity(FlyList fl)
{
char city[50];
printf("查询指定抵达地点的航班情况\n请输入抵达城市名字:");
scanf("%s",city);
PFly q=returnToFly(fl,city);
if(q==NULL)return 0;
printf("查询结果:\n");
printFly(&q->fd);
return 1;
}
//删除内存中的数据
int deleteData(FlyList fl,CheckList cl)
{
PFly p=fl->next,q;
while(p!=NULL)
{
q=p;
p=p->next;
free(q);
}
fl->next=NULL;
return 1;
}
//保存数据
int saveData(FlyList fl,CheckList cl)
{
PFly q=fl;
PCheck c=cl;
FILE *file;
//保存航班信息
if(NULL==(file=fopen("flydata.dat","wb")))
return 0;
while(NULL!=q->next)
{
fwrite(&q->next->fd,sizeof(FlyData),1,file);
q=q->next;
}
fclose(file);
//保存机票信息
if(NULL==(file=fopen("checkdata.dat","wb")))
return 0;
while(NULL!=c->next)
{
fwrite(&c->next->cd,sizeof(CheckData),1,file);
c=c->next;
}
fclose(file);
return 1;
}
//读取数据
int readData(FlyList fl,CheckList cl)
{
deleteData(fl,cl);
FILE *file;
//读取航班信息
if(NULL==(file=fopen("flydata.dat","rb")))
return 0;
FlyData fd;
while(!feof(file))
{
fread(&fd,sizeof(FlyData),1,file);
if(feof(file))break;
if(0==insertFly(fl,&fd))return 0;
}
fclose(file);
//读取机票信息
if(NULL==(file=fopen("checkdata.dat","rb")))
return 0;
CheckData cd;
while(!feof(file))
{
fread(&cd,sizeof(CheckData),1,file);
if(feof(file))break;
if(0==insertCheck(cl,&cd))return 0;
}
fclose(file);
return 1;
}
void message()
{
system("cls");
printf(" 航空公司--飞机订票系统 \n");
printf("--------------------------------------------\n");
printf("1.列出航班信息 \n");
printf("2.录入航班信息 \n");
printf("3.修改航班信息 \n");
printf("4.按航班号 查询航班信息 \n");
printf("5.按起飞城市 查询航班信息 \n");
printf("6.按抵达城市 查询航班信息 \n\n");
printf("7.列出所有订票 \n");
printf("8.订票 \n");
printf("9.退票 \n\n");
printf("0.帮助 \n");
printf("c.刷新 \n");
printf("x.退出 \n");
printf("--------------------------------------------\n");
}
void main()
{
system("cls");
FlyList fly;
CheckList check;
if(NULL==(fly=createFlyList()))
{
printf("内存不足,无法运行程序");
exit(0);
}
if(NULL==(check=createCheckList()))
{
free(fly);
printf("内存不中,无法运行程序");
exit(0);
}
readData(fly,check);
char cmd=' ';//命令号
while(cmd!='x')
{
switch(cmd)
{
case '1':
message();
listFly(fly);
break;
case '2':message();
if(addFly(fly)==1)
{
printf("数据录入成功\n");
saveData(fly,check);//==1)printf("数据已经保存到文件里!\n");//保存数据
}
else
printf("失败\n");
break;
case '3':message();
if(changeFly(fly)==1)
{
printf("修改成功\n");
saveData(fly,check);//保存数据
}
else
printf("失败\n");
break;
case '4':message();
if(findFly(fly)==1)
printf("成功查询\n");
else
printf("没有该编号航班\n");
break;
case '5':message();
if(findFromCity(fly)==1)
printf("成功查询\n");
else
printf("没有该城市起飞的航班\n");
break;
case '6':message();
if(findToCity(fly)==1)
printf("成功查询\n");
else
printf("没有抵达该城市的航班\n");
break;
case '7':message();
listCheck(check);
break;
case '8':message();
bookCheck(fly,check);
saveData(fly,check);
break;
case '9':message();
if(refundCheck(fly,check)==0)printf("删除失败\n");
saveData(fly,check);
break;
case '0':
printf("欢迎使用。\n");//帮助说明:输入操作序号时可以同时输入几个,比如输入“c1”程序将先执行“c”清屏命令,再执行“1”列出所有航班信息\n");
break;
case 'c':
default:
message();
}
printf("请输入操作序号:");
if('\n'==(cmd=getchar()))
scanf("%c",&cmd);//接收命令
}
printf("程序已经退出\n谢谢使用!\n");
//程序退出时清除内存
deleteData(fly,check);
free(fly);
free(check);
}
/*
问题描述:设计一个飞机订票系统。
基本要求:
1、录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
2、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
3、订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
4、退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5、修改航班信息:当航班信息改变可以修改航班数据文件
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -