数据结构航空订票系统课程设计报告.docx

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

数据结构航空订票系统课程设计报告.docx

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

数据结构航空订票系统课程设计报告.docx

数据结构航空订票系统课程设计报告

摘要

飞机在现代的生活中扮演者非常重要的角色。

它能够快速的把人们送到自己想要去的地方,既快速,又方便。

所以现在坐飞机时很普遍的。

但是都到机场去买票浪费时间,因此,航空订票系统应运而生。

有了航空订票系统,用户可以在该系统进行飞机票的查询,订票,退票等操作。

方便了大家

 

关键词航空订票系统、查询、订票、退票

 

摘要I

1需求分析2

1.1需求概述2

1.2需求环境2

1.3功能描述2

2概要设计3

2.1程序功能模块3

2.2程序流程图3

2.3课程设计的思想3

3详细设计4

3.1程序初始化4

3.1.1代码功能4

3.1.2功能实现代码4

3.2查询航班信息6

3.2.1代码功能6

3.2.3功能实现代码7

3.3订票模块8

3.3.1代码功能8

3.3.2功能实现代码8

4测试与运行14

5结束语.......................................................................................................................16

6参考文献..................................................................................................................17

7附录..........................................................................................................................18

 

1需求分析

1.1需求概述

航线管理。

每条航线所涉及的信息有:

终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量

客户管理。

有关订票的客房信息(包括、订票量、舱位等级(1,2和3)以及等替补的客房(包括、所需标量)。

系统实现主要操作操作和功能。

系统实现的主要操作规程和功能如下:

1查询航线。

根据旅客提出的终点站名输出下列信息:

航班号、飞机号、飞行日期、余标额。

2承办订票业务。

根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补

3承办退票业务。

根据客户提供的情况(日期、航班),为客户输退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额满足该客户的要求,则为其订票手续,否则依次询问其他排队候补的客户。

1.2需求环境

本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:

①硬件要求:

一台计算机。

②软件配置:

WINDOWS7/VC++6.0。

1.3功能描述

本次课程设计是航空订票系统主要是由查询航班信息,订票还有退票三大主要功能。

除此之外,还有系统的界面等等。

 

2概要设计

2.1程序功能模块

由需求分析知,本次课程设计是航空订票系统其主要由三大模块构成,即查询模块(这部分由我负责),订票系统模块和退票系统模块构成。

2.2程序流程图

该程序开始运行后

进如航空订票系统

用户可以进行航班

信息的查询,订票

和退票操作。

 

 

 

图2.1为该系统总的流程图

2.3课程设计的思想

由需求分析知道需要实现几个功能定义了两个结构体。

这两个结构体分别用来表示顾客信息和航班信息。

有结构体可以知道一些基本信息,比如顾客的,定的机票和航班的时间等等信息。

使得实验代码的可读性大大增强。

3详细设计

3.1程序初始化

3.1.1代码功能

这一块还是由我负责。

我初始化了五个航班的基本信息。

在初始化程序中,主要是航班的基本信息。

比如航班号,出发时间和剩下的机票数目等等基本信息。

通过运用指针和链表来进行对初始化信息的书写。

在初始化时将三个重点的信息分别初始化为:

航班号005飞机号PZH113机票数120

天津航班号004飞机号PZH121机票数120

航班号003飞机号PZH133机票数120

④航班号002飞机号PZH132机票数120

⑤航班号001飞机号PZH122机票数120

3.1.2功能实现代码

voidInitLine()//初始化航线信息

{

airline*p,*q;//航线

L=(airline*)malloc(sizeof(airline));

L->booked=NULL;

L->wait=NULL;

L->next=NULL;

strcpy(L->end_addr,"00000000");//终点站

strcpy(L->line_num,"000");//航班号

strcpy(L->plant_num,"0000000");//飞机号

L->day=L->left=L->total=0;

q=L;

p=(airline*)malloc(sizeof(airline));//

p->booked=NULL;

p->wait=NULL;

strcpy(p->end_addr,"");

strcpy(p->line_num,"005");

strcpy(p->plant_num,"PZH113");

p->day=5;

p->left=120;

p->total=120;

p->next=q->next;

q->next=p;

p=(airline*)malloc(sizeof(airline));//天津

p->booked=NULL;

p->wait=NULL;

strcpy(p->end_addr,"天津");

strcpy(p->line_num,"004");

strcpy(p->plant_num,"PZH121");

p->day=4;

p->left=120;

p->total=120;

p->next=q->next;

q->next=p;

p=(airline*)malloc(sizeof(airline));//

p->booked=NULL;

p->wait=NULL;

strcpy(p->end_addr,"");

strcpy(p->line_num,"003");

strcpy(p->plant_num,"PZH133");

p->day=1;

p->left=120;

p->total=120;

p->next=q->next;

q->next=p;

p=(airline*)malloc(sizeof(airline));//

p->booked=NULL;

p->wait=NULL;

strcpy(p->end_addr,"");

strcpy(p->line_num,"002");

strcpy(p->plant_num,"PZH132");

p->day=2;

p->left=120;

p->total=120;

p->next=q->next;

q->next=p;

p=(airline*)malloc(sizeof(airline));//

p->booked=NULL;

p->wait=NULL;

strcpy(p->end_addr,"");

strcpy(p->line_num,"001");

strcpy(p->plant_num,"PZH122");

p->day=3;

p->left=120;

p->total=120;

p->next=q->next;

q->next=p;

}

3.2查询航班信息

3.2.1代码功能

此模块主要由我负责,在此模块我实现了查询航班的功能。

当进入查询功能时,通过输入数字用户可以查询航班的基本信息,比如目的地,剩下的机票数目,出发的时间等等基本信息。

如果输入的数字在界面中没有显示则会提示用户没有这次航班。

在这个模块我使用了个switch语句来实现对查询方式的选择。

通过判断输入的数字进入到相对应的查询方式。

如果输入的信息有误的话,系统将会提示用户没有这次航班,需要重新输入。

 

3.2.2查询模块流程图

 

3.2.2查询模块的流程图

在该模块用户可以进行查询功能。

用户根据提示可以按照航班号、飞机号、飞行日期和航班重点来查询航班的基本信息。

这些基本信息包括了飞行航班号、飞机号、剩余票量和处罚日期等等。

在该模块用户必须根据提示进行输入,否则系统会提示输入有误,需要重新输入。

3.2.3功能实现代码

voidsearch()//航班查询系统

{

inti;

intflag=0;

airline*p;

PR("请输入查询航班的方式:

\n");

PR("航班号---->1\n");

PR("飞机号---->2\n");

PR("飞行日期-->3\n");

PR("航班终点-->4\n");

SC("%d",&i);

for(;!

flag;)

switch(i)//switch语句来进行航班的查询方式

{

case1:

p=search_line();flag=1;break;

case2:

p=search_plant();flag=1;break;

case3:

p=search_day();flag=1;break;

case4:

p=search_addr();flag-=1;break;

default:

PR("操作错误,请重新输入\n");break;

}

if(p)

{

PR("终点站航班号飞机号飞行周日余票量\n");

PR("%-20s%10s%10s%8d%8d\n",p->end_addr,p->line_num,p->plant_num,p->day,p->left);

PR("是否订票(确定请按1)");

SC("%d",&i);

if(i==1)

book();

}

else

PR("没有该航班\n");}

3.3订票模块

3.3.1代码功能

在此模块可以根据提示可以从航班号,飞行日期和终点站来进行订票。

如果订票时余票不足所需要的票的数目时就可以进行排队购票选择。

3.3.2功能实现代码

voidbook()//订票系统

{

inti;

intflag=0;

airline*p;

customer*cst,*c;

PR("请输入查询航班的方式:

\n");

PR("航班号--->1\n");

PR("终点站--->2\n");

PR("飞行日期->3\n");

for(;!

flag;)

{

SC("%d",&i);

switch(i)//运用一个switch语句进行航班查询

{

case1:

p=search_line();flag=1;break;

case2:

p=search_addr();flag=1;break;

case3:

p=search_day();flag=1;break;

default:

PR("操作错误,请重新输入\n");break;

}

}

if(p)

{

PR("终点站航班号飞机号飞行周日余票量\n");

PR("%-20s%10s%10s%8d%8d\n",p->end_addr,p->line_num,p->plant_num,p->day,p->left);

cst=(customer*)malloc(sizeof(customer));

PR("请输入订票数量:

");

SC("%d",&cst->num);

PR("请输入舱位等级(1/2/3)");

SC("%d",&cst->level);

PR("请输入您的名字");

SC("%s",cst->name);

if(cst->num<=p->left)

{

cst->next=p->booked;

p->booked=cst;

p->left=p->left-cst->num;

PR("订票成功,座位号为%d~%d\n",p->total-p->left-cst->num+1,p->total-p->left);

}

else

//当需要的飘得数量大于剩余的票数的时候进行询问是否进行排队购票

{

PR("余票不足,是否排队等候\n是(y)\n否(n)\n");

SC("%d",&flag);

if(flag)

{

if(!

p->wait)

{

cst->next=p->wait;

p->wait=cst;

}

else

{

c=p->wait;

for(;c->next;c=c->next);

cst->next=c->next;

c->next=cst;

}

}

}

}

else

PR("没有该航班\n");

guide();

}

 

排队订票时的排队订票系统:

voidwaited(airline*p)//排队订票系统

{

intflag;

customer*q,*q0,*h;

if(!

p->wait)return;

q=(customer*)malloc(sizeof(customer));

q->level=0;

q->num=123;

strcpy(q->name,"00000");

q->next=p->wait;

h=q;

for(;p->left>0&&q->next;)

{

if(q->next->numleft)

{

PR("%s,您正在排队定%d票,现有票,是否定\n是(y)\n否(n)\n",q->next->name,q->next->num);

SC("%d",&flag);

if(flag)

{

q0=q->next;

q->next=q->next->next;

q0->next=p->booked;

p->booked=q0;

p->left=p->left-q0->num;

PR("排队订票成功\n\n");

}

else

q=q->next;

}

else

q=q->next;

}

p->wait=h->next;

}

3.4退票系统模块

3.4.1代码功能

在此模块,用户可以根据系统的提示进行退票操作。

当进行退票操作时需要进行信息的核对,如果正确,打印出信息,再询问是否退票。

3.4.2功能实现代码

voidrefund()//退票系统

{

intflag;

chara[20];

airline*p;

customer*c,*c1;

p=search_line();

c=p->booked;

if(!

p)

{

PR("没有该航班\n\n");

guide();

return;

}

PR("请输入您的");

SC("%s",a);

if(!

p->booked->name)//进行信息的查找判断是否有用户的信息

{

PR("对不起,没有找到您的信息\n\n");

guide();

return;

}

if(!

strcmp(a,p->booked->name))//核对完信息后输出要退票乘客的信息

{

PR("退票信息\n/终点站/票数\n%s/%s/%d\n",p->booked->name,p->end_addr,p->booked->num);

PR("确认要退票\n是(y)\n否(n)\n");

scanf("%d",&flag);

if(flag)

{

p->booked=p->booked->next;

p->left=p->left+c->num;

free(c);

PR("退票成功\n\n");

waited(p);

guide();

}

}

else

{

for(;c->next;c=c->next)

if(!

strcmp(a,c->next->name))

break;

if(!

c->next)

{

PR("对不起,没有找到您的信息\n\n");

guide();

return;

}

else

{

PR("退票信息\n/终点站/票数\n%s/%s/%d\n",c->next->name,p->end_addr,c->next->num);

PR("确认要退票?

\n是(y)\n否(n)\n");//询问是否退票

scanf("%d",&flag);

if(flag)

{

c1=c->next;

c->next=c->next->next;

p->left=p->left+c1->num;

free(c1);

PR("退票成功\n\n");

waited(p);

guide();

}

}

}

}

以上三个模块是改程序最主要的功能实现的代码。

初次之外还有部分其他显示模块。

4测试与运行

由需求分析可知该程序运行后实现功能后的结果。

此处是功能界面,用户可以按照提示进行操作

进行查询功能时:

进行查询模块式会显示出查询方式,按照查询方式可以准确的得到航班的信息

进行订票模块时:

在此处模块,订票可以根据提示进行购票,可以订多票,输入舱位的等级和订票人名字

排队订票系统:

如果该航班剩余的票量小于所要购买的数量,则会提示是否进行排队购票。

退票系统:

在该模块,进行退票操作时,系统会进行信息的核对,如果正确,将会显示客户的信息。

然后提示是否退票。

5结束语

此次数据结构课程设计为航空订票系统。

在写程序的时候还是遇到了很多的问题。

有些功能怎么也实现不了。

经过和同学的探讨还有上网查找资料,最后终于克服了这些问题,成功的运行出了程序。

通过这次学习,使我对编写程序的兴趣更大了。

除此之外,此次课程设计帮我们熟练地运用所学习的知识,还让我们熟练的去融合他们,写出一个全新的程序来。

在这次课程设计中要衷心的感老师对我们的帮助,使得我们对所学知识的熟练运用。

总而言之,这次的课程设计既有趣又训练了我们对知识的运用。

 

6参考文献

[1]阮宏一,鲁静《数据结构课程设计C/C++描述》.电子工业

[2]马巧梅,庞晓琼等.《数据结构课程设计案例教程》第三版.人民邮电

[3]袁蔚敏.《数据结构》清华大学

 

7源代码

源代码:

#include

#include

#include

#include

#definePRprintf

#defineSCscanf

typedefstructcustomer//客户信息

{

charname[20];//客户

intnum;//订票量

intlevel;//舱位等级

customer*next;

}customer,*Lcustomer;

typedefstructairline//航线信息

{

charend_addr[20];//航线终点

charline_num[5];//航班号

charplant_num[8];//飞机号

intday;//飞行日期

inttotal;//定员

intleft;//剩余票数

customer*booked;//已定客户信息

customer*wait;//排队等候订票信息

airline*next;

}airline,*Lairline;

airline*L;//将航班信息定义为全局变量,减少参数传递

Lairlinesearch_line()//按航班号查找航班

{

chara[5];

airline*p;

p=L->next;

PR("请输入航班号");

SC("%s",a);

for(;p;p=p->next)

if(!

strcmp(a,p->line_num))break;

returnp;

}

Lairlinesearch_plant()//按飞机号查找航班

{

chara[8];

airline*p;

p=L->next;

PR("请输入飞机号");

SC("%s",a);

for(;p;p=p->next)

if(!

strcmp(a,p->plant_num))break;

returnp;

}

Lairlinesearch_day()//按飞行日期查找航班

{

inta;

airline*p;

p=L->next;

PR("请输入飞行日期");

SC("%d",&a);

for(;p;p=p->next)

if(a==p->day)break;

returnp;

}

Lairlinesearch_addr()//按航班终点查找航班

{

chara[20];

airline*p;

p=L->next;

PR("请输入航班终点");

SC("%s",a);

for(;p;p=p->next)

if(!

strcmp(a,p->end_addr))break;

returnp;

}

 

voidguide()//主菜单界面

{

PR("------------航空订票客服系统----------\n");

PR("==============================================\n");

PR("\t\t显示所有航线==>1\n");

PR("\t\t查询航线信息==>2\n");

PR("\t\t订票业务==>3\n");

PR("\t\t退票业务==>4\n");

PR("\t\t退出系统==>0\n");

PR("==============================================\n");

PR("\t\t清除屏幕信息==>9\n\n");

PR("请按上面指引操作:

\t");

}

 

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

当前位置:首页 > 经管营销 > 经济市场

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

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