订票系统 数据结构
数据结构订票系统中,如何将顾客的信息和票联系起来?怎么样把航班信息存在一个文件里保存起来?
当顾客成功订了票之后,怎样能够把这名顾客的信息和票联系起来,方便退票时用?
哪位大侠帮帮我 谢谢啊!
#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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
脚踏实地吧 真的
实现方式那是相当的多
比如按文件夹给客户信息和票联分
一个客户一个文件夹,票联类似
要在同一文件中呢,用特别的字符标识 一条记录的起始
如
:uid=123
name=abc
字符串搜索函数去定位
引用来自#3楼“罪恶的花生”的帖子
哇,好象是TC,可惜不会
引用来自#4楼“G”的帖子
连第1行都写错了.
叫别人怎么帮你啊.
哇,好象是TC,可惜不会
急啊 大家帮帮忙吧