데이터 구조 훈련 - 비행기 예매 시스템

100734 단어
비행기 예매 시스템 (1 인 완성 제한)
작업: 이 시스템 을 통 해 다음 과 같은 기능 을 실현 할 수 있 습 니 다. 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; }

좋은 웹페이지 즐겨찾기