데이터 구조 훈련 - 비행기 예매 시스템
작업: 이 시스템 을 통 해 다음 과 같은 기능 을 실현 할 수 있 습 니 다. 1) 입력: 항공 편 상황 (데 이 터 는 하나의 데이터 파일 에 저장 할 수 있 습 니 다. 데이터 구조, 구체 적 인 데이터 자정) 조회: 특정한 노선 의 상황 (예 를 들 어 항공 편 번 호 를 입력 하고 착륙 시간 을 조회 할 수 있 습 니 다. 이륙 도시, 항공 편 요금, 요금 할인, 항공 편 이 만 료 되 었 는 지 확인 할 수 있 습 니 다);이륙 하여 도시 에 도착 하여 비행기 항공 편 상황 을 조회 할 수 있다.3) 예매: (예매 상황 은 하나의 데이터 파일 에 존재 할 수 있 고 구조 자체 설정) 예매 할 수 있 습 니 다. 만약 에 이 항공 편 이 이미 표 가 없 으 면 관련 선택 가능 한 항공 편 을 제공 할 수 있 습 니 다.4) 환불: 환불 가능, 환불 후 관련 데이터 파일 수정;고객 자 료 는 성명, 증명서 번호, 예약 수량 과 항공 편 상황 이 있 고 주문 서 는 번호 가 있어 야 합 니 다.5) 항공 편 정보 수정: 항공 편 정보 가 바 뀌 면 항공 편 데이터 파일 의 요 구 를 수정 할 수 있다. 상기 기능 설명 에 따라 항공 편 정보, 예매 정보의 저장 구조, 디자인 절차 가 기능 을 완성 한다.
#include
#include
#include
#include
#include
using namespace std;
typedef struct FLIGHT //
{
char number[5]; //
char CityDeparture[10]; //
char CityArrival[10]; //
char TimeDeparture[10]; //
char TimeArrival[10]; //
int price; //
double discount; //
int vacancy; //
} Flight;
typedef struct INDENT //
{
char number[15]; //
char name[10]; //
char CertificateNumber[30]; //
Flight Flight; //
} Indent;
int num_ind=1;
void InputFlight() //
{
Flight a;
FILE *fp;
fp = fopen("flight.txt", "a"); //
if(fp == NULL)
printf("fail to open the file!
");
//
printf(" : 。
");
printf(" :025 09:45 11:30 487 3.5 80
");
printf(" :
");
scanf("%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy);
fprintf(fp,"%3s%6s%6s%8s%8s%5d%5.1lf%4d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
printf("
:%s %s %s %s %s %4d %.1lf %2d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
fclose(fp);
}
void query()//
{
Flight a;
FILE *fp;
int n,ok=1;
fp = fopen("flight.txt", "r");//
if(fp == NULL)
printf("fail to open the file!
");
printf("--------------------------------
");//
printf("1.
");
printf("2.
");
printf("--------------------------------
");
printf("
:");
scanf("%d",&n);
if(n==1)
{
char number[5];
printf(" :");
scanf("%s",number);
while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy))
{
if(!strcmp(a.number,number))
{
ok=0;
break;
}
}
if(ok)
{
printf("
。
");
}
else
{
printf("
! :
");
printf("
");
printf("%4s %6s %8s %9s %8s %6d %6.1lf %4d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
}
}
else if(n==2)
{
char city_de[20],city_ar[20];
printf(" :");
scanf("%s",city_de);
printf(" :");
scanf("%s",city_ar);
while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy))
{
if(!strcmp(a.CityArrival,city_ar)&&!strcasecmp(a.CityDeparture,city_de))
{
if(ok)
{
ok=0;
printf("
! :
");
printf("
");
}
printf("%4s %6s %8s %9s %8s %6d %6.1lf %4d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
}
}
if(ok)
{
printf("
。
");
}
else printf("
");
}
fclose(fp);
}
void BookTicket() //
{
time_t timep;
struct tm *p;
time (&timep);
p=gmtime(&timep);
char numb[20];
Flight a,s[50];
Indent indent;
int ok=1,cnt=0;
char city_de[20],city_ar[20],number[5];
FILE *fp,*fpp;
fp = fopen("flight.txt", "r"); //
if(fp == NULL)
printf("fail to open the file!
");
//
printf(" :");
scanf("%s",city_de);
printf(" :");
scanf("%s",city_ar);
//
while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy))
{
if(!strcmp(a.CityArrival,city_ar)&&!strcasecmp(a.CityDeparture,city_de))
{
if(ok)
{
ok=0;
printf("
! :
");
printf("
");
}
s[cnt++]=a;
printf("%4s %6s %8s %9s %8s %6d %6.1lf %4d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
}
}
if(ok) //
{
printf("
。
");
fclose(fp);
return ;
}
//
printf(" :");
scanf("%s",number);
for(int i=0; i<cnt; i++)
{
if(!strcmp(s[i].number,number))
{
if(s[i].vacancy==0)
{
printf("
, 。
");
for(int j=0; j<cnt; j++)
{
if(s[j].vacancy!=0)
{
printf(" :%s %s->%s %s->%s :%d :%.1lf :%d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
}
}
}
else
{
printf(" , :");
scanf("%s %s",indent.name,indent.CertificateNumber);
Indent tt;
memset(tt.name,0,sizeof(tt.name));
fpp=fopen("indent.txt","r");
num_ind=0;
while(EOF!=fscanf(fpp,"%d %s %s %s %s %s %s %s",&num_ind,tt.Flight.number,tt.Flight.CityDeparture,tt.Flight.CityArrival,tt.Flight.TimeDeparture,tt.Flight.TimeArrival,tt.name,tt.CertificateNumber));
fclose(fpp);
int m,d;
m=1+p->tm_mon;
d=p->tm_mday;
if(num_ind/10000==m*100+d)
{
num_ind%=10000;
num_ind++;
}
else num_ind=1;
indent.number[0]=m/10+48;
indent.number[1]=m%10+48;
indent.number[2]=d/10+48;
indent.number[3]=d%10+48;
indent.number[4]=num_ind/1000+48;
indent.number[5]=num_ind/100%10+48;
indent.number[6]=num_ind/10%10+48;
indent.number[7]=num_ind++%10+48;
indent.number[8]=0;
indent.Flight=s[i];
fp = fopen("flight.txt", "r+");
if(fp == NULL)
printf("fail to open the file!
");
while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy))
{
if(strcmp(s[i].number,a.number)==0)
{
fseek(fp,-2,SEEK_CUR);
fprintf(fp,"%02d",a.vacancy-1);
fseek(fp,-2,SEEK_CUR);
fprintf(fp,"%02d",a.vacancy-1);
break;
}
}
}
break;
}
}
fclose(fp);
fp = fopen("indent.txt", "a"); //
if(fp == NULL)
printf("fail to open the file!
");
printf("-------------------------------------------
");
printf(" !
");
printf(" :%s
:%s %s->%s %s->%s
:%s :%s
",indent.number,indent.Flight.number,indent.Flight.CityDeparture,indent.Flight.CityArrival,indent.Flight.TimeDeparture,indent.Flight.TimeArrival,indent.name,indent.CertificateNumber);
printf("
-------------------------------------------
");
fprintf(fp,"%s %s %s %s %s %s %10s %20s
",indent.number,indent.Flight.number,indent.Flight.CityDeparture,indent.Flight.CityArrival,indent.Flight.TimeDeparture,indent.Flight.TimeArrival,indent.name,indent.CertificateNumber);
fclose(fp);
}
void RefundTicket() //
{
FILE *fp,*f;
int ok=1;
fp = fopen("indent.txt", "r");
f=fopen("a.txt","w");
if(fp == NULL||f==NULL)
printf("fail to open the file!
");
char num[20];
Indent a;
Flight b;
printf(" :");
scanf("%s",num);
//
while(EOF!=fscanf(fp,"%s %s %s %s %s %s %s %s",a.number,a.Flight.number,a.Flight.CityDeparture,a.Flight.CityArrival,a.Flight.TimeDeparture,a.Flight.TimeArrival,a.name,a.CertificateNumber))
{
if(strcmp(num,a.number)==0)
{
ok=0;
continue;
}
else fprintf(f,"%s %s %s %s %s %s %10s %20s
",a.number,a.Flight.number,a.Flight.CityDeparture,a.Flight.CityArrival,a.Flight.TimeDeparture,a.Flight.TimeArrival,a.name,a.CertificateNumber);
}
if(ok)
{
printf(" !
");
fclose(fp);
fclose(f);
return ;
}
else
printf("
!
");
fclose(fp);
fclose(f);
remove("indent.txt");
remove("indent.txt");
rename("a.txt","indent.txt");
rename("a.txt","indent.txt");
fp = fopen("flight.txt", "r+");
if(fp == NULL)
printf("fail to open the file!
");
while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",b.number,b.CityDeparture,b.CityArrival,b.TimeDeparture,b.TimeArrival,&b.price,&b.discount,&b.vacancy))
{
if(strcmp(a.Flight.number,b.number)==0)
{
fseek(fp,-2,SEEK_CUR);
fprintf(fp,"%02d",b.vacancy+1);
fseek(fp,-2,SEEK_CUR);
fprintf(fp,"%02d",b.vacancy+1);
break;
}
}
fclose(fp);
}
void ModifyFlight() //
{
FILE *fp,*f;
int n;
fp=fopen("flight.txt","r");
f=fopen("a.txt","w");
if(fp == NULL||f==NULL)
printf("fail to open the file!
");
char num[10];
Flight a;
printf(" , (1)/ (2):");
scanf("%d",&n);
printf(" :");
scanf("%s",num);
if(n==2)
{
while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy))
{
if(strcmp(a.number,num)==0)
{
printf("
:
:%s %s->%s %s->%s :%d :%.1lf :%d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
printf(" : 。
");
printf(" :025 09:45 11:30 487 3.5 80
");
printf(" :");
scanf("%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy);
fseek(fp,-45,SEEK_CUR);
fprintf(fp,"%3s%6s%6s%8s%8s%5d%5.1lf%4d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
// fseek(fp,-45,SEEK_CUR);
//fprintf(fp,"%3s%6s%6s%8s%8s%5d%5.1lf%4d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
printf("
!
");
printf(" : :%s %s->%s %s->%s :%d :%.1lf :%d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
break;
}
}
}
else if(n==1)
{
int ok;
while(EOF!=fscanf(fp,"%s %s %s %s %s %d %lf %d",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,&a.price,&a.discount,&a.vacancy))
{
if(strcmp(a.number,num)==0)
{
ok=0;
continue;
}
fprintf(f,"%3s%6s%6s%8s%8s%5d%5.1lf%4d
",a.number,a.CityDeparture,a.CityArrival,a.TimeDeparture,a.TimeArrival,a.price,a.discount,a.vacancy);
}
if(ok)
{
printf("
!
");
}
else
printf("
!
");
fclose(fp);
fclose(f);
remove("flight.txt");
rename("a.txt","flight.txt");
return ;
}
fclose(fp);
fclose(f);
}
void query_d() //
{
char name[20],zj[20];
FILE *fp;
int ok=1;
Indent a;
fp = fopen("indent.txt", "r");
if(fp == NULL)
printf("fail to open the file!
");
printf(" :");
scanf("%s",name);
printf(" :");
scanf("%s",zj);
while(EOF!=fscanf(fp,"%s %s %s %s %s %s %s %s",a.number,a.Flight.number,a.Flight.CityDeparture,a.Flight.CityArrival,a.Flight.TimeDeparture,a.Flight.TimeArrival,a.name,a.CertificateNumber))
{
if(!strcmp(name,a.name)&&!strcmp(zj,a.CertificateNumber))
{
if(ok)
{
printf("
!
");
ok=0;
printf("
");
}
printf("%s %6s %7s %8s %8s %9s %5s %9s
",a.number,a.Flight.number,a.Flight.CityDeparture,a.Flight.CityArrival,a.Flight.TimeDeparture,a.Flight.TimeArrival,a.name,a.CertificateNumber);
}
}
if(ok)
{
printf("
!
");
}
}
int main()
{
int n;
while(1)
{
printf("|---------------- A ------------|
");
printf("| /\\ 1. /\\ |
");
printf("| / \\ 2. / \\ |
");
printf("| / \\ 3. / \\ |
");
printf("| /______\\ 4. /______\\ |
");
printf("| / \\ 5. / \\ |
");
printf("| / \\ 6. / \\ |
");
printf("| / \\ 7. / \\ |
");
printf("|---------------------------------------------------|
");
printf("
:");
scanf("%d",&n);
switch(n)
{
case 1:
InputFlight();
break;
case 2:
query();
break;
case 3:
BookTicket();
break;
case 4:
query_d();
break;
case 5:
RefundTicket();
break;
case 6:
ModifyFlight();
break;
case 7:
return 0;
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.