1、沈阳航空航天大学C语言课程设计火车站售票系统沈 阳 航 空 航 天 大学 课程设计学 号 班 级 姓 名 指导教师 郭建新2013年8月30日沈阳航空航天大学课程设计任务书系:材料科学与工程 专业:金属材料工程 班级:24110102学号: 题目:火车站售票系统一、课程设计时间20132014第1学期第1周,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:每天“沈阳大连”有5次的火车(假设),具体的数据如下:班次 发车时间 载客量 已售票数D1 06:40 500 0D2 09:30 600 0A1 13:00 800 0A2 16:00 800 0L1 20:00 500
2、0请你开发一个小程序,以完成每天的“沈阳大连”的售票业务。要求如下:能够售票和退票。某个车次已经过了开车时间,则该班次今天不再售票。可以随时显示售票现状,并以文件(myfile.txt)的形式保存当天各个车次的售票情况。三、课程设计要求程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“售票”、“退票”、“显示当前售票情况”、“保存当天数据”、“退出”等项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书: 课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学
3、生签名:_五、成绩六、教师评语一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是存储函数(save)、卖票函数、退票函数、定售总金额、退出。1. 增强了程序的实用性,使系统用户界面友好、功能明确、操作方便,应采取直接用printf函数的方式在界面上输出可供用户选择的菜单。据此应该能够很好的完成要求2. 售票系统要求存储当天各个车次售票情况,所以程序需要定义结构体变量存储售票情况。系统的整体功能通过记录当天各个车次了解售票情况。编程时采取模块化设计思想,设计主函数,通过主函数中的switch分支选择调用各子函数以实现该系统的
4、各种功能。然后设计相应的子函数来执行系统的各种功能,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。二、程序流程图1 程序总体结构图输入k k=1? 真 假查询当前售票情况 k=2?真 假售票 k=3?真 假 退票 k=4?真 假保存当前车次售票情况 k=0?真 假退出 图1 程序总体结构图2 函数功能图(1) 退票函数tuipiao图2.退票函数结构图(2)卖票函数sell图3.售票函数结构图三、主要界面截图图4.主界面截图图5.查询界面截图图6.售票界面截图图7.退票界面截图图8.保存界面截图图9.退出界面截图四、关键技术分析核心技术的实现方法和程
5、序段:本函数由六个自定义函数和一个主函数组成,其中 主函数以菜单形式调用其他函数来实现要求的所有功能。主函数分别调用保存函数(save)、读取函数、卖票函数、退票函数、订票总金额、退出。程序中较为核心的部分,具体分析如下:1 保存函数通过使用fopen函数和fprintf函数进行文件的打开与数据的输入。void save() /向文件里存 FILE *fp; int i; if(fp=fopen(d:myfile.txt,w+)=NULL) printf(cannot open this filen); return; for(i=0;iSIZE;i+) fprintf(fp, %2s %5s
6、 %3s %3d %3dn,stui.banci,stui.time,stui.chengzailiang,stui.shoupiao,stui.yupiao); fclose(fp); printf(n); printf(*数据保存成功!*n); printf(请输入相应的数字继续操作n);2 查询函数通过比较函数strcmp进行班次的选择,在通过for函数与printf函数来实现结果的输出。void checheng() /查询售票情况 int i; char a50; printf(请输入所需查询的班次n); scanf(%s,a); for(i=0;iSIZE;i+) if(strcm
7、p(stui.banci,a)=NULL) printf(n* 查询售票结果 *n); printf(班次 发车时间 载客量 已售票数 余票 n); printf(%2s %5st %3s%3dtt%3dn,stui.banci,stui.time,stui.chengzailiang,stui.shoupiao,stui.yupiao); 3 售票系统: 定义数组存储从获得的数字,为了能够多次输入,我们可以构造像for(i=0;iSIZE;i+)来实现我们的要求;对于班次的选择可通过 if(strcmp(stui.banci,a)=NULL) 来实现,在通过运算stui.shoupiao=s
8、tui.shoupiao+n与 stui.yupiao=stui.yupiao-n 实现购票,如果买票后,将会显示相关信息来提示买票成功。本函数结束,退出。void sell() /售票 fprintf() fscanf() int i,n; char a50; int i; printf(n*沈阳-大连 火车售票系统*n); printf(班次 发车时间 载客量 已售票数 余票n); for(i=0;iSIZE;i+) printf(%2s %5s %3s %3d %3dn,stui.banci,stui.time,stui.chengzailiang,stui.shoupiao,stui.
9、yupiao); printf(请输入您要购买的班次n); scanf(%s,a); printf(请输入您要购买的票数n); scanf(%d,&n); for(i=0;iSIZE;i+) if(strcmp(stui.banci,a)=NULL) stui.shoupiao=stui.shoupiao+n; stui.yupiao=stui.yupiao-n; printf(*购票成功*n); printf(n*沈阳-大连 火车售票系统*n); printf(班次 发车时间 载客量 已售票数 余票 n); for(i=0;iSIZE;i+) printf(%2s %5s %3s %3d %
10、3dn,stui.banci,stui.time,stui.chengzailiang,stui.shoupiao,stui.yupiao); save(); 4 退票系统退票功能的实现与购票功能的原理相同。5.读取文件通过fopen函数和指针的运用来实现文件的读取。void read() FILE *fp; int i=0; if(fp=fopen(d:myfile.txt,w+)=NULL) printf(文件打开失败!n); return ; else for(i=0;!feof(fp);i+) fread(&stui,sizeof(struct stud),1,fp); fclose(
11、fp);五、个人总结这是我大学以来第一次的课设,通过这次课设,更加锻炼了我的能力,也使我对C语言有了更加深刻的理解。在这五天中,拿着课题的我,不断思考着,要通过怎样的方法去实现它的功能。通过不断的查阅资料,使我更加开阔了我的眼界,在编译过程中,问题不断的出现,每一个细节问题,都将成为成功的绊脚石,每一次的修改过后新的问题又不断的出现,通过这次课设使我了解了细节决定成败,C语言的编译过程中需要大量的细心和耐心。希望在以后的生活中,对待每一件事情,都像在做课设过程中那样要有细心和耐心。六、参考文献 谭浩强C程序设计北京:清华大学出版社,2005七、源程序#include /声明需要的库文件 #in
12、clude#include#include#include#define SIZE 5 /符号常量。void checheng(); /这里对所有定义的函数进行申明 void save();void sell();void tuipiao();void topic();void menu();void read();struct stud /这里定义结构体类型和变量,用于存放信息 char banci30; char time30; char chengzailiang30; int shoupiao; int yupiao;stuSIZE= D1,06:40,500,0,500, D2,09
13、:30,600,0,600, A1,13:00,800,0,800, A2,16:00,800,0,800, L1,20:00,500,0,500;void main() int k; topic(); getchar(); while(1) menu(); scanf(%d,&k); switch(k) case 1: checheng(); break; case 2: sell(); break; case 3: tuipiao(); break; case 4: save(); break; case 0: return; void topic() printf(*n); printf
14、(* * *n); printf(* * * *n); printf(* * HUOCHEZHANSHOUPIAOXITONG * *n); printf(* * HUANYINGJIRU * *n); printf(* * * *n); printf(* * *n); printf(*n); printf( All rights are pro. by WQ.,2013.8.27 n); printf(*n); void menu() printf( * ); printf(n 1 查询当前售票情况); printf(n 2 购票); printf(n 3 退票 ); printf(n 4
15、保存数据); printf(n 0 退出); printf(n 选择05继续 );void checheng() /查询售票情况 int i; char a50; printf(请输入所需查询的班次n); scanf(%s,a); for(i=0;iSIZE;i+) if(strcmp(stui.banci,a)=NULL) printf(n* 查询售票结果 *n); printf(班次 发车时间 载客量 已售票数 余票 n); printf(%2s %5st %3s%3dtt%3dn,stui.banci,stui.time,stui.chengzailiang,stui.shoupiao,
16、stui.yupiao); void save() /向文件里存 FILE *fp; int i; if(fp=fopen(d:myfile.txt,w+)=NULL) printf(cannot open this filen); return; for(i=0;iSIZE;i+) fprintf(fp, %2s %5s %3s %3d %3dn,stui.banci,stui.time,stui.chengzailiang,stui.shoupiao,stui.yupiao); fclose(fp); printf(n); printf(*数据保存成功!*n); printf(请输入相应的
17、数字继续操作n);void sell() /售票 fprintf() fscanf() int i,n; char a50; int i; printf(n*沈阳-大连 火车售票系统*n); printf(班次 发车时间 载客量 已售票数 余票n); for(i=0;iSIZE;i+) printf(%2s %5s %3s %3d %3dn,stui.banci,stui.time,stui.chengzailiang,stui.shoupiao,stui.yupiao); printf(请输入您要购买的班次n); scanf(%s,a); printf(请输入您要购买的票数n); scanf
18、(%d,&n); for(i=0;iSIZE;i+) if(strcmp(stui.banci,a)=NULL) stui.shoupiao=stui.shoupiao+n; stui.yupiao=stui.yupiao-n; printf(*购票成功*n); printf(n*沈阳-大连 火车售票系统*n); printf(班次 发车时间 载客量 已售票数 余票 n); for(i=0;iSIZE;i+) printf(%2s %5s %3s %3d %3dn,stui.banci,stui.time,stui.chengzailiang,stui.shoupiao,stui.yupiao
19、); save(); void tuipiao()/退票 int i,n; char a50; printf(n*沈阳-大连 火车售票系统*n); printf(班次 发车时间 载客量 已售票数 余票n); for(i=0;iSIZE;i+) printf(%2s %5s %3s %3d %3dn,stui.banci,stui.time,stui.chengzailiang,stui.shoupiao,stui.yupiao); printf(请输入您要退的班次n); scanf(%s,a); printf(请输入您要退的票数n); scanf(%d,&n); for(i=0;iSIZE;i+) if(strcmp(stui.banci,a)=NULL) stui.shoupiao=stui.shoupiao-n; stui.yupiao=stui.yupiao+n;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1