ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:288.24KB ,
资源ID:12103939      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12103939.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(航空客运售票服务系统.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

航空客运售票服务系统.docx

1、航空客运售票服务系统学生实习报告 课程名称_ 数据结构与数据处理应用训练 题目名称 航空客运售票服务系统 学生学院 专业班级 学 号 学生姓名 指导教师 2012 年 2 月 16日航空客运售票服务系统【摘要】 21世纪是一个高速、快捷的年代。在这个高速发展的年代里,速度成了我们追求的目标;二是提高工作效率;三是降低成本。而且这样的系统势必让用户易学、易用,满足客户需求。因此,办公自动化的高速度、高效率、高便捷、低成本便成了我们的目的,为此开发了这个“机场售票管理系统”。本系统是采用C+开发的一个管理系统。本系统要解决的是机场售票中所要解决的问题,包括售票退票功能、预约等待功能、查询航线功能、

2、浏览航线客户功能等。在整个系统中采用队列、线性链表、数组等存储方法。在整个系统设计过程中,严格按照软件工程设计标准来设计系统。【关键词】 飞机信息,队列,线性链表,数据结构 1 内容与要求【问题描述】航空客运订票的业务活动包括:查询航线、机票预订和办理退票等。试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。【具体要求】设民航售票处的计算机系统可以为客户提供下列各项服务:1查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额。2. 承办订票业务:根据客户提出的要求(日期、航班号、订票数额)查询该航班票额情况,若尚有余额,则为客户办理订

3、票手续,输出座位号;若已满员或余票额少于订票额,则需要重新询问客户要求。若需要,可预约登记排队等候。3承办退票业务:根据客户提供的情况(日期、航班、退票数额),为客户办理退票手续,然后查询该航班是否有人预约登记,首先询问排在第一的客户,若所退票数能满足他的要求,则为他办理订票手续,否则依次询问其他排队预约的客户。【实现提示】每条航线应包含的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票额、已订票的客户名单(包括姓名、订票额、座位号)和预约登记的客户名单(包括日期、姓名、所需票额)。这最后两项显然是一个线性表和一个队列。为查找方便、已订票客户的线性表应按客户姓名有序,并且,

4、为插入和删除方便,应以链表作存储结构。由于预约人数无法预料,队列也应以链表作存储结构。整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。每条航线是这张表上的一个记录,包含上述八个域,其中乘员名单域为指向乘员名单链表的头指针,预约登记客户名单域为分别指向队头和队尾的指针。【测试数据】自己设计,但报告上要求写出多批数据测试结果。【选做内容】当客户订票要求不能满足时,系统可向客户提供到达同一目的地的其它航线情况。大家还可以充分发挥自己的想象力,增加你的系统的功能和其它服务项目。2 总体设计本系统的总体设计分为售票退票功能、预约等待功能

5、、查询航线功能、浏览航线客户功能等。具体请看该流程图: 查询航线:void chaxun(char zdzhan10,int n,mainlist A)订票业务:void dingpiao(int day,int hangbanhao,int dingpiaoe,int n,mainlist A)退票业务:void tuipiao(int day,int hangbanhao,int tuipiaoe,char name,int n,mainlist A)浏览订票情况:void liulan(int n)线性链表:初始化链表:void InitList (LNode *&H)清除链表:void

6、 ClearList(LNode *&H)计算链表长度:int LengthList (LNode *H)判断链表是否为空:bool EmptyList (LNode *H)根据POS值取出值:kehu GetList (LNode *H, int pos)查找链表中的数据:bool FindList (LNode *H, kehu item)遍历链表:void TraverseList(LNode *H)链表中插入数据:bool InsertList ( LNode *&H,kehu item, int pos)链表中删除数据:bool DeleteList (LNode *&H,kehu

7、&item,int pos)队列:void InitQueue (Queue &Q) /初始化循环队列Qint EmptyQueue (Queue Q) /判断队列是否为空,空返回1,否则返回0void EnQueue (Queue &Q , dengdai item ) /进队列dengdai OutQueue(Queue &Q)/出队列dengdai PeekQueue(Queue Q)/取出队列中第一个数据void ClearQueue(Queue &Q) /清除该队列3 详细设计结构定义:typedef struct char name10;/客户姓名 int dingpiaoe;/订

8、票额dengdai;/预约等待的客户typedef struct char name10; /客户姓名 int dingpiaoe; /订票额 int zuoweihao;/座位号kehu;/订到票的客户typedef struct char zdzhan10;/终点站名 int hangbanhao;/航班号 int week;/星期 int day;/日期 int yupiao;/余票 int dinge;/成员定额 LNode *pass;/订到票的客户 Queue wait;/等待预约的客户ElemType; 插入航线:先提示要输入的航线数量,再用一个FOR循环将所有输入的数据存入数组

9、;查询航线:用一个FOR循环,将输入的要查询的信息与数组中的所有航线信息作比较,若找到相同的终点站,则全部将他们输出。订票业务:用一个FOR循环,将输入的要订票的信息与数组中的所有航线信息作比较,若找到与输入信息相同的航线,则输出“找到您所要订的航班!”,之后再输入客户姓名,再将以上输入信息放入2个结构:预约等待的客户和订票客户。再判断该航班是否有那么多票够该客户买,若够则输出座位号,若不够,则输出:“该航班余票不足,是否预约登记排队等候,请选择YES/NO”,若客户选择YES,则将该客户信息放入队列。若客户选择NO,则返回选择菜单。如果在循环结束后,还未找到该航班,则输出:“找不到您所要订的

10、航班!”退票业务:用一个FOR循环,将输入的要退票的信息与数组中的所有航线信息作比较,若找到与输入信息相同的航线,则输出“找到了您的航班!”,再判断输入的退票额是否符合他的订票额,若大于订票额,则输出:“您要退的票大于您订的票,退票不成功!请重新输入退票额”并返回选择菜单。若不大于,则输出“退票成功!”并输出他剩余的票数。若票数为0,则删除该客户信息。退票结束后,询问在预约等待的顾客,从队列头开始,查找与余票额相符的顾客信息,找到则输出“XX客户的座位号为X”,找不到则让他们继续等待。如果在循环结束后,还未找到该航班,则输出:“您没有该航班的票!”浏览订票情况:首先让使用者输入要查询的航线信息

11、(日期、航班号)。然后利用线性链表的的遍历功能,输出要查询航班客户信息。4 程序测试测试数据:航线信息:终点站 航班号 星期 日期hangzhou 1 1 20120101hangzhou 2 2 20120102hangzhou 3 3 20120103beijing 4 1 20120101beijing 5 3 20120103tianjing 6 4 20120104tianjing 7 6 20120106hangzhou 8 1 20120101hangzhou 9 3 20120103sichuan 10 2 20120102sichuan 11 7 20120107jiangs

12、u 12 1 20120108jiangsu 13 2 20120109chongqin 14 5 20120105chongqin 15 6 20120106运行正确: 菜单输入错误:订票时找不到航班:退票时找不到航班:输入的退票额大于订票额:5 总结基本上能安全的运行,具备的功能符合题目的要求。程序写的还算简练,结构清晰,各个模块的分工和功能明确。21世纪是一个高速、快捷的年代。在这个高速发展的年代里,速度成了我们追求的目标;二是提高工作效率;三是降低成本。而且这样的系统势必让用户易学、易用,满足客户需求。因此,办公自动化的高速度、高效率、高便捷、低成本便成了我们的目的,为此开发了这个“机

13、场售票管理系统”。 本系统可以大大简化售票,订票,查询,统计等十分繁琐的工作,各个部门相互协调,简化办公环节,提高工作效率,便于管理,各种数据可以一目了然。这次系统的设计从最开始的需求分析,可行性研究,到系统的整体设计,包括概要设计和详细设计的一个整体过程,本人真正明白了要做一个软件的难度,特别是要做一个真正可用的软件,就更难了。经过这一个星期的实践编程,我收获很多,不仅巩固了以前的知识:特别是像队列、链表、线性表、数组等等,还从同学、网上学到了很多其他知识,并且对调试更加熟悉。不过这次的编程还是比较顺利的,没有出现特别大的错误,特别是那种出一点错就要改很久的错误。这次实践过程中主要遇到的错误

14、有以下一些:1.一开始编的线性链表的头文件是带表头附加结点的,但是在调用存入客户的座位号的时候,是不需要表头附加结点的,不然出现的错误就是每个人的座位号错误,尤其是第一个客户,是个非常大的负数。所以为了修改该错误,就要重新编写一个不带表头附加结点的线性链表。2.一开始将数组mainlist A,定义成局部变量。但是由于在子函数中要多次使用A,有时候又会忘记定义,所以就把A当作全局变量。3.有时候也会出现一些不常用的小错误,就是做比较的时候还是很习惯的用“=”,“”“”等,但是在这个结构很多的程序里,很多都是字符型的,所以要记得使用STRING的功能去做比较和赋值等。4.还有这次编程的一个难点,

15、就是处理预约等待的客户。后来从找资料和询问同学的想法之后知道了可以用一个新的队列,在询问预约等待的客户时不符合的就放入新的队列,符合就进入订票的链表,有了思路之后完成的就能很快了。参考文献1徐孝凯,数据结构实用教程M,清华大学出版社,2006年9月2牛义德.带刺的红玫瑰.航空电子售票系统.中国电子商务,2000 3伍俊良.Visual Foxpro.闵红梅.课程设计与系统开发案例.北京:清华大学出版社,2003 4张龙.school著.晏海华译.软件工程导论 第四版.北京清华大学出版, 2003.11-13,25Judy 5c+编程-从问题分析到程序设计实验指导书.电子工业出版社附录test0

16、.cpp:#include#include#include#includetypedef struct char name10;/客户姓名 int dingpiaoe;/订票额dengdai;/预约等待的客户typedef struct char name10;/客户姓名 int dingpiaoe;/订票额 int zuoweihao;/座位号kehu;/订到票的客户#includeQueue.h#includeLinkList.htypedef struct char zdzhan10;/终点站名 int hangbanhao;/航班号 int week;/星期 int day;/日期 i

17、nt yupiao;/余票 int dinge;/成员定额 LNode *pass;/订到票的客户 Queue wait;/预约等待的客户ElemType; const int MaxSize=200;typedef ElemType mainlistMaxSize;mainlist A;#includea.hvoid main() int n=0,i,j,day,hangbanhao,dingpiaoe,tuipiaoe,k; char zdzhan10,name10;/终点站名 while(1) printf(*欢迎使用航空客运售票服务系统*n); printf(* 请选择相关服务项目 *

18、n); printf(* 1.插入航线 *n); printf(* 2.查询航线 *n); printf(* 3.订票业务 *n); printf(* 4.退票业务 *n); printf(* 5.浏览订票情况 *n); printf(* 0.退出 *n); printf(*n); cinj; if(j=1) coutk; cout请依次输入航线信息:终点站名、航班号、星期几、日期endl; for(i=0;iAi.zdzhan; cinAi.hangbanhao; cinAi.week; cinAi.day; Ai.yupiao=50; Ai.dinge=50; InitQueue(Ai.w

19、ait); InitList(Ai.pass); n=n+k; else if(j=2) coutzdzhan; chaxun(zdzhan,n,A); else if(j=3) cout请输入您想订票的日期、航班号、订票额dayhangbanhaodingpiaoe; dingpiao(day,hangbanhao,dingpiaoe,n,A); else if(j=4) cout请输入您想退票的日期、航班号、退票额、姓名dayhangbanhaotuipiaoename; tuipiao(day,hangbanhao,tuipiaoe,name,n,A); else if(j=5) liu

20、lan(n); else if(j=0) break; else printf(输入错误!n); a.h:void chaxun(char zdzhan10,int n,mainlist A) int i,j=0; printf(终点站名t航班号t星期几t日期 t余票n); for(i=0;in;i+) if(strcmp(Ai.zdzhan,zdzhan)=0) coutAi.zdzhantAi.hangbanhaotAi.weekt Ai.daytAi.yupiaoendl; void dingpiao(int day,int hangbanhao,int dingpiaoe,int n,

21、mainlist A) int i,count; kehu temp; dengdai item; char k10; for(i=0;in;i+) if(day=Ai.day&hangbanhao=Ai.hangbanhao) cout找到您所要订的航班!endl; temp.dingpiaoe=dingpiaoe; item.dingpiaoe=dingpiaoe; couttemp.name; strcpy(item.name,temp.name); if(dingpiaoe=Ai.yupiao) count=Ai.dinge-Ai.yupiao+1; printf(您的座位号为%dn,

22、count); temp.zuoweihao=count; Ai.yupiao=Ai.yupiao-dingpiaoe; InsertList(Ai.pass,temp,0); else cout该航班余票不足,是否预约登记排队等候,请选择YES/NOk; if(strcmp(k,YES)=0) EnQueue(Ai.wait,item); else return; break; if(i=n) cout找不到您所要订的航班!endl;void tuipiao(int day,int hangbanhao,int tuipiaoe,char name,int n,mainlist A) int

23、 i,count; Queue temp; dengdai item; kehu item1; LNode *p; InitQueue(temp); for(i=0;idata.name) cout找到了您的航班!p-data.dingpiaoe) cout您要退的票大于您订的票,退票不成功!请重新输入退票额data.dingpiaoe-tuipiaoe; printf(退票成功,您还有%d张票n,count); if(p-data.dingpiaoe) p-data.dingpiaoe=count; else DeleteList (p,item1,-1); while(!EmptyQueu

24、e(Ai.wait) item=PeekQueue(Ai.wait); if(item.dingpiaoeAi.yupiao) EnQueue(temp,OutQueue(Ai.wait); else item1.dingpiaoe=item.dingpiaoe; strcpy(item1.name,item.name); item1.zuoweihao=Ai.dinge-Ai.yupiao+1; InsertList(Ai.pass,item1,0); OutQueue(Ai.wait); Ai.yupiao-=item.dingpiaoe; coutitem1.name客户系统已成功订了i

25、tem1.dingpiaoe张票,座位号为:item1.zuoweihaonext; if(i=n) cout您没有该航班的票!endl;void liulan(int n) int day,hangbanhao; coutdayhangbanhao; for(int t=0;tnext; / 保存下一个结点 free(cp); cp=np; /使下一个结点成为当前结点 H=NULL; /置单链表为空int LengthList (LNode *H) LNode *p=H; /用来遍历链表结点 int i=0; /用来统计结点个数 while(p!=NULL) i+; p=p-next; return i;bool EmptyList (LNode *H) re

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

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