数据结构课程设计飞机票订票系统大学论文Word格式.docx
- 文档编号:21293332
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:19
- 大小:275.75KB
数据结构课程设计飞机票订票系统大学论文Word格式.docx
《数据结构课程设计飞机票订票系统大学论文Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计飞机票订票系统大学论文Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
附录:
源代码10
第1章问题描述
通过此系统可以实现如下功能:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
(2)查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
(3)订票:
可以订票,如果该航班已经无票,可以提供相关可选择航班;
(4)退票:
订票数量及航班情况。
第2章概要设计
1、开发环境
系统环境:
MicrosoftWindows®
10专业版
开发环境:
MicrosoftVisualStudio2015
开发平台:
Win64
开发语言:
C++
硬件环境:
(1)CPU:
IntelCorei5
(2)内存:
4GB
(3)显示卡:
NVIDIAGeForceGTX950M
2、组成框图
3、流程图
第3章详细设计
录入航班情况
可以查询某个航线的情况
可以输入抵达城市,查询飞机航班情况;
1)先判断飞机是否起飞,如果发出航班则订票失败,否则可以订机票。
2)当有余票时显示剩余票数,则可以订票成功,如果没有余票,则订票失败。
1)先判断飞机是否起飞,如果发出航班则订票失败,否则可以订机票。
2)当有余票时显示剩余票数,则可以退票成功,如果没有余票,则退票失败。
//它相当于一种记录
定义要存储的变量:
可以通过以下的声明来建立如图的数据类型
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
天津
广州
2
145
130
true
1000
6
30
北京
成都
0.5
140
2000
3
22
南京
2.5
120
2500
4
15
长沙
3000
//录入
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)个航班班次的信息
//查询,按终点站来查询
根据已有的飞机信息来依据终点信息来查询航班。
首先要调用读取机票信息函数,读取要查询的机票信息,既read()方法。
并且在方法中有一个计数器k,当k=-1时输出无此航班的飞机,反之根据终点站名字来查询航班信息。
//调用系统时间
当输入起飞时间与该电脑里的时间作比较,当电脑现在的时间比输入起飞时间大的话,则说明飞机已经起飞。
通过线面的语句来实现:
(begin_hour<
sys.wHour)||(begin_hour==sys.wHour&
&
begin_minute<
sys.wMinute)
//办理订票函数
当订票的时候,首先要输入要订票的航班号,因此在这之后应读入在系统中的航班信息,当输入航班编号后如无此航班号,则失败,反之先判断次航班是否已经起飞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,进而订在剩余票数的范围内购票,如果与之相反,则证明飞机已经起飞也就是说已经订不到票了。
//办理退票函数
思路类似于订票,首先要数如要退票的航班号,并且在这之后读入系统中的航班信息,当输入航班编号后如无此航班号,则失败,反之先判断次航班是否已经起飞if((b[i].begin_hour>
sys.wMinute)),如果没起飞,确定退票数完成退票操作。
如果与之相反,则证明飞机已经起飞了,无法进行退票业务了。
第4章测试结果及分析
参考文献
源代码
#include<
iostream>
string>
//strcmp()是用来比较大小的,它是C++中头文件<
(字符串函数)
windows.h>
//系统窗口时间
usingnamespacestd;
constintN=50;
structairline
{intair_num;
shortbegin_hour;
shortbegin_minute;
charbegin_name[10];
inttotal_already;
boolexist;
intfare;
};
structairlineb[N]={
//航班号,起飞时间(小时),起飞时间(分钟),起始站点,终点站名,飞行时间,成员定额,已订票人数,航班状态
{1,12,0,"
2,140,120,true,3000}
};
//声明全局变量
intn=0;
//航班数量
//函数声明
voidinput();
voidfind();
stringtime(shortbegin_hour,charbegin_minute);
voidorder();
voidrefund();
voidinput()//录入班次信息函数
{
if(n<
=0)
{
cout<
<
"
请输入录入班次的数量:
endl;
cin>
>
n;
}
for(inti=4,j=0;
i<
n+4,j<
i++,j++)
正在录入第"
j+1<
个班次的信息!
\n"
;
------------------------------\n"
请输入班次的编号(1-50):
b[i].air_num;
if(b[i].air_num>
50||b[i].air_num<
1)
{cout<
输入编号错误!
break;
}
for(intj=0;
j<
i;
j++)
{
if(b[i].air_num!
=b[j].air_num)continue;
else{cout<
录入失败,此编号的班次已经存在!
}
if(j>
=i)
{
cout<
请输入班次的起飞时间:
endl<
小时为:
cin>
b[i].begin_hour;
cout<
分钟为:
b[i].begin_minute;
请输入班次的起始地点:
b[i].begin_name;
请输入班次的终到地点:
b[i].end_name;
if(strcmp(b[i].end_name,b[i].begin_name)==0)
{cout<
输入错误!
起始地点和终到地点不应该相同!
请输入班次的飞行时间(hour):
b[i].fly_time;
请输入固定的载客量:
b[i].total;
请输入已订票人数:
b[i].total_already;
请输入飞机票价:
b[i].fare;
b[i].exist=true;
-----已成功录入!
-----\n"
stringtime(shortbegin_hour,shortbegin_minute)//调用系统时间函数
{
SYSTEMTIMEsys;
//系统时间sys
GetLocalTime(&
sys);
//获得本地电脑时间
stringstr;
if((begin_hour<
sys.wMinute))
str="
已发出!
elsestr="
未发出!
returnstr;
voidoutput(inti)
cout<
----------------------\n"
班次号"
"
起飞时间"
起始站"
终点站"
"
飞行时间"
固定载客量"
已订票人数"
飞机票价"
飞机状态"
b[i].air_num<
b[i].begin_hour<
:
b[i].begin_minute<
<
b[i].begin_name<
b[i].end_name<
b[i].fly_time<
b[i].total<
b[i].total_already<
b[i].fare<
b[i].exist;
voidfind()//查询班次信息函数
{
intk=-1;
//计数器
charend[10];
请输入要查询的终点站:
cin>
end;
for(inti=0;
n+4;
i++)
if(strcmp(b[i].end_name,end)==0)//strcmp()是用来比较大小的,它是C++中头文件<
//中定义的一个用于对两组字符串进行比较的函数,它的返回值是int类型。
output(i);
k=i;
if(k==-1)
不存在至此的航班"
voidcheck()//浏览班次函数
已有的航班班次为:
n+4<
i++)
output(i);
cout<
time(b[i].begin_hour,b[i].begin_minute)<
//显示是否发出航班
}
voidorder()//订票函数
intnum1,num2,k=-1;
charch;
请输入要购买机票的班次编号:
num1;
if(b[i].air_num==num1)
存在此班次!
if(b[i].total==b[i].total_already)
cout<
对不起,此班次的机票已售完!
else
{
cout<
仍有机票"
b[i].total-b[i].total_already<
张!
请输入要购买的机票数:
cin>
num2;
if(b[i].total-b[i].total_already<
num2)
{cout<
对不起,您所要购买的机票数已超过剩余票数,无法办理!
break;
elsecout<
确定要购买?
(y/n)"
ch;
if(ch=='
y'
||ch=='
Y'
)
{
SYSTEMTIMEsys;
GetLocalTime(&
if((b[i].begin_hour>
{
b[i].total_already+=num2;
cout<
订票成功,祝您旅途愉快!
}
elsecout<
此航班已经发出,无法办理订票!
}
elsereturn;
}
不存在编号为"
num1<
的班次!
voidrefund()//退票函数
请输入要退机票的班次编号:
SYSTEMTIMEsys;
GetLocalTime(&
if((b[i].begin_hour<
对不起,此航班已经起飞,无法办理退票!
else
请输入要退的机票数:
if(b[i].total_already<
{
只售出"
张票!
break;
}
确定要退票?
b[i].total_already-=num2;
cout<
退票成功,欢迎您下次光临!
}
voidmain()//主函数
chare='
1'
while(e!
='
0'
-------------------------\n"
*********************飞机订票系统***********************"
1、机票信息录入"
2、机票信息查询"
3、机票信息浏览"
4、订票处理"
5、退票处理"
0、退出"
-------------------------"
\t请选择0--5:
cin>
e;
switch(e)
case'
input();
2'
find();
3'
check();
4'
order();
case'
5'
refund();
default:
}
学生学习心得
这次课程设计,让我意识到我的局限性,对数据结构的掌握并不好,很多东西搞混淆了。
所以做程序的时候一直在查书。
通过查书,上网查资料我终于做出来了,有些功能没有实现,有很多遗憾,比如订票的乘客信息,数据结构全部使用的单链表。
但我加入了系统时间对比。
还掌握了用Visio画UNL图的基本操作。
更重要的是,通过这次课程设计,我明白了学习的重要性。
学生(签名):
年月日
诚信承诺
本人郑重声明所呈交的课程报告是本人在指导教师指导下进行的研究工作及取得的研究成果。
据我所知,除了文中特别加以标注的地方外,论文中不包含其他人已经发表或撰写过的研究成果。
与我一同工作的同学对本文研究所做的贡献均已在报告中作了明确的说明并表示谢意。
任课
教师
评语
成绩评定:
任课教师(签名):
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 飞机票 订票 系统 大学 论文