订票系统 数据结构

发布于 2021-11-10 02:51:17 字数 7498 浏览 725 评论 5

 

数据结构订票系统中,如何将顾客的信息和票联系起来?怎么样把航班信息存在一个文件里保存起来?

 

 

当顾客成功订了票之后,怎样能够把这名顾客的信息和票联系起来,方便退票时用?

哪位大侠帮帮我 谢谢啊!

 
#include<stdio.
#include<stdlib.h>
#include<string.h>
#define null 0
#define M 12
#define B 3
#define S 4
typedef struct
{
    char flight_number[30]; //航班编号
    char se_place[30];  //始发抵达城市
    char dearr_time[30]; //始发抵达时间
    char air_type[30] ;   //机型
    int  discount ;   //折扣
    int  fares;      //票价
    int  seat_cout;    //座位数
    int  flag ;        //满仓情况


}AIR;

AIR air[M];
typedef struct
{
   AIR plan;
}TABLE;
TABLE list[50];
int save()
{
    FILE *fp;
    int i;
    if((fp=fopen("air-plan.txt","w"))==null)
    {
        printf("cannot open file!n");
        return 0;
    }
    printf("n文件的内容是:nn");
    for(i=0;i<M;i++)
    {
        fprintf(fp,"%s ",air[i].flight_number);
        printf("%s ",air[i].flight_number);
        fprintf(fp,"%s ",air[i].se_place);
        printf("%s ",air[i].se_place);
        fprintf(fp,"%s ",air[i].dearr_time);
        printf("%s ",air[i].dearr_time);
        fprintf(fp,"%s ",air[i].air_type);
        printf("%s ",air[i].air_type);
        fprintf(fp,"%d ",air[i].discount);
        printf("%d % ",air[i].discount);
         fprintf(fp,"%d ",air[i].fares);
        printf("%d ",air[i].fares);
        fprintf(fp,"%d ",air[i].seat_cout);
        printf("%d ",air[i].seat_cout);
        fprintf(fp,"%d ",air[i].flag);
        printf("%d n",air[i].flag);
      }
    fclose(fp);
}

void creat()
{
    int i;
    for(i=0;i<M;i++)
    {
        scanf("%s %s %s %s %d %d %d %d",air[i].flight_number,air[i].se_place,
              air[i].dearr_time,air[i].air_type,&air[i].discount,&air[i]. fares,&air[i].seat_cout,&air[i].flag);
    }
    save();
}
void readtxt(void)                     // 构造线性表list及索引表inlist
{
  FILE *fp; int i,d,j; char max[8];
   fp=fopen("air-plan.txt","r");   //以只读方式打开SCORE.TXT文件
  for(i=0;i<M;i++)              // 将SCORE.TXT中的M个数据输到线性表list中
  {
        fscanf(fp,"%s",list[i].plan.flight_number);
        fscanf(fp,"%s",list[i].plan.se_place);
        fscanf(fp,"%s",list[i].plan.dearr_time);
        fscanf(fp,"%s",list[i].plan.air_type);
        fscanf(fp,"%d",&list[i].plan.discount);
        fscanf(fp,"%d",&list[i].plan.fares);
        fscanf(fp,"%d",&list[i].plan.seat_cout);
        fscanf(fp,"%d",&list[i].plan.flag);
  }
    fclose(fp);
}
void writetxt(void)
{
  FILE *fp; int i;
 fp=fopen("air-plan.txt","w"); //  以写方式打开air-plan.TXT文件
for(i=0;i<M;i++)              // 将修改后的数据输出到air-plan.TXT文件中
{       fprintf(fp,"%s",list[i].plan.flight_number);
        fprintf(fp,"%s",list[i].plan.se_place);
        fprintf(fp,"%s",list[i].plan.dearr_time);
        fprintf(fp,"%s",list[i].plan.air_type);
        fprintf(fp,"%d",list[i].plan.discount);
        fprintf(fp,"%d",list[i].plan.fares);
        fprintf(fp,"%d",list[i].plan.seat_cout);
        fprintf(fp,"%d",list[i].plan.flag);
        fprintf(fp,"n");
        printf("%s ",list[i].plan.flight_number);
        printf("%s ",list[i].plan.se_place);
        printf("%s ",list[i].plan.dearr_time);
        printf("%s ",list[i].plan.air_type);
        printf("%d ",list[i].plan.discount);
        printf("%d ",list[i].plan.fares);
        printf("%d ",list[i].plan.seat_cout);
        printf("%d ",list[i].plan.flag);
        printf("n");
}
 fclose(fp);
 }       // 关闭SCORE.TXT文件

void  hao_chaxun()
{
	int i,count=0;
	char temp[30];
	FILE *fp;
    fp=fopen("air-plan.txt","w");
	printf("请输入航班号 :");
	scanf("%s",temp);
	for(i=0;i<M;i++)
	{
        if(strcmp(temp,list[i].plan.flight_number)!=0)
           count++;
        else
           break;
	}
	if(count>=M)
	   printf("没有查到相关的航班,请重新输入!n");
    else
    {
    	printf("%s %s %s %s %d %d %d %dn",list[i].plan.flight_number,list[i].plan.se_place,
              list[i].plan.dearr_time,list[i].plan.air_type,list[i].plan.discount,list[i].plan.fares,
			  list[i].plan.seat_cout,list[i].plan.flag);
    }
    fclose(fp);
}
void city_chaxun()
{
    int i,count=0;
	char temp[30];
	FILE *fp;
    fp=fopen("air-plan.txt","w");
	printf("请输入起飞抵达城市 :");
	scanf("%s",temp);
	for(i=0;i<M;i++)
	{
        if(strcmp(temp,list[i].plan.se_place)==0){
           printf("%s %s %s %s %d %d %d %dn",list[i].plan.flight_number,list[i].plan.se_place,
              list[i].plan.dearr_time,list[i].plan.air_type,list[i].plan.discount,list[i].plan.fares,
			  list[i].plan.seat_cout,list[i].plan.flag);
           count++;}
	}
	if(count==0)
	   printf("没有查到相关的航班,请重新输入!n");
    fclose(fp);
}
void book()
{
    int i,count=0,tic_num;
    char name;
    char temp[30];
	FILE *fp;
    fp=fopen("air-plan.txt","w");
	printf("请输入要预定的航班号 :");
	scanf("%s",temp);
	for(i=0;i<M;i++)
	{
        if(strcmp(temp,list[i].plan.flight_number)!=0)
           count++;
        else
           break;
	}
	if(count>M)
	   printf("没有查到相关的航班,请重新输入!n");
    else
    {
        printf("这是为您查找到的航班:n");
    	printf("%s %s %s %s %d %d %d %dn",list[i].plan.flight_number,list[i].plan.se_place,
              list[i].plan.dearr_time,list[i].plan.air_type,list[i].plan.discount,list[i].plan.fares,
			  list[i].plan.seat_cout,list[i].plan.flag);
		  printf("余票有%dn",list[i].plan.seat_cout);
		  printf("请输入你的姓名:");
		  scanf("%s",&name);
		  printf("请输入你要预定的票数:");
		  scanf("%d",&tic_num);
		  if(tic_num<list[i].plan.seat_cout)
		  {
          printf("订票成功!n");
          list[i].plan.seat_cout=list[i].plan.seat_cout-tic_num;
          }
          else
           printf("对不起,余票张数不足,不能完成订票n");
    }
   fclose(fp);
}



    
int meue()
{   int x;
 	printf("1.按航班号查询n");
	printf("2.按起飞抵达城市查询n");
	printf("请选择1--2:");
    fflush(stdin);
    printf("请输入x的值:");
    scanf("%d",&x);
    if((x!=1)&&(x!=2)&&(x!=0))
        {
            printf("请输入正确的x的值!nn");
        }
    return x;
}
void main()
{
    int x;
    printf("t+++++++++++++++++++++++++++++n");
    printf("t   欢迎使用航空客运订票系统nn");
    printf("t==>1.    录入功能          ==n");
    printf("t==>2.    查询功能          ==n");
    printf("t==>3.    订票功能          ==n");
    printf("t==>4.    退票功能          ==n");
    printf("t==>5.    退出              ==n");
    printf("t+++++++++++++++++++++++++++++n");
    printf("注意:若为建立文件时请先建立文件!n");

     do
    {
        fflush(stdin);
        printf("请输入x的值:");
        scanf("%d",&x);
        if((x!=1)&&(x!=2)&&(x!=3)&&(x!=4)&&(x!=5))
        {
            printf("请输入正确的x的值!nn");
        }
       switch(x)
       {
         case 1:
               printf("文件的建立与输出!n");
               printf("建立的数据文件的内容是(航班号,起降地点,起降时间,机型,折扣,票价,座位数,是否满仓):n");
               creat();
			               break;
         case 2:
               switch(meue())
               {
                 case 1:
                       readtxt();
                  	   hao_chaxun();
					   break;
				 case 2:
	                   readtxt();
	                   city_chaxun();
					   break;
               }
               break;
        case 3:
              readtxt();
              book();
              break;
        case 4:
               readtxt();
               break;
        case 5:
              printf("再见!n");
       }
    }while(x!=0);
}

 

 

 

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

瀞厅☆埖开 2021-11-15 19:45:23

脚踏实地吧 真的

实现方式那是相当的多

比如按文件夹给客户信息和票联分

一个客户一个文件夹,票联类似

要在同一文件中呢,用特别的字符标识 一条记录的起始

:uid=123

name=abc

字符串搜索函数去定位

白龙吟 2021-11-15 13:24:24

引用来自#3楼“罪恶的花生”的帖子

哇,好象是TC,可惜不会

好听的两个字的网名 2021-11-15 11:26:27

引用来自#4楼“G”的帖子

连第1行都写错了.

叫别人怎么帮你啊.

睫毛上残留的泪 2021-11-15 09:48:28

哇,好象是TC,可惜不会

离不开的别离 2021-11-15 09:41:17

急啊  大家帮帮忙吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文