航空客运售票服务系统.docx
- 文档编号:12103939
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:29
- 大小:288.24KB
航空客运售票服务系统.docx
《航空客运售票服务系统.docx》由会员分享,可在线阅读,更多相关《航空客运售票服务系统.docx(29页珍藏版)》请在冰点文库上搜索。
航空客运售票服务系统
学生实习报告
课程名称_数据结构与数据处理应用训练
题目名称航空客运售票服务系统
学生学院
专业班级
学号
学生姓名
指导教师
2012年2月16日
航空客运售票服务系统
【摘要】21世纪是一个高速、快捷的年代。
在这个高速发展的年代里,速度成了我们追求的目标;二是提高工作效率;三是降低成本。
而且这样的系统势必让用户易学、易用,满足客户需求。
因此,办公自动化的高速度、高效率、高便捷、低成本便成了我们的目的,为此开发了这个“机场售票管理系统”。
本系统是采用C++开发的一个管理系统。
本系统要解决的是机场售票中所要解决的问题,包括售票退票功能、预约等待功能、查询航线功能、浏览航线客户功能等。
在整个系统中采用队列、线性链表、数组等存储方法。
在整个系统设计过程中,严格按照软件工程设计标准来设计系统。
【关键词】飞机信息,队列,线性链表,数据结构
1内容与要求
【问题描述】
航空客运订票的业务活动包括:
查询航线、机票预订和办理退票等。
试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
【具体要求】
设民航售票处的计算机系统可以为客户提供下列各项服务:
1.查询航线:
根据旅客提出的终点站名输出下列信息:
航班号、飞机号、星期几飞行,最近一天航班的日期和余票额。
2.承办订票业务:
根据客户提出的要求(日期、航班号、订票数额)查询该航班票额情况,若尚有余额,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需要重新询问客户要求。
若需要,可预约登记排队等候。
3.承办退票业务:
根据客户提供的情况(日期、航班、退票数额),为客户办理退票手续,然后查询该航班是否有人预约登记,首先询问排在第一的客户,若所退票数能满足他的要求,则为他办理订票手续,否则依次询问其他排队预约的客户。
【实现提示】
每条航线应包含的信息有:
终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票额、已订票的客户名单(包括姓名、订票额、座位号)和预约登记的客户名单(包括日期、姓名、所需票额)。
这最后两项显然是一个线性表和一个队列。
为查找方便、已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。
由于预约人数无法预料,队列也应以链表作存储结构。
整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。
每条航线是这张表上的一个记录,包含上述八个域,其中乘员名单域为指向乘员名单链表的头指针,预约登记客户名单域为分别指向队头和队尾的指针。
【测试数据】
自己设计,但报告上要求写出多批数据测试结果。
【选做内容】
当客户订票要求不能满足时,系统可向客户提供到达同一目的地的其它航线情况。
大家还可以充分发挥自己的想象力,增加你的系统的功能和其它服务项目。
2总体设计
本系统的总体设计分为售票退票功能、预约等待功能、查询航线功能、浏览航线客户功能等。
具体请看该流程图:
查询航线:
voidchaxun(charzdzhan[10],intn,mainlistA)
订票业务:
voiddingpiao(intday,inthangbanhao,intdingpiaoe,intn,mainlistA)
退票业务:
voidtuipiao(intday,inthangbanhao,inttuipiaoe,charname[],intn,mainlistA)
浏览订票情况:
voidliulan(intn)
线性链表:
初始化链表:
voidInitList(LNode*&H)
清除链表:
voidClearList(LNode*&H)
计算链表长度:
intLengthList(LNode*H)
判断链表是否为空:
boolEmptyList(LNode*H)
根据POS值取出值:
kehuGetList(LNode*H,intpos)
查找链表中的数据:
boolFindList(LNode*H,kehuitem)
遍历链表:
voidTraverseList(LNode*H)
链表中插入数据:
boolInsertList(LNode*&H,kehuitem,intpos)
链表中删除数据:
boolDeleteList(LNode*&H,kehu&item,intpos)
队列:
voidInitQueue(Queue&Q)//初始化循环队列Q
intEmptyQueue(QueueQ)//判断队列是否为空,空返回1,否则返回0
voidEnQueue(Queue&Q,dengdaiitem)//进队列
dengdaiOutQueue(Queue&Q)//出队列
dengdaiPeekQueue(QueueQ)//取出队列中第一个数据
voidClearQueue(Queue&Q)//清除该队列
3详细设计
结构定义:
typedefstruct{
charname[10];//客户姓名
intdingpiaoe;//订票额
}dengdai;//预约等待的客户
typedefstruct{
charname[10];//客户姓名
intdingpiaoe;//订票额
intzuoweihao;//座位号
}kehu;//订到票的客户
typedefstruct{
charzdzhan[10];//终点站名
inthangbanhao;//航班号
intweek;//星期
intday;//日期
intyupiao;//余票
intdinge;//成员定额
LNode*pass;//订到票的客户
Queuewait;//等待预约的客户
}ElemType;
插入航线:
先提示要输入的航线数量,再用一个FOR循环将所有输入的数据存入数组;
查询航线:
用一个FOR循环,将输入的要查询的信息与数组中的所有航线信息作比较,若找到相同的终点站,则全部将他们输出。
订票业务:
用一个FOR循环,将输入的要订票的信息与数组中的所有航线信息作比较,若找到与输入信息相同的航线,则输出“找到您所要订的航班!
”,之后再输入客户姓名,再将以上输入信息放入2个结构:
预约等待的客户和订票客户。
再判断该航班是否有那么多票够该客户买,若够则输出座位号,若不够,则输出:
“该航班余票不足,是否预约登记排队等候,请选择YES/NO”,若客户选择YES,则将该客户信息放入队列。
若客户选择NO,则返回选择菜单。
如果在循环结束后,还未找到该航班,则输出:
“找不到您所要订的航班!
”
退票业务:
用一个FOR循环,将输入的要退票的信息与数组中的所有航线信息作比较,若找到与输入信息相同的航线,则输出“找到了您的航班!
”,再判断输入的退票额是否符合他的订票额,若大于订票额,则输出:
“您要退的票大于您订的票,退票不成功!
请重新输入退票额”并返回选择菜单。
若不大于,则输出“退票成功!
”并输出他剩余的票数。
若票数为0,则删除该客户信息。
退票结束后,询问在预约等待的顾客,从队列头开始,查找与余票额相符的顾客信息,找到则输出“XX客户的座位号为X”,找不到则让他们继续等待。
如果在循环结束后,还未找到该航班,则输出:
“您没有该航班的票!
”
浏览订票情况:
首先让使用者输入要查询的航线信息(日期、航班号)。
然后利用线性链表的的遍历功能,输出要查询航班客户信息。
4程序测试
测试数据:
航线信息:
终点站航班号星期日期
hangzhou1120120101
hangzhou2220120102
hangzhou3320120103
beijing4120120101
beijing5320120103
tianjing6420120104
tianjing7620120106
hangzhou8120120101
hangzhou9320120103
sichuan10220120102
sichuan11720120107
jiangsu12120120108
jiangsu13220120109
chongqin14520120105
chongqin15620120106
运行正确:
菜单输入错误:
订票时找不到航班:
退票时找不到航班:
输入的退票额大于订票额:
5总结
基本上能安全的运行,具备的功能符合题目的要求。
程序写的还算简练,结构清晰,各个模块的分工和功能明确。
21世纪是一个高速、快捷的年代。
在这个高速发展的年代里,速度成了我们追求的目标;二是提高工作效率;三是降低成本。
而且这样的系统势必让用户易学、易用,满足客户需求。
因此,办公自动化的高速度、高效率、高便捷、低成本便成了我们的目的,为此开发了这个“机场售票管理系统”。
本系统可以大大简化售票,订票,查询,统计等十分繁琐的工作,各个部门相互协调,简化办公环节,提高工作效率,便于管理,各种数据可以一目了然。
这次系统的设计从最开始的需求分析,可行性研究,到系统的整体设计,包括概要设计和详细设计的一个整体过程,本人真正明白了要做一个软件的难度,特别是要做一个真正可用的软件,就更难了。
经过这一个星期的实践编程,我收获很多,不仅巩固了以前的知识:
特别是像队列、链表、线性表、数组等等,还从同学、网上学到了很多其他知识,并且对调试更加熟悉。
不过这次的编程还是比较顺利的,没有出现特别大的错误,特别是那种出一点错就要改很久的错误。
这次实践过程中主要遇到的错误有以下一些:
1.一开始编的线性链表的头文件是带表头附加结点的,但是在调用存入客户的座位号的时候,是不需要表头附加结点的,不然出现的错误就是每个人的座位号错误,尤其是第一个客户,是个非常大的负数。
所以为了修改该错误,就要重新编写一个不带表头附加结点的线性链表。
2.一开始将数组mainlistA,定义成局部变量。
但是由于在子函数中要多次使用A,有时候又会忘记定义,所以就把A当作全局变量。
3.有时候也会出现一些不常用的小错误,就是做比较的时候还是很习惯的用“==”,“>”“<”等,但是在这个结构很多的程序里,很多都是字符型的,所以要记得使用STRING的功能去做比较和赋值等。
4.还有这次编程的一个难点,就是处理预约等待的客户。
后来从找资料和询问同学的想法之后知道了可以用一个新的队列,在询问预约等待的客户时不符合的就放入新的队列,符合就进入订票的链表,有了思路之后完成的就能很快了。
参考文献
[1]徐孝凯,《数据结构实用教程》[M],清华大学出版社,2006年9月
[2]牛义德.带刺的红玫瑰.航空电子售票系统.中国电子商务,2000
[3]伍俊良.VisualFoxpro.闵红梅.课程设计与系统开发案例.北京:
清华大学出版社,2003
[4]张龙.school著.晏海华译.软件工程导论第四版.北京清华大学出版,2003.11-13,25Judy
[5]c++编程--从问题分析到程序设计实验指导书.电子工业出版社
附录
test0.cpp:
#include
#include
#include
#include
typedefstruct{
charname[10];//客户姓名
intdingpiaoe;//订票额
}dengdai;//预约等待的客户
typedefstruct{
charname[10];//客户姓名
intdingpiaoe;//订票额
intzuoweihao;//座位号
}kehu;//订到票的客户
#include"Queue.h"
#include"LinkList.h"
typedefstruct{
charzdzhan[10];//终点站名
inthangbanhao;//航班号
intweek;//星期
intday;//日期
intyupiao;//余票
intdinge;//成员定额
LNode*pass;//订到票的客户
Queuewait;//预约等待的客户
}ElemType;
constintMaxSize=200;
typedefElemTypemainlist[MaxSize];
mainlistA;
#include"a.h"
voidmain()
{
intn=0,i,j,day,hangbanhao,dingpiaoe,tuipiaoe,k;
charzdzhan[10],name[10];//终点站名
while
(1){
printf("*********欢迎使用航空客运售票服务系统*********\n");
printf("**请选择相关服务项目**\n");
printf("**1.插入航线**\n");
printf("**2.查询航线**\n");
printf("**3.订票业务**\n");
printf("**4.退票业务**\n");
printf("**5.浏览订票情况**\n");
printf("**0.退出**\n");
printf("**********************************************\n");
cin>>j;
if(j==1){
cout<<"请输入您想插入的航线信息数:
";
cin>>k;
cout<<"请依次输入航线信息:
终点站名、航班号、星期几、日期"< for(i=0;i cin>>A[i].zdzhan; cin>>A[i].hangbanhao; cin>>A[i].week; cin>>A[i].day; A[i].yupiao=50; A[i].dinge=50; InitQueue(A[i].wait); InitList(A[i].pass); } n=n+k; } elseif(j==2){ cout<<"请输入你想去的终点名: "; cin>>zdzhan; chaxun(zdzhan,n,A); } elseif(j==3){ cout<<"请输入您想订票的日期、航班号、订票额"< cin>>day>>hangbanhao>>dingpiaoe; dingpiao(day,hangbanhao,dingpiaoe,n,A); } elseif(j==4){ cout<<"请输入您想退票的日期、航班号、退票额、姓名"< cin>>day>>hangbanhao>>tuipiaoe>>name; tuipiao(day,hangbanhao,tuipiaoe,name,n,A); } elseif(j==5){ liulan(n); } elseif(j==0) break; else printf("输入错误! \n"); } } a.h: voidchaxun(charzdzhan[10],intn,mainlistA) { inti,j=0; printf("终点站名\t航班号\t星期几\t日期\t余票\n");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 客运 售票 服务 系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)