📄 flight.cpp
字号:
#include "public.h"
/*
typedef struct{
char name[10]; //航班名称
char start[10]; //出发地
char destination[10]; //目的地
char date[10];
char time[5];
int price[3]; //舱位价格 0:头等舱 1:公务舱 2:经济舱
int re_ticket[3]; //机票余量
int state; //1正常 0取消
}Flight;
*/
void FlightCopy(Flight &F1,Flight F2)
{
strcpy(F1.date,F2.date);
strcpy(F1.destination,F2.destination);
strcpy(F1.name,F2.name);
strcpy(F1.start,F2.start);
strcpy(F1.time,F2.time);
F1.price[0]=F2.price[0];
F1.price[1]=F2.price[1];
F1.price[2]=F2.price[2];
F1.re_ticket[0]=F2.re_ticket[0];
F1.re_ticket[1]=F2.re_ticket[1];
F1.re_ticket[2]=F2.re_ticket[2];
F1.state=F2.state;
}
int AddFlight(){
Flight flight[10];int i=AvailableTag(0);
FILE *f;///*
if ((f=fopen("Flight.dat","rb"))==NULL)
{
return 0;
}
else
{
fread(&flight,sizeof(flight),1,f);
}
fclose(f);
cout<<"请输入航班名:"<<endl;
fflush(stdin);
scanf("%6s",&flight[i].name);
cout<<"出发地:"<<endl;
fflush(stdin);
gets(flight[i].start);
cout<<"目的地:"<<endl;
fflush(stdin);
gets(flight[i].destination);
cout<<"日期:"<<endl;
fflush(stdin);
gets(flight[i].date);
cout<<"时间:"<<endl;
fflush(stdin);
gets(flight[i].time);
cout<<"头等舱价格:"<<endl;
fflush(stdin);
scanf("%d",&flight[i].price[0]);
cout<<"公务舱价格:"<<endl;
fflush(stdin);
scanf("%d",&flight[i].price[1]);
cout<<"经济舱价格:"<<endl;
fflush(stdin);
scanf("%d",&flight[i].price[2]);
CheckFlight(flight[i]);
flight[i].re_ticket[0]=50;
flight[i].re_ticket[1]=50;
flight[i].re_ticket[2]=50;//*/
flight[i].state=1;
if ((f=fopen("Flight.dat","w+b"))==NULL)
{
return 0;
}
else
{
fwrite(&flight,sizeof(flight),1,f);
}
fclose(f);
cout<<"输入一个航班"<<endl;
return 1;
}
void CheckFlight(Flight &flight){
while(strlen(flight.name)!=6||
strlen(flight.date)<8||
strlen(flight.time)<4||
flight.price[0]<0||flight.price[0]>200000||
flight.price[1]<0||flight.price[1]>200000||
flight.price[2]<0||flight.price[2]>200000
){
if(strlen(flight.name)!=6){
cout<<"航班名必须是6个字符,请重新输入:"<<endl;
fflush(stdin);
gets(flight.name);
}
if(strlen(flight.date)<8||strlen(flight.date)>10){
cout<<"请重新输入日期:"<<endl;
fflush(stdin);
gets(flight.date);
}
if(strlen(flight.time)!=5){
cout<<"时间必须是5个字符,请重新输入::"<<endl;
fflush(stdin);
gets(flight.time);
}
if(flight.price[0]<0||flight.price[0]>200000){
cout<<"头等舱价钱必须在0~200000之间,请重新输入::"<<endl;
fflush(stdin);
scanf("%d",&flight.price[0]);
}
if(flight.price[1]<0||flight.price[1]>200000){
cout<<"公务舱价钱必须在0~200000之间,请重新输入::"<<endl;
fflush(stdin);
scanf("%d",&flight.price[1]);
}
if(flight.price[2]<0||flight.price[2]>200000){
cout<<"经济舱价钱必须在0~200000之间,请重新输入::"<<endl;
fflush(stdin);
scanf("%d",&flight.price[2]);
}
}
}
int CheckFlightState(char FlightName[]){ //看航班有没在
Flight flight[10];
FILE *f;///*
if ((f=fopen("Flight.dat","rb"))==NULL)
{
return 0;
}
else
{
fread(&flight,sizeof(flight),1,f);
fclose(f);
}
for(int i=0;i<AvailableTag(0);i++)
{
if((strcmp(flight[i].name,FlightName))==0)
{
return flight[i].state;
}//if
}//for
return -1;
}
int EditFlight(){
Flight flight[10];char name[10];
FILE *f;
printf("\n\n\t\t请输入要修改的航班名称:");
scanf("%s",&name);
if ((f=fopen("Flight.dat","rb"))==NULL)
{
return 0;
}
else
{
fread(&flight,sizeof(flight),1,f);
fclose(f);
}
for(int i=0;i<AvailableTag(0);i++)
{
if((strcmp(flight[i].name,name))==0)
{
int mode;
system("cls");
cout<<"找到航班"<<endl;
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<"*航班的名称:出发地:目的地: 日 期 : 时 间 :头等舱价格:公务舱价格:经济舱价格*"<<endl;
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<"* "<<flight[i].name<<" "<<flight[i].start<<" "<<flight[i].destination<<" "<<flight[i].date<<" "<<flight[i].time<<" "<<flight[i].price[0]<<" "<<flight[i].price[1]<<" "<<flight[i].price[2]<<" *"<<endl;
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<"0 航班名称 1出发地 2目的地 3日期 4时间 10航班复位"<<endl;
cout<<"5头等舱价格 6公务舱价格 7经济舱价格 8保存 9删除 11取消航班"<<endl;
while(mode!=8&&mode!=9)
{
printf("\n\t\t*输入相应序号进行修改:");
fflush(stdin);
scanf("%d",&mode);
switch(mode)
{
case 0:
cout<<"\n\t\t\t请输入航班的名称:"<<endl;
fflush(stdin);
gets(flight[i].name);break;
case 1:
cout<<"\n\t\t\t出发地:";
fflush(stdin);
gets(flight[i].start);break;
case 2:
cout<<"\n\t\t\t目的地:";
fflush(stdin);
gets(flight[i].destination);break;
case 3:
cout<<"\n\t\t\t日期:";
fflush(stdin);
gets(flight[i].date);break;
case 4:
cout<<"\n\t\t\t时间:";
fflush(stdin);
gets(flight[i].time);break;
case 5:
cout<<"\n\t\t\t头等舱价格:";
fflush(stdin);
scanf("%d",&flight[i].price[0]);break;
case 6:
cout<<"\n\t\t\t公务舱价格:";
fflush(stdin);
scanf("%d",&flight[i].price[1]);break;
case 7:
cout<<"\n\t\t\t经济舱价格:";
fflush(stdin);
scanf("%d",&flight[i].price[2]);break;
case 10:flight[i].re_ticket[0]=50;
flight[i].re_ticket[1]=50;
flight[i].re_ticket[2]=50;//*/
cout<<"\n\t\t\t复位成功!:"<<endl;
case 11:flight[i].state=0;
cout<<"\n\t\t\t取消成功!:"<<endl;
default:break;
}
}//while
if(mode==9)
{
FlightCopy(flight[i],flight[AvailableTag(0)-1]);
FlightCopy(flight[AvailableTag(0)-1],flight[AvailableTag(0)]);
}
if ((f=fopen("Flight.dat","w+b"))==NULL)
{
return 0;
}
else
{
fwrite(&flight,sizeof(flight),1,f);
}
fclose(f);
if(mode==9)
{
cout<<"删除成功!"<<endl;
return 1;
}
else
{
cout<<"修改成功!"<<endl;
return 1;
}
}//if
}//for
cout<<"没找到相应航班!"<<endl;
return 0;
}
int ShowFlight(int mode,int tag[]){
Flight flight[10];int i;
FILE *f;
if ((f=fopen("Flight.dat","rb"))==NULL)
{
return 0;
}
else
{
fread(&flight,sizeof(flight),1,f);
fclose(f);
}
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<"*航班的名称:出发地:目的地: 日 期 : 时 间 :头等舱价格:公务舱价格:经济舱价格*"<<endl;
cout<<"*-----------------------------------------------------------------------------*"<<endl;
if(mode==0) //显示全部
for(i=0;i<AvailableTag(0);i++)
{
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<" "<<flight[i].name<<" "<<flight[i].start<<" "<<flight[i].destination<<" "<<flight[i].date<<" "<<flight[i].time<<" "<<flight[i].price[0]<<" "<<flight[i].price[1]<<" "<<flight[i].price[2]<<" "<<endl;
cout<<"*-----------------------------------------------------------------------------*"<<endl;
}
else //按条件显示
for(i=0;tag[i]>=0||i<AvailableTag(0);i++)
{
if(flight[i].price[1]<20000&&flight[i].price[1]>0)
{
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<" "<<flight[i].name<<" "<<flight[i].start<<" "<<flight[i].destination<<" "<<flight[i].date<<" "<<flight[i].time<<" "<<flight[i].price[0]<<" "<<flight[i].price[1]<<" "<<flight[i].price[2]<<" "<<endl;
cout<<"*-----------------------------------------------------------------------------*"<<endl;
}
}
return 1;
}
int Analyze(){ //航班分析
FILE *f,*f1;
Ticket ticket[10];
Flight flight[10];
char flightnum[10];
char st[10],des[10];
int i,a,flag=0;
if ((f1=fopen("Flight.dat","rb"))==NULL)
{
return 0;
}
else
{
fread(&flight,sizeof(flight),1,f1);
}
fclose(f1);
if ((f=fopen("Ticket.dat","rb"))==NULL)
{
return 0;
}
else
{
fread(&ticket,sizeof(ticket),1,f);
}
fclose(f);
printf("选择你要的承载分析表要求:\n");
printf("1. 航班 2.出发地与目的地\n");
scanf("%d",&a);
switch(a){
case 1:
int tag[10];
ShowFlight(0,tag);
printf("输入航班号:");
scanf("%s",flightnum);
system("cls");
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<"*客户名称: 性别: 身份证 : 座位等级(0:头等舱位 1:公务舱 2:经济舱)*"<<endl;
cout<<"*-----------------------------------------------------------------------------*"<<endl;
for(i=0;i<10;i++){
if(strcmp(ticket[i].name,flightnum)==0)
{ flag++;
cout<<" "<<ticket[i].user<<" "<<ticket[i].sex<<" "<<ticket[i].ID<<" "<<ticket[i].grade<<endl;
}
}
printf("\n\t\t\t剩下的座位数:%d",150-flag);
break;
case 2:
printf("出发地:");
scanf("%s",st);
printf("目的地:");
scanf("%s",des);
system("cls");
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<"*: 航班号: 日期 : 头等舱剩余量:公务舱剩余量:经济舱剩余量:*"<<endl;
cout<<"*-----------------------------------------------------------------------------*"<<endl;
for(i=0;i<10;i++)
{
if((strcmp(flight[i].start,st))==0&&(strcmp(flight[i].destination,des))==0)
{
cout<<flight[i].name<<" "<<" "<<flight[i].date
<<" "<<flight[i].re_ticket[0]<<" "<<flight[i].re_ticket[1]
<<" "<<flight[i].re_ticket[2]<<endl;
}
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -