基于C++的火车票管理系统C++课程设计样本.doc
《基于C++的火车票管理系统C++课程设计样本.doc》由会员分享,可在线阅读,更多相关《基于C++的火车票管理系统C++课程设计样本.doc(22页珍藏版)》请在咨信网上搜索。
信息科学与技术学院 《程序设计基本》课程设计报告 题目名称: 车票管理系统 专业班级: 电子信息工程 10级2班 学生姓名: 王彪 樊江涛 学生学号: 指引教师: 高 攀 完毕日期:-01 目 录 1 课程设计综述————————————————— 3 1.1 课程设计目——————————————— 3 1.2 课程设计题目——————————————— 3 1.3 题目规定—————————————————— 3 2 概要设计——————————————————— 3 3 详细设计——————————————————— 4 3.1 流程图——————————————————— 4 3.2 源程序 ——————————————————4 4 测试 ——————————————————— 5 5 课程设计总结————————————————— 5 1.课程设计综述 1.1 课程设计目 让咱们更加进一步理解C++,使咱们一学期学习到东西得到实践. 1.2 课程设计题目 火车票管理系统 1.3 题目规定 用c++设计一种系统,能提供下列服务: (1)录入班次信息(信息用文献保存),可不定期地增长班次数据 (2)浏览班次信息,可显示出所有班次当前状态(如果当前系统时间超过了某班次发车时间,则显示“此班已发出”提示信息)。 (3)查询路线:可按班次号查询 ,可按终点站查询 (4)售票和退票功能 A:当查询出已定票人数不大于额定载量且当前系统时间不大于发车时间时才干售票,自动更新已售票人数 B:退票时,输入退票班次,当本班车未发出时才干退票,自动更新已售票人数 2 方案选取 1)算法设计阐明 由主函数进入,弹出主菜单界面,通过Switch语句选取需要功能,可以选取班次录入,浏览班次信息,查询班次信息,购票和退票以及退出系统,以完毕不同操作.其中查询班次信息中还可以由班次查询或者终点站查询.整个系统文献载入用一种文献载入函数承当. 3 详细设计 3.1 流程图 开始 Main函数,进入Switch语句 班次录入子函数 浏览班次子函数 查询子函数 购买车票子函数 退订车票子函数 按照班次查询 按照终点站查询 返回到主菜单 退出程序子函数 结束 3.2 源程序 #include <iostream> #include <fstream> #include <string> #include<time.h> using namespace std; void welcome(); //欢迎子函数 void choose(); //选取子函数 void banciluru(); //班次录入子函数 void liulanbancixinxi(); //浏览班次信息子函数 void shoupiao(); //售票子函数 void tuipiao(); //退票子函数 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 Qidian[MAX]; char Zhongdian[MAX]; float Lasttime; int Fixnumber; int Fixednumber; }car[N]; //主函数 int main() { welcome(); return 0; } //欢迎子函数 void welcome() { cout<<"________________________________________________________"<<endl; cout<<"| 欢 * 迎 * 使 * 用 * 火 * 车 * 票 * 管 * 理 * 系 * 统 |"<<endl; cout<<"| |"<<endl; cout<<"| 本管理系统有如下功能: |"<<endl; cout<<"| |"<<endl; cout<<"| 1 班次录入 |"<<endl; cout<<"| 2 浏览班次信息 |"<<endl; cout<<"| 3 查询火车信息 |"<<endl; cout<<"| 4 购买火车票 |"<<endl; cout<<"| 5 退订火车票 |"<<endl; cout<<"| 6 退出系统 |"<<endl; cout<<"|______________________________________________________|"<<endl; cout<<"请输入所要执行功能前数字:"<<endl; choose(); } //选取子函数 void choose() { string i; cin>>i; if(i=="1") banciluru(); if(i=="2") liulanbancixinxi(); if(i=="3") chaxun(); if(i=="4") shoupiao(); if(i=="5") tuipiao(); if(i=="6") quit(); else { cout<<"输入有误!请在数字1-5之间重新您输入选取!"<<endl; choose(); } } //班次录入子函数 void banciluru() { string t="1"; ofstream outfile; outfile.open("班次信息.txt",ios::app); for(int i=0;t=="1";i++) { cout<<"请输入需要添加火车班次:"<<endl; cin>>car[i].Number; cout<<"请输入此班次发车时间(格式:先输入小时,回车,再输入分钟):"<<endl; cin>>car[i].Setout.hour; cin>>car[i].Setout.minutes; cout<<"请输入出发站:"<<endl; cin>>car[i].Qidian; cout<<"请输入终点站:"<<endl; cin>>car[i].Zhongdian; cout<<"请输入行车时间:"<<endl; cin>>car[i].Lasttime; cout<<"请输入额定载客量:"<<endl; cin>>car[i].Fixnumber; cout<<"请输入已订票人数:"<<endl; cin>>car[i].Fixednumber; outfile<<car[i].Number<<" "<<car[i].Setout.hour<<" "<<car[i].Setout.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber<<" "<<car[i].Fixednumber<<endl; cout<<"与否继续录入?(是请输1,否请输任意键返回主菜单)"<<endl; cin>>t; if(t!="1") { welcome(); } } outfile.close(); cout<<"输入回车键返回"<<endl; getchar(); getchar(); welcome(); } //浏览班次子函数 void liulanbancixinxi() { int c; c=loading(); cout<<"班次"<<" "<<"发车时间"<<" "<<"起点站"<<" "<<"终点站"<<" "<<"行车时间"<<" "<<"额定载客量"<<" "<<"已订票人数"<<endl; for(int i=0;i<c;i++) { cout<<car[i].Number<<" "<<car[i].Setout.hour<<":"<<car[i].Setout.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber<<" "<<car[i].Fixednumber<<endl; time_t tval; struct tm *now; tval = time(NULL); now = localtime(&tval); if((now->tm_hour==car[i].Setout.hour&&now->tm_min>car[i].Setout.minutes)||(now->tm_hour>car[i].Setout.hour)) cout<<"此车已发出"<<endl; } cout<<"输入回车键返回"<<endl; getchar(); getchar(); welcome(); } //车次查询子函数 void Numbersearch(); void Finalsearch(); void chaxun() { string t; cout<<"1.按班次查询"<<endl; cout<<"2.按终点站查询"<<endl; cout<<"请输入您想选取查询办法前数字:"<<endl; cin>>t; if(t=="1") Numbersearch(); if(t=="2") Finalsearch(); if(t!="1"||t!="2") { cout<<"输入有误,请重新输入"<<endl; chaxun(); } } //班次查询子函数 void Numbersearch() { loading(); int SearchNumber; cout<<"请输入您需要查找班次号:"<<endl; cin>>SearchNumber; cout<<"班次"<<" "<<"发车时间"<<" "<<"起点站"<<" "<<"终点站"<<" "<<"行车时间"<<" "<<"额定载客量"<<" "<<"已订票人数"<<endl; cout<<car[SearchNumber-1].Number<<" "<<car[SearchNumber-1].Setout.hour<<":"<<car[SearchNumber-1].Setout.minutes<<" "<<car[SearchNumber-1].Qidian<<" "<<car[SearchNumber-1].Zhongdian<<" "<<car[SearchNumber-1].Lasttime<<" "<<car[SearchNumber-1].Fixnumber<<" "<<car[SearchNumber-1].Fixednumber<<endl; cout<<"输入回车键返回"<<endl; getchar(); getchar(); welcome(); } //终点站查询子函数 void Finalsearch() { int R; R=loading(); int i; char Address[MAX]; cout<<"请输入终点站名称:"<<endl; cin>>Address; cout<<"班次"<<" "<<"发车时间"<<" "<<"起点站"<<" "<<"终点站"<<" "<<"行车时间"<<" "<<"额定载客量"<<" "<<"已订票人数"<<endl; for(i=0;i<R;i++) { if((strcmp(Address,car[i].Zhongdian))==0) cout<<car[i].Number<<" "<<car[i].Setout.hour<<":"<<car[i].Setout.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber<<" "<<car[i].Fixednumber<<endl; } cout<<"输入回车键返回"<<endl; getchar(); getchar(); welcome(); } //购买火车票子函数 void shoupiao() { int R; R=loading(); int i; cout<<"请输入要订购车票班次:"<<endl; cin>>i; if(i<=0||i>R) { cout<<"对不起,今天没有这趟车,请明天再来,谢谢使用!"<<endl; cout<<"输入回车键返回"<<endl; getchar(); getchar(); welcome(); } time_t tval; struct tm *now; tval = time(NULL); now = localtime(&tval); if((now->tm_hour==car[i-1].Setout.hour&&now->tm_min<car[i-1].Setout.minutes)||(now->tm_hour<car[i-1].Setout.hour)) { if(car[i-1].Fixednumber<car[i-1].Fixnumber) { (car[i-1].Fixednumber)++; ofstream outfile; outfile.open("班次信息.txt",ios::out); for(i=0;i<R;i++) { outfile<<car[i].Number<<" "<<car[i].Setout.hour<<" "<<car[i].Setout.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber<<" "<<car[i].Fixednumber<<endl; } outfile.close(); cout<<"你订票成功,请准时上车,谢谢使用!"<<endl; } else cout<<"对不起,今天这趟车票已卖完,请明天再来,谢谢合伙"<<endl; } else cout<<"对不起,今天这趟车已发出,请明天再来,谢谢合伙"<<endl; cout<<"输入回车键返回"<<endl; getchar(); getchar(); welcome(); } //退订火车票子函数 void tuipiao() { int R; R=loading(); int i; cout<<"请输入要退购车票班次:"<<endl; cin>>i; if(i<=0||i>R) { cout<<"对不起,今天没有这趟车,无法完毕退票.谢谢使用!"<<endl; cout<<"输入回车键返回"<<endl; getchar(); getchar(); welcome(); } time_t tval; struct tm *now; tval = time(NULL); now = localtime(&tval); if((now->tm_hour==car[i-1].Setout.hour&&now->tm_min<car[i-1].Setout.minutes)||(now->tm_hour<car[i-1].Setout.hour)) { if(car[i-1].Fixednumber>=1) { car[i-1].Fixednumber-=1; ofstream outfile; outfile.open("班次信息.txt",ios::out); for(i=0;i<R;i++) { outfile<<car[i].Number<<" "<<car[i].Setout.hour<<" "<<car[i].Setout.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber<<" "<<car[i].Fixednumber<<endl; } outfile.close(); cout<<"退订车票成功,谢谢使用!"<<endl; } else cout<<"对不起,今天这趟车票尚未卖出,无法完毕退票!"<<endl; } else cout<<"对不起,今天这趟车已发出,无法完毕退票!"<<endl; cout<<"输入回车键返回"<<endl; getchar(); getchar(); welcome(); } //退出子函数 void quit() { cout<<"*********************谢谢使用本系统,欢迎下次继续使用***********************"<<endl; } //文献载入子函数 int loading() { int i; ifstream infile; infile.open("班次信息.txt",ios::in); if(!infile) { cout<<"请查看原文献与否存在!"<<endl; cout<<"按任意键返回"; getchar(); getchar(); welcome(); } for(i=0;!infile.eof();i++) { infile>>car[i].Number>>car[i].Setout.hour>>car[i].Setout.minutes>>car[i].Qidian>>car[i].Zhongdian>>car[i].Lasttime>>car[i].Fixnumber>>car[i].Fixednumber; } return i-1; } 4 测试 主菜单: 班次录入: 浏览班次信息: 查询火车信息: 测试中发现订购和退订车票后,虽然已订购车票数事实上有增减,但不能存入到文献中及时保存.日后通过以文献覆盖办法重新录入一次文献得以解决.测试中还发现若时间是整点话,分钟0只能是一种0,由于分钟定义格式是int.,但若果改成char格式之后和系统时间比较函数将不成立.因此这个程序依然存在这样一种问题. 5 课程设计总结 通过这次课程设计,我发现我尚有好多局限性之处,尚有好多知识不能较好运用,并且题目中一种规定没有正常完毕.我觉得咱们应当花更多时间去查找资料,由于仅凭自己已学知识是无法完毕这些内容. 这次课程设计我用了9个子函数去完毕,分开完毕各个函数并验证其对的性,这样办法让我可以顺利完毕整个系统. 局限性之处尚有好多,我应当在后来学习中更加努力完善.6参照书目: [1] 谭浩强,《C++程序设计》,北京,清华大学出版社,.- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 C+ 火车票 管理 系统 课程设计 样本
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文