回复 9楼 loveminttea
不客气。自己动手就好啦。
唯实惟新 至诚致志
#include <stdio.h> #include <string.h> #include <stdlib.h> struct hangban { char hangbanhao[20]; /* 是字符串,不是单个字母,有原来的num没有用到,删了 */ char qishizhan[20]; char zhongdianzhan[20]; int yushoushu; int yishoushu; int feixingshijian; long ID; }; struct inf { char name[20]; long ID; }; struct inf T[999]; int n=0; int i,j,k,h,d,z; struct hangban stu[200]; struct hangban *p; void lr(); void ll(); void cx(); void xg(); void sc(); void main() { loop2: printf("+---------------------------+\n"); printf("| 欢迎使用航空订票系统 |\n"); printf("+---------------------------+\n"); printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n"); do { printf("\n\t\t\t--------------------------------\n"); printf("\t\t\t+ 主菜单 |\n"); printf("\t\t\t--------------------------------\n"); printf("\t\t\t+ [1]----录入 |\n"); printf("\t\t\t+ [2]----订票 |\n"); printf("\t\t\t+ [3]----查询 |\n"); printf("\t\t\t+ [4]----退票 |\n"); printf("\t\t\t+ [5]----修改 |\n"); printf("\t\t\t+ [0]----退出 |\n"); printf("\t\t\t--------------------------------\n"); printf("请输入您的选择:"); scanf("%d", &z); switch(z) { case 0 : exit(0); break; /* 退出系统 */ case 1 :lr();break; case 2 :ll();break; case 3 :cx();break; case 4 :sc();break; case 5 :xg();break; default:printf("\n无效选项!"); break; } } while(z!= 0); } void lr()/*添加函数*/ { int y=1; p=stu; /* 指向第一个空指针,以输入新信息 */ do { printf("--------------------\n"); printf("请输入飞机航班号:"); scanf("%s",p->hangbanhao); /* 请楼主对比红色部分修改前后的区别 */ printf("请输入飞机起始站:"); scanf("%s",p->qishizhan); printf("请输入飞机终点站:"); scanf("%s",p->zhongdianzhan); printf("输入飞机飞行日期:"); scanf("%d",p->feixingshijian); printf("请输入预售票总数:"); scanf("%d",&p->yushoushu); printf("请输入已售票总数:"); scanf("%d",&p->yishoushu); n++; p++; printf("\n1.继续输入.\n0.输入完毕.\n"); printf("请选择:"); scanf("%d",&y); } while(y==1); printf("提示:输入完毕!你一共输入%d个\n",n); } void ll()/*显示函数*/ { loop1: printf("航班总数:%d\n", n); printf("航班号\t起始站\t终点站\t飞行时间\t预售票总数\t已售票总数\t\n"); printf("-----------------------------------------------------\n"); for(i=0;i<n;i++) printf("%s\t%s\t%s\t%d\t%d\t%d\t \n",stu[i].hangbanhao,stu[i].qishizhan,stu[i].zhongdianzhan,stu[i].feixingshijian,stu [i].yushoushu,stu[i].yishoushu); printf("共有%d航班,请您输入您的选择:\n",n); do{scanf("%d",&i);}while(i>9999||i<1); printf("出行日期,星期(1-7):\n"); do{scanf("%ld",&j);}while(j>7||j<1); printf("本航班当天余票为%d张!\n",stu[i].yushoushu-stu[i].yishoushu); printf("请输入您的姓名:\n"); scanf("%s",&T[h].name); printf("\n请输入您的身份证号码:\n"); scanf("%ld",&T[h].ID); printf("\n您的订票信息如下:\n"); printf("姓名 身份证号 航班号 \n"); printf("\n%s%10ld %d\n",T[h].name,T[h].ID,i); printf("\n"); printf("\n\n确定订票,请输入y.\n\n放弃订票,回主选单输入q\n"); do{ scanf("%c",&d); } while(d!='q'&&d!='y'); if(d=='y'); printf("\n订票成功!!\n"); else goto loop2; } void cx()/*查询函数*/ { int c; int i,j; char name[20],w[20]; /* w是字符串,以下num有一处相同 */ if(n!=0) { do{ printf("\n"); printf("+--------------------+\n"); printf("| 起飞城市 请按 1 |\n"); printf("| 抵达城市 请按 2 |\n"); printf("| 取消 请按 0 |\n"); printf("+--------------------+\n"); printf("请输入您的选择:"); scanf("%d", &c); switch(c) { case 0: break; case 1: j=0; printf("请输入起飞城市:"); scanf("%s", w); printf("\n"); for(i=0;i<n;i++) if(strcmp(stu[i].qishizhan,w)==0) /* 字符串比较不能用==,只能用strcmp(),下同 */ { printf("航班号\t起始站\t终点站\t飞行时间\t预售票总数\t已售票总数\t\n"); printf("%s\t%s\t%s\t%d\t%d\t%d\t\n",stu[i].hangbanhao,stu[i].qishizhan,stu[i].zhongdianzhan,stu [i].feixingshijian,stu[i].yushoushu,stu[i].yishoushu); j=1; } if(j==0) printf("提示:没有该航班记录,请核对!"); break; case 2: j=0; printf("请输入抵达城市:"); scanf("%s", name); printf("\n"); for(i=0;i<n;i++) if(strcmp(name,stu[i].zhongdianzhan)==0) { printf("航班号\t起始站\t终点站\t飞行时间\t预售票总数\t已售票总数\t\n"); j=1; printf("%s\t%s\t%s\t%d\t%d\t%d\t\n",stu[i].hangbanhao,stu[i].qishizhan,stu[i].zhongdianzhan,stu [i].feixingshijian,stu[i].yushoushu,stu[i].yishoushu); } if(j==0) printf("提示:没有该航班记录,请核对!"); break; default: printf("\n提示:无效选项!"); break; } }while(c!= 0); }else printf("提示:无航班数据,请输入数据!"); } void xg()/*修改函数*/ { char num[20]; /* 字符串 */ int i,j,c; if(n!=0) { printf("请输入您要修改的飞机航班号:"); scanf("%s", num); printf("\n"); for(i=0;i<n;i++) if(strcmp(num,stu[i].hangbanhao)==0); j=i; do{ printf("请选择您要修改的航班的信息内容:\n"); printf("+----------------------+\n"); printf("| 航班号 请按 1 |\n"); printf("| 起始站 请按 2 |\n"); printf("| 终点站 请按 3 |\n"); printf("| 飞行时间 请按 4 |\n"); printf("| 预售票总数 请按 5 |\n"); printf("| 已售票总数 请按 6 |\n"); printf("| 取消 请按 0 |\n"); printf("+----------------------+\n"); printf("请输入您的选择:"); scanf("%d", &c); printf("\n"); switch(c) { case 0:break; case 1:printf("请输入航班号:"); scanf("%s",stu[j].hangbanhao); break; case 2:printf("请输入起始站:"); scanf("%s",stu[j].qishizhan); break; case 3:printf("请输入终点站:"); scanf("%s",stu[j].zhongdianzhan); break; case 4:printf("请输入飞行时间:"); scanf("%d",&stu[j].feixingshijian); break; case 5:printf("请输入预售票总数:"); scanf("%d",&stu[j].yushoushu); break; case 6:printf("请输入已售票总数:"); scanf("%d",&stu[j].yishoushu); break; default: printf("\n无效选项!"); break; } }while(c!= 0); }else printf("提示:无航班数据,请输入数据!"); } void sc()/*删除函数*/ { char num[20]; /* 字符串 */ int i,j,e; if(n!=0) { printf("航班号\t起始站\t终点站\t飞行时间\t预售票总数\t已售票总数\t\n"); printf("-----------------------------------------------------\n"); for(i=0;i<n;i++) printf("%s\t%s\t%s\t%d\t%d\t%d\t\n",stu[i].hangbanhao,stu[i].qishizhan,stu[i].zhongdianzhan,stu[i].feixingshijian,stu [i].yushoushu,stu[i].yishoushu); printf("请输入您要退票的航班号:"); scanf("%s", num); printf("\n"); for(i=0;i<n;i++) if(strcmp(num,stu[i].hangbanhao)==0) /* 你要核对的信息不要对错了自己定义的变量的意思,这样的错误好几处 */ j=i; if(j!=(n-1)) { for(j=0;j<n-1;j++) { strcpy(stu[j].qishizhan,stu[j+1].qishizhan); strcpy(stu[j].zhongdianzhan,stu[j+1].zhongdianzhan); stu[j].feixingshijian=stu[j+1].feixingshijian; stu[j].yushoushu=stu[j+1].yushoushu; stu[j].yishoushu=stu[j+1].yishoushu; } n--; }else n--; /* 这时里最后一张票没有清空,其实也没有必要 */ printf("提示:退票成功!"); }else printf("提示:无任何购票记录,请购票!"); }