C语言版飞机订票系统

//转至http://blog.sina.com.cn/jchcy2008

#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include<conio.h>
#define N 2

typedef struct plane
{
char ID[10];  
char Start_Place[10];
char End_Place[10];
float price;
int Buy_num;
int Max_num;
char time[20];
}PLANE;
PLANE p[N];

void menu();
void menu1();

void count()
{
char a[10];
int i,num=0;
printf("请您输入要统计的飞机目的地:");
scanf("%s",a);
printf("航班代号     起始地点    目的地    票价    已售     乘客容量 时间/n");
      for(i=0;i<N;i++)
{
    if(strcmp(a,p[i].End_Place)==0)
    {
     num++;
     printf("%s    %s    %s    %7.2f    %d    %d    %d/n",p[i].ID,p[i].Start_Place,p[i].End_Place,p[i].price,p[i].Buy_num,p[i].Max_num,p[i].time);
    }
}
printf("/n您想统计的航班有%d条!/n",num);
getch();   
menu1();

}

void browse()
{
int i;
system( "cls" );                   
printf("浏览航班信息:/n");
printf("航班代号     起始地点    目的地    票价    已售     乘客容量 时间/n");
for(i=0;i<N;i++)
{
    printf("%s    %s    %s    %7.2f    %d    %d    %s/n",p[i].ID,p[i].Start_Place,p[i].End_Place,p[i].price,p[i].Buy_num,p[i].Max_num,p[i].time);
}
getch();
menu();

}

void order()
{
int i,j;
PLANE temp;
for(i=0;i<N;i++)
{
    for(j=i;j<N;j++)
    {
     if(strcmp(p[i].time,p[j].time)>0)
     {
      temp=p[i];
      p[i]=p[j];
      p[j]=temp;
     }
 
    }
}
browse();


}
void enter()
{
int i;
system( "cls" );                   
printf("请您输入航班信息:");
for(i=0;i<N;i++)
{
    printf("航班代号:");
    scanf("%s",p[i].ID);
    printf("起飞地点:");
    scanf("%s",p[i].Start_Place);
    printf("目的地点:");
    scanf("%s",p[i].End_Place);
    printf("票价:");
    scanf("%f",&p[i].price);
    p[i].Buy_num=0;
    printf("乘客容量:");
    scanf("%d",&p[i].Max_num);
    printf("起飞时间:");
    scanf("%s",p[i].time);
}

getch();
menu();
}

void buy()
{
char t[20],place[20];
int i,w=0,num;
printf("时间");
scanf("%s",t);
printf("mudidi");
scanf("%s",place);
for(i=0;i<N;i++)
{
    if(strcmp(t,p[i].time)==0&&strcmp(place,p[i].End_Place)==0)
    {
     w=1;
     printf("%s    %s    %s    %7.2f    %d    %d    %s/n",p[i].ID,p[i].Start_Place,p[i].End_Place,p[i].price,p[i].Buy_num,p[i].Max_num,p[i].time);
     printf("买几张票!");
     scanf("%d",&num);
     if(p[i].Buy_num+num>p[i].Max_num)
     {
      printf("当前余票不足,只剩%d张",p[i].Max_num-p[i].Buy_num);
     }
     else
     {
      p[i].Buy_num=p[i].Buy_num+num;
      printf("购票成功!");
     }
    }

}
if(w==0)
    printf("没有您要得票!");
getch();   
menu1();

}
void back()
{
char id[20];
int i,w=0;
printf("id:");
scanf("%s",id);
for(i=0;i<N;i++)
{
    if(strcmp(id,p[i].ID)==0)
    {
     p[i].Buy_num--;
     printf("退票成功");
     w=1;
    }
}
if(w==0)
    printf("退票失败");
getch();   
menu1();
}
void bowse_time()
{
char a[20];
int i,w=0;
printf("请您输入要查询的飞机起飞时间:");
scanf("%s",a);
printf("航班代号     起始地点    目的地    票价    已售     乘客容量 时间/n");
      for(i=0;i<N;i++)
{
    if(strcmp(a,p[i].time)==0)
    {
     w=1;
     printf("%s    %s    %s    %7.2f    %d    %d    %s/n",p[i].ID,p[i].Start_Place,p[i].End_Place,p[i].price,p[i].Buy_num,p[i].Max_num,p[i].time);
    }
}
if(w==0)
    printf("没有您想查询的航班!/n");
getch();   
menu1();

}
void bowse_palce()
{
char a[10];
int i,w=0;
printf("请您输入要查询的飞机目的地:");
scanf("%s",a);
printf("航班代号     起始地点    目的地    票价    已售     乘客容量 时间/n");
      for(i=0;i<N;i++)
{
    if(strcmp(a,p[i].End_Place)==0)
    {
     w=1;
     printf("%s    %s    %s    %7.2f    %d    %d    %d/n",p[i].ID,p[i].Start_Place,p[i].End_Place,p[i].price,p[i].Buy_num,p[i].Max_num,p[i].time);
    }
}
if(w==0)
    printf("没有您想查询的航班!/n");
getch();   
menu1();
}
void bowse_ID()
{
char a[10];
int i,w=0;
printf("请您输入要查询的飞机航班号:");
scanf("%s",a);
printf("航班代号     起始地点    目的地    票价    已售     乘客容量 时间/n");
      for(i=0;i<N;i++)
{
    if(strcmp(a,p[i].ID)==0)
    {
     w=1;
     printf("%s    %s    %s    %7.2f    %d    %d    %d/n",p[i].ID,p[i].Start_Place,p[i].End_Place,p[i].price,p[i].Buy_num,p[i].Max_num,p[i].time);
    }
}
if(w==0)
    printf("没有您想查询的航班!/n");
getch();   
menu1();

}
void menu1()
{
int n,w1;
      do
      {
          system( "cls" );                   
          puts("/t/t/t/t    飞机售票操作!/n/n");
          puts("/t/t*********************MENU*********************/n/n");
          puts("/t/t/t/t1.Buy ticket");
          puts("/t/t/t/t2.return ticket");
          puts("/t/t/t/t3.bowse by time");
          puts("/t/t/t/t4.bowse by end palce");
          puts("/t/t/t/t5.bowse by plane ID");
          puts("/t/t/t/t6.return to menu");
          puts("/n/n/t/t**********************************************/n");
          printf("Choice your number(1-6): [ ]/b/b");
          scanf("%d",&n);
          if(n<0||n>6)                                  
         {
            w1=1;
            printf("your choice is not between 1 and 4,Please input again:");
            getchar();
          }
         else    w1=0;
      } while(w1==1);

 

switch(n)
{
     case 1:buy();break;      
     case 2:back();break;    
     case 3:bowse_time();break;     
     case 4:bowse_palce();break;      
     case 5:bowse_ID();break;    
     case 6:menu();
}

}
save()                      
{
int w=1;
FILE *fp;
int i;
system( "cls" );
if((fp=fopen("c://ticket.txt","wb"))==NULL)    
{
    printf("/nCannot open file/n");
    return NULL;
}
      for(i=0;i<N;i++)
if(fwrite(&p[i],sizeof(struct plane),1,fp)!=1)
{      
       printf("file write error/n");
    w=0;
}
if(w==1)
{
      printf("file save ok!/n");
}
fclose(fp);
getch();   
menu();
}

load()                       
{
FILE *fp;
int i,w;
w=1;
system( "cls" );
if((fp=fopen("c://ticket.txt","rb"))==NULL)    
{
    printf("/nCannot open file/n");
    w=0;
    return NULL;
}
for(i=0;!feof(fp);i++)
{  
    fread(&p[i],sizeof(struct plane),1,fp);
}
fclose(fp);
if(w==1)
     printf("Load file ok!");
getch();   
menu();
              
}
main()
{
menu();
}
void menu()
{
int n,w1;
      do
      {
          system( "cls" );                   
          puts("/t/t/t/t    飞机售票系统!/n/n");
          puts("/t/t*********************MENU*********************/n/n");
          puts("/t/t/t/t1.Enter new plane");
          puts("/t/t/t/t2.Browse all");
          puts("/t/t/t/t3.opreration");
          puts("/t/t/t/t4.Save file");
          puts("/t/t/t/t5.Load file");
          puts("/t/t/t/t6.Exit");
          puts("/n/n/t/t**********************************************/n");
          printf("Choice your number(1-6): [ ]/b/b");
          scanf("%d",&n);
          if(n<0||n>6)                                  
         {
            w1=1;
            printf("your choice is not between 1 and 6,Please input again:");
            getchar();
          }
         else    w1=0;
      } while(w1==1);

switch(n)
{
     case 1: enter();break;      
     case 2: browse();break;    
     case 3: menu1();break;     
     case 4: save();break;     
     case 5: load();break;     
     case 6: exit(0);
}
}

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值