车票管理系统.pdf

上传人:w**** 文档编号:72510101 上传时间:2023-02-11 格式:PDF 页数:19 大小:798.12KB
返回 下载 相关 举报
车票管理系统.pdf_第1页
第1页 / 共19页
车票管理系统.pdf_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《车票管理系统.pdf》由会员分享,可在线阅读,更多相关《车票管理系统.pdf(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、车车票票管管理理系系统统 Revised by Petrel at 2021一、课程设计的内容车票管理系统车票管理系统一车站每天有 n 个发车班次,每个班次都有一班次号(1、2、3n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如班次发车时间起点站终点站行车时间额定载量已定票人数18:00 郫县广汉 2453026:30 郫县成都 0.5404037:00 郫县成都 0.54020410:00 郫县成都 0.5402(一)功能要求:用 c/c+设计一系统,能提供下列服务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示

2、出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。(3)查询路线:可按班次号查询,可按终点站查询(4)售票和退票功能 A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数二、课程设计的要求与数据1、进一步掌握和利用 C 语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或 N-S 图表示算法;6、掌握书写程序设计开发文档的能力

3、。三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告,课程设计报告的内容应包括以下 6 个部分:1)需求分析:包括设计题目、设计要求以及系统功能需求分析;2)总体设计:包括系统总体设计框架和系统功能模块图;3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4)调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);5)总结:课程设计完成了哪些功能,有没有什么扩展功能还有哪些地方需要改进课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;

4、6)附录:主要源程序代码,含必要的注释。3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。目录目录第一章目的与要求.错错误误!未指定书签。未指定书签。第二章总体设计.错错误误!未指定书签。未指定书签。第三章详细设计.错错误误!未指定书签。未指定书签。3.1 功能模块设计.错错误误!未指定书签。未指定书签。3.2 数据结构设计.错错误误!未指定书签。未指定书签。第四章调试分析.错错误误!未指定书签。未指定书签。第五章总结.错错误误!未指定书签。未指定书签。第六章附录.错错误误!未指定书签。未指定书签。参考文献.错错误误!未指定书签。未指定书签

5、。第一章目的与要求编写目的:便于车站管理部门对汽车班次信息的统计和管理,提高车站部门的工作效率,能够更好的为市民服务,同时也便于旅客了解相关的信息,方便出行。要求:1.能够录入汽车班次信息,如班次号,发车时间,起点站,终点站,行车时间,额载量,已订票人数等。2.能够浏览班次信息,显示信息总和(如果已发出站的要要显示“已经开出”)。3.查询路线:可按班次号查询,可按终点站查询。4.售票功能:当查询出已定票人数小于额定载量且当前系统时间小于发车时间才能售票,自动更新已售票人数。5.退票功能:输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。第二章总体设计1)系统总体设计框架2)主要功能

6、流程图:录入班次信息功能流程图:车票管理系统录入班次信浏览班次信查询路线售票退票保存信息退出系统浏览班次功能流程图:售票系统工作流程图:售票系统工作流程图:录入班输入错误进入售票界面进入查询界面第三章详细设计按输入发车时依据提示操作3.1 功能模块设计继班续售票车输入起点站while(选择的是“Y”)次录票按已按已不入成售发存班功打印当前时间按完终出输入行车时在次班点次打印“班次发车时间起点站终点站行车时间额定载量已定票人数”站查查输入额定载量for()继续售票按 Y,返回主菜单按任意信息录入输出班次信息成按 Y继续查找,按任意键返回主菜单y12按任意键返回主菜提示输入车的班次if(当查询出已

7、定票人数小于额定载量且当前系统时间小于发车时间时)提示售票成功!订票人数加 1;IF(额定载量小于订票人数)提示票已售完!;elseif(输入的班次号小于零)该车不存在!elseif(当前系统时间晚于发车时间)提示车已发出!提示继续售票按 Y,按任意键返回主菜单!输入一个字符;while(输入的是 Y 的时候)提示输入要退票的车次;输入一个字符;if(输入的班次号存在和系统时间比发车时间晚)订票人数-1;提示退票成功!elseif(输入的班次号小于零)提示该班次不存在!;)elseif(要退票的那辆车的发车时间早过现在系统时间)提示车已发出不能退票!;提示继续退票请按(Y),返回主菜单按任意键

8、;输入一个字符;打印“车票管理系统”;打印“系统时间”;打印“录入班次信息”;打印“查询班次信息”;打印“售票”;打印“退票”;打印“保存车次信;打印“退出系统”;打印“请选择(0-6)”;打印“车票管理系统;得到一个字符;返回值;3.2 数据结构设计(可选)structTimes程序中涉及的数据过多,本人决定采用两个结构体处理数据。其中时间为一个structBuses/定义汽车inthour;intmin;1),它又是汽车结构体(即结构intnumber;数据结构体(即结构2)的一个成员元素,这intsec;structTimestime;charstart30;样处理数据容易些。数据结构

9、1charend30;floattime_cost;intcarry_number;intbooK_number;数据结构 2第四章调试分析本人在写代码的过程中觉得难控制的是那个班次数。因为本系统提供了个录入信息功能,可以不定时的增加班次,即这个班次数是不确定的。而这个班次数又影响到查询函数,退票函数,售票函数等,另外还影响到一些功能小函数,如比较时间函数等。经过上网查找资料,我发现有一个巧妙的方法可以解决这个问题,即设定一个静态局部变量(即代码中的 H),这样每当班次号改变之后这个 H 的值就和它的班次号一样大,这样就可以解决之前提到的问题了。另外,这个系统要有一个保存文件功能,由于本人对文

10、件保存处理不清楚,设计过程中一直搞不明白。最后在网上查到了相关信息才可以弄出。以下是该程序运行的部分结果:主界面:信息录入图和浏览时刻表:查询售票图:退票图:保存信息图:第五章总结经历近几天的学习和锻炼,这个车票管理系统算是做出来了(不过我承认我是参考网上代码所得,我基本能看懂)。它基本有前面提到过的功能,即录入班次信息,浏览班次信息,售票和退票,保存文件。有一个扩展功能,即可以退出系统(代码中的 sys_exit()函数)。不过目前我发现它一个不足之出,就是不能对输入时间的格式起限制作用。如我可以输入 26:30:00,它系统不会提示说输入错误提示再输入一个正确的时间。还有,就是整个代码条理

11、不够清晰,只是用到一个主函数和调用其他函数,可读性差!我认为最好是能分模块化处理,分文件处理,这样条理性强,可读性高,再者修改也容易。不过由于本人水平有限,不能这样处理。经历这近几天的锻炼,我也比较满意自己的表现。在这过程中我查阅了很多书,学到了很多课堂上没有的东西。很多知识我之前不知道的现在大部分都知道了,不过理解不够深透,,导致在这近几天里碰了不少壁!近几天我觉得编程既是一项费时费力但也是有趣的事。说它费时费力是因为它繁琐,而有趣是因为我很享受一段段的小程序编成功之后的喜悦,苦尽干来啊。我觉得编程是一件快乐的差事,我想我今后会加把时间学习它,把它学好。第六章附录程序代码:#includes

12、tdio.h#includetime.h#includewindows.h#includestring.h#includedos.h#includestdlib.h#includectype.h#defineMax50/最大贮赌量#definenull0staticintH=0;structTimes/定义时钟inthour;intmin;intsec;structBuses/定义汽车intnumber;structTimestime;charstart30;charend30;floattime_cost;intcarry_number;intbooK_number;structBusesb

13、usMax;time_tnow=time(0);tm*tnow=localtime(&now);voidload();/载入车次信息voidlu(void);/声明录入函数voidchaxun(structBusesbus);/声明查询路线函数voidsave(structBusesbus);/声明保存函数intcaidan();/声明菜单录数voidliulan(structBusesbus);/声明浏览函数voidtuipiao(structBusesbus);/退票voidshoupiao(structBusesbus);/声明售票函数voidxitongtuichu();/声明退出函数

14、/工具函数structBusescopy(structBusesb1,structBusesb2);/赋值voidsort_time(structBusesbus);/声明按时间发车的先后顺序排序intcompare_time(structTimest1,structTimest2);/时间比较函数intcompare_systime(structBusesbus,tm*T);/比较发车时间与当前系统时间的函数voidprint(structBusesbus);/声明输入出函数intnumber_search(structBusesbus,intnum);/声明按班次查询函数intend_se

15、arch(structBusesbus,charends);/声明按终点查询函数voidmain()/主函数while(1)system(cls);switch(caidan()case1:lu();break;case2:liulan(bus);break;case3:chaxun(bus);break;case4:shoupiao(bus);break;case5:tuipiao(bus);break;case6:save(bus);break;case0:xitongtuichu();break;intcompare_systime(structBusesbus,tm*T)/与系统时间的

16、比较函数=T-tm_hour)return1;return1;return1;elsereturn0;return0;return0;structBusescopy(structBusesb1,structBusesb2)b1.booK_number=b2.booK_number;b1.carry_number=b2.carry_number;strcpy(b1.end,b2.end);b1.number=b2.number;strcpy(b1.start,b2.start);b1.time_cost=b2.time_cost;returnb1;voidliulan(structBusesbu

17、s)/浏览车次getchar();system(cls);inti;printf(ntttt 车辆时刻表n);printf(ttt*n);printf(t 班次发车时间起点站终点站行车时间额定载量已定票人数);printf(nt-n);sort_time(bus);for(i=0;it2.hour)return1;if(t1.min=t2.min)return1;if(t1.sec=t2.sec)return1;elsereturn0;return0;return0;voidsort_time(structBusesbus)/按发车时间排序inti,j,k;structBusesb=0;for

18、(i=0;iH-1;i+)k=i;for(j=i+1;jH;j+)if(compare_time(busi.time,busj.time)k=j;if(k!=i)b=copy(b,busi);busi=copy(busi,busk);busk=copy(busk,b);intnumber_search(structBusesbus,intn)/按班次查询inti;for(i=0;itm_year,tnow-tm_mon+1,tnow-tm_mday);printf(tt|-|n);printf(tt|菜单|n);printf(tt|-|n);printf(tt|(1)录入班次信息|n);pri

19、ntf(tt|-|n);printf(tt|(2)显示班次信息|n);printf(tt|-|n);printf(tt|(3)查询班次信息|n);printf(tt|-|n);printf(tt|(4)售票|n);printf(tt|-|n);printf(tt|(5)退票|n);printf(tt|-|n);printf(tt|(6)保存车次信息|n);printf(tt|-|n);printf(tt|(0)退出系统|n);printf(tt|-|n);printf(ntt 请选择(0-6):);scanf(%d,&a);return(a);voidsave(structBusesbus)/

20、保存函数体getchar();FILE*fp;inti;if(fp=fopen(Bus_system,wb)=null)printf(不能打开文件n);return;for(i=0;i=0)printf(你输入的班次已存在请重新输入!:);scanf(%d,&busi.number);getchar();printf(请输入时间如:(20:30:00):);scanf(%d:%d:%d,&busi.time.hour,&busi.time.min,&busi.time.sec);getchar();printf(请输入车的起点站:);scanf(%s,busi.start);getchar()

21、;printf(请输入车的终点站:);scanf(%s,busi.end);getchar();printf(请输入行车时间:);scanf(%f,&busi.time_cost);getchar();printf(请输入车的额定载量:);scanf(%d,&busi.carry_number);getchar();busi.booK_number=0;H+;i+;printf(信息录入成功!n);printf(继续录入请按(Y),返回主菜单按任意键.);flag=getchar();voidchaxun(structBusesbus)/查询路线inta,i=0;intm=0;charflag

22、=Y;while(toupper(flag)=Y)charend30;system(cls);printf(n 按班次查询请按 1n 终点站查询请按 2n 请选择(1-2):);scanf(%d,&a);while(a!=1&a!=2)printf(注意只能选择 1 或 2!n 请重新输入:);scanf(%d,&a);getchar();switch(a)case1:printf(请输入车次号:);scanf(%d,&m);getchar();i=number_search(bus,m);if(i=0)printf(ntttt 车辆时刻表n);printf(ttt*n);printf(t 班

23、次发车时间起点站终点站行车时间额定载量已定票人数);printf(nt-n);print(busi);printf(t-n);elseprintf(nttt 没有你要查找的记录!n);break;case2:printf(请输入车的终点站:);scanf(%s,end);getchar();while(iH)if(m=end_search(busi,end)=1)printf(ntttt 车辆时刻表n);printf(ttt*n);printf(t 班次发车时间起点站终点站行车时间额定载量已定票人数);printf(nt-n);print(busi);i+;break;for(i;iH;i+)

24、if(end_search(busi,end)=1)print(busi);if(m=1)printf(t-n);for(i=0;itm_hour,tnow-tm_min,tnow-tm_sec);printf(t 班次发车时间起点站终点站行车时间额定载量已定票人数);printf(nt-n);for(intj=0;j=0&busn.carry_numberbusn.booK_number&compare_systime(busn,tnow)printf(nttt 售票成功!n);busn.booK_number+;printf(t 班次发车时间起点站终点站行车时间额定载量已定票人数);pri

25、ntf(nt-n);print(busn);printf(nt-n);if(busn.carry_number=busn.booK_number)printf(nttt 该次车的票已售完!n);elseif(n=0&compare_systime(busi,tnow)busi.booK_number-;printf(nttt 退票成功!n);elseif(i0)printf(nttt 该车次不存在!n);elseif(!compare_systime(busn,tnow)printf(nttt 车已发出不能退票!n);printf(t 继续退票请按(Y),返回主菜单按任意键.);flag=ge

26、tchar();voidload()/载入车次信息FILE*fp;inti=0;while(fp=fopen(Bus_system,rb)=NULL)/以 rb 形式打开文件return;for(i;!feof(fp);i+,H+)if(fread(&busH,sizeof(structBuses),1,fp)!=1)if(feof(fp)fclose(fp);return;fclose(fp);voidxitongtuichu()/退出函数system(cls);getchar();charflag=null;printf(nntt 你确定要退出并保存信息吗(Y/N);flag=getcha

27、r();if(toupper(flag)=Y)save(bus);exit(0);elseif(toupper(flag)=N)exit(0);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、TurboC2.0实用大全,常玉龙等编写,北京航空航天大学出版社,1994年 9 月。9、C 语言程序设计习题集(第二版),陈朔鹰陈英主编,人民邮电出版社,2003 年 2 月。10、C 语言趣味程序百例精解,陈朔鹰陈英主编,北京理工大学出版社,1996年。11、C 语言程序设计辅导与习题集,田淑清等,中国铁道出版社,2000年1 月。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com