还剩22页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
一、课程设计的内容车票管理系统一车站每天有n个发车班次,每个班次都有一班次号(
1、
2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量如班次发车时间起点站终点站行车时间额定载量已定票人数18:00郫县广汉2453026:30郫县成都
0.5404037:00郫县成都
0.54020410:00郫县成都
0.5402…
(一)功能要求用c/c++设计一系统,能提供下列服务
(1)录入班次信息信息用文件保存可不定时地增加班次数据
(2)浏览班次信息可显示出所有班次当前状总如果当前系统时间超过了某班次的发车时间则显示“此班已发出”的提示信息
(3)查询路线可按班次号查询可按终点站查询
(4)售票和退票功能A当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数
二、课程设计的要求与数据
1、进一步掌握和利用C语言进行程设计的能力;
2、进一步理解和运用结构化程序设计的思想和方法;
3、初步掌握__一个小型实用系统的基本方法;
4、学会调试一个较长程序的基本方法;
5、学会利用流程图或N-S图表示算法;
6、掌握书写程序设计__文档的能力
三、课程设计应完成的工作
1、编写完成相应题目的程序;
2、编写课程设计报告课程设计报告的内容应包括以下6个部分1需求分析包括设计题目、设计要求以及系统功能需求分析;2总体设计包括系统总体设计框架和系统功能模块图;3详细设计包括主要功能模块的算法设计思路以及对应的工作流程图;4调试分析过程描述包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);5总结课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;6附录主要源程序代码,含必要的注释
3、答辩在实验室建立程序运行的环境,并在指导教师的监督下,__解决问题、运行程序和回答教师提出的问题目录TOC\o1-3\h\z\u第一章目的与要求5第二章总体设计6第三章详细设计
93.1功能模块设计
93.2数据结构设计11第四章调试分析12第五章总结14第六章附录15____25第一章目的与要求编写目的便于车站管理部门对汽车班次信息的统计和管理,提高车站部门的工作效率,能够更好的为市民服务,同时也便于旅客了解相关的信息,方便出行要求
1.能够录入汽车班次信息,如班次号,发车时间,起点站,终点站,行车时间,额载量,已订票人数等
2.能够浏览班次信息,显示信息总和(如果已发出站的要要显示“已经开出”)
3.查询路线可按班次号查询可按终点站查询
4.售票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间才能售票,自动更新已售票人数
5.退票功能输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数第二章总体设计1)系统总体设计框架2)主要功能流程图录入班次信息功能流程图浏览班次功能流程图售票系统工作流程图第三章详细设计
3.1功能模块设计while选择的是“Y”{打印当前时间打印“班次发车时间起点站终点站行车时间额定载量已定票人数”for{输出班次信息』提示输入车的班次}if当查询出已定票人数小于额定载量且当前系统时间小于发车时间时{提示售票成功!订票人数加1;}IF(额定载量小于订票人数){提示票已售完!;}elseif输入的班次号小于零{该车不存在!}elseif当前系统时间晚于发车时间{提示车已发出!}提示继续售票按Y,按任意键返回主菜单!输入一个字符;}}while输入的是Y的时候{提示输入要退票的车次;输入一个字符;}if输入的班次号存在和系统时间比发车时间晚{订票人数-1;提示退票成功!}elseif输入的班次号小于零提示该班次不存在!;)elseif要退票的那辆车的发车时间早过现在系统时间{提示车已发出不能退票!;提示继续退票请按Y返回主菜单按任意键;输入一个字符;}}{打印“车票管理系统”;打印“系统时间”;打印“录入班次信息”;打印“查询班次信息”;打印“售票”;打印“退票”;打印“保存车次信;;打印“退出系统”;打印“请选择(0--6)”;打印“车票管理系统;得到一个字符;返回值;}
3.2数据结构设计可选程序中涉及的数据过多,本人决定采用两个结构体处理数据其中时间为一个数据结构体(即结构1),它又是汽车结构体(即结构2)的一个成员元素,这样处理数据容易些第四章调试分析本人在写代码的过程中觉得难控制的是那个班次数因为本系统提供了个录入信息功能,可以不定时的增加班次,即这个班次数是不确定的而这个班次数又影响到查询函数,退票函数,售票函数等,另外还影响到一些功能小函数,如比较时间函数等经过上网查找资料,我发现有一个巧妙的方法可以解决这个问题,即设定一个静态局部变量(即代码中的H),这样每当班次号改变之后这个H的值就和它的班次号一样大,这样就可以解决之前提到的问题了另外,这个系统要有一个保存文件功能,由于本人对文件保存处理不清楚,设计过程中一直搞不明白最后在网上查到了相关信息才可以弄出以下是该程序运行的部分结果主界面:信息录入图和浏览时刻表:查询售票图:退票图:保存信息图:第五章总结经历近几天的学习和锻炼,这个车票管理系统算是做出来了(不过我承认我是参考网上代码所得,我基本能看懂)它基本有前面提到过的功能,即录入班次信息,浏览班次信息,售票和退票,保存文件有一个扩展功能,即可以退出系统(代码中的sys_exit函数)不过目前我发现它一个不足之出,就是不能对输入时间的格式起限制作用如我可以输入263000,它系统不会提示说输入错误提示再输入一个正确的时间还有,就是整个代码条理不够清晰,只是用到一个主函数和调用其他函数,可读性差!我认为最好是能分模块化处理,分文件处理,这样条理性强,可读性高,再者修改也容易不过由于本人水平有限,不能这样处理经历这近几天的锻炼,我也比较满意自己的表现在这过程中我查阅了很多书,学到了很多课堂上没有的东西很多知识我之前不知道的现在大部分都知道了,不过理解不够深透,导致在这近几天里碰了不少壁!近几天我觉得编程既是一项费时费力但也是有趣的事说它费时费力是因为它繁琐,而有趣是因为我很享受一段段的小程序编成功之后的喜悦,苦尽干来啊我觉得编程是一件快乐的差事,我想我今后会加把时间学习它,把它学好第六章附录程序代码#includestdio.h#includetime.h#includewindows.h#includestring.h#includedos.h#includestdlib.h#includectype.h#define__x50//最大贮赌量#definenull0staticintH=0;structTimes{//定义时钟inthour;intmin;intsec;};structBuses{//定义汽车intnumber;structTimestime;charstart
[30];charend
[30];floattime_cost;intcarry_number;intbooK_number;};structBusesbus[__x];time_tnow=time0;tm*tnow=localtimenow;voidload;//载入车次信息voidluvoid;//声明录入函数voidchaxunstructBusesbus[];//声明查询路线函数voids__estructBusesbus[];//声明保存函数intcaidan;//声明菜单录数voidliulanstructBusesbus[];//声明浏览函数voidtui____structBusesbus[];//退票voidshou____structBusesbus[];//声明售票函数voidxitongtuichu;//声明退出函数//工具函数structBusescopystructBusesb1structBusesb2;//赋值voidsort_timestructBusesbus[];//声明按时间发车的先后顺序排序intcompare_timestructTimest1structTimest2;//时间比较函数intcompare_systimestructBusesbustm*T;//比较发车时间与当前系统时间的函数voidprintstructBusesbus;//声明输入出函数intnumber_searchstructBusesbus[]intnum;//声明按班次查询函数intend_searchstructBusesbuscharends[];//声明按终点查询函数void__in{//主函数while1{systemcls;switchcaidan{case1:lu;break;case2:liulanbus;break;case3:chaxunbus;break;case4:shou____bus;break;case5:tui____bus;break;case6:s__ebus;break;case0:xitongtuichu;break;}}}intcompare_systimestructBusesbustm*T{//与系统时间的比较函数return1;return1;return1;elsereturn0;}return0;}return0;}structBusescopystructBusesb1structBusesb2{b
1.booK_number=b
2.booK_number;b
1.carry_number=b
2.carry_number;strcpyb
1.endb
2.end;b
1.number=b
2.number;strcpyb
1.startb
2.start;b
1.time_cost=b
2.time_cost;returnb1;}voidliulanstructBusesbus[]{//浏览车次getchar;systemcls;inti;printf\n\t\t\t\t车辆时刻表\n;printf\t\t\t**************************\n;printf\t班次发车时间起点站终点站行车时间额定载量已定票人数;printf\n\t--------------------------------------------------------------\n;sort_timebus;fori=0;iH;i++{printbus[i];}printf\t--------------------------------------------------------------\n;printf\t\t\t\t%d条记录!\nH;printf\t按任意键返回主菜单...;getchar;}intcompare_timestructTimest1structTimest2{//比较时间大小ift
1.hourt
2.hour{return1;ift
1.min=t
2.min{return1;ift
1.sec=t
2.secreturn1;elsereturn0;}return0;}return0;}voidsort_timestructBusesbus[]{//按发车时间排序intijk;structBusesb={0};fori=0;iH-1;i++{k=i;forj=i+1;jH;j++{ifcompare_timebus[i].timebus[j].time{k=j;ifk!=i{b=copybbus[i];bus[i]=copybus[i]bus[k];bus[k]=copybus[k]b;}}}}}intnumber_searchstructBusesbus[]intn{//按班次查询inti;fori=0;iH;i++{ifbus[i].number==nreturni;}return-1;}intend_searchstructBusesbuscharends[]{//按终点站查询ifstrcmpbus.endends==0return1;elsereturn-1;}voidprintstructBusesbus{if!compare_systimebustnowelse}intcaidan{inta;systemcls;//以下是菜单图案printf\n\n;printf\t\t车票管理系统\n;printf\t\t*****************%d年%d月%d日\n1900+tnow-tm_yeartnow-tm_mon+1tnow-tm_mday;printf\t\t|----------------------------------------------|\n;printf\t\t|菜单|\n;printf\t\t|----------------------------------------------|\n;printf\t\t|1录入班次信息|\n;printf\t\t|----------------------------------------------|\n;printf\t\t|2显示班次信息|\n;printf\t\t|----------------------------------------------|\n;printf\t\t|3查询班次信息|\n;printf\t\t|----------------------------------------------|\n;printf\t\t|4售票|\n;printf\t\t|----------------------------------------------|\n;printf\t\t|5退票|\n;printf\t\t|----------------------------------------------|\n;printf\t\t|6保存车次信息|\n;printf\t\t|----------------------------------------------|\n;printf\t\t|0退出系统|\n;printf\t\t|----------------------------------------------|\n;printf\n\t\t请选择0-6:;scanf%da;returna;}voids__estructBusesbus[]{//保存函数体getchar;FILE*fp;inti;iffp=fopenBus_systemwb==null{printf不能打开文件\n;return;}fori=0;iH;i++iffwritebus[i]sizeofstructBuses1fp!=1printf文件保存出错!\n;fclosefp;printf文件保存成功!;getchar;}voidlu{//录入函数inti=Hf=1;charflag=Y;whiletoupperflag==Y{systemcls;printf\n\t\t车次信息录入\n请输入车的班次:;scanf%dbus[i].number;getchar;whilenumber_searchbusbus[i].number=0{printf你输入的班次已存在请重新输入!:;scanf%dbus[i].number;getchar;}printf请输入时间如:20:30:00:;scanf%d:%d:%dbus[i].time.hourbus[i].time.minbus[i].time.sec;getchar;printf请输入车的起点站:;scanf%sbus[i].start;getchar;printf请输入车的终点站:;scanf%sbus[i].end;getchar;printf请输入行车时间:;scanf%fbus[i].time_cost;getchar;printf请输入车的额定载量:;scanf%dbus[i].carry_number;getchar;bus[i].booK_number=0;H++;i++;printf信息录入成功!\n;printf继续录入请按Y返回主菜单按任意键...;flag=getchar;}}voidchaxunstructBusesbus[]{//查询路线intai=0;intm=0;charflag=Y;whiletoupperflag==Y{charend
[30];systemcls;printf\n按班次查询请按1\n终点站查询请按2\n请选择1-2:;scanf%da;whilea!=1a!=2{printf注意只能选择1或2!\n请重新输入:;scanf%da;getchar;}switcha{case1:{printf请输入车次号;scanf%dm;getchar;i=number_searchbusm;ifi=0{printf\n\t\t\t\t车辆时刻表\n;printf\t\t\t**************************\n;printf\t班次发车时间起点站终点站行车时间额定载量已定票人数;printf\n\t--------------------------------------------------------------\n;printbus[i];printf\t--------------------------------------------------------------\n;}elseprintf\n\t\t\t没有你要查找的记录!\n;}break;case2:{printf请输入车的终点站;scanf%send;getchar;whileiH{ifm=end_searchbus[i]end==1{printf\n\t\t\t\t车辆时刻表\n;printf\t\t\t**************************\n;printf\t班次发车时间起点站终点站行车时间额定载量已定票人数;printf\n\t--------------------------------------------------------------\n;printbus[i];i++;}break;}fori;iH;i++{ifend_searchbus[i]end==1printbus[i];}ifm==1printf\t--------------------------------------------------------------\n;}fori=0;iH;i++{ifend_searchbus[i]end!=1printf\n\t\t\t没有到该站的车!\n;break;}}printf\t\t继续查找请按Y返回主菜单按任意键...;flag=getchar;}}voidshou____structBusesbus[]{//售票函数intin;charflag=Y;whiletoupperflag==Y{systemcls;printf\n\t\t\t\t车辆时刻表\n;printf\t\t\t**************************当前时间%d:%d:%d\ntnow-tm_hourtnow-tm_mintnow-tm_sec;printf\t班次发车时间起点站终点站行车时间额定载量已定票人数;printf\n\t--------------------------------------------------------------\n;forintj=0;jH;j++{printbus[j];}printf\t--------------------------------------------------------------\n;printf\t请输入车的班次;scanf%di;n=number_searchbusi;getchar;ifn=0bus[n].carry_numberbus[n].booK_numbercompare_systimebus[n]tnow{printf\n\t\t\t售票成功!\n;bus[n].booK_number++;printf\t班次发车时间起点站终点站行车时间额定载量已定票人数;printf\n\t--------------------------------------------------------------\n;printbus[n];printf\n\t--------------------------------------------------------------\n;}ifbus[n].carry_number=bus[n].booK_numberprintf\n\t\t\t该次车的票已售完!\n;elseifn0printf\n\t\t\t该次车不存在!\n;elseif!compare_systimebus[n]tnowprintf\n\t\t\t该次已发出!\n;printf\t\t继续售票请按Y返回主菜单按任意键...;flag=getchar;}}voidtui____structBusesbus[]{//退票函数intni;charflag=Y;whiletoupperflag==Y{systemcls;printf\n\n请输入车次;scanf%dn;getchar;i=number_searchbusn;ifi=0compare_systimebus[i]tnow{bus[i].booK_number--;printf\n\t\t\t退票成功!\n;}elseifi0printf\n\t\t\t该车次不存在!\n;elseif!compare_systimebus[n]tnowprintf\n\t\t\t车已发出不能退票!\n;printf\t继续退票请按Y返回主菜单按任意键...;flag=getchar;}}voidload//载入车次信息{FILE*fp;inti=0;whilefp=fopenBus_systemrb==NULL//以rb形式打开文件return;fori;!feoffp;i++H++{iffreadbus[H]sizeofstructBuses1fp!=1{}iffeoffp{fclosefp;return;}}fclosefp;}voidxitongtuichu{//退出函数systemcls;getchar;charflag=null;printf\n\n\t\t你确定要退出并保存信息吗Y/N;flag=getchar;iftoupperflag==Y{s__ebus;exit0;}elseiftoupperflag==Nexit0;elsereturn;}____
1、谭浩强编著,C程序设计1991年7月
2、裘宗燕著,从问题到程序科学出版社,北京大学出版社,1999年4月
3、刘瑞挺主编,计算机二级教程,南开大学出版社,1996年10月
4、陈朔鹰等编著,C语言程序设计基础教程,兵器工业出版社,1994年9月
5、姜仲秋等主编,C语言程序设计,南京大学出版社,1998年1月
6、《C程序设计(第二版)》,谭浩强编,清华大学出版社,1999年12月
7、《C语言程序设计题解与上机指导》,谭浩强编,清华大学出版社,2000年11月
8、《TurboC
2.0实用大全》,常玉龙等编写,北京____大学出版社,1994年9月
9、《C语言程序设计习题集(第二版)》,陈朔鹰陈英主编,人民邮电出版社,2003年2月
10、《C语言趣味程序百例精解》,陈朔鹰陈英主编,北京理工大学出版社,1996年
11、《C语言程序设计__与习题集》,田淑清等,中国铁道出版社,2000年1月
12、《C语言编程常见问题解答》,[美]PaulS.R.Chishohm等著,张芳妮吕波译,清华大学出版社,11996年12月车票管理系统录入班次信息浏览班次信息查询路线售票退票保存信息退出系统按班次查询按终点站查询按y继续录入班次信息录入成功输入错误录入班次输入发车时间输入行车时间输入起点站输入额定载量按任意键返回主菜单按Y继续查找,按任意键返回主菜单按2终点站查询按1按班次查询进入查询界面依据提示操作进入售票界面售票成功班次不存在票已售完车已发出继续售票按Y,返回主菜单按任意键structBuses{//定义汽车intnumber;structTimestime;charstart
[30];charend
[30];floattime_cost;intcarry_number;intbooK_number;};数据结构2structTimes{inthour;intmin;intsec;};数据结构1。