1、武汉科技大学 课程设计学 号_班 级 _姓 名 _指导教师:张雄希20232年 9月 5日武汉科技大学课程设计信息科学与技学院 自动化 学号一、课程设计题目:汽车站售票系统二、课程设计内容:每天“火车站植物园有5个班次的汽车假设,具体的数据如下:班次发车时间载客量已售票数01 06:40 50 002 09:30 40 003 13:00 40 004 16:00 40 005 20:00 50 0为售票员开发一个小程序,以完成每天的“火车站植物园的售票业务。要求如下:能够售票和退票。某个班次已经过了开车时间,那么该班次今天不再售票。可以随时显示售票现状,并以文件myfile.txt的形式保存
2、当天各个车次的售票情况。三、课程设计要求:程序质量:贯彻模块化的程序设计思想,以主函数调用各个功能模块。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括“售票、“退票、“显示当前售票情况、“保存当天数据、“退出5项。目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段3四、个人总结5五、参考文献5六、源程序5一、需求分析通过对任务书内容的详细了解和深入的思考得知,整个程序可以分为三大局部.定义变量,输入数据,输出数据.但是在整个程序的执行过程当中,随处都体现了方便乘客购票、退票、查询售票与车次的思想,并且结合结构体与文件的读写来储存数据,以实现售票的数据化管理. 用
3、户界面友好,功能明确,操作方便。信息表达清楚明确。1. 定义变量:声明结构体,定义变量,为变量赋初值,为下一步工作做好准备。2输入数据:用户可以按自己意愿输入车次进行查询,进而根据售票情况进行自主的选择够票。3输出数据:根据用户的需要输出车次、时间、售票情况等数据,以方便用户了解情况。程序结束后还有推出功能,增加了程序的可操控性。二、程序流程图定义变量,结构体定义变量,结构体指针输入车次scanf(%s,b)for(i=0;iN;i+)输入买票数目scanf(%d,&m) if(strcmp(STi.banci,b)=0) 是 判断车次是否相同 否 是 否 否输出购置情况printf(xxx-
4、购置成功-xxx);储存Save()储存Save()printf(xxx-退票成功-xxx);输出退票情况否是if(strcmp(STi.banci,b)=0)判断车次是否相同for(i=0;iN;i+)输入退票数目scanf(%d,&m)scanf(%d,&m)scanf(%d,&m)scanf(%d,&m)输入车次scanf(%s,b)定义变量,结构体三、核心技术的实现说明及相应程序段下面对程序做以详细介绍:1struct student /x定义结构体x/ char banci10; /x各结构体名称x/ char facheshijian20; char zaikeliang20; i
5、nt maipiao; int yupiao; STN=01,06:40,50,0,50, /x对结构体输入数据x/ 02,09:30,40,0,40, 03,13:00,40,0,40, 04,16:00,40,0,40, 05,20:00,50,0,50 ;2void tuipiao() /x退票x/int i,m;char b15;printf(nnxxx-当前情况-xxxxxxn);printf(班次 发车时间 载客量 已售票数 余票 n);for(i=0;iN;i+)printf(%3s %10s %10s %8d %8dn,STi.banci,STi.facheshijian,ST
6、i.zaikeliang,STi.maipiao,STi.yupiao);printf(请输入您要退的班次(格式如:02):n);scanf(%s,b);printf(请输入您要退的张数(格式如:3):n);scanf(%d,&m);for(i=0;i=0) /x判断售票数x/STi.maipiao=STi.maipiao-m;STi.yupiao=STi.yupiao+m;printf(退票成功!);printf(nnxxx-退票结果-xxxxxxn);printf(班次 |发车时间 |载客量 |已售票数 |余票n); /x显示售票情况x/for(i=0;iN;i+)printf(%4s %
7、10s %7s %8d %8dn,STi.banci,STi.facheshijian,STi.zaikeliang,STi.maipiao,STi.yupiao);save(); /x保存x/ 3void sell() /x售票x/int i,m;char b15;int i;printf(nnxxx-售票情况-xxxxxxn);printf(班次 发车时间 载客量 已售票数 余票 n);for(i=0;iN;i+)printf(%3s %10s %10s %8d %8dn,STi.banci,STi.facheshijian,STi.zaikeliang,STi.maipiao,STi.y
8、upiao);printf(请输入您要购置的班次(格式如:02):n); scanf(%s,b);printf(请输入您要购置的票数格式如:5:n);scanf(%d,&m);for(i=0;iN;i+)if(strcmp(STi.banci,b)=0) /x判断班次是否符合x/ STi.maipiao=STi.maipiao+m;STi.yupiao=STi.yupiao-m;printf(xxx-购置成功-xxx);printf(nnxxx-售票情况-xxxxxxn);printf(班次 发车时间 载客量 已售票数 余票 n);for(i=0;iN;i+)printf(%3s %10s %
9、10s %8d %8dn,STi.banci,STi.facheshijian,STi.zaikeliang,STi.maipiao,STi.yupiao);/xx/save();四、个人总结经过了短短的一周的C语言课程设计,我对C语言有了更进一步的了解。懂得了将C程序模块的好处。用主函数调用子函数的方法,这样一来就把一个大的程序分成了几个小的程序,这样不仅降低了程序的难度还使程序的编辑思路更加清晰明了。在编制程序的过程中,我也遇到了许多较难解决的问题,例如:文件数据的读取,语法错误的查找,算法错误的查找以及文件的存储等问题。不过在老师的帮助和指导下,让我学到了程序的单步运行,和监视断点等方法
10、来解决一些算法的错误。总的来说,C语言课程设计的综合训练就是让我把以前学到的理论知识应用与在实际生活的到了应用。五、参考文献 谭浩强C程序设计北京:清华大学出版社,2023六、源程序#include stdio.h#include stdlib.h#include string.h#include conio.h#include time.h#define N 5struct student /x定义结构体x/ char banci10; char facheshijian20; char zaikeliang20; int maipiao; int yupiao; STN=01,06:40,
11、50,0,50, 02,09:30,40,0,40, 03,13:00,40,0,40, 04,16:00,40,0,40, 05,20:00,50,0,50 ;/x声明各函数x/void search(); void save();void sell();void localtimes();void tuipiao();int menu();int menu() /x定义菜单x/ int c; printf(1.查询显示当前售票情况.n); printf(2.显示当前时间.n); printf(3.买票.n); printf(4.退票.n); printf(5.储存数据.n); printf(6.退出售票系统.n); do printf(n 请选择(1-6)继续:); scanf(%d,&c); while