收藏 分销(赏)

简单的汽车站售票系统.doc

上传人:天**** 文档编号:2444564 上传时间:2024-05-30 格式:DOC 页数:18 大小:438.54KB 下载积分:8 金币
下载 相关 举报
简单的汽车站售票系统.doc_第1页
第1页 / 共18页
简单的汽车站售票系统.doc_第2页
第2页 / 共18页


点击查看更多>>
资源描述
个人收集整理 勿做商业用途 沈 阳 航 空 工 业 学 院 课程设计 学 号 200504061274 班 级 5406108 姓 名 胡乃杰 指导教师 尹航 2007年 7 月 17 日 沈阳航空工业学院 课程设计任务书 机械与汽车学院 机械设计制造及其自动化专业 5406108班 学号200504061274 一、课程设计题目:简单的汽车站售票系统 二、课程设计工作自2007年7月9日起至2007年7月17日止 三、课程设计内容: 用C语言编写软件完成以下任务: 每天“沈阳→植物园"有5个班次的汽车(假设),具体的数据如下: 班次 发车时间 载客量 已售票数 1 06:40 50 0 2 09:30 40 0 3 13:00 40 0 4 16:00 40 0 5 20:00 50 0 请你为售票员开发一个小程序,以完成每天的“沈阳→植物园”的售票业务.要求: ①能够售票和退票. ②某个班次已经过了开车时间,则该班次今天不再售票。 ③可以随时显示售票现状,并以文件(myfile.txt)形式保存当天各个车次的售票情况。 四、课程设计要求: 程序质量: ●贯彻结构化程序设计思想。 ●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。 ●用户界面中的菜单至少应包括“售票”、“退票”、“显示当前售票情况”、“保存当天数据”、“退出”5项。 ●代码应适当缩进,并给出必要的注释,以增强程序的可读性. 课程设计说明书: 课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下: ●封面 ●课程设计任务书 ●目录 ●需求分析(分析题目的要求) ●程序流程图(总体流程图和主要功能模块流程图) ●核心技术的实现说明及相应程序段 ●个人总结 ●参考资料 ●源程序及适当的注释 指导教师:________________ 学生签名:________________ 目录 一、需求分析 1 二、程序流程图 2 三、核心技术的实现说明及相应程序段 5 四、个人总结 9 五、参考文献 10 六、源程序 10 15 一、需求分析 根据对程序设计题目的分析可知,整个程序的设计实现大致可分为五大模块。其中每一个模块对应一个函数,他们的功能分别是:查询当前时间(localtimes),查询当前的售票情况(search),买票(sell),退票(return)和保存数据(save)。在这几个函数中,除第一个外其他都按照题目要求编写。 1、查询当前时间 主要用于查询时间,以防止汽车已经发出还继续进行售票。 2、查询当前售票情况 主要用于查询当前的卖票情况。 3、买票 对顾客出售各车次车票。 4、退票 对顾客需要返退的车票进行处理. 5、保存数据 对当前的车票出售情况进行保存,生成myfile.txt文件,以便查询。 除此之外,程序还设立了退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。并且每一次售票或退票都会提示是否成功,并且将文件自动保存到myfile。txt中,以便查询。 二、程序流程图 1、程序总体结构图 图1 总体结构图 2、查询车次函数search结构图 图2 查询车次函数search结构图 3、售票函数sell结构图 图3 售票函数sell结构图 4、退票函数return结构图 图4 退票函数return结构图 5、保存文件函数save结构图 图5 保存文件函数save图 三、核心技术的实现说明及相应程序段 本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能.在这些函数当中,查询当前售票情况函数、售票函数、退票函数和保存当天售票记录函数是程序中较为核心的部分,下面分别进行说明。 1、查询当前售票情况函数(search) 查询当前时间是通过一个循环命令,使结构体内的容依次输出,这样就可以看到当天全部的售票情况.具体程序如下: void search() /*查询当前的车次及售票数*/ { int i; printf("\n\n**********Search Result**********\n”); printf(" NO. Time Total Sell Leave \n"); for(i=0;i<K;i++) /*无限循环*/ printf("%4s %10s %10s %8d %8d\n", QC[i]。NO,QC[i].time,QC[i]。total,QC[i].sell,QC[i]。leave); printf(” \n”); } 2、售票函数(sell) 售票函数是先用循环语句输出当前的售票情况,然后依次输入需要购买的车号b以及要购买的票数m,然后将结构体中的车号QC[i].NO与b进行比较,成功后原售票数数组QC[i]。sell+m,原剩余票数数组QC[i]。leave—m,依次输出结构体中的内容,最后运行保存程序(save)。具体程序如下: void sell() /*售票*/ { int i,m; char b[15]; { printf(”\n\n**********Sell Result**********\n”); printf(” NO。 Time Total Sell Leave \n"); for(i=0;i<K;i++) /*无限循环*/ printf("%4s %10s %10s %8d %8d\n", QC[i].NO,QC[i].time,QC[i]。total,QC[i].sell,QC[i]。leave); } printf("Please enter the carNO。 you want to buy!(For Example:02):\n”); scanf(”%s”,b); /*输入的值给b*/ printf(”Please enter the ticketNO. you want to buy!(For Example:5):\n"); scanf(”%d”,&m); /*输入的值给m*/ for(i=0;i<K;i++) if(strcmp(QC[i]。NO,b)==0) /*对QC[i]。NO和b进行比较*/ { QC[i].sell=QC[i].sell+m; QC[i]。leave=QC[i]。leave-m; printf("******Purchase Success!******\n”); printf("\n\n**********Sell Result**********\n”); printf(" NO. Time Total Sell Leave \n”); for(i=0;i〈K;i++) printf(”%4s %10s %10s %8d %8d\n”, QC[i].NO,QC[i].time,QC[i]。total,QC[i].sell,QC[i].leave); save(); } } 3、退票函数(leave) 退票函数是先用循环语句输出当前的售票情况,然后依次输入需要购买的车号b以及要购买的票数m,然后将结构体中的车号QC[i].NO与b进行比较,如果售票数大于m则原售票数数组QC[i]。sell—m,原剩余票数数组QC[i]。leave+m,依次输出结构体中的内容,最后运行保存程序(save)。具体程序如下: void leave() /*退票*/ { int i,m; char b[15]; { printf("\n\n**********Present Situation**********\n”); printf(” NO。 Time Total Sell Leave \n”); for(i=0;i<K;i++) printf("%4s %10s %10s %8d %8d\n”, QC[i]。NO,QC[i]。time,QC[i]。total,QC[i].sell,QC[i].leave); } printf("Please enter the carNO. you want to return!(For Example:02):\n"); scanf("%s”,b); /*输入的值给b*/ printf("Please enter the ticketNO。 you want to return!(For Example:3):\n"); scanf("%d",&m); /*输入的值给m*/ for(i=0;i<K;i++) if(strcmp(QC[i]。NO,b)==0) /*对QC[i].NO和b进行比较*/ if(QC[i].sell—m>=0) /*判断能否退票*/ { QC[i]。sell=QC[i].sell—m; QC[i]。leave=QC[i].leave+m; printf("******Return Success!******\n”); printf("\n\n**********Return Result**********\n”); printf(” NO。 Time Total Sell Leave \n”); for(i=0;i〈K;i++) printf("%4s %10s %10s %8d %8d\n", QC[i].NO,QC[i]。time,QC[i].total,QC[i]。sell,QC[i].leave); save(); } } 4、保存函数(leave) 打开名字是myfile.txt的文件,使用文件方式为读写,用循环语句将结构体中的内容依次写入文件,完成对售票情况的保存。具体程序如下: void save() /*对当前售票情况进行保存*/ { FILE *fp; /*打开文件*/ int i; if((fp=fopen("myfile。txt”,"w+"))==NULL) { printf("******Can not open infile!******\n"); exit(0); } for(i=0;i<K;i++) fwrite(&QC[i],sizeof(struct record),1,fp); /*写入文件*/ fclose(fp); /*关闭文件*/ printf(”\n”); printf("******Save Success!******\n\n”); } 四、个人总结 这次课程设计基本上含盖了大学一年纪学习到的C 语言知识点,课设题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力.这次课设使我了解我编程思想和编程技巧,也认识了软件生命周期的各个环境,包括构思、设计、编写、调试、文档化和修订。编程的风格也很重要,只关心程序运行的结果,而对程序代码的结构的良好丝毫不在意。这是非常不可取的,如果我希望将来从事编程工作,在这一点上该引起足够的重视。这是严谨的态度,很重要. 做课设不仅让我修补了以前学习的漏洞,也让我知道一个道理:编程需要兴趣和实际动手.创新思维也至关重要,这不仅让我们写出精简的代码,也有助于开发出高效的程序。 这次程序的设计基本完成了题目的要求,只有一项是关于如何在时间到达后不能继续售票问题没有解决,我于是想到查询当前时间来解决。 最后我要感谢帮助过我的同学和老师,让我能够在有限的时间内完成题目。 五、参考文献 1 谭浩强.C程序设计.北京:清华大学出版社,2005 2 刘成等.C语言程序设计实验指导与习题集.北京:中国铁道出版社,2006 六、源程序 #include 〈stdio。h> #include <stdlib.h〉 #include <string。h> #include <conio。h> #include 〈time。h> #define K 5 /*起用宏定义变量K*/ struct record /*定义结构体类型变量*/ { char NO[10]; char time[20]; char total[20]; int sell; int leave; }QC[K]={ /*用QC[K]表示*/ /*给数组QC[K]赋值*/ {"01",”06:40","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}, }; void search(); void save(); void sell(); void localtimes(); void leave(); int menu(); int menu() /*定义菜单*/ { int c; printf(" 1。Time。\n”); printf(" 2。Serch。\n"); printf(” 3。Sell。\n"); printf(” 4。Return。\n”); printf(” 5.Save。\n"); printf(" 6。Exit。\n”); do { printf(" Please choose(1-6) to begin!:"); scanf("%d”,&c); /*把输入的值赋给c*/ if(c<1||c〉6) printf( ”\n*******Error!********\n”); } while(c〈1||c〉6); return (c); } main() { for(;;) { switch(menu()) { case 1:localtimes();break; case 2:search(); break; case 3:sell();break; case 4:leave();break; case 5:save();break; case 6:exit(0); } } } void localtimes() /*显示当前时间*/ { time_t rawtime; struct tm *timeinfo; time(&rawtime); timeinfo=localtime(&rawtime); printf(” The current date/time is: %s\n”, asctime(timeinfo)); } void search() /*查询当前的车次及售票数*/ { int i; printf(”\n\n**********Search Result**********\n"); printf(” NO。 Time Total Sell Leave \n”); for(i=0;i〈K;i++) printf("%4s %10s %10s %8d %8d\n”, QC[i]。NO,QC[i].time,QC[i].total,QC[i]。sell,QC[i].leave); printf(" \n"); } void sell() /*售票*/ { int i,m; char b[15]; { printf("\n\n**********Sell Result**********\n”); printf(" NO。 Time Total Sell Leave \n”); for(i=0;i<K;i++) printf(”%4s %10s %10s %8d %8d\n”, QC[i]。NO,QC[i].time,QC[i]。total,QC[i]。sell,QC[i].leave); } printf("Please enter the carNO。 you want to buy!(For Example:02):\n”); scanf("%s",b); /*输入的值给b*/ printf("Please enter the ticketNO. you want to buy!(For Example:5):\n"); scanf("%d",&m); /*输入的值给m*/ for(i=0;i〈K;i++) if(strcmp(QC[i].NO,b)==0) /*对QC[i].NO和b进行比较*/ { QC[i].sell=QC[i].sell+m; QC[i].leave=QC[i].leave-m; printf("******Purchase Success!******\n”); printf(”\n\n**********Sell Result**********\n”); printf(" NO. Time Total Sell Leave \n”); for(i=0;i<K;i++) printf(”%4s %10s %10s %8d %8d\n”, QC[i].NO,QC[i].time,QC[i].total,QC[i].sell,QC[i]。leave); save(); } } void leave() /*退票*/ { int i,m; char b[15]; { printf(”\n\n**********Present Situation**********\n”); printf(" NO。 Time Total Sell Leave \n”); for(i=0;i〈K;i++) printf(”%4s %10s %10s %8d %8d\n", QC[i]。NO,QC[i].time,QC[i].total,QC[i].sell,QC[i].leave); } printf("Please enter the carNO. you want to return!(For Example:02):\n"); scanf("%s",b); /*输入的值给b*/ printf("Please enter the ticketNO。 you want to return!(For Example:3):\n”); scanf("%d”,&m); /*输入的值给m*/ for(i=0;i<K;i++) if(strcmp(QC[i].NO,b)==0) /*对QC[i]。NO和b进行比较*/ if(QC[i].sell—m〉=0) /*判断能否退票*/ { QC[i].sell=QC[i]。sell-m; QC[i]。leave=QC[i]。leave+m; printf("******Return Success!******\n"); printf("\n\n**********Return Result**********\n"); printf(” NO。 Time Total Sell Leave \n”); for(i=0;i〈K;i++) printf("%4s %10s %10s %8d %8d\n”, QC[i]。NO,QC[i].time,QC[i]。total,QC[i]。sell,QC[i].leave); save(); } } void save() /*对当前售票情况进行保存*/ { FILE *fp; /*打开文件*/ int i; if((fp=fopen("myfile.txt”,"w+”))==NULL) { printf("******Can not open infile!******\n”); exit(0); } for(i=0;i<K;i++) fwrite(&QC[i],sizeof(struct record),1,fp); /*写入文件*/ fclose(fp); /*关闭文件*/ printf("\n"); printf(”******Save Success!******\n\n"); }
展开阅读全文

开通  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 

客服