航空客运订票系统Word文件下载.docx
- 文档编号:319978
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:13
- 大小:19.11KB
航空客运订票系统Word文件下载.docx
《航空客运订票系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《航空客运订票系统Word文件下载.docx(13页珍藏版)》请在冰点文库上搜索。
(1)每条航线所涉及的信息有:
终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);
(2)系统能实现的操作和功能如下:
①录入:
可以录入航班情况,全部数据可以只放在内存中,最好存储在文件中;
②查询航线:
根据旅客提出的终点站名输出下列信息:
航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;
③承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;
若已满员或余票额少于订票额,则需重新询问客户要求。
若需要,可登记排队候补;
④承办退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
初始化航班信息如下:
通过输入0~5这六个数字选择相应的操作,如:
查询航班,订票,退票等操作;
2.概要设计
两个客户名单可分别由线性表和队列实现。
为查找方便,已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。
由于预约人数无法预计,队列也应以链表作存储结构。
整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。
每条航线是这张表上的一个记录,包含上述8个域、其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。
注:
由于“航线”可只用一条单链表记录,故采用全局变量,减少参数的传递。
定义“航线”类型
ADTLairline{
数据对象:
D={ai|ai∈航线链表集,i=1,2,3……,n,n>
=0}
数据关系:
R1={<
ai-1,ai>
|ai-1,ai∈D,i=1,2,3……,n}
基本操作:
Lairlinesearch_line()照航班查找
Lairlinesearch_line()
{
chara[10];
airline*p;
p=L->
next;
P("
Pleaseinputthenumberofline:
"
);
S("
%s"
a);
for(;
p;
p=p->
next)
if(!
strcmp(a,p->
line_num))break;
returnp;
}
通过建立节点p实现链表的遍历,利用for循环挨个查找,直到找到为止,再返回找到的这个节点,实现传递。
2.订票系统
voidbook()
{inti;
intflag=0;
customer*cst,*c;
Pleasechoosethewayofviewing:
\n"
始化航线
voidInitLine()班查询
voidsearch()
{inti;
Pleaseinputthewayofviewingtheflight:
Thenumberoftheflight------------>
1\n"
照飞机型号查找
Pleaseinputthenumberofplane:
for(;
plane_num))break;
Lairlinesearch_date()照日期查询航班
{
inta;
P("
Pleaseinputthedateofplane:
%d"
&
a);
航班终点查找航班
{chara[20];
p=L->
Pleaseinputthefinaladdressoftheplane:
S("
ter_address))break;
/******************主界面******************/
voidboundary()
***********欢迎您进入航空订票客服系统***********\n"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
O(∩_∩)O请选择您要进行的业务:
\t\t显示所有航线==>
请输入1\n"
\t\t查询航线信息==>
请输入2\n"
\t\t进入订票系统==>
请输入3\n"
\t\t进入退票系统==>
请输入4\n"
\t\t退出客服系统==>
请输入0\n"
\t\t清除屏幕信息==>
请输入5\n"
请按照以上的信息提示进行操作:
\t"
/*********显示乘客信息*****************/
voidprint_customer(airline*p)
customer*c;
if(p->
booked)
{c=p->
booked;
P("
已经购票的乘客的信息\n\t票数\t姓名\t\n"
c;
c=c->
P("
%5d\t\t%s\n"
c->
num,c->
name);
\n\n"
}
elseP("
╮(╯_╰)╭暂时没有客户订票!
wait)
c=p->
wait;
排队购票的乘客的信息\n\t票数\t姓名\t\n\n"
else
暂时没有客户排队订票\n\n"
/*********插入新航班(创建链表)*****************/
voidinsert_line()
{airline*p,*q;
intflag=1;
flag;
)
q=(Lairline)malloc(sizeof(airline));
Pleaseinputthenumberoftheplane:
"
S("
q->
line_num);
for(p=L;
p->
next)
if(strcmp(p->
next->
line_num,q->
line_num)>
=0)break;
next&
&
strcmp(p->
line_num)==0)
{
航班已存在,请重新输入\n"
continue;
q->
name,q->
num);
Doyouwanttobookthetickets?
YES
(1)NO(0)"
flag);
if(flag)//如果选择订票
{q0=q->
q->
next=q->
//插入q0节点
q0->
next=p->
p->
booked=q0;
p->
remain=p->
remain-q0->
num;
//q0定完票后,余票进行修改
SUCCESS!
!
O(∩_∩)O\n\n\n"
}
elseq=q->
//没有选择订票}
elseq=q->
//余票不足时
}p->
wait=h->
/***********************退票系统*****************************/
voidRefund()
intflag;
chara[20];
airline*p;
customer*c,*c1;
p=search_line();
//查找到对应的航班
//已经订票的客户为c
if(!
p)
Theairlineisnotexist!
boundary();
//返回主界面
return;
Pleaseinputyourname:
booked->
name)//如果未找到这个人的信息
Sorry!
Yourinformationisn'
tfound!
╮(╯_╰)╭\n"
boundary();
name))//
Theinformationofreturningtickets:
//退票信息
Name:
%s\tFinalAddress:
%s\tTickets:
%d\t\n"
p->
name,p->
ter_address,p->
Doyouwanttoreturnthetickets?
YES
(1)NO(0)\n"
//是否退票
if(flag)//如果退票
p->
booked=p->
//删除节点操作
remain+c->
//余票数目增加
free(c);
O(∩_∩)O\n\n\n\n\n"
//退票成功
waited(p);
//再次询问是否排队订票
//返回主菜单
}}
else
{for(;
c->
if(!
strcmp(a,c->
name))//查找这个订票人的信息
break;
next)//没有找到这个人的信息
{P("
Can'
tfindyourinformation!
else//找到了此人的订票信息
S("
if(flag)//确定退票
{c1=c->
c->
next=c->
//删除节点
p->
remain+c1->
free(c1);
P("
Theoperationissuccessful!
O(∩_∩)O\n\n"
waited(p);
boundary();
}}}}
/***************航班查询系统*****************************/
voidsearch()
//请输入查询航班的方式
//航班号
Thenumberoftheplane------------->
2\n"
//飞机号码
Thedateoftheflight-------------->
3\n"
//航班日期
Thefinaladdressoftheflight----->
4\n"
//航班终点
i);
switch(i)//按照选择项进行操作
{case1:
flag=1;
break;
case2:
p=search_plane();
case3:
p=search_date();
case4:
p=search_address();
flag-=1;
default:
Wrong,inputagain!
if(p)
{P("
终点站航班号飞机号飞行周日余票量\n"
%-9s%9s%13s%10d%15d\n"
line_num,p->
plane_num,p->
date,p->
remain);
Bookingthetickets?
(Sure,pleaseinput1;
Elseinputanynumber!
)"
if(i==1)book();
ElseP("
\n\n\n\n"
boundary();
ElseP("
Theflightisnotexist!
╮(╯_╰)╭\n\n\n"
/********************显示所有航班信息***************************/
voidprintline()
{intflag;
%-15s%7s%15s%8d%12d\n"
}P("
\n\n\n\n\n"
/*********************初始化航线信息****************************/
voidInitLine()
L=(airline*)malloc(sizeof(airline));
L->
booked=NULL;
//初始化航线信息
wait=NULL;
L->
next=NULL;
strcpy(L->
ter_address,"
00000000"
strcpy(L->
line_num,"
000"
plane_num,"
0000000"
date=L->
remain=L->
total=0;
q=L;
p=(airline*)malloc(sizeof(airline));
//航线一
strcpy(p->
jiangsu"
strcpy(p->
003"
3333333"
date=1;
remain=120;
total=120;
q->
next=p;
//航线二
shanghai"
002"
2222222"
date=2;
//航线三
hunan"
001"
1111111"
date=3;
next=p;
}
voidmain()
{intflag=1;
InitLine();
do{switch(getchar())
{case'
1'
:
printline();
case'
2'
search();
3'
book();
4'
Refund();
5'
system("
cls"
0'
flag=0;
}}while(flag);
课程设计评分表
课程名称:
数据结构
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 客运 订票 系统