纯C语言实现火车售票系统
这是好久之前写的一个火车售票系统,写的非常粗糙,后来也没改了,希望遇见有缘人继续优化吧。
主要的功能是:设置车次,删除车次,买票,改签,退票,查询等。
#include#include #include #include #include #defineMAXNUM10000 #defineNum100 typedefstructtrain { intTrain_num;//火车编号 charTrain_end[10];//终点站 intTrain_price;//票价 intleftnum;//余票数量 }Train_Ticket; typedefstructperson{ intmark;//标记 intsnum;//身份号码 charsex[10];//买票人性别 //charTrain_start[8]; charname[10];//买票人姓名 }Person; typedefstructnode { Train_Ticketdata[MAXNUM]; intlen; }SeqList; Personpa1[Num],pa2[Num]; voidinit_Seqlist(SeqList*); voidSale(SeqList*,FILE*); voidWithdraw(FILE*); voidInquiry(SeqList*); voidSelect(SeqList*,FILE*); voidDelete(SeqList*); voidInit(SeqList*,structtraint); voidInput(SeqList*); voidExchange(SeqList*,FILE*fp); intmain() { SeqList*q; FILE*fp; fp=fopen("train.dat","wb"); q=(SeqList*)malloc(sizeof(SeqList)); intsel; Input(q); system("cls"); system("color3f");//改变颜色 system("cls"); while(1){ printf("-------------------------------------\n"); printf("-----WelcometoYaiTaitrainstation--\n"); printf("1--SetTickets--");//初始化 printf("\n2--BookTicket--");//买票 printf("\n3--ExchangeTicket--");//改签 printf("\n4--WithdrawTicket--");//退票 printf("\n5--DeleteTicket--");//删除车次 printf("\n6--SelectTicket--");//查询 printf("\n7--Inquiry--");// printf("\n8--Exit--");//退出 printf("\n-------------------------------------"); printf("\nPleaseinputyourchoice:"); scanf("%d",&sel); getchar(); switch(sel) { case1: init_Seqlist(q);break; case2: if(q->len==0) { printf("------------------\n"); printf("Notickets!\n"); printf("------------------\n");break; }else{ Sale(q,fp);break; } case3: Exchange(q,fp);break; case4: Withdraw(fp);break; case5: Delete(q);break; case6: Select(q,fp);break; case7: Inquiry(q);break; case8: printf("------------------------------\n"); printf("---Thankyouforyouruse!---\n"); printf("------------------------------\n"); exit(1); default:printf("Entererror!!\n"); } printf("请按ENTER返回主菜单\n"); getchar(); } return0; } voidInput(SeqList*L) { inti; structtraintra[5]={{206,"beijing",200,20}, {301,"chengdu",350,20}, {432,"shangha",400,20}, {783,"qingdao",175,20}, {312,"hangzho",480,20} }; for(i=0;i<5;i++) Init(L,tra[i]); } voidInit(SeqList*L,structtraint) { inti=L->len; L->data[i].Train_num=t.Train_num; strcpy(L->data[i].Train_end,t.Train_end); L->data[i].Train_price=t.Train_price; L->data[i].leftnum=t.leftnum; L->len++; } voidinit_Seqlist(SeqList*L) { inti,d,n; d=L->len; printf("-------------车次设置-------------\n"); printf("请输入你想设置的车次数量:"); scanf("%d",&n); for(i=d;i data[i].Train_num); printf("请输入车次终点站:"); scanf("%s",&L->data[i].Train_end); printf("请输入设置的票价:"); scanf("%d",&L->data[i].Train_price); printf("请输入余票的数量:"); scanf("%d",&L->data[i].leftnum); L->len++; if((L->len)>1&&i<(L->len-1)) { printf("请输入下班车次信息\n"); } } printf("Initiationfinish!\n"); } voidSale(SeqList*L,FILE*fp) { inti=0,k,a,j; if((fp=fopen("train.dat","ab+"))==NULL) { printf("Cannotopenfile!\n"); exit(1); } printf("------------买票服务------------\n"); printf("请输入你想购置车票数:\n"); scanf("%d",&a); if(a>1){ printf("请分别输入%d名乘客信息\n",a); } elseif(a<=1) { printf("请输入该名乘客信息\n"); } for(i=0;iF<女>M:"); scanf("%s",&pa1[i].sex); do{ if(strcmp(pa1[i].sex,"F")!=0&&strcmp(pa1[i].sex,"M")!=0){ printf("性别输入错误!请重新输入!\n"); scanf("%s",&pa1[i].sex); } }while(strcmp(pa1[i].sex,"F")!=0&&strcmp(pa1[i].sex,"M")!=0); printf("请先输入你的身份证号码:"); scanf("%d",&pa1[i].snum); } Inquiry(L); for(j=0;jlen;i++){ if(k==L->data[i].Train_num){ pa1[j].mark=i;//标记点位 printf("确定选择购买%d车次的列车吗(yesorno)\n",L->data[i].Train_num); scanf("%s",&answer); do { if(strcmp(answer,"yes")!=0){ printf("你的输入有误,请重新输入!\n"); scanf("%s",&answer); } }while(strcmp(answer,"yes")!=0); if(strcmp(answer,"yes")==0){ printf("你已支付该车票的价格%d元\n",L->data[i].Train_price); L->data[i].leftnum--; }elseif(strcmp(answer,"no")==0){ printf("请重新选择你要购买的车次编号\n"); } } } printf("Ticketspurchasedsuccess!\n"); } for(i=0;ilen;i++){ if(L->data[i].Train_num==n) { true=1; if(i len-1) { L->data[i].Train_num=L->data[i+1].Train_num; L->data[i].Train_price=L->data[i+1].Train_price; L->data[i].leftnum=L->data[i+1].leftnum; strcpy(L->data[i].Train_end,L->data[i+1].Train_end);L->len--; printf("--------------------\n"); printf("--已删除该车次信息--\n"); printf("--------------------\n"); } if(i==L->len-1) { L->len--; printf("--------------------\n"); printf("--已删除该车次信息--\n"); printf("--------------------\n"); } } } if(true==0) { printf("Nothisticketnumbers!\n"); } } voidSelect(SeqList*L,FILE*fp) { SeqList*q; q=(SeqList*)malloc(sizeof(SeqList)); inti,a,b,true=0; printf("-------------------查询服务-------------\n"); printf("----------------------------------------\n"); printf("1.按乘客的名称查询2.按乘客证件号查询\n"); printf("---------------------------------------\n"); if((fp=fopen("train.dat","rb+"))==NULL) { printf("Canotopenfile!\n"); } fseek(fp,0L,SEEK_END); intd=ftell(fp)/sizeof(Person); rewind(fp); fread((void*)&pa2,sizeof(Person),d,fp); scanf("%d",&a); switch(a) { case1: { charna[20]; printf("请输入该乘客的姓名:\n"); scanf("%s",&na); for(i=0;i data[b].Train_end); printf("第%d号列车票价:%d\n",L->data[b].Train_num,L->data[b].Train_price); printf("乘客姓名:%s\n",pa2[i].name); printf("乘客证件信息:%d\n",pa2[i].snum); printf("---------------------------------\n"); } } } break; case2: { intw; printf("请输入你的证件号:\n"); scanf("%d",&w); for(i=0;i data[b].Train_end); printf("第%d号列车票价:%d\n",L->data[b].Train_num,L->data[b].Train_price); printf("乘客姓名:%s\n",pa2[i].name); printf("乘客证件信息:%d\n",pa2[i].snum); printf("---------------------------------\n"); } } }break; default: printf("------------------------------\n"); printf("--你的输入有误,请重新输入!--\n"); printf("------------------------------\n"); Select(q,fp); break; } if(true==0) { printf("没有该乘客的信息!\n"); } fclose(fp); //getchar(); } voidExchange(SeqList*L,FILE*fp) { printf("------------改签服务-----------\n"); printf("请输入你的姓名:\n"); charta[10]; if((fp=fopen("train.dat","rb+"))==NULL) { printf("Canotopenfile!\n"); } Personp[Num]; fseek(fp,0L,SEEK_END); intr=ftell(fp)/sizeof(Person); rewind(fp); fread((void*)&p,sizeof(Person),r,fp); intm,i,d,j,y,h; scanf("%s",&ta); for(i=0;i data[d].Train_end); L->data[d].leftnum++; } } Inquiry(L); printf("请重新输入你想去的目的地的车次编号:"); scanf("%d",&m); for(j=0;j len;j++) { if(m==L->data[j].Train_num) { L->data[j].leftnum--; printf("-------------------------\n"); printf("---你的改签服务已完成!--\n"); printf("-------------------------\n"); d=j; } } for(i=0;i name,na))==0) continue; j++; } fclose(fp); fp=fopen("train.dat","wb"); fwrite((void*)pe,sizeof(Person),n-1,fp); printf("-------------------------\n"); printf("---你的退票服务已完成!--\n"); printf("-------------------------\n"); } voidInquiry(SeqList*L) { inti; if(L->len==0) { printf("Noticketleft!\n"); } else { printf("----------------------------Ticketsinformation----------------------\n"); printf("火车车次编号车次路线车票售价剩余票数"); for(i=0;i len;i++){ printf("\n%dYantai--%s%d%d\n",L->data[i].Train_num,L->data[i].Train_end,L->data[i].Train_price,L->data[i].leftnum); printf("---------------------------------------------------------------------\n"); } } }
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。