飞机订票系统课程设计.docx

上传人:b****5 文档编号:5386792 上传时间:2022-12-15 格式:DOCX 页数:26 大小:188.99KB
下载 相关 举报
飞机订票系统课程设计.docx_第1页
第1页 / 共26页
飞机订票系统课程设计.docx_第2页
第2页 / 共26页
飞机订票系统课程设计.docx_第3页
第3页 / 共26页
飞机订票系统课程设计.docx_第4页
第4页 / 共26页
飞机订票系统课程设计.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

飞机订票系统课程设计.docx

《飞机订票系统课程设计.docx》由会员分享,可在线阅读,更多相关《飞机订票系统课程设计.docx(26页珍藏版)》请在冰豆网上搜索。

飞机订票系统课程设计.docx

飞机订票系统课程设计

河南城建学院

课程设计报告书

专业:

计算机科学与技术

课程设计名称:

《数据结构课程设计》

题目:

飞机订票系统

班级:

0814122班

学    号:

081412220

姓    名:

郭晓甜

同组人员:

王彬宇

指导老师:

张延红张芳芳杨斌

完成时间:

2014年2月28日

摘要

随着时代的进步社会分工的不断细化,各个行业联系的不断密切,人们的出行越来越多,出行的方式也各种各样,作为空中的重要交通工具,飞机航空系统也在不断地得到优化,其中重要的一项就是飞机航空订票系统,因此好的订票系统关系着人么日常出行的方便与否,设计并编制出符合人们需要的航空订票系统是一项繁重而且艰巨的任务,需要我们认真去完成。

本文采用C作为前台开发工具,VC6.0作为程序代码的实现,旨在实现对现有飞行系统中遇到的各种情况进行良好的改进。

关键词:

C,C++,VC6.0,数据结构,飞机订票系统;

 

 

目录1

第一章开发环境和开发工具1

1.1C#语言简介1

1.2开发背景1

1.3开发环境1

第二章算法思想2

2.1系统需求分析2

2.2系统总体设计2

2.2.1系统设计目标3

2.2.2开发设计思想3

2.2.3系统功能模块设计3

2.3算法思想描述4

第三章算法实现9

3.1数据结构9

3.2程序模块9

3.3各模块之间的调用关系9

3.4源程序代码10

第四章测试与分析20

4.1测试数据选择20

4.2测试结果分析20

总结22

心得体会22

参考文献23

第一章开发环境和开发工具

1.1C/C++语言简介

一种面向对象的开发语言,C++是一种使用非常广泛的计算机编程语言。

C++是一种静态数据类型检查的、支持多重编程方式的通用程序设计语言。

它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。

其编译器比目前其他计算机语言的编译技术更复杂。

1.2开发背景

随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。

采用计算机进行信息化管理已成为衡量各个国家科学化和现代化的重要标志,而交通方式的全面自动化、信息化则是其中重要的组成部分,在很大程度上影响着企业的经济效益和社会效益。

因此,本文所研究的航空订票系统具有一定的使用价值和现实意义。

1.3开发环境

本文所采用的开发环境主要是基于VC6.0和基于面向对象程序设计的c++。

VC是个平台开工具。

该软件使用TC2为内核,提供WINDOWS平台的开发界面,因此也就支持WINDOWS平台下的功能,例如剪切、复制、粘贴和查找替换等。

而且在功能上也有它的独特特色例如语法加亮、C内嵌汇编、自定义扩展库的支持等。

 

第二章算法思想

2.1系统需求分析

随着计算机技术的飞速发展及经济全球化的推进以及企业激烈的竞争,各大机场订票系统已经越来越不能适应人们日常出行的局面,所以我们现在需要一个检索迅速、查找方便、易修改功能齐全方便的系统来适应我们的需求。

问题的提出:

为了减少人工工作量,提高工作效率,使机场管理员的工作更加有效的进行。

2.2系统总体设计

2.2.1系统设计目标

本文研究开发的飞机订票系统用于实现如下四个方面的目标:

●)录入:

可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)

●查询:

可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;

●订票:

(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;

●退票:

可退票,退票后修改相关数据文件;

2.2.2开发设计思想

基于以上系统设计目标,本文在开发飞机订票系统时遵循了以下开发设计思想:

●采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。

●尽量达到操作过程中的直观、方便、实用、安全等要求。

●系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。

●系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。

2.2.3系统功能模块设计

本系统分为六个模块:

增加航班模块、浏览航班模块、查找航班模块、航班排序模块、订票模块、退票模块。

得到如图所示系统功能模块图。

图1-1系统功能模块图

 

2.3算法思想描述

(1),系统启动时会通过输入航班信息来给乘客提供范围

(2)当选择功能1时,进入增加航班模块

(3)当选择功能2时,进入浏览航班信息模块

(4)当选择功能3时,进入航班操作模块

 

(5)当选择功能4时,进入订票系统模块

(6)当选择功能5时,进入退票系统模块

(7)当选择功能6,7时,是对前边操作的保存和载入

(8)当选择功能8时退出系统

 

第三章算法实现

3.1数据结构

飞机订票系统是一个数据库应用系统,航班的所有信息都保存在数据库中。

3.2程序模块

void order;//排序//

void input;//输入航班//

void search_time()//输入时间查找//

void search_end()//输入地点查找//

void menu1()//飞机售票操作//

int search() //查询//

void book()//订票系统//

void back()//退票系统//

void save()//保存//

void load()//载入//

3.3各模块之间的调用关系

程序从主函数开始,首先调用menu函数清屏进入系统开始页面,利用switch——case结构选择自己所需的功能模块。

具体操作时,首先利用input函数录入航班信息,save函数储存航班信息、order函数进行排序;进入订票系统时,首先进入menu1函数在调用load函数载入数据及调用search_time函数、search_end函数查找航班信息,然后在由book函数订购机票save函数存储订票信息,退票时,进入back函数模块,完成退票后,回到初始menu函数模块。

 

3.4源程序代码

#include

#include

#include

#defineN1000

typedefstructplane

{

charID[10];/*航班代号*/

charBePlace[10];/*飞机起飞地点*/

charEnPlace[10];/*飞机降落终点*/

chardata[15];/*飞机起飞时间*/

intmax;/*飞机最大乘客人数*/

intprice;/*飞机票价*/

intnum;/*飞机已售票数*/

}PLANE;

PLANEti[N];

intn;/*当前的航班数目*/

voidmenu();

voidmenu1();

 

voidinput(inti)

{

printf("请输入航班代号:

\n");

scanf("%s",ti[i].ID);

printf("请输入起飞地点:

\n");

scanf("%s",ti[i].BePlace);

printf("请输入降落地点:

\n");

scanf("%s",ti[i].EnPlace);

printf("请输入起飞时间:

\n");

scanf("%s",ti[i].data);

printf("请输入航班的最大载客人数:

\n");

scanf("%d",&ti[i].max);

printf("请输入航班的票价:

\n");

scanf("%d",&ti[i].price);

ti[i].num=0;

}

 

voidenter()

{

inti;

system("cls");

printf("请输入航班的数目(0-%d)?

:

",N);

scanf("%d",&n);/*要输入的记录个数*/

printf("\n请输入数据\n\n");

for(i=0;i

{

printf("\n请输入第%d航班记录.\n",i+1);

input(i);/*调用输入函数*/

}

getchar();

menu();

}

 

voidprintf_one(inti)/*显示一个记录的函数*/

{

printf("%11s%6s%10s%6s%6d%6d%6d",ti[i].ID,ti[i].BePlace,ti[i].EnPlace,ti[i].data,ti[i].price,ti[i].max,ti[i].num);

}

 

voidbrowse()

{

inti;

system("cls");

puts("\n--------------------------------------------------------------------");

printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");

for(i=0;i

{

printf_one(i);

printf("\n");

}

getchar();

getchar();

menu();

}

voidorder()/*排序模块(按平均成绩)*/

{

inti,j;

structplanes;

system("cls");

for(i=0;i

{

for(j=i+1;j

if(strcmp(ti[i].data,ti[j].data)>0)

{

s=ti[i];

ti[i]=ti[j];

ti[j]=s;}

}

browse();

}

 

voidsearch_time()

{

inti,m=0;

structplanes;

system("cls");

printf("\n\nEnterthetime:

");

scanf("%s",s.data);/*输入出发的时间*/

puts("\n--------------------------------------------------------------------");

printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");

for(i=0;i

{

if(strcmp(s.data,ti[i].data)==0)

{

m++;

if((m!

=0)&&(m%10==0))/*目的是分屏显示*/

{

printf("\n\nPressanykeytocontiune...");

getchar();

puts("\n\n");

}

printf_one(i);

printf("\n");

/*调用显示一个记录的函数*/

}

}

puts("\n--------------------------------------------------------------------");

getchar();/*按任意健*/

getchar();

menu1();

}

 

voidserch_end()

{

inti,m=0;

structplanes;

system("cls");

printf("\n\nEntertheendPlace:

");

scanf("%s",s.EnPlace);/*输入要到达的地方*/

puts("\n--------------------------------------------------------------------");

printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");

for(i=0;i

{

if(strcmp(ti[i].EnPlace,s.EnPlace)==0)

{

m++;

if((m!

=0)&&(m%10==0))/*目的是分屏显示*/

{

printf("\n\nPressanykeytocontiune...");

getchar();

puts("\n\n");

}

printf_one(i);

printf("\n");

/*调用显示一个记录的函数*/

}

}

puts("\n--------------------------------------------------------------------");

getchar();/*按任意健*/

getchar();

menu1();

}

 

voidmenu1()

{

intn,w1;

do

{

system("cls");/*清屏*/

puts("\t\t\t\t飞机售票操作!

\n\n");

puts("\t\t*********************MENU*********************\n\n");

puts("\t\t\t\t1.按照时间排序");

puts("\t\t\t\t2.按照时间查找航班");

puts("\t\t\t\t3.按照地点查找航班");

puts("\t\t\t\t4.返回主菜单");

puts("\n\n\t\t**********************************************\n");

printf("Choiceyournumber(1-4):

[]\b\b");

scanf("%d",&n);

if(n<1||n>4)/*对选择的数字作判断*/

{

w1=1;

printf("yourchoiceisnotbetween1and4,Pleaseinputagain:

");

getchar();

getchar();

}

elsew1=0;

}while(w1==1);

/*选择功能*/

 

switch(n)

{

case1:

order();break;

case2:

search_time();break;

case3:

serch_end();break;

case4:

menu();break;

}

}

 

intsearch()/*查找模块*/

{

inti,k;

structplanes;

k=-1;

system("cls");

printf("\n\n请输入要订票的起飞地点:

");

scanf("%s",s.BePlace);/*输入要到达的地方*/

printf("\n\n请输入要订票的降落地点:

");

scanf("%s",s.EnPlace);

printf("\n\n请输入要订票的起飞时间:

");

scanf("%s",s.data);/*输入出发的时间*/

for(i=0;i

{

if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.data,ti[i].data)==0)

{

k=i;/*找到要修改的记录*/

printf_one(k);

break;/*调用显示一个记录的函数*/

}

}

if(k==-1)

{

printf("\n\nNOexist!

");

return-1;

}

else

returnk;

}

 

voidbook()

{

inti;

system("cls");

printf("欢迎进入售票窗口!

\n");

i=search();

if(i!

=-1)

{

if(ti[i].num>=ti[i].max)

{

printf("\n该趟航班票已售完!

");

}

else

{

ti[i].num++;

printf("\n订票成功!

\n");

}

}

else

printf("该航班不存在!

\n");

getchar();

getchar();/*按任意健*/

menu();

}

 

voidback()

{

inti,k=-1;

structplanes;

system("cls");

printf("欢迎进入退票窗口!

\n");

printf("\n\n输入航班代号:

");

scanf("%s",s.ID);/*输入要到达的地方*/

for(i=0;i

{

if(strcmp(s.ID,ti[i].ID)==0)

{

k=i;/*找到要修改的记录*/

printf_one(k);

break;/*调用显示一个记录的函数*/

}

}

if(k==-1)

{

printf("\n\nNOexist!

");

}

else

{

ti[i].num--;

printf("\n退票成功!

\n");

}

getchar();/*按任意健*/

getchar();/*按任意健*/

menu();

}

 

voidsave()

{

intw=1;

FILE*fp;

inti;

system("cls");

if((fp=fopen("\\ticket.txt","wt"))==NULL)/*以输出打开方式,在此前的记录被覆盖*/

{

printf("\nCannotopenfile\n");

return;

}

for(i=0;i

if(fwrite(&ti[i],sizeof(structplane),1,fp)!

=1)

{

printf("filewriteerror\n");

w=0;

}

if(w==1)

{

printf("filesaveok!

\n");

}

fclose(fp);

getchar();

getchar();

menu();

}

 

voidload()

{

FILE*fp;

inti,w;

w=1;

system("cls");

if((fp=fopen("\\ticket.txt","rt"))==NULL)

{

printf("\nCannotopenfile\n");

w=0;

return;

}

n=0;

for(i=0;!

feof(fp);i++)

{

fread(&ti[i],sizeof(structplane),1,fp);

n++;

}

n=n-1;

fclose(fp);

if(w==1)

printf("Loadfileok!

");

getchar();

getchar();

menu();

}

 

voidmenu()

{

intn,w1;

do

{

system("cls");/*清屏*//*清屏*/

puts("\t\t\t\t飞机售票管理系统!

\n\n");

puts("\t\t*********************MENU*********************\n\n");

puts("\t\t\t\t1.输入新航班");

puts("\t\t\t\t2.浏览");

puts("\t\t\t\t3.航班操作");

puts("\t\t\t\t4.订票");

puts("\t\t\t\t5.退票");

puts("\t\t\t\t6.保存");

puts("\t\t\t\t7.载入");

puts("\t\t\t\t8.退出");

puts("\n\n\t\t**********************************************\n");

printf("Choiceyournumber(1-8):

[]\b\b");

scanf("%d",&n);

if(n<1||n>8)/*对选择的数字作判断*/

{

w1=1;

printf("yourchoiceisnotbetween1and8,Pleaseinputentertochoiceagain:

");

getchar();

getchar();

}

elsew1=0;

}while(w1==1);

/*选择功能*/

switch(n)

{

case1:

enter();break;/*输入模块*/

case2:

browse();break;/*浏览模块*/

case3:

menu1();break;/*查找模块*/

case4:

book();break;/*订票模块*/

case5:

back();break;/*退票模块*/

case6:

save();break;/*保存模块*/

case7:

load();break;/*加载模块*/

case8:

exit(0);

}

}

 

voidmain()

{

menu();

}

第四章测试与分析

 

4.1试数据选择

航班

起飞地点

降落地点

时间

载客量

12222

北京

伦敦

20140228

55

21115

北京

上海

20140228

48

 

4.2测试结果分析

在输入测试数据后选择订票选项并再次输入相应的数据会完成订票业务,在订票业务中调用book函数,所有函数的时间复杂度为O(n),系统本身采用线性结构模式

 

总结

本系统

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

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1