C语言课程设计报告-简单的汽车站售票系统.doc_第1页
C语言课程设计报告-简单的汽车站售票系统.doc_第2页
C语言课程设计报告-简单的汽车站售票系统.doc_第3页
C语言课程设计报告-简单的汽车站售票系统.doc_第4页
C语言课程设计报告-简单的汽车站售票系统.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈 阳 航 空 工 业 学 院 课程设计学 号 200504061274班 级 5406108 姓 名 胡乃杰 指导教师 尹航 2007年 7 月 17 日沈阳航空工业学院课程设计任务书机械与汽车学院 机械设计制造及其自动化专业 5406108班 学号200504061274一、课程设计题目:简单的汽车站售票系统二、课程设计工作自2007年7月9日起至2007年7月17日止三、课程设计内容:用C语言编写软件完成以下任务:每天“沈阳植物园”有5个班次的汽车(假设),具体的数据如下:班次发车时间载客量已售票数106:40500209:30400313:00400416:00400520:00500请你为售票员开发一个小程序,以完成每天的“沈阳植物园”的售票业务。要求:能够售票和退票。某个班次已经过了开车时间,则该班次今天不再售票。可以随时显示售票现状,并以文件(myfile.txt)形式保存当天各个车次的售票情况。四、课程设计要求:程序质量:贯彻结构化程序设计思想。用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。用户界面中的菜单至少应包括“售票”、“退票”、“显示当前售票情况”、“保存当天数据”、“退出”5项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:封面课程设计任务书目录需求分析(分析题目的要求)程序流程图(总体流程图和主要功能模块流程图)核心技术的实现说明及相应程序段个人总结参考资料源程序及适当的注释指导教师:_ 学生签名:_沈 阳 航 院 设 计 用 纸目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段5四、个人总结9五、参考文献10六、源程序1015一、需求分析根据对程序设计题目的分析可知,整个程序的设计实现大致可分为五大模块。其中每一个模块对应一个函数,他们的功能分别是:查询当前时间(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(nn*Search Result*n); printf( NO. Time Total Sell Leave n); for(i=0;iK;i+) /*无限循环*/ printf(%4s %10s %10s %8d %8dn, QCi.NO,QCi.time,QCi.total,QCi.sell,QCi.leave); printf( n);2、售票函数(sell) 售票函数是先用循环语句输出当前的售票情况,然后依次输入需要购买的车号b以及要购买的票数m,然后将结构体中的车号QCi.NO与b进行比较,成功后原售票数数组QCi.sell+m,原剩余票数数组QCi.leave-m,依次输出结构体中的内容,最后运行保存程序(save)。具体程序如下: void sell() /*售票*/ int i,m; char b15; printf(nn*Sell Result*n); printf( NO. Time Total Sell Leave n); for(i=0;iK;i+) /*无限循环*/ printf(%4s %10s %10s %8d %8dn, QCi.NO,QCi.time,QCi.total,QCi.sell,QCi.leave); printf(Please enter the carNO. you want to buy!(ForExample: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;iK;i+) if(strcmp(QCi.NO,b)=0) /*对QCi.NO和b进行比较*/ QCi.sell=QCi.sell+m; QCi.leave=QCi.leave-m; printf(*Purchase Success!*n); printf(nn*Sell Result*n); printf( NO. Time Total Sell Leave n); for(i=0;iK;i+) printf(%4s %10s %10s %8d %8dn, QCi.NO,QCi.time,QCi.total,QCi.sell,QCi.leave); save(); 3、退票函数(leave) 退票函数是先用循环语句输出当前的售票情况,然后依次输入需要购买的车号b以及要购买的票数m,然后将结构体中的车号QCi.NO与b进行比较,如果售票数大于m则原售票数数组QCi.sell-m,原剩余票数数组QCi.leave+m,依次输出结构体中的内容,最后运行保存程序(save)。具体程序如下:void leave() /*退票*/ int i,m; char b15; printf(nn*Present Situation*n); printf( NO. Time Total Sell Leave n); for(i=0;iK;i+) printf(%4s %10s %10s %8d %8dn, QCi.NO,QCi.time,QCi.total,QCi.sell,QCi.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=0) /*判断能否退票*/ QCi.sell=QCi.sell-m; QCi.leave=QCi.leave+m; printf(*Return Success!*n); printf(nn*Return Result*n); printf( NO. Time Total Sell Leave n); for(i=0;iK;i+) printf(%4s %10s %10s %8d %8dn, QCi.NO,QCi.time,QCi.total,QCi.sell,QCi.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;iK;i+) fwrite(&QCi,sizeof(struct record),1,fp); /*写入文件*/ fclose(fp); /*关闭文件*/ printf(n); printf(*Save Success!*nn);四、个人总结这次课程设计基本上含盖了大学一年纪学习到的C 语言知识点,课设题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。这次课设使我了解我编程思想和编程技巧,也认识了软件生命周期的各个环境,包括构思、设计、编写、调试、文档化和修订。编程的风格也很重要,只关心程序运行的结果,而对程序代码的结构的良好丝毫不在意。这是非常不可取的,如果我希望将来从事编程工作,在这一点上该引起足够的重视。这是严谨的态度,很重要。做课设不仅让我修补了以前学习的漏洞,也让我知道一个道理:编程需要兴趣和实际动手。创新思维也至关重要,这不仅让我们写出精简的代码,也有助于开发出高效的程序。这次程序的设计基本完成了题目的要求,只有一项是关于如何在时间到达后不能继续售票问题没有解决,我于是想到查询当前时间来解决。最后我要感谢帮助过我的同学和老师,让我能够在有限的时间内完成题目。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#include #include #include #include #include #define K 5 /*起用宏定义变量K*/struct record /*定义结构体类型变量*/ char NO10; char time20; char total20; int sell; int leave;QCK= /*用QCK表示*/ /*给数组QCK赋值*/ 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(c6) printf( n*Error!*n); while(c6); 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: %sn, asctime(timeinfo); void search() /*查询当前的车次及售票数*/ int i; printf(nn*Search Result*n); printf( NO. Time Total Sell Leave n); for(i=0;iK;i+) printf(%4s %10s %10s %8d %8dn, QCi.NO,QCi.time,QCi.total,QCi.sell,QCi.leave); printf( n);void sell() /*售票*/ int i,m; char b15; printf(nn*Sell Result*n); printf( NO. Time Total Sell Leave n); for(i=0;iK;i+) printf(%4s %10s %10s %8d %8dn, QCi.NO,QCi.time,QCi.total,QCi.sell,QCi.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;iK;i+) if(strcmp(QCi.NO,b)=0) /*对QCi.NO和b进行比较*/ QCi.sell=QCi.sell+m; QCi.leave=QCi.leave-m; printf(*Purchase Success!*n); printf(nn*Sell Result*n); printf( NO. Time Total Sell Leave n); for(i=0;iK;i+) printf(%4s %10s %10s %8d %8dn, QCi.NO,QCi.time,QCi.total,QCi.sell,QCi.leave); save(); void leave() /*退票*/ int i,m; char b15; printf(nn*Present Situation*n); printf( NO. Time Total Sell Leave n); for(i=0;iK;i+) printf(%4s %10s %10s %8d %8dn, QCi.NO,QCi.time,QCi.total,QCi.sell,QCi.leave); printf(Please enter

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论