博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
火车售票系统(数据结构课设)
阅读量:6566 次
发布时间:2019-06-24

本文共 8475 字,大约阅读时间需要 28 分钟。

1 #include
2 #include
3 #include
4 #define MAXSIZE 2000 5 /*车票信息*/ 6 typedef struct 7 { 8 char chezhan[20];/*车站*/ 9 char checi[20];/*车次*/ 10 char zuowei[40];/*座位*/ 11 }Data; 12 13 /*顺序表类型定义*/ 14 typedef struct 15 { 16 Data data[MAXSIZE]; 17 int len;/*表长*/ 18 }SqList; 19 20 /*统计所需的票的数量*/ 21 int searchnum(SqList *p,char m[]) 22 { 23 int i,j=0; 24 for(i=1;i<=p->len;i++) 25 { 26 if(strcmp(p->data[i].checi,m)==0) 27 { 28 j++; 29 } 30 } 31 return j; 32 } 33 34 /*查找*/ 35 int search(SqList *p,char m[]) 36 { 37 int i=1; 38 if(p->len==0) 39 { 40 return 0; 41 } 42 else 43 { 44 while(i<=p->len&&strcmp(p->data[i].checi,m)!=0) 45 { 46 i++; 47 } 48 if(i>p->len) 49 { 50 return 0; 51 } 52 53 } 54 return i; 55 } 56 57 /*售票*/ 58 void del(SqList *p,int n,char m[]) 59 { 60 int i,j,k; 61 printf("\n你已成功购买以下车票\n"); 62 printf("\n 车站 车次 座位号\n"); 63 for(i=1;i<=n;i++) 64 { 65 k=search(p,m); 66 if(k!=0) 67 { 68 printf("%8s%8s%8s\n",p->data[k].chezhan,p->data[k].checi,p->data[k].zuowei); 69 for(j=k+1;j<=p->len;j++) 70 { 71 p->data[j-1]=p->data[j]; 72 } 73 p->len--; 74 } 75 } 76 printf("\n"); 77 } 78 79 /*退票*/ 80 void add(SqList *p,Data x) 81 { 82 int i=1,j; 83 while(i<=p->len&&strcmp(p->data[i].checi,x.checi)<0) 84 { 85 i++; 86 } 87 if(p->len==MAXSIZE-1) 88 { 89 printf("\n退票失败!\n"); 90 } 91 else 92 { 93 for(j=p->len;j>=i;j--) 94 { 95 p->data[j+1]=p->data[j]; 96 } 97 p->data[i]=x; 98 p->len++; 99 }100 }101 /*菜单*/102 void menu()103 {104 printf("*******************************************\n");105 printf("* 晋江火车站售票系统 *\n");106 printf("* 1----------------------------------查询 *\n");107 printf("* 2----------------------------------购票 *\n");108 printf("* 3----------------------------------退票 *\n");109 printf("* 0----------------------------------退出 *\n");110 printf("*******************************************\n");111 }112 113 /*主函数*/114 int main()115 {116 FILE *fp;117 int i,sel,n,l,a;118 SqList *p;119 p=(SqList *)malloc(sizeof(SqList));120 p->len=1;121 Data x;122 char m[20];123 do124 {125 menu();126 printf("\n请输入你的选择:");127 scanf("%d",&sel);128 switch(sel)129 {130 case 1:fp=fopen("F:\\Cprogram\\kesheyouhua\\tickets.txt","rb");131 if(fp==NULL)132 {133 printf("\nopen error!\n");134 return 0;135 }136 else137 {138 if(p->len==0)139 {140 printf("\n车票均已售空!\n\n");141 }142 else143 {144 printf("\n 车站 车次 座位号\n");145 for(i=1;!feof(fp);i++)146 {147 fscanf(fp,"%8s%8s%8s\n",p->data[i].chezhan,p->data[i].checi,p->data[i].zuowei);148 printf("%8s%8s%8s\n",p->data[i].chezhan,p->data[i].checi,p->data[i].zuowei);149 }150 p->len=i-1;151 fclose(fp);152 }153 }154 printf("\n");155 break;156 case 2:fp=fopen("F:\\Cprogram\\kesheyouhua\\tickets.txt","rb");157 if(fp==NULL)158 {159 printf("\nopen error!\n");160 return 0;161 }162 else163 {164 if(p->len==0)165 {166 printf("\n车票均已售空,无法购票!\n\n");167 }168 else169 {170 for(i=1;!feof(fp);i++)171 {172 fscanf(fp,"%8s%8s%8s\n",p->data[i].chezhan,p->data[i].checi,p->data[i].zuowei);173 }174 p->len=i-1;175 if(p->len==0)176 {177 printf("\n车票均已售空!\n\n");178 }179 else180 {181 printf("\n请输入要购买的车次和车票数量:");182 scanf("%s%d",m,&n);183 l=searchnum(p,m);184 if(l==0)185 {186 printf("\n此车次的车票已经售空!\n");187 }188 else189 {190 if(l
len;i++)207 {208 fprintf(fp,"%8s%8s%8s\n",p->data[i].chezhan,p->data[i].checi,p->data[i].zuowei);209 }210 fclose(fp);211 }212 }213 }214 if(l>=n)215 {216 del(p,n,m);217 fp=fopen("F:\\Cprogram\\kesheyouhua\\tickets.txt","wb");218 if(fp==NULL)219 {220 printf("open error!");221 return 0;222 }223 else224 {225 for(i=1;i<=p->len;i++)226 {227 fprintf(fp,"%8s%8s%8s\n",p->data[i].chezhan,p->data[i].checi,p->data[i].zuowei);228 }229 fclose(fp);230 }231 }232 }233 }234 }235 fclose(fp);236 }237 break;238 case 3:printf("\n请输入要退的票的购买地点(如:晋江火车站,西安火车站):");239 scanf("%s",x.chezhan);240 if(strcmp("晋江",x.chezhan)==0)241 {242 printf("\n请输入你要退的票的车次和座位:");243 scanf("%s%s",x.checi,x.zuowei);244 add(p,x);245 fp=fopen("F:\\Cprogram\\kesheyouhua\\tickets.txt","wb");246 if(fp==NULL)247 {248 printf("open error!");249 return 0;250 }251 else252 {253 for(i=1;i<=p->len;i++)254 {255 fprintf(fp,"%8s%8s%8s\n",p->data[i].chezhan,p->data[i].checi,p->data[i].zuowei);256 }257 p->len=i-1;258 fclose(fp);259 }260 printf("\n退票成功!\n\n");261 }262 else263 {264 printf("\n由于此车票不是本站出售的,无法让您退票,给您造成的不便敬请谅解!\n\n");265 }266 break;267 }268 }while(sel!=0);269 return 0;270 }

 

转载于:https://www.cnblogs.com/xautlmx/p/3441355.html

你可能感兴趣的文章
获取预制和获取gameObject
查看>>
关于php配置文件
查看>>
JAVA必备——13个核心规范
查看>>
第37周五
查看>>
hdu-----(4514)湫湫系列故事——设计风景线(树形DP+并查集)
查看>>
android常见错误-Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
查看>>
第40周二
查看>>
用户注册
查看>>
使用虚拟机运行Ubuntu时,主机与宿主机共享文件的方法。
查看>>
做一个略调皮的个人主页--相册与随笔篇
查看>>
EJB究竟是什么,真的那么神奇吗??
查看>>
HBase性能调优
查看>>
Python 转义符
查看>>
zsh与oh-my-zsh
查看>>
Qt计算器开发(二):信号槽实现数学表达式合法性检查
查看>>
海茶3 らぶデス3 入门经典教程
查看>>
pstree命令
查看>>
css选择器顺序的小技巧
查看>>
C#之自己定义的implicit和explicit转换
查看>>
dojo 学习笔记之dojo.query - query(id) 与query(class)的差别
查看>>