铁路售票管理系统.docx
- 文档编号:10354053
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:45
- 大小:367.16KB
铁路售票管理系统.docx
《铁路售票管理系统.docx》由会员分享,可在线阅读,更多相关《铁路售票管理系统.docx(45页珍藏版)》请在冰豆网上搜索。
铁路售票管理系统
《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)提交课程设计报告:
完成系统总结报告以及系统使用说明书
第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)初始化函数:
输入了初次对象的车次、列车发出时间、起始站、终点站、剩余车票数。
进行了车票信息的储存。
结果将车票信息保存在了ticket.txt。
2)增添函数:
输入了不同对象的车次、列车发出时间、起始站、终点站、剩余车票数。
进行了车票信息的储存。
结果将车票信息保存在了ticket.txt。
第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
#include
#include
#include
constintN=10;
staticintg_num=-1;
intj;
inta=0;
charii[10];
longt=time(0);
classuser
{
protected:
structTime
{
inthour;
intminute;
};
charnum[10];
Timetime;
charstart[20];
charend[20];
intprice;
intcount;
public:
voidprint();
voidsearch();
voiddingpiao();
voidtuipiao();
};
classservice:
publicuser
{
public:
voidchushihua();
voidadd();
friendvoidckym();
friendvoidglyym();
friendvoidsfyz();
friendvoidsave();
friendvoidread();
friendvoidinput();
friendvoiddisplay(intj);
friendvoidsearch_CC();
friendvoidsearch_QS();
friendvoidsearch_ZD();
};
serviceticket[10];
voidinput()
{
g_num++;
cout<<"请输入车次:
"< cin>>ticket[g_num].num; cout<<"请输入起始站: "< cin>>ticket[g_num].start; cout<<"请输入终点站: "< cin>>ticket[g_num].end; cout<<"请输入时间(时): "< cin>>ticket[g_num].time.hour; cout<<"请输入时间(分): "< cin>>ticket[g_num].time.minute; cout<<"请输入票价: "< cin>>ticket[g_num].price; cout<<"请输入车票数: "< cin>>ticket[g_num].count; save(); } voidsave() { ofstreamfile("ticket.txt",ios: : in); for(intj=0;j<=g_num;j++) { file< file< file< file< file< file< file< } file.close(); cout<<"信息已存入文件"< } voidread()//读取函数 { ifstreamfile("ticket.txt",ios: : out); while(! file.eof()) { g_num++; file>>ticket[g_num].num; file>>ticket[g_num].time.hour; file>>ticket[g_num].time.minute; file>>ticket[g_num].start; file>>ticket[g_num].end; file>>ticket[g_num].price; file>>ticket[g_num].count; } g_num--; file.close(); cout<<"读取完毕! "< } voiddisplay(intj) { cout< < " < < t=: : time(NULL); tm*pt=localtime(&t); if(ticket[j].time.hour cout<<"此班列车已发出"; elseif(ticket[j].time.hour==pt->tm_hour&&ticket[j].time.minute<=pt->tm_min) cout<<"此班列车已发出"; elsecout<<"正常"; cout< } voidoutput()//输出列车信息 { intj; t=time(NULL); tm*pt=localtime(&t); cout<<"当前时间: "<<"\t"< '< '; cout< cout<<"车次信息如下: "< cout<<"车次\t"<<"起始站\t"<<"终点站\t"<<"发车时间\t"<<"票价\t"<<"剩余票数\t"<<"状态"< for(j=0;j<=g_num;j++) { display(j); } } /**************************************订票模块***************************************/ voiduser: : dingpiao()//订票函数 { system("cls"); tm*pt=localtime(&t); intn; chara[10]="y"; do { search(); if(! strcmp(ii,"n")) { cout<<"对不起! 没有找到您所需要的列车信息,不能订票。 "< cout<<"请按回车键返回上层菜单"< getchar(); strcpy(ii,"n"); return; } if(ticket[j].time.hour { cout<<"此班列车已发出,不能订票! ! "; cout<<"请按回车键返回上层菜单"< getchar(); strcpy(ii,"n"); break; } elseif(ticket[j].time.hour==pt->tm_hour&&ticket[j].time.minute<=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].time.hour { cout<<"此班列车已发出,不能退票! ! "< strcpy(ii,"n"); getchar(); break; } elseif(ticket[j].time.hour==pt->tm_hour&&ticket[j].time.minute<=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()//按查找列车信息方式选择函数 { system("cls"); intn; cout<<"1.按车次查询"< "\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()//按列车号查找 { system("cls"); chart[10]; do { cout< "< cin>>t; for(j=0;j<=g_num;j++) { if(strcmp(t,ticket[j].num)==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()//按列车号查找 { system("cls"); charq[20]; do { cout< "< cin>>q; for(j=0;j<=g_num;j++) { if(strcmp(q,ticket[j].start)==0) { cout<<"你所要查询的列车信息为: "< cout<<"车次\t"<<"开车时间\t"<<"起始\t"<<"终点\t"<<"票价\t" <<"剩余座位\t"<<"状态\t"< display(j); cout<<"\n查询完毕,按回车键继续"< strcpy(ii,"y"); getchar(); return; } } cout<<"\n对不起,没有您需要的信息! "< cout<<"是否重新查找? 请键入y或n以回车键结束";
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 铁路 售票 管理 系统