1、1.2 课程设计的题目火车票管理系统1.3 题目要求用c+设计一个系统,能提供下列服务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状态(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。(3)查询路线:可按班次号查询 ,可按终点站查询(4)售票和退票功能A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数2 概要设计1)算法设计说明由主函数进入,弹出主菜单界面,通过Switch语句选择需要的功能,可以选择
2、班次录入,浏览班次信息,查询班次信息,购票和退票以及退出系统,以完成不同的操作.其中查询班次信息中还可以由班次查询或者终点站查询.整个系统的文件载入用一个文件载入函数承当.3 详细设计3.1 流程图3.2 源程序#include fstreamstring#includeusing namespace std;void welcome(); /欢迎子函数void choose(); /选择子函数void banciluru(); /班次录入子函数void liulanbancixinxi(); /浏览班次信息子函数void shoupiao(); /售票子函数void tuipiao(); /
3、退票子函数void quit(); /退出子函数void chaxun(); /查询子函数int loading(); /文件载入子函数const int MAX=20; /使数组最大值可调const int N=50;struct time /时间结构体,为了与系统时间做比较.int hour;int minutes;struct ticket /车票结构体,包含车次,时间结构体,起点,终点,行车时间,额定载客量,已订票人数int Number;struct time Setout;char QidianMAX;char ZhongdianMAX;float Lasttime; int Fi
4、xnumber;int Fixednumber;carN;/主函数int main() welcome(); return 0;/欢迎子函数void welcome() couti; if(i=1) banciluru();2 liulanbancixinxi();3 chaxun();4 shoupiao();5 tuipiao();6 quit(); else coutcari.Fixednumber; outfilecari.Numbercari.Setout.hourcari.Setout.minutescari.Qidiancari.Zhongdiancari.Lasttimecar
5、i.Fixnumbercari.Fixednumber是否继续录入?(是请输1,否请输任意键返回主菜单)t; if(t!= welcome(); outfile.close();输入回车键返回 getchar();/浏览班次子函数void liulanbancixinxi() int c; c=loading();班次发车时间起点站终点站行车时间额定载客量已订票人数itm_hour=cari.Setout.hour&now-tm_mincari.Setout.minutes)|(now-tm_hourcari.Setout.hour) cout此车已发出/车次查询子函数void Numbers
6、earch();void Finalsearch();void chaxun() string t;1.按班次查询2.按终点站查询请输入您想选择的查询方法前的数字: if(t= Numbersearch(); Finalsearch(); if(t!|t!输入有误,请重新输入 chaxun();/班次查询子函数void Numbersearch() loading(); int SearchNumber;请输入您需要查找的班次号:SearchNumber;carSearchNumber-1.NumbercarSearchNumber-1.Setout.hourcarSearchNumber-1
7、.Setout.minutescarSearchNumber-1.QidiancarSearchNumber-1.ZhongdiancarSearchNumber-1.LasttimecarSearchNumber-1.FixnumbercarSearchNumber-1.Fixednumber/终点站查询子函数void Finalsearch() int R; R=loading(); int i; char AddressMAX;请输入终点站名称:Address; for(i=0;R; if(strcmp(Address,cari.Zhongdian)=0)/购买火车票子函数void sh
8、oupiao()请输入要订购的车票的班次: if(iR)对不起,今天没有这趟车,请明天再来,谢谢使用! getchar(); welcome(); time_t tval;tm_hour=cari-1.Setout.hour&tm_mintm_hourcari-1.Setout.hour) if(cari-1.Fixednumbercari-1.Fixnumber) (cari-1.Fixednumber)+; ofstream outfile;out); for(i=0; outfile outfile.close();你的订票成功,请按时上车,谢谢使用! else cout=1) cari
9、-1.Fixednumber-=1;退订车票成功,谢谢使用!对不起,今天的这趟车的票尚未卖出,无法完成退票!对不起,今天的这趟车已发出,无法完成退票!/退出子函数void quit()coutcari.Numbercari.Setout.hourcari.Setout.minutescari.Qidiancari.Zhongdiancari.Lasttimecari.Fixnumber return i-1;4 测试主菜单:班次录入:浏览班次信息:查询火车信息:测试中发现订购和退订车票后,虽然已订购车票数实际上有增减,但不能存入到文件中及时保存.后来通过以文件覆盖的方法重新录入一次文件得以解决
10、.测试中还发现若时间是整点的话,分钟的0只能是一个0,因为分钟定义的格式是int.,但若果改成char格式之后和系统时间比较的函数将不成立.所以这个程序仍然存在这样的一个问题.5 课程设计总结通过这次的课程设计,我发现我还有好多的不足之处,还有好多知识不能很好的运用,而且题目中的一个要求没有正常的完成.我觉得我们应该花更多的时间去查找资料,因为仅凭自己已学的知识是无法完成这些内容的.这次课程设计我用了9个子函数去完成,分开完成各个函数并验证其正确性,这样的方法让我能够顺利完成整个系统.不足之处还有好多,我应该在以后的学习中更加努力完善.6参考书目:1 谭浩强,C+程序设计,北京,清华大学出版社,2006年.
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2