铁路售票管理系统完整版.docx
- 文档编号:9377211
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:23
- 大小:104.93KB
铁路售票管理系统完整版.docx
《铁路售票管理系统完整版.docx》由会员分享,可在线阅读,更多相关《铁路售票管理系统完整版.docx(23页珍藏版)》请在冰豆网上搜索。
铁路售票管理系统完整版
HENsystemofficeroom【HEN16H-HENS2AHENS8Q8-HENH1688】
铁路售票管理系统
《C++程序设计》
课程设计说明书
题目
铁路售票系统
学号
姓名
指导教师
日期
内蒙古科技大学课程设计任务书
课程名称
面向对象程序设计A课程设计
设计题目
铁路售票管理系统的设计
指导教师
周李涌
时间
2013-2014秋学期第17、18周
一、教学要求
1.巩固和加深学生对C++语言课程的基本知识的理解和掌握
2.掌握C++语言编程和程序调试的基本技能
3.利用C++语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C++语言解决实际问题的能力
二、设计资料及参数
用C++设计一个系统,能提供下列服务:
(1)录入车次信息,格式为:
车次
发车时间
起始
终点
硬座票价
剩余座位
k264
20:
30
包头
北京
110
200
可不定时地增加车次数据。
(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此班列车已发出”的提示信息。
(3)查询路线:
可按车次编号查询,可按起始站,终点站查询
(4)售票和退票功能
A:
查询车次或站点。
当剩余座位数大于0,并且当前系统时间小于发车时间时才能售票,售票后自动更新剩余座位数。
B:
退票时,输入退票的车次,当本班列车未发出时才能退票,退票后自动更新剩余座位数。
三、设计要求及成果
根据系统功能要求,可以将问题解决分为以下步骤:
(1)分析系统中的各个实体之间的关系及其属性和行为;
(2)根据问题描述,设计系统的类层次;
(3)完成类层次中各个类的描述(包括属性和力一法);
(4)完成类中各个成员函数的定义;
(5)完成系统的应用模块;
(6)功能调试;
(7)提交课程设计报告:
完成系统总结报告以及系统使用说明书
0
0
0
1
2
3
3
第1章需求分析
用C++设计一个系统,能提供下列服务:
(1)录入车次信息,格式为:
车次
发车时间
起始
终点
硬座票价
剩余座位
k264
20:
30
包头
北京
110
200
可不定时地增加车次数据。
(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此班列车已发出”的提示信息。
(3)查询路线:
可按车次编号查询,可按起始站,终点站查询
(4)售票和退票功能
A:
查询车次或站点。
当剩余座位数大于0,并且当前系统时间小于发车时间时才能售票,售票后自动更新剩余座位数。
B:
退票时,输入退票的车次,当本班列车未发出时才能退票,退票后自动更新剩余座位数。
第2章总体设计
1.用结构框图表示各个功能之间的关系。
2.将框图中系统的各个功能用文字详细的描述。
1)初始化:
在未添加过列车信息的情况下,管理员进入系统初次录入列车信息。
2)添加:
管理员添加列车信息。
3)浏览:
浏览列车信息,显示车次、发车时间、起始站、终点站、硬座票价、剩余座位、列车是否发出。
4)查找:
查找列车信息(分别为按车次、起始站、终点站)。
5)订票:
订购车票;已发出的列车不能订票。
6)退票:
退还车票;已发出的列车不能退票。
第3章类的设计
3.1user类的设计(第一个类)
1.画出类图
User
数据成员
structTime
{
inthour;
intminute;
};
charnum[10];
Timetime;
charstart[20];
charend[20];
intprice;
intcount;
函数成员
voidprint();
voidsearch();
voiddingpiao();
voidtuipiao();
2.对类的函数成员的说明
在第一个类中定义了浏览函数、查找函数、订票函数、退票函数
函数的首部:
1)浏览函数:
输入了当地时间、车次、列车发出时间、起始站、终点站、剩余车票;
进行了选择对象与输出流操作;
输出了当地时间,不同车次的车次编号、列车发出时间、起始站、终点
站、剩余车票、列车状态;
2)查找函数:
输入了车次(或起始站或终点站)。
进行输入车次(或起始站或终点站)与数据库内的车票信息的匹配。
输出了相匹配的车次的信息。
3)订票函数:
输入了车次(或起始站或终点站)。
进行输入车次(或起始站或终点站)与数据库内的车票信息的匹配。
判断是否允许
被购买,然后进行是否购买。
刷新车票。
输出车票已订购。
4)退票函数:
输入了车次(或起始站或终点站)。
进行输入车次(或起始站或终点站)与数据库内的车票信息的匹配。
判断是否允许
被退票,然后进行是否退票。
刷新车票。
输出车票已退还。
3.2service类的设计(第二个类)
1.画出类图
service
数据成员:
structTime
{
inthour;
intminute;
};
charnum[10];
Timetime;
charstart[20];
charend[20];
intprice;
intcount;
函数成员:
voidchushihua();
voidadd();
友元函数:
friendvoidckym();
friendvoidglyym();
friendvoidsfyz();
friendvoidsave();
friendvoidread();
friendvoidinput();
friendvoiddisplay(intj);
friendvoidsearch_CC();
friendvoidsearch_QS();
friendvoidsearch_ZD();
2.对类的函数成员的说明
1)初始化函数:
输入了初次对象的车次、列车发出时间、起始站、终点站、剩余车票数。
进行了车票信息的储存。
结果将车票信息保存在了。
2)增添函数:
输入了不同对象的车次、列车发出时间、起始站、终点站、剩余车票数。
进行了车票信息的储存。
结果将车票信息保存在了。
第4章详细设计
4.1工程视图
4.2类图视图
4.3主程序流程图
Y
N
N
Y
0N
1-6Y
0
1-4
4.4主要算法的流程图
初始化函数:
Y
N
添加模块:
Y
N
查询模块:
123
订票函数:
N
Y
Y
N
退票函数:
N
Y
Y
N
第5章测试
程序的运行结果截图:
第6章总结
感谢老师的辛苦教学与悉心指导,通过本次课程设计,让我更加深刻的理解到了C++得运用,这门语言的奥妙之处。
相信这次实训会让我在今后的学习中受益匪浅。
附录:
程序代码
#include<>
#include<>
#include<>um;
cout<<"请输入起始站:
"< cin>>ticket[g_num].start; cout<<"请输入终点站: "< cin>>ticket[g_num].end; cout<<"请输入时间(时): "< cin>>ticket[g_num].; cout<<"请输入时间(分): "< cin>>ticket[g_num].; cout<<"请输入票价: "< cin>>ticket[g_num].price; cout<<"请输入车票数: "< cin>>ticket[g_num].count; save(); } voidsave() { ofstreamfile("",ios: : in); for(intj=0;j<=g_num;j++) { file< file< file< file< file< file< file< } (); cout<<"信息已存入文件"< } voidread()um; file>>ticket[g_num].; file>>ticket[g_num].; file>>ticket[g_num].start; file>>ticket[g_num].end; file>>ticket[g_num].price; file>>ticket[g_num].count; } g_num--; (); cout<<"读取完毕! "< } voiddisplay(intj) { cout< < " < < t=: : time(NULL); tm*pt=localtime(&t); if(ticket[j]. cout<<"此班列车已发出"; elseif(ticket[j].==pt->tm_hour&&ticket[j].<=pt->tm_min) cout<<"此班列车已发出"; elsecout<<"正常"; cout< } voidoutput() { cout<<"此班列车已发出,不能订票! ! "; cout<<"请按回车键返回上层菜单"< getchar(); strcpy(ii,"n"); break; } elseif(ticket[j].==pt->tm_hour&&ticket[j].<=pt->tm_min) { cout<<"此班列车已发出,不能订票! "; getchar(); strcpy(ii,"n"); break; } do { cout<<"请输入您要订的车票数(以回车键结束): "; cin>>n; if(n<=0) { cout<<"输入错误! 至少需订1张车票。 "< } elseif(ticket[j].count! =0&&ticket[j].count>=n) { ticket[j].count=ticket[j].count-n; cout<<"订票成功! "; break; } elseif(ticket[j].count==0) { cout<<"对不起,你所选择的列车的车票已售完! "< break; } elseif(ticket[j].count { cout<<"对不起,你所选择的列车只剩余"< cout<<"是否需要重新输入车票数? 请输入y或n以回车键结束: "; cin>>a; } }while(! strcmp(a,"y")); cout<<"是否需要重新订购其他车票? 请输入y或n以回车键结束: "; cin>>a; }while(! strcmp(a,"y")); } /***********************************退票模块*******************************************/ voiduser: : tuipiao() { system("cls"); tm*pt=localtime(&t); intn; chara[10]; do { search(); if(! strcmp(ii,"n")) { cout<<"对不起! 没有找到您所需要的列车,所以不能退票。 "< cout<<"请按回车键返回上层菜单"< strcpy(ii,"n"); getchar(); return; } if(ticket[j]. { cout<<"此班列车已发出,不能退票! ! "< strcpy(ii,"n"); getchar(); break; } elseif(ticket[j].==pt->tm_hour&&ticket[j].<=pt->tm_min) { cout<<"此班列车已发出,不能退票! "< strcpy(ii,"n"); getchar(); break; } cout<<"请输入您要退的车票数: "< cin>>n; if(n<=0) cout<<"输入错误! 至少需退1张车票。 "< else { ticket[j].count=ticket[j].count+n; cout<<"退票成功! "; } cout<<"是否继续? 请键入y或n以回车键结束: "< cin>>a; }while(! strcmp(a,"y")); } /**************************************查询模块*********************************************************************/ voiduser: : search()车次查询"< "\t2.按起始站查询"< cout<<"请选择1或2或3,以回车键结束: "; cin>>n; for(;n! =1&&n! =2&&n! =3;) { cout<<"指令错误! 请重新输入! "< cin>>n; } switch(n) { case1: search_CC(); break; case2: search_QS(); break; case3: search_ZD(); break; } } voidsearch_CC()um)==0) { cout<<"你所要查询的列车信息为: "< cout<<"车次\t"<<"起始站\t"<<"终点站\t"<<"发车时间\t"<<"票价\t"<<"剩余票数\t"<<"状态"< display(j); cout<<"\n查询完毕,按回车键继续"< strcpy(ii,"y"); getchar(); return; } } cout<<"\n对不起,没有您需要的信息! "< cout<<"是否重新查找? 请键入y或n以回车键结束"; cin>>ii; }while(! strcmp(ii,"y")); } voidsearch_QS()tart)==0) { cout<<"你所要查询的列车信息为: "< cout<<"车次\t"<<"开车时间\t"<<"起始\t"<<"终点\t"<<"票价\t" <<"剩余座位\t"<<"状态\t"< display(j); cout<<"\n查询完毕,按回车键继续"< strcpy(ii,"y"); getchar(); return; } } cout<<"\n对不起,没有您需要的信息! "< cout<<"是否重新查找? 请键入y或n以回车键结束"; cin>>ii; }while(! strcmp(ii,"y")); } voidsearch_ZD()nd)==0) { cout<<"你所要查询的列车信息为: "< cout<<"车次\t"<<"开车时间\t"<<"起始\t"<<"终点\t"<<"票价\t" <<"剩余座位\t"<<"状态\t"< display(j); cout<<"\n查询完毕,按回车键继续"< strcpy(ii,"y"); getchar(); return; } } cout<<"\n对不起,没有您需要的信息! "< cout<<"是否重新查找? 请键入y或n以回车键结束"; cin>>ii; }while(! strcmp(ii,"y")); } /*******************************************************浏览模块*****************************************************/ voiduser: : print()览车次信息"< cout<<"2.查找车次信息"< cout<<"3.订票业务"< cout<<"4.退票业务"< cout<<"0.退出"< cout<<"********************************************************************************"< cout<<"请输入选项前数字(回车键结束): "< cin>>j; switch(j) { case1: ticket[9].print(); break; case2: ticket[9].search(); break; case3: ticket[9].dingpiao(); break; case4: ticket[9].tuipiao(); break; case0: save(); cout<<"谢谢使用,您已退出乘客系统,再见"< break; } }while(j! =0); } voidglyym()hushihua(); intj; do { cout<<"********************************************************************************"; cout<<"1.增加车次信息"< cout<<"2.浏览车次信息"< cout<<"3.查找车次信息"< cout<<"4.订票业务"< cout<<"5.退票业务"< cout<<"0.退出"< cout<<"********************************************************************************"; cout<<"请输入选项前数字(回车键结束): "; cin>>j; switch(j) { case1: ticket[9].add(); break; case2: ticket[9].print(); break; case3: ticket[9].search(); break; case4: ticket[9].dingpiao(); break; case5: ticket[9].tuipiao(); break; case0: save(); cout<<"谢谢使用,您已退出管理员系统,再见"< break; } }while(j! =0); } voidsfyz()理员"< cin>>sf; if(sf==1) { cout<<"请输入密码: "; cin>>code; while(code! =1)//管理员密码为1 { cout<<"指令错误! 请重新输入! "< cin>>code; } glyym();//调用管理员选择页面函数 } elseif(sf==2) { ckym();//调用乘客界面 } }while(sf! =0); } voidmain() { cout<<"》》》》》》》》》》》》》》》欢迎使用铁路订票系统《《《《《《《《《《《《《《《"< cout<<"\t\t\t\t\t\t☆☆"< sfyz();//调用身份验证函数 cout<<"谢谢使用,再见! ! "< }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 铁路 售票 管理 系统 完整版