设计一个火车票票务管理系统,要求实现车票查询、车票购买、车票退订等功能。使用文件来存储所有车票的信息,这些车票信息用一个结构体数组来存取;使用另一个结构体变量来存储乘客已购买车票的信息。
1、要求设计一个火车票票务信息管理程序,实现车票查询、车票购买、车票退订和退出程序,从而完成系统所需功能;
2、用文件来存储所有车票信息,分别用不同的结构体来存取所有车票信息和乘客已购买车票信息;
3、用下标法或指针法来实现对车票信息的存取、显示、查询、增加、删除等操作;
4、系统运行界面如图1所示。
三、数据结构及文件
1、结构体:定义两个结构体分别存取所有车票的信息和乘客已购买车票的信息。
//定义火车车次结构体类型 typedef struct Ticket { char trainnum[20]; /*车次*/ char soursta[20]; /*起点站*/ char deststa[20]; /*终点站*/ float price; /*价格*/ int number; /*剩余车票数量*/ char deptime[20]; /*始发时间*/ char arrtime[20]; /*到站时间*/ }TRAIN; //定义已买车票结构体类型 struct buyticket { char name[20]; /*姓名*/ char trainnum[20]; /*车次*/ char soursta[20]; /*起点站*/ char deststa[20]; /*终点站*/ float price; /*价格*/ char deptime[20]; /*始发时间*/ char arrtime[20]; /*到站时间*/ int buynum; /*购买数量*/ };
2、文件:新建一个文件存储所有车票的信息,文件traininfo.txt(示例)的内容如图2所示。
四、函数定义
源程序中包括的函数如表1所示。
表1 源程序中的函数及其功能
函数原型 功能说明 void menu(int *flag,TRAIN *pticket,struct buyticket *pbuyticket) 打印主菜单 void showticket(int *flag,TRAIN *pticket,struct buyticket *pbuyticket) 显示所有车票信息 void showbuyticket(struct buyticket *pbuyticket) 显示已购买车票信息 void check(int *flag,TRAIN *pticket,struct buyticket *pbuyticket) 查询车票 void buy(int *flag,TRAIN *pticket,struct buyticket *pbuyticket) 购买车票 void returnticket(int *flag,TRAIN *pticket,struct buyticket *pbuyticket) 退订车票 void readfile(TRAIN *pticket) 读文件 void writefile(TRAIN *pticket) 写文件 void main( ) 主函数
五、部分函数
1、读文件函数
//从traininfo.txt中读取所有车票的信息到数组train[5]中 void readfile(TRAIN *pticket) { FILE *fp; int i; if((fp=fopen("d:\\traininfo.txt","r"))==NULL) { printf("文件traininfo.txt打开错误.\n"); exit(0); } for(i=0;i<5;i++) fscanf(fp,"%s%s%s%f%d%s%s",(pticket+i)->trainnum,(pticket+i)-> soursta,(pticket+i)->deststa,&(pticket+i)->price,&(pticket+i)->number, (pticket+i)->deptime,(pticket+i)->arrtime); fclose(fp); }
2、写文件函数
//将修改后的车票信息保存到文件traininfo.txt中 void writefile(TRAIN *pticket) { FILE *fp; int i; if((fp=fopen("d:\\traininfo.txt","w"))==NULL) { printf("文件traininfo.txt打开错误.\n"); exit(0); } for(i=0;i<5;i++) fprintf(fp,"%-8s%-10s%-10s%-12.1f%-12d%-12s%-12s\n",(pticket+i)-> trainnum,pticket->soursta,(pticket+i)->deststa,(pticket+i)->price, (pticket+i)->number,(pticket+i)->deptime,(pticket+i)->arrtime); fclose(fp); }
3、主函数
void main() { TRAIN train[5]; int flag; struct buyticket ticket; menu(&flag,train,&ticket); }
六、源代码
关注+评论获取,我会发送到你的邮箱,或者私信我!
编写的程序效果如下所示: