收藏 分销(赏)

火车站售票系统-C语言课程设计.doc

上传人:pc****0 文档编号:7647836 上传时间:2025-01-11 格式:DOC 页数:18 大小:178.50KB 下载积分:10 金币
下载 相关 举报
火车站售票系统-C语言课程设计.doc_第1页
第1页 / 共18页
火车站售票系统-C语言课程设计.doc_第2页
第2页 / 共18页


点击查看更多>>
资源描述
沈 阳 航 空 航 天 大学 课程设计 学 号 2010041102031 班 级 04110201 姓 名 王帅 指导教师 郭建新 2012年 6 月 21 日 沈阳航空航天大学 课程设计任务书 系:材料科学与工程 专业:材料成型及控制工程 班级:04110201 学号:2010041102031 题目:火车站售票系统 一、课程设计时间 2011~2012第2学期第16周,共计1周,20学时。 二、课程设计内容 用C语言编写软件完成以下任务: 每天“沈阳→大连”有5次的火车(假设),具体的数据如下: 班次 发车时间 载客量 已售票数 D1 06:40 500 0 D2 09:30 600 0 A1 13:00 800 0 A2 16:00 800 0 L1 20:00 500 0 请你开发一个小程序,以完成每天的:“沈阳→大连”的售票业务。要求如下: ①能够售票和退票。 ②某个火车已经过了开车时间,则该班次不再售票。 ③可以随时显示售票现状,并以文件(myfile.test)的形式保存当天各个车次的售票情况。 三、课程设计要求 程序质量: ² 贯彻结构化的程序设计思想。 ² 用户界面友好,功能明确,操作方便。 ² 用户界面中的菜单至少应包括、“售票”、“退票”、“显示当前售票情况”、“保存当天数据”、“退出”等项。 ² 代码应适当缩进,并给出必要的注释,以增强程序的可读性。 课程设计说明书: ² 课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。 ² 四、指导教师和学生签字 指导教师:________ 学生签名:________ 五、成绩 六、教师评语 目 录 一、需求分析 4 二、程序流程图…………………………………...4 三、关键技术分析 7 四、个人总结 ………10 五、参考文献 ………11 六、源程序 ………11 一、需求分析 (1)售票系统要求存储当天各个车次售票情况,所以程序需要定义结构体变量存储售票情况。系统的整体功能通过记录当天各个车次了解售票情况。编程时采取模块化设计思想,设计主函数,通过主函数中的switch分支选择调用各子函数以实现该系统的各种功能。然后设计相应的子函数来执行系统的各种功能,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。 1、 经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是存储函数(save)、卖票函数、退票函数、定售总金额、退出。 2、 增强了程序的实用性,使系统用户界面友好、功能明确、操作方便,应采取直接用printf函数的方式在界面上输出可供用户选择的菜单。据此应该能够很好的完成要求 二、程序流程图 1 程序总体结构图 输入c C=1? 真 假 查询当前 售票情况 C=2? 真 假 定票 C=3? 真 假 退票 C=4? 真 假 保存当前车次售票情况 C=5? 真 假 退出 图1 程序总体结构图 2 函数功能图 (1) 退票函数tuipiao (2) 保存信息的函数save (3)卖票函数sell 三、主要界面截图 四、关键技术分析 核心技术的实现方法和程序段: 本函数由六个自定义函数和一个主函数组成,其中 主函数以菜单形式调用其他函数来实现要求的所有功能。主函数分别调用保存函数(save)、读取函数、卖票函数、退票函数、订票总金额、退出。程序中较为核心的部分,具体分析如下: 1 保存函数 void save() /*存储函数*/ { FILE *fp; int i; if((fp=fopen("myfile.txt","w+"))==NULL) {printf("cannot open infile\n"); exit(0); } for(i=0;i<N;i++) fwrite(&ST[i],sizeof(ST),1,fp); fclose(fp); printf("\n"); printf("||||***存储成功!***||||\n"); printf(" 请选择相应的数字进行下一步操作!\n"); } 2 查询函数 void search() /*查询函数*/ {int i,j; printf("请输入要查询的班次\n"); scanf("%s",&j); for(i=0;i<N;i++) {if(int(ST[i].banci)==j) {printf("\n***-------查询售票结果--------******\n"); printf("班次 发车时间 载客量 已售票数 余票 \n"); printf("%3s %10s %10s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);} } save();; } 3 售票系统: 定义数组存储从获得的数字,为了能够多次输入,我们可以构造像for(i=0;i<N;i++)来实现我们的要求;如果输入和班次相符可进行 if(strcmp(ST[i].banci,b)==0) 来继续获得不同的一组数字,直到买票成功,如果买票后,将会显示相关信息来提示买票成功。本函数结束,退出。 void sell() /*售票*/ { int i,c; char a[50]; { int i; { printf("\n\n***-------沈阳→大连 火车售票系统--------******\n"); printf("班次 发车时间 载客量 已售票数 余票 \n"); for(i=0;i<N;i++) printf("%3s %10s %10s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao); } } printf("请输入您要购买的班次(格式如:D1):\n"); scanf("%s",a); printf("请输入您要购买的票数(格式如:10):\n"); scanf("%d",&c); for(i=0;i<N;i++) if(strcmp(ST[i].banci,a)==0) /*判断班次是否符合*/ { ST[i].maipiao=ST[i].maipiao+c; ST[i].yupiao=ST[i].yupiao-c; printf("***---购买成功---***:\n"); printf("**********欢迎使用********:\n"); { printf("\n\n***-------沈阳→大连 火车售票系统--------******\n"); printf("班次 发车时间 载客量 已售票数 余票 \n"); for(i=0;i<N;i++) printf("%3s %10s %10s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao); } save(); } } 4 退票系统 void tuipiao() /*退票*/ { int i,c; char a[50]; { printf("\n\n***-------沈阳→大连 火车售票系统--------******\n"); printf("班次 发车时间 载客量 已售票数 余票 \n"); for(i=0;i<N;i++) printf("%3s %10s %10s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao); } printf("请输入您要退的班次(格式如:D1):\n"); scanf("%s",a); printf("请输入您要退的张数(格式如:100):\n"); scanf("%d",&c); for(i=0;i<N;i++) if(strcmp(ST[i].banci,a)==0) if(ST[i].maipiao-c>=0) { ST[i].maipiao=ST[i].maipiao-c; ST[i].yupiao=ST[i].yupiao+c; printf("退票成功!!"); printf("**********欢迎使用********:\n"); printf("\n\n***---------退票结果-----------******\n"); printf("班次 ||发车时间 ||载客量 ||已售票数 ||余票\n"); for(i=0;i<N;i++) printf("%4s %10s %7s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao); save(); } } 五、个人总结 在这五天的C程序课程设计中,我深刻的体会到细心的重要性。C程序设计是一个繁琐,需要投入很多的心思和精力的活。有时它会因为一个标点符号,让所有的心血白费。所以写程序时真得要仔仔细细的。因而我们需要的不仅仅是平日知识的积累,可以说这门课程还是有难度的,所以以后还要加强对这方面知识的学习,掌握好这门课程对我以后的专业也有很大的好处。 只有养成良好的习惯,才能保证我们的路可以越走越远! 六、参考文献 谭浩强.C程序设计.北京:清华大学出版社,2005 七、源程序 #include <stdio.h> #include <time.h> #include <string.h> #include <conio.h> #include <stdlib.h> #define N 5 struct train /*定义结构体*/ { char banci[50]; char facheshijian[50]; char zaikeliang[50]; int maipiao; int yupiao; } ST[N]={ {"D1","06:40","500",0,500}, {"D2","09:30","600",0,600}, {"A1","13:00","800",0,800}, {"A2","16:00","800",0,800}, {"L1","20:00","500",0,500} }; /*声明各函数*/ void search(); void save(); void sell(); void tuipiao(); int menu(); int menu() /*定义菜单*/ { int k; printf("1.查询显示当前售票情况.\n"); printf("2.买票.\n"); printf("3.退票.\n"); printf("4.储存数据.\n"); printf("5.退出售票系统.\n"); do{ printf("\n 请选择(1-5)继续:"); scanf("%d",&k); }while(k<1||k>5); return (k); } void search() /*查询函数*/ {int i,j; printf("请输入要查询的班次\n"); scanf("%s",&j); for(i=0;i<N;i++) {if(int(ST[i].banci)==j) {printf("\n***-------查询售票结果--------******\n"); printf("班次 发车时间 载客量 已售票数 余票 \n"); printf("%3s %10s %10s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);} } save();; } void sell() /*售票*/ { int i,c; char a[50]; { int i; { printf("\n\n***-------沈阳→大连 火车售票系统--------******\n"); printf("班次 发车时间 载客量 已售票数 余票 \n"); for(i=0;i<N;i++) printf("%3s %10s %10s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao); } } printf("请输入您要购买的班次(格式如:D1):\n"); scanf("%s",a); printf("请输入您要购买的票数(格式如:10):\n"); scanf("%d",&c); for(i=0;i<N;i++) if(strcmp(ST[i].banci,a)==0) /*判断班次是否符合*/ { ST[i].maipiao=ST[i].maipiao+c; ST[i].yupiao=ST[i].yupiao-c; printf("***---购买成功---***:\n"); printf("**********欢迎使用********:\n"); { printf("\n\n***-------沈阳→大连 火车售票系统--------******\n"); printf("班次 发车时间 载客量 已售票数 余票 \n"); for(i=0;i<N;i++) printf("%3s %10s %10s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao); } save(); } } void tuipiao() /*退票*/ { int i,c; char a[50]; { printf("\n\n***-------沈阳→大连 火车售票系统--------******\n"); printf("班次 发车时间 载客量 已售票数 余票 \n"); for(i=0;i<N;i++) printf("%3s %10s %10s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao); } printf("请输入您要退的班次(格式如:D1):\n"); scanf("%s",a); printf("请输入您要退的张数(格式如:100):\n"); scanf("%d",&c); for(i=0;i<N;i++) if(strcmp(ST[i].banci,a)==0) if(ST[i].maipiao-c>=0) { ST[i].maipiao=ST[i].maipiao-c; ST[i].yupiao=ST[i].yupiao+c; printf("退票成功!!"); printf("**********欢迎使用********:\n"); printf("\n\n***---------退票结果-----------******\n"); printf("班次 ||发车时间 ||载客量 ||已售票数 ||余票\n"); for(i=0;i<N;i++) printf("%4s %10s %7s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao); save(); } } void save() /*存储函数*/ { FILE *fp; int i; if((fp=fopen("d:\\myfile.txt","w+"))==NULL) {printf("cannot open infile\n"); exit(0); } else{ for(i=0;i<N;i++) fwrite(&ST[i],sizeof(ST),1,fp); fclose(fp); printf("\n"); printf("*******存储成功!*******\n"); printf(" 请选择相应的数字进行下一步操作!\n"); } } void main() {for(;;) { switch(menu()) { case 1:search();break; case 2:sell(); break; case 3:tuipiao();break; case 4:save();break; case 5:exit(0); } } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 管理财经 > 管理学资料

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服