请高手帮忙如何修改订票系统
程序代码:
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> /*定义存储火车信息的结构体*/ struct train { char num[10]; /*列车号*/ char city[10]; /*目的城市*/ char takeoffTime[10]; /*发车时间*/ char receiveTime[10]; /*到达时间*/ int checi; /*车次*/ int price; /*票价*/ int bookNum ; /*票数*/ }; /*订票人的信息*/ struct man { char trainnum[10]; /*列车号*/ char num[10]; /*ID*/ char name[10]; /*姓名*/ int bookNum ; /*需求的票数*/ }; typedef struct node /*定义火车信息链表的结点结构*/ { struct train data ; struct node * next ; }Node,*Link ; /*定义订票人链表的结点结构*/ typedef struct people { struct man data ; struct people*next ; }bookMan,*bookManLink ; void InsertTraininfo(Link linkhead) /*添加列车数据*/ { struct node *r,*s,*p; char num[10]; r = linkhead ; s = linkhead->next ; while(r->next!=NULL) r=r->next ; while(1) { printf("请输入列车号(按0返回)"); scanf("%s",num); if(strcmp(num,"0")==0) break ; while(s) /*判断该列列车信息是否已经存在*/ { if(strcmp(s->data.num,num)==0) { printf(" 第'%s'列列车信息已存在!\n",num); return ; } s = s->next ; } p = (struct node*)malloc(sizeof(struct node)); strcpy(p->data.num,num); /*输入列车信息*/ printf("请输入该列车终点站:"); scanf("%s",p->data.city); printf("请输入该列车出发时间:"); scanf("%s",p->data.takeoffTime); printf("请输入该列车到达时间:"); scanf("%s",&p->data.receiveTime); printf("请输入车票价格:"); scanf("%d",&p->data.price); printf("请输入该列车总票数:"); scanf("%d",&p->data.bookNum); printf("请输入该列车车次:"); scanf("%d",&p->data.checi); r->next=p ; r=p ; } p->next=NULL ; } void logo() /*主界面函数*/ { system("cls"); puts("\t\t********************************************************"); puts("\t\t* 欢迎使用列车订票系统 *"); puts("\t\t********************************************************"); puts("\t\t* 选项: *"); puts("\t\t* 1:添加列车数据 *"); puts("\t\t* 2:查询剩余票数 *"); puts("\t\t* 3:定票 *"); puts("\t\t* 4:退票 *"); puts("\t\t* 0:退出 *"); puts("\t\t********************************************************"); } void Refund(Link l,bookManLink k) /*退票子函数*/ { Node*r ; bookMan*v,*h ; char str[10],str1[10],str2[10]; int mar=0,mar1=0,n; r=l->next; h=k->next; printf("请输入您的姓名:"); scanf("%s",str1); printf("请输入您的ID:"); scanf("%s",str2); while(h) /*用户登录*/ { if(strcmp(h->data.name,str1)==0&&strcmp(h->data.num,str2)==0) {mar1=1;break;} h=h->next; } if(mar1==1) { printf("请输入您要退定哪列列车的票: "); scanf("%s",str); printf("请输入您要退的票数: "); scanf("%d",&n); while(h) { if(strcmp(h->data.trainnum,str)==0&&n==h->data.bookNum) {mar1=2;break;} h=h->next; } } while(r&&mar1==2) { if(strcmp(r->data.num,str)==0) { mar=1 ; printf("\n恭喜!退订成功!\n\n"); r->data.bookNum=r->data.bookNum+n; printTrainInfo1(r);break; } r=r->next ; } if(mar1==0)printf("对不起登录出错!"); if(mar==0&&mar1==1)printf("对不起!您没有定制前往该城市的票!或者您提交票数出错"); } void BookTicket(Link l,bookManLink k) /*订票子函数*/ { Node*r[10],*p,*q; int ch; bookMan*v,*h ; int i=0,t=0,dem; char str[10],str1[10],str2[10],str3[10]; v=k ; while(v->next!=NULL) v=v->next ; printf("请输入您要定制哪个城市的票: "); scanf("%s",&str); p=l->next ; while(p!=NULL) { if(strcmp(p->data.city,str)==0) { r[i]=p ; i++; } p=p->next ; } printf("\n\n相关符合信息:%d\n",i); for(t=0;t<i;t++) printTrainInfo(r[t]); if(i==0) printf("\n\t\t\t对不起!没有找到!\n"); else { printf("\n您确定要定制吗?<1/0>\n"); scanf("%d",&ch); if(ch == 1) { h=(bookMan*)malloc(sizeof(bookMan)); printf("请输入你要定的列车号: "); scanf("%s",str3); strcpy(h->data.trainnum,str3); printf("请输入您的名字: "); /*存储用户信息*/ scanf("%s",&str1); strcpy(h->data.name,str1); printf("请输入您的ID: "); scanf("%s",&str2); strcpy(h->data.num,str2); printf("请输入您要定的票数: "); scanf("%d",&dem); p=l->next ; while(p!=NULL) /*列车总票数计算*/ { if(strcmp(p->data.num,str3)==0) {p->data.bookNum=p->data.bookNum-dem; break; } p=p->next ; } h->data.bookNum=dem ; h->next=NULL ; v->next=h ; v=h ; printf("\n恭喜!您已经定了 %d 张前往%s的票!",dem,p->data.city); getch(); } } } printTrainInfo(struct node*p) /*打印火车票信息*/ { puts("\n信息如下:"); printf(">>列车号: %s\n",p->data.num); printf(">>终点站: %s\n",p->data.city); printf(">>出发时间: %s\n",p->data.takeoffTime); printf(">>到达时间: %s\n",p->data.receiveTime); printf(">>票价: %d\n",p->data.price); printf(">>该列车总票数: %d\n",p->data.bookNum); printf(">>该列车车次: %d\n",p->data.checi); } printTrainInfo1(struct node*p) /*打印某列列车总票数*/ {printf(">>目前前往该城市第%s列列车总票数: %d\n",p->data.num,p->data.bookNum);} void check(Link l) /*查看前往某城市列车总票数*/ { Node*r ; char str[10]; int mar=0 ; r=l->next ; printf("请输入您要查看前往哪个城市列车的总票数: "); scanf("%s",str); while(r) { if(strcmp(r->data.city,str)==0&&r->data.bookNum<200) { mar=1 ; printTrainInfo1(r); } r=r->next ; } if(mar==0) printf("\n\t\t\t对不起!没有该信息!\n"); } int main() /*主函数*/ { int sel; Link l ; bookManLink k ; l=(Node*)malloc(sizeof(Node)); l->next=NULL ; k=(bookMan*)malloc(sizeof(bookMan)); k->next=NULL ; while(1) { logo(); printf("\t\t请选择: "); scanf("%d",&sel); system("cls"); switch(sel) { case 1 : InsertTraininfo(l);break ; case 2 : check(l);break ; case 3 : BookTicket(l,k);break ; case 4 : Refund(l,k);break ; case 0 : return 0; } printf("\n按任意键继续......."); getch(); } return 0; }代码没有问题了,现在我想增加一个功能:在订票的时候增加一个座位信息;例如我定3张某航班的票分别打印出每张票的座位号。我想了好久没有头绪,来请教高手,先谢谢了