航空客运订票系统方案.docx
- 文档编号:678624
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:25
- 大小:143.48KB
航空客运订票系统方案.docx
《航空客运订票系统方案.docx》由会员分享,可在线阅读,更多相关《航空客运订票系统方案.docx(25页珍藏版)》请在冰豆网上搜索。
航空客运订票系统方案
课程设计报告
课程名称数据结构
课题名称航空客运订票系统
专业通信工程
班级
学号
姓名
指导教师
2013年6月29日
工程学院
课程设计任务书
课程名称数据结构
课题航空客运订票系统
专业班级
学生
学号
指导老师塵烽田娟秀杰君
审批
任务书下达日期2013年6月23日
任务完成日期2013年6月29日
1.需求分析1
2.概要设计1
2.1定义“航线”类型2
2.2主函数2
2.3调用关系3
3.详细设计3
3.1航线与客户的存储结构3
3.2各个系统模块3
3.3算法设计4
3.4主函数功能6
3.5整个系统的流程图7
3.6存储结构设计7
4.调试分析7
5.用户使用说明8
6.测试结果10
7.心得体会12
8.附录13
课题名称航空客运订票系统
1.需求分析
航空客运订票的业务活动包括:
查询航线、客票预订和办理退票等。
试设讣一个航空客运订票系统,以使上述业务可以借助计算机来完成。
【基本要求】
(1)每条航线所涉及的信息有:
终点站名、航班号、飞机号、飞行周日(星期儿)、乘员定额、余票量、已订票的客户(包括、订票量、舱位等级1,2或3)以及等候替补的客户(包括、所需票量);
(2)系统能实现的操作和功能如下:
1录入:
可以录入航班情况,全部数据可以只放在存中,最好存储在文件中;
2查询航线:
根据旅客提出的终点站名输出下列信息:
航班号、飞机号、星期儿飞行,最近一天航班的日期和余票额;
3承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。
若需要,可登记排队候补;
4承办退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
初始化航班信息如下:
终点站
航班号
飞机号
飞行周日
余票屋
hunan
001
1111111
3
120
shanghai
002
2222222
2
120
jiangsu
003
3333333
1
120
通过输入0~5这六个数字选择相应的操作,如:
查询航班,订票,退票等操作;
2.概要设计
两个客户可分别山线性表和队列实现。
为查找方便,已订票客户的线性表应按客户有序,并且,为插入和删除方便,应以链表作存储结构。
由于预约人数无法预计,队列也应以链表作存储结构。
整个系统需汇总各条航线的情况登录在一线性表上,山于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。
每条航线是这表上的一个记录,包含上述8个域、其中乘员域为指向乘员链表的头指针,等候替补的
客户域为分别指向队头和队尾的指针。
注:
由于“航线”可只用一条单链表记录,故釆用全局变量,减少参数的传递。
2.1定义“航线”类型
ADTLairline{
数据对象:
D={aidiW航线链表集,i=l,2,3,n,n>=0}
数据关系:
Rl={
基本操作:
Lairlinesearch^line()
Lairlinesearch_plane()
Lairlinesearch_date()
Lairlinesearch_addr()
voidboundary()
voidinsert_line()
voidprint_customer(airline*p)
voidbook()
voidwaited(airline*p)
voidRefund()
voidsearch()
voidInitLine()
voidPrintline()
}ADTLairline;
i=l,2,3,n}
//按航班号查找航班〃按飞机号查找航班
//按飞行日期查找航班
//按航班终点查找航班
〃主菜单界面
〃插入新航班
//显示航班客户信息
〃订票系统
//排队订票系统
〃退票系统
//航班查询系统
〃初始化航线信息
〃显示所有航班信息
2.2主函数
voidmain()
{初始化;
do{接受命令;
处理命令(调用相应函数);
}while(“命令”!
二"退出”);
}
2.3调用关系
3.详细分析
3.1航线和客户的存储结构
客户存储结构体
typedefstmctcustomer
{charname[20];//
intnum;〃订票数量
intlevel;〃舱位等级
customer*next;〃指向后继乘客
}customer,*Lcustoiner;
航线存储结构体
typedefstructairline
{charter_address[20];
charline_num[10];
〃终点站
〃航班号
charplane_num[10];
intdate;
inttotal;
〃飞机型号
〃飞行日期
〃总人数
intremain;
〃余票数
customer*booked;
〃已定客户信息
customer*wait;
//替补客户信息
airline*next;
〃指向后继航线
}airline,*Lairline;
3.2各个系统模块
(1)浏览航线模块:
定义voidprint_custonier(airline水p),显示成员的信息;调用voidprintline()函数输出全部航线信息。
(2)浏览订票客户信息模块:
定义订票客户信息的结构体customer,根据输入航班号调用search。
函数寻找客户信息。
(3)査询航线模块:
顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。
(4)订票模块:
查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功,否则失败。
(5)退票模块:
输入要退票的乘客,查找乘客资料的链表中是否有这位乘客,有则删去此节点,并在空位上加1,无则退票失败。
如果此时余票额大于等于候补客户的订票数量,那么候补客户订票成功。
3.3算法设计
1.按照航班查找
Lairlinesearch_line()
{
chara[10];airline*p:
p=L->next;
P(HPleaseinputthenumberofline:
H);S(H%sM,a);for(;p;p=p->next)
if(!
strcmp(a,p->line_num))break;
returnp;
}
注:
通过建立节点p实现链表的遍历,利用for循环挨个查找,直到找到为止,再返回找到的这个节点,实现传递。
2.订票系统
voidbook()
{inti;intflag=O;air!
ine*p;customer*cst,*c;
P(nPleasechoosethewayofviewing:
\nH);〃查询方式选择
P(HThenumberoftheflight====================>1\n");
P(MTheaddressofthefinaldestination================
P(HThedateoftheflight======================:
for(;!
flag;)//flag为0时一直在循环
{S(”%d”,&i);
switch⑴〃三种方式查询航班
{case1:
p=search_line();flag=l;break;
case2:
p=search_address();flag=l;break;
case3:
p=search_date();flag=l;break;
default:
P(MWrong!
!
IPleaseinputagain!
\nu);break;)
注:
输入1,2,3选择操作方式,先进行查询,在通过调用函数实现购票。
3.初始化航线
voidInitLine()〃初始化航线信息
{初始化航线,先建立3条航线方便测试;}
4.航班查询
voidsearch()
{inti;intflag=O;airline*p;
PC'Pleaseinputthewayofviewingtheflight:
\nH);
P("Thenumberoftheflight>l\n");〃航班号
P(HThenumberoftheplane>2\nH);〃飞机
P("Thedateoftheflight>3\n”);〃航班日期
PC'Thefinaladdressoftheflight-一一>4\n”);〃航班终点
S(“%d”,&i);for(;!
flag;)
switch(i)〃按照选择项进行操作
{case1:
p=search」ine();flag二1;break;
case2:
p=search_plane();flag=1:
break;
case3:
p=search_date();flag=1;break:
case4:
p=search_address();flag-=1;break;default:
P(MWrong,inputagain!
\nH);break;
}if(P)
{P(”终点站航班号飞机号飞行周日余票量\n“);
P(n%-9s%9s%13s%1Od%15d\n,\p->ter_address,p->line_num,p->plane_num,p->date,p->remain);
P(MBookingthetickets?
(Sure,pleaseinputl;Elseinputanynumber!
)”);
S(”%cT,&i);
if(i==l)book();
ElseP(n\n\n\n\nH;boundary();)
ElseP("Theflightisnotexist!
!
、(丿_Yr\n\n\n");}
voidprintline()
{intflag;airline*p;p=L->next;
P(“终点站航班号飞机号飞行周日余票量\n“);for(;p;p=p->next)
{P(n%s%s%s%d%d\n,\p->ter_address,p->line_num,p->plane_num,p->date,p->remain);}
P(n\n\n\n\n\nH);boundary();)
注:
通过输入123,4进行选择查询的方式,分别为飞机型号,航班号,目的地位置,飞行日期进行查询。
3.4主函数功能
voidmain()
{
intflag=l;boundary();InitLine();
do
{switch(getchar())
{
caseT:
pi・irHline();break;〃显示所有航线
case2:
senrch();break;//
case3:
book();break;
case4:
Refimd();bwak;
case
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 客运 订票 系统 方案