数据结构课程设计飞机票订票系统.docx

上传人:b****2 文档编号:3579831 上传时间:2023-05-06 格式:DOCX 页数:21 大小:299.47KB
下载 相关 举报
数据结构课程设计飞机票订票系统.docx_第1页
第1页 / 共21页
数据结构课程设计飞机票订票系统.docx_第2页
第2页 / 共21页
数据结构课程设计飞机票订票系统.docx_第3页
第3页 / 共21页
数据结构课程设计飞机票订票系统.docx_第4页
第4页 / 共21页
数据结构课程设计飞机票订票系统.docx_第5页
第5页 / 共21页
数据结构课程设计飞机票订票系统.docx_第6页
第6页 / 共21页
数据结构课程设计飞机票订票系统.docx_第7页
第7页 / 共21页
数据结构课程设计飞机票订票系统.docx_第8页
第8页 / 共21页
数据结构课程设计飞机票订票系统.docx_第9页
第9页 / 共21页
数据结构课程设计飞机票订票系统.docx_第10页
第10页 / 共21页
数据结构课程设计飞机票订票系统.docx_第11页
第11页 / 共21页
数据结构课程设计飞机票订票系统.docx_第12页
第12页 / 共21页
数据结构课程设计飞机票订票系统.docx_第13页
第13页 / 共21页
数据结构课程设计飞机票订票系统.docx_第14页
第14页 / 共21页
数据结构课程设计飞机票订票系统.docx_第15页
第15页 / 共21页
数据结构课程设计飞机票订票系统.docx_第16页
第16页 / 共21页
数据结构课程设计飞机票订票系统.docx_第17页
第17页 / 共21页
数据结构课程设计飞机票订票系统.docx_第18页
第18页 / 共21页
数据结构课程设计飞机票订票系统.docx_第19页
第19页 / 共21页
数据结构课程设计飞机票订票系统.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计飞机票订票系统.docx

《数据结构课程设计飞机票订票系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计飞机票订票系统.docx(21页珍藏版)》请在冰点文库上搜索。

数据结构课程设计飞机票订票系统.docx

数据结构课程设计飞机票订票系统

学号

成都理工大学

计算机科学与技术系

 

数据结构课程设计

设计说明书

题目

订票系统

 

学生姓名

班级

成绩

指导教师(签字)

计算机科学与技术系

2016年9月20日

第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_hour

4)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_hour

str="已发出!

";

elsestr="未发出!

";

returnstr;

}

voidoutput(inti)

{

cout<<"----------------------\n";

cout<<"班次号"<<""<<"起飞时间"<<""<<"起始站"<<""<<"终点站"<<""<<

"飞行时间"<<""<<"固定载客量"<<""<<"已订票人数"<<""<<"飞机票价"<<""<<"飞机状态"<

cout<<""<

"<

<

<

}

 

voidfind()//查询班次信息函数

{

intk=-1;//计数器

charend[10];

cout<<"请输入要查询的终点站:

\n";

cin>>end;

for(inti=0;i

if(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<

}

}

voidorder()//订票函数

{

intnum1,num2,k=-1;

charch;

cout<<"请输入要购买机票的班次编号:

"<

cin>>num1;

for(inti=0;i

if(b[i].air_num==num1)

{

k=i;

cout<<"存在此班次!

";

if(b[i].total==b[i].total_already)

cout<<"对不起,此班次的机票已售完!

";

else

{

cout<<"仍有机票"<

"<

cout<<"请输入要购买的机票数:

";

cin>>num2;

if(b[i].total-b[i].total_already

{cout<<"对不起,您所要购买的机票数已超过剩余票数,无法办理!

"<

break;}

elsecout<<"确定要购买?

(y/n)"<

cin>>ch;

if(ch=='y'||ch=='Y')

{

SYSTEMTIMEsys;

GetLocalTime(&sys);

if((b[i].begin_hour>sys.wHour)||(b[i].begin_hour==sys.wHour&&b[i].begin_minute>sys.wMinute))

{

b[i].total_already+=num2;

cout<<"订票成功,祝您旅途愉快!

"<

}

elsecout<<"此航班已经发出,无法办理订票!

"<

}

elsereturn;

}

}

if(k==-1)

cout<<"不存在编号为"<

"<

}

voidrefund()//退票函数

{

intnum1,num2,k=-1;

charch;

cout<<"请输入要退机票的班次编号:

"<

cin>>num1;

for(inti=0;i

if(b[i].air_num==num1)

{

k=i;

cout<<"存在此班次!

";

SYSTEMTIMEsys;

GetLocalTime(&sys);

if((b[i].begin_hour

cout<<"对不起,此航班已经起飞,无法办理退票!

"<

else

{

cout<<"请输入要退的机票数:

";

cin>>num2;

if(b[i].total_already

{

cout<<"只售出"<

"<

break;

}

else

{

cout<<"确定要退票?

(y/n)"<

cin>>ch;

if(ch=='y'||ch=='Y')

{

b[i].total_already-=num2;

cout<<"退票成功,欢迎您下次光临!

"<

}

elsereturn;

}

}

}

if(k==-1)

cout<<"不存在编号为"<

"<

}

 

voidmain()//主函数

{

chare='1';

while(e!

='0')

{

cout<<"-------------------------\n";

cout<<"*********************飞机订票系统***********************"<

cout<<"1、机票信息录入"<

cout<<"2、机票信息查询"<

cout<<"3、机票信息浏览"<

cout<<"4、订票处理"<

cout<<"5、退票处理"<

cout<<"0、退出"<

cout<<"-------------------------"<

cout<<"\t请选择0--5:

\n";

cin>>e;

switch(e)

{

case'1':

input();break;

case'2':

find();break;

case'3':

check();break;

case'4':

order();break;

case'5':

refund();break;

case'0':

break;

default:

cout<<"输入错误!

"<

}

}

}

学生学习心得

这次课程设计,让我意识到我的局限性,对数据结构的掌握并不好,很多东西搞混淆了。

所以做程序的时候一直在查书。

通过查书,上网查资料我终于做出来了,有些功能没有实现,有很多遗憾,比如订票的乘客信息,数据结构全部使用的单链表。

但我加入了系统时间对比。

还掌握了用Visio画UNL图的基本操作。

更重要的是,通过这次课程设计,我明白了学习的重要性。

 

学生(签名):

年月日

诚信承诺

本人郑重声明所呈交的课程报告是本人在指导教师指导下进行的研究工作及取得的研究成果。

据我所知,除了文中特别加以标注的地方外,论文中不包含其他人已经发表或撰写过的研究成果。

与我一同工作的同学对本文研究所做的贡献均已在报告中作了明确的说明并表示谢意。

学生(签名):

任课

教师

评语

 

成绩评定:

任课教师(签名):

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2