数据结构课程设计飞机票订票系统大学论文.docx
《数据结构课程设计飞机票订票系统大学论文.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计飞机票订票系统大学论文.docx(19页珍藏版)》请在冰豆网上搜索。
数据结构课程设计飞机票订票系统大学论文
学号
成都理工大学
计算机科学与技术系
数据结构课程设计
设计说明书
题目
订票系统
学生姓名
班级
成绩
指导教师(签字)
计算机科学与技术系
2016年9月20日
目录
第1章问题描述1
(1)录入:
1
(2)查询:
1
(3)订票:
1
(4)退票:
1
1、开发环境2
2、组成框图2
3、流程图3
第3章详细设计4
1.根据飞机订票系统的可设要求,要实现以下功能:
4
2.具体的方法及函数调用的思想:
4
struct:
//它相当于一种记录4
3.方法的实现:
5
1)input();//录入5
2)find();//查询,按终点站来查询6
3)stringtime(shortbegin_hour,charbegin_minute);//调用系统时间6
4)order();//办理订票函数6
5)refund();//办理退票函数6
第4章测试结果及分析7
执行结果:
7
参考文献10
附录:
源代码10
第1章问题描述
通过此系统可以实现如下功能:
(1)录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
(2)查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
(3)订票:
可以订票,如果该航班已经无票,可以提供相关可选择航班;
(4)退票:
订票数量及航班情况。
第2章概要设计
1、开发环境
系统环境:
MicrosoftWindows®10专业版
开发环境:
MicrosoftVisualStudio2015
开发平台:
Win64
开发语言:
C++
硬件环境:
(1)CPU:
IntelCorei5
(2)内存:
4GB
(3)显示卡:
NVIDIAGeForceGTX950M
2、组成框图
3、流程图
第3章详细设计
1.根据飞机订票系统的可设要求,要实现以下功能:
(1)录入:
录入航班情况
(2)查询:
可以查询某个航线的情况
可以输入抵达城市,查询飞机航班情况;
(3)订票:
1)先判断飞机是否起飞,如果发出航班则订票失败,否则可以订机票。
2)当有余票时显示剩余票数,则可以订票成功,如果没有余票,则订票失败。
(4)退票:
1)先判断飞机是否起飞,如果发出航班则订票失败,否则可以订机票。
2)当有余票时显示剩余票数,则可以退票成功,如果没有余票,则退票失败。
2.具体的方法及函数调用的思想:
struct:
//它相当于一种记录
定义要存储的变量:
可以通过以下的声明来建立如图的数据类型
intair_num;//班次号
shortbegin_hour;//起飞时间小时
shortbegin_minute;//起飞时间分钟
charbegin_name[10];//起始站点
charend_name[10];//终点站名
floatfly_time;//飞行时间
inttotal;//乘员总定额
inttotal_already;//已订票人数
boolexist;//航班状态
intfare;//飞机票价
定义一个结构体来存储四个航班信息:
{}里的变量依次表示为:
航班号,起飞时间(小时),起飞时间(分钟),起始站点,终点站名,飞行时间,成员定额,已订票人数,航班状态;
{1,12,0,"天津","广州",2,145,130,true,1000},
{2,6,30,"北京","成都",0.5,140,140,true,2000},
{3,22,0,"广州","南京",2.5,140,120,true,2500},
{4,15,0,"天津","长沙",2,140,120,true,3000}
1
12
0
天津
广州
2
145
130
true
1000
2
6
30
北京
成都
0.5
140
140
true
2000
3
22
0
广州
南京
2.5
120
120
true
2500
4
15
0
天津
长沙
2
120
120
true
3000
3.方法的实现:
1)input();//录入
input()方法的功能就是录入航班号i,起飞时间(小时)begin_hour,起飞时间(分钟)begin_minute,起始地点名称begin_name,种植地点名称end_name,飞行时间fly_time,总载客量total,已订票人数total_already,飞机票价fare,航班状态exist。
变量inti=4,因为事先已经录入4个编号为1~4的航班号,因此当输入1~4的航班号时会提醒此航班号已存在,因而在控制台输入的航班号必须大于4而小于50。
变量intj=0;则j+1表示录入第(j+1)个航班班次的信息
2)find();//查询,按终点站来查询
根据已有的飞机信息来依据终点信息来查询航班。
首先要调用读取机票信息函数,读取要查询的机票信息,既read()方法。
并且在方法中有一个计数器k,当k=-1时输出无此航班的飞机,反之根据终点站名字来查询航班信息。
3)stringtime(shortbegin_hour,charbegin_minute);//调用系统时间
当输入起飞时间与该电脑里的时间作比较,当电脑现在的时间比输入起飞时间大的话,则说明飞机已经起飞。
通过线面的语句来实现:
(begin_hour4)order();//办理订票函数
当订票的时候,首先要输入要订票的航班号,因此在这之后应读入在系统中的航班信息,当输入航班编号后如无此航班号,则失败,反之先判断次航班是否已经起飞if((b[i].begin_hour>sys.wHour)||(b[i].begin_hour==sys.wHour&&b[i].begin_minute>sys.wMinute)),如果没起飞,在判断是否还有余票if(b[i].total==b[i].total_already),如果有,计算剩余的多少张票b[i].total-b[i].total_already,进而订在剩余票数的范围内购票,如果与之相反,则证明飞机已经起飞也就是说已经订不到票了。
5)refund();//办理退票函数
思路类似于订票,首先要数如要退票的航班号,并且在这之后读入系统中的航班信息,当输入航班编号后如无此航班号,则失败,反之先判断次航班是否已经起飞if((b[i].begin_hour>sys.wHour)||(b[i].begin_hour==sys.wHour&&b[i].begin_minute>sys.wMinute)),如果没起飞,确定退票数完成退票操作。
如果与之相反,则证明飞机已经起飞了,无法进行退票业务了。
第4章测试结果及分析
执行结果:
参考文献
附录:
源代码
#include
#include//strcmp()是用来比较大小的,它是C++中头文件(字符串函数)
#include//系统窗口时间
usingnamespacestd;
constintN=50;
structairline
{intair_num;//班次号
shortbegin_hour;//起飞时间小时
shortbegin_minute;//起飞时间分钟
charbegin_name[10];//起始站点
charend_name[10];//终点站名
floatfly_time;//飞行时间
inttotal;//乘员总定额
inttotal_already;//已订票人数
boolexist;//航班状态
intfare;//飞机票价
};
structairlineb[N]={
//航班号,起飞时间(小时),起飞时间(分钟),起始站点,终点站名,飞行时间,成员定额,已订票人数,航班状态
{1,12,0,"天津","广州",2,145,130,true,1000},
{2,6,30,"北京","成都",0.5,140,140,true,2000},
{3,22,0,"广州","南京",2.5,140,120,true,2500},
{4,15,0,"天津","长沙",2,140,120,true,3000}
};
//声明全局变量
intn=0;//航班数量
//函数声明
voidinput();//录入
voidfind();//查询,按终点站来查询
stringtime(shortbegin_hour,charbegin_minute);//调用系统时间
voidorder();//办理订票函数
voidrefund();//办理退票函数
voidinput()//录入班次信息函数
{
if(n<=0)
{
cout<<"请输入录入班次的数量:
"<cin>>n;
}
for(inti=4,j=0;i{
cout<<"正在录入第"<\n";
cout<<"------------------------------\n";
cout<<"请输入班次的编号(1-50):
";
cin>>b[i].air_num;
if(b[i].air_num>50||b[i].air_num<1)
{cout<<"输入编号错误!
"<for(intj=0;j
{
if(b[i].air_num!
=b[j].air_num)continue;
else{cout<<"录入失败,此编号的班次已经存在!
"<}
if(j>=i)
{
cout<<"请输入班次的起飞时间:
"<";
cin>>b[i].begin_hour;cout<<"分钟为:
";
cin>>b[i].begin_minute;
cout<<"请输入班次的起始地点:
";
cin>>b[i].begin_name;
cout<<"请输入班次的终到地点:
";
cin>>b[i].end_name;
if(strcmp(b[i].end_name,b[i].begin_name)==0)
{cout<<"输入错误!
起始地点和终到地点不应该相同!
"<cout<<"请输入班次的飞行时间(hour):
";
cin>>b[i].fly_time;
cout<<"请输入固定的载客量:
";
cin>>b[i].total;
cout<<"请输入已订票人数:
";
cin>>b[i].total_already;
cout<<"请输入飞机票价:
";
cin>>b[i].fare;
b[i].exist=true;
cout<<"-----已成功录入!
-----\n";
}
}
}
stringtime(shortbegin_hour,shortbegin_minute)//调用系统时间函数
{
SYSTEMTIMEsys;//系统时间sys
GetLocalTime(&sys);//获得本地电脑时间
stringstr;
if((begin_hourstr="已发出!
";
elsestr="未发出!
";
returnstr;
}
voidoutput(inti)
{
cout<<"----------------------\n";
cout<<"班次号"<<""<<"起飞时间"<<""<<"起始站"<<""<<"终点站"<<""<<
"飞行时间"<<""<<"固定载客量"<<""<<"已订票人数"<<""<<"飞机票价"<<""<<"飞机状态"<cout<<""<
"<
<
<
}
voidfind()//查询班次信息函数
{
intk=-1;//计数器
charend[10];
cout<<"请输入要查询的终点站:
\n";
cin>>end;
for(inti=0;iif(strcmp(b[i].end_name,end)==0)//strcmp()是用来比较大小的,它是C++中头文件(字符串函数)
//中定义的一个用于对两组字符串进行比较的函数,它的返回值是int类型。
{
output(i);
k=i;
}
if(k==-1)
cout<<"不存在至此的航班"<}
voidcheck()//浏览班次函数
{
cout<<"已有的航班班次为:
"<for(inti=0;i{
output(i);
cout<