1、C程序设计题目编号 C02题目名称 客车票务管理设计目的1、熟悉结构体数组定义、使用、输入、输出等根本操作2、掌握文件的根本操作题目内容假设每天从A市开往B市的客车有假设干个班次,数据格式如下: 班次发车时间载客量已售票数16:5050029:00400311:20400413:30300516:40400请按以下要求开发一个程序,完成每天的售票业务。1.设计客车班次数据的存储格式。2.实现键盘录入或从文件导入客车班次信息。3.实现售票功能某个班次已经过了开车时间,或已无剩票,那么该班次今天不再售票。4.显示当前售票情况。5.保存当天数据。6.设计简单的菜单界面。7.在报告中画出程序流程图,说
2、明程序设计的算法,附完整程序代码。8.在报告中说明程序设计过程中出现的问题、解决方法及编程小结或体会。客车票务管理程序:#include#include#include struct ticket charnumber4; char time10; int otal; int ver;tic=1,6:50,50,0,2,9:00,40,0,3,11:20,40,0,4,13:30,30,0,5,16:40,40,0;int N=5;void input()/输入售车票的信息 / int i;char xp=ticket.txt; FILE xfp; if (fp=fopen(ticket.tx
3、t,w)=NULL) printf(cannot Open filen); exit(0); printf(从A到B班次 时间 总票数 已售票数:n);for(i=0;iN;i+) getchar();printf(%st%st%dt%d,tici.number,tici.time,tici.total,tici.over);printf(n);for(i=0;iN;i+) fread(&tici,sizeof(struct ticket),1,fp); fclose(fp);void seek()/查寻售票的信息/ int i,flag; char s4; printf(请输入查询的班次:n
4、); scanf(%s,s); for(i=0;iN;i+) if(strcmp(tici.number,s)=0) flag=1; printf(该班次的信息:n); printf(班次 发车时间 总票数 已售票n);printf(%st%st%dt%d,tici.number,tici.time,tici.total,tici.over); if(flag=0)printf(无此班次!n); void buy()/乘客售票/int i,flag=0,n,b;char s4;printf(请输入所购的班次:n);scanf(%s,&s); for(i=0;ib)printf(选择票数超出,请
5、重新输入!);break;else printf( 购置成功!祝您旅途愉快! nn); printf(xxx以下是您所买票的信息xxxnn); printf(班次%d 发车时间%s 购置票数 %d,b,tici.time,n); tici.over+=n;break;if(flag=0)printf(无此班次!请重新选择:n); void display()/显示当前售票情况/ int i; printf(当前售票情况:n); printf(班次 发车时间 总票数 已售票n); for(i=0;iN;i+)printf(%st%st%dt%dn,tici.number,tici.time,ti
6、ci.total,tici.over);void save()/保存修改/ int i,flag=0; FILE xfp; fp=fopen(ticket.txt,w); for(i=0;iN;i+) if(fwrite(&tici,sizeof(struct ticket),1,fp)!=1) printf(file write error!); fclose(fp); printf(保存成功!);void main() int select,k;while (k=1) printf(nxxxxxx客车售票管理菜单xxxxxxn); printf(xxxxxxxxxxxxxxxxxxxxxx
7、xxxxxxxxn); printf( xx1.显示车票信息xx n); printf( xx2.查询车票信息xx n); printf( xx3.乘客车票购置xx n); printf( xx4.显示当前信息xx n); printf( xx5.保存售票信息xx n); printf( xx0.退出售票信息xx n); printf(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxn); scanf(%d,&select); getchar(); switch(select) case 1:input();break; case 2:seek();break; case 3:b
8、uy();break; case 4:display();break; case 5:save();break; case 0:return; default:printf(输入错误请重新输入!n); 编程的问题和体会:1 没有熟练的掌握结构体定义和应用等,文件的输入和输出。文件的翻开与保存,以及指针的应用。2 编程序太少,没有对大一点的程序进行练习,缺少经验。3 欠缺程序总体结构的思考。4 以后对程序多进行练习,和对结构体,指针,文件多看,多练习,掌握这方面的知识。客车票务管理程序:#include#include#include struct ticket charnumber4; cha
9、r time10; int otal; int ver;tic=1,6:50,50,0,2,9:00,40,0,3,11:20,40,0,4,13:30,30,0,5,16:40,40,0;int N=5;void input()/输入售车票的信息 / int i;char xp=ticket.txt; FILE xfp; if (fp=fopen(ticket.txt,w)=NULL) printf(cannot Open filen); exit(0); printf(从A到B班次 时间 总票数 已售票数:n);for(i=0;iN;i+) getchar();printf(%st%st%
10、dt%d,tici.number,tici.time,tici.total,tici.over);printf(n);for(i=0;iN;i+) fread(&tici,sizeof(struct ticket),1,fp); fclose(fp);void seek()/查寻售票的信息/ int i,flag; char s4; printf(请输入查询的班次:n); scanf(%s,s); for(i=0;iN;i+) if(strcmp(tici.number,s)=0) flag=1; printf(该班次的信息:n); printf(班次 发车时间 总票数 已售票n);printf(%st%st%dt%d,tici.number,tici.time,tici.total,tici.over); if(flag=0)printf(无此班次!n); void buy()/乘客售票/int i,flag=0,n,b;char s4;printf(请输入所购的班次:n);scanf(%s,&s); for(i=0;ib)printf(选择票数超出,请重