飞机场订票系统 无法按正确格式把新客户信息存进客户信息文件跟修改航班信息文件里的余票额
跟同学一起合作写的飞机场系统。航班信息存在一个单独的记事本里,订票客户信息存在另一个单独的记事本里。
现在我想完成的是输入航班号跟预定数量,然后判断是否可以成功订票,然后往客户信息记事本里新添加一个客户信息,并且修改航班记事本里该航班的余额。
航班跟客户信息都是用链表构建的。我现在就是可以添加客户信息进文本里,但是格式不对。然后修改航班信息的,程序运行完,文件里的信息全乱了,也没有格式。
以下是我的订票操作的代码。急切希望大神来教教我。或者帮我改改代码。
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #include"plant.h" struct Customerinformation *Creat()//构建客户信息链表 { struct Customerinformation*head,*p,*q; head=(struct Customerinformation*)malloc(sizeof(struct Customerinformation)); head->next=NULL; q=head; p=(struct Customerinformation*)malloc(sizeof(struct Customerinformation)); printf("订票的客户信息:\n姓名\t订票量\t舱位等级 座位号\n"); scanf("%s\t%d\t%d\t%s\n",p->name,&p->number,&p->degree,p->seat); q->next=p; q=p; q->next=NULL; return(head); } /*数据存盘(wt只写)*/ void WriteData_wb(struct System *head) { FILE *fp; struct System *p; if((fp = fopen("D:/航班信息.txt", "wt"))==NULL) printf("\a error! Can not open the file!"); p = head; while(p!=NULL) { if(fwrite(p,sizeof(struct System),1,fp)!=1) { printf("写入数据出错\n"); fclose(fp); return; } p=p->next; } fclose(fp); } /*数据存盘(at追加)*/ void WriteData_ab(struct Customerinformation *head) { FILE *fp; struct Customerinformation *p; if((fp = fopen("D:/订票的客户信息.txt", "at"))==NULL) printf("\a error! Can not open the file!"); p = head; while(p!=NULL) { if(fwrite(p,sizeof(struct Customerinformation),1,fp)!=1) { printf("写入数据出错\n"); fclose(fp); return; } p=p->next; } printf("\a 已预定成功!"); fclose(fp); } void dingpiao(struct System * head)/*根据旅客提出的航班号,订票数额查询并判断,然后订票*/ { struct System * p; p=head->next; char airname[N]; int a; char b[N]; printf("请输入您要预定的航班号\n"); scanf("%s",airname); printf("请输入您要预定的数量\n"); scanf("%d",&a); while(p!=NULL) { if((strcmp(airname,p->airnumber)==0)) { if(p->Eticket<a) { printf("SORRY!\n"); printf("此%s航班号仅仅剩余%d张票\n",p->airnumber,p->Eticket); //printf("是否要排队等待,如果要请输入Y,否则输入N"); //scanf("%s",b); break; } if(p->Eticket>=a) { printf("此%s航班号剩余%d张票\n",p->airnumber,p->Eticket); printf("现在帮您预定\n"); p->Eticket=(p->Eticket)-a; //WriteData_ab();//修改文件里航班的余票额 //WriteData_wb(head);//往预订客户信息文件中添加新客户 WriteData_ab(Creat());//往预订客户信息文件中添加新客户 break; } } else p=p->next; } if(p==NULL) printf("系统中无此航班号信息"); }