航空售票系统设计报告Word格式文档下载.docx
- 文档编号:16727210
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:24
- 大小:254.84KB
航空售票系统设计报告Word格式文档下载.docx
《航空售票系统设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《航空售票系统设计报告Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
(2)作为模拟系统,全部数据可以只存放在内存中。
(3)通过此系统可以实现如下功能:
①录入功能:
可以录入航班情况
②查询功能:
根据客户提供的终点站名进行查询,可以输出以下信息:
航班号、飞机号、星期几飞行和余票量等。
也可以根据航班号,查询飞机某个航线的情况。
订票功能:
根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的余票量情况。
如尚有足够的余票,则为客户办理订票手续;
若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。
④退票功能:
根据客户提供的情况(姓名、日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。
三、概要分析
1、分析问题,给出数学模型,设计相应的数据结构。
(1)己订票的客户名单可以用线性表来实现。
为查找方便,线性表应按照客户姓名有序,
并且为了插入和删除的方便,应以链表作为存储结构。
(2)等候替补的客户名单也有可能出现退票的情况,故用链表来实现。
(3)需将输入的航班情况登录到一张线性表上(用顺序存储结构或链表存储结构)。
为了查询的方便,可以将航班情况按照航班有序或按照终点站名有序建立线性表。
每条航线是这张线性表的一个记录,包含上述8个域,其中已订票的客户名单域是指向己订票的客户名单链表的头指针,等候替补的客户名单域是指向队头和队尾的指针。
2、算法设计
在已经选择好数据结构的前提下,为解决问题设计算法。
(1)确定所需模块
对于稍复杂的程序设计,要充分利用模块化程序设计方法,自顶向下,逐步细化,在整体思路确定的情况下,考虑所需模块数,各模块完成功能以及模块之间的数据联系和调用关系。
(2)各子模块功能描述
给出主要模块的算法描述,用流程图或伪代码表示。
(3)模块之间的调用关系
给出算法各模块之间的关系图示
3、源程序清单
为了提高工作效率,充分利用上机调试程序的时间,要求学生在上机之前给出源程序清单。
4、用测试数据去验证算法及程序的正确性
5、算法分析
经过上机调试,源程序运行正确,并且实现算法要求的功能,解决课程设计题目中给出的问题后,分析算法的时间复杂度和空间复杂度。
四、源程序清单:
intmain();
//主菜单
intEntering();
//录入航线
intSearch();
//查询信息
intReserve();
//订票
intRefund();
//退票
五、详细设计和源代码
定义:
typedefstructYidingkehu{//单链表
charname[15];
//已订票的客户姓名
intdingpiaoshu;
//已订票数量
structYidingkehu*next1;
//
}Yidingkehu,*Link;
typedefstructWeidingkehu{//单链队
//预订票的客户姓名
intyudingpiao;
//要订票数量
structWeidingkehu*next2;
//下一个链队结点指针
}Weidingkehu,*Qptr;
typedefstructyuding{
Qptrfront;
//单链队头结点
Qptrrear;
//单链队尾结点
}linkQueue;
typedefstructHangxian{//创建一个含有六个信息的结构体
charhangbanhao[15];
//航班号-
charfeijihao[15];
//飞机号
intfeixingriqi;
//起飞时间
intchenkerenshu;
//座位数
intyupiao;
//余票
charzhongdianzhai[15];
//降落城市
structHangxian*next;
//指向下一个链结点的指针
structYidingkehu*yiding;
//定义一个指向已订票客户的头结点指针
structWeidingkehu*yudingqueue;
//或structyudingyudingqueue;
}Hangxian,*Linklist;
1.main
六、算法设计
模块图:
2.Entering
3.Search
4.Reserve
5.Refund
模块说明:
(1)显示主菜单并根据输入调用相应函数。
(2)将航班信息存入程序。
(3)根据航班号或终点站查询信息,浏览所有航班信息。
(4)输入姓名、订票数订票,若余票不足提示是否预订。
(5)显示退票主菜单并根据输入调用相应函数。
选择退订票或预订票,输入姓名、退票数退票。
若退订票,退票成功后然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。
模块算法描述(伪代码):
主要函数
intEntering(Hangxian&
first)//录入航线
{
Hangxian*last;
last=first.next;
Hangxian*p=(Hangxian*)malloc(sizeof(Hangxian));
cout<
<
"
输入航班号:
;
cin>
>
p->
hangbanhao;
输入飞机号:
feijihao;
输入起飞时间:
feixingriqi;
输入座位数:
chenkerenshu;
输入降落城市:
zhongdianzhai;
p->
yupiao=p->
next=NULL;
yiding=NULL;
yudingqueue=NULL;
if(last==NULL)
first.next=p;
else
{
while(last->
next!
=NULL)
{
last=last->
next;
}
last->
next=p;
}
return0;
}
intSearch(Hangxian&
first)//查询航线
Hangxian*s;
s=first.next;
chara[10];
intn;
inti=1;
do{
*****************************************************************************\n"
cout<
******1:
终点站查询2:
航班号查询3:
退出******\n"
n;
switch(n)
case1:
输入终点站名:
cin>
a;
while(s!
{
if(strcmp(s->
zhongdianzhai,a)==0)
cout<
到达该终点站航班信息:
\n"
航班号:
s->
hangbanhao<
"
飞机号:
feijihao<
起飞时间:
feixingriqi<
终点站:
zhongdianzhai<
余票量:
yupiao<
endl;
i++;
}
s=s->
if(i==1)
cout<
到达该终点站的航班不存在,请重新输入\n"
return0;
break;
case2:
输入航班号:
if(strcmp(s->
hangbanhao,a)==0)
该航班号信息:
该航班不存在,请重新输入\n"
case3:
default:
错误,请重新输入\n"
while(n!
=3);
intReserve(Hangxian&
first)//订票
intnum;
while(s!
if((strcmp(s->
zhongdianzhai,a)==0))
cout<
cout<
i++;
if(i==1)
您选择的航班不存在,请重新操作\n"
输入需订票航班号:
输入需订票数:
num;
if(strcmp(s->
if(s->
yupiao>
=num)
Yidingkehu*p=(Yidingkehu*)malloc(sizeof(Yidingkehu));
Yidingkehu*q;
q=s->
yiding;
输入乘客姓名:
name;
next1=NULL;
dingpiaoshu=num;
if(q==NULL)
s->
yiding=p;
while(q!
if(strcmp(q->
name,p->
name)==0)
该姓名乘客已存在,请重新操作\n"
q=q->
next1;
q=p;
s->
yupiao-=num;
q->
订票成功!
charn;
抱歉,余票不够!
若想排队候补请输入'
e'
,否则按任意键退出"
if(n=='
)
Weidingkehu*p=(Weidingkehu*)malloc(sizeof(Weidingkehu));
Weidingkehu*q;
q=s->
yudingqueue;
输入预订乘客姓名:
next2=NULL;
p->
yudingpiao=num;
if(q==NULL)
s->
yudingqueue=p;
while(q!
{if(strcmp(q->
该乘客预定已存在,请重新操作\n"
return0;
q=q->
next2;
q=p;
预定票成功!
intYDRefund(Hangxian&
first)//退已订的票
charname[10],hangbanhao[10];
输入姓名:
hangbanhao,hangbanhao)==0)
s=s->
if(s==NULL)
该航班不存在,请重新操作\n"
p=s->
if(p==NULL)
该航班没有已定客户,请重新操作\n"
if(p->
next1==NULL)
if(strcmp(p->
name,name)==0)
s->
yupiao+=s->
yiding->
dingpiaoshu;
free(s->
yiding);
退票成功\n"
else
该航班乘客中没有该姓名乘客,请重新操作\n"
else
while(p->
next1!
if(strcmp(p->
next1->
break;
p=p->
if(p!
{
yupiao+=p->
free(p);
}
yudingqueue!
=NULL)//查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续
yudingq;
q.front=q.rear=(Weidingkehu*)malloc(sizeof(Weidingkehu));
q.front=s->
Yidingkehu*m;
while(s->
=q.front->
yudingpiao)//查询余票量是否满足客户订票数量
if(s->
yiding==NULL)
Yidingkehu*n=(Yidingkehu*)malloc(sizeof(Yidingkehu));
n->
dingpiaoshu=q.front->
yudingpiao;
strcpy(n->
name,q.front->
name);
yiding=n;
yupiao-=n->
该乘客"
n->
name<
预定的机票已到,"
dingpiaoshu<
张,请注意验收\n"
m=s->
while(m->
m=m->
Yidingkehu*n=(Yidingkehu*)malloc(sizeof(Yidingkehu));
m->
next1=n;
q.front=q.front->
yudingqueue=q.front;
if(q.front==NULL)
intWDRefund(Hangxian&
first)//退预订票
if(p==NULL)
该航班没有预定客户,请重新操作\n"
next2==NULL)
yudingqueue);
退预订票成功!
预定乘客中没有该姓名乘客,请重新操作\n"
next2!
next2->
free(p->
next2);
next2=p->
intRefund(Hangxian&
first)//退票界面
do
**********1:
退订票2:
退预定票3.退出**********\n"
YDRefund(first);
WDRefund(first);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 售票 系统 设计 报告