航空订票系统
UML可视化建模(航空订票系统)

《可视化建模与UML》课程结业报告课题名称: 航空客运订票系统建模姓名: ***学号: *******班级:****: ***完成日期: 2013.06.16目录第一章概述 (3)1.1系统开发的摸底和开发背景 (3)1.2系统功能 (3)1.3系统结构框架 (4)1.4开发环境 (5)第二章用例模型 (6)2.1用例模型简介 (6)2.2用例图的的含义及其作用 (6)2.3用例图及用例描述 (7)第三章类模型 (10)3.1类模型简介 (10)3.2类图的作用 (10)3.3类图 (11)第四章交互模型 (13)4.1交互模型简介 (13)4.2序列图简介 (13)4.3序列图的作用 (13)4.4序列图描述及其序列图 (14)第五章行为模型 (20)5.1行为模型简介 (20)5.1.1活动图简介 (20)5.1.2活动图的作用 (20)5.1.3状态图简介 (21)5.1.4状态图的作用 (21)5.2行为模型图 (21)5.2.1活动图及其描述 (21)5.2.2状态图及其描述 (23)第六章构件图和部署图 (25)6.1构件图简介 (25)6.2部署图简介 (25)第七章课程学习小结 (27)7.1课程小结 (27)7.2学习心得 (27)参考文献 (28)第一章概述1.1系统开发的摸底和开发背景随着科技与经济的发展,越来越多的人选择乘飞机,这跟我国的经济增长有很大关系,人们在追求快节奏的生活方式,所以做飞机无疑成了首选。
而且随着网络的盛行,航空订票系统就显得尤为重要,我们开发这个系统主要是为了方便大家,让大家能够快速、清晰、准确地了解航班信息,而不至于像以前那样排队等候,从而避免耽搁乘客大量的等待时间。
航空客运业务诞生已有进一个世纪了,作为现有交通工具中最方便快捷的一种,它确实地给大家的生活、出行带来了极大的方便。
随着航空客运业务多年来的发展,其售票业务也同样不断地发展。
1.2系统功能机票预订系统是在现代社会生活节奏不断加快,对机票预订工作的自动化和准确化要求也日益强烈的背景下,为了实现机票预订工作的网络化,以及实现网络查询和统计一体化而开发的管理信息系统。
航空订票系统需求规格说明书

TOLO 航空订票系统》需求规格说明书目录3.数据描述3.1 功能操作 (Actio ns )和角色 (Actors ) (10)3.1.1用例清单 (24个) ....................................................... 1.0. 3.1.2角色清单 ............................................................... 1.14.功能需求.3.1.1编写目的 .3 1.2项目背景.31.2.1行业背景 1.2.2客户行业背景 1.2.3项目业务背景 1.3定义1.3.1名词解释和费用执行标准定义 1.3.2术语和缩略词对照表 1.4参考资料2.任务概述 .9. 2.1目标 9. 2.2运行环境 9. 2.3条件与限制 ......................................................................................................................... 9 ............ .1.0..1.14.1功能划分.1.14.2功能描述.14.4.2.1功能划分 1.44.2.2功能描述 1.54.2.3相关界面介绍304.2.4交互列表313.5.5.1最大并发连接数355.2执行效率.355.3日均处理数据量和峰值数据处理速度(记录条数/秒):.3.5.6.运行需求 3.5.6.1 一般限制..................................................................... 35 ............6.2出错处理..................................................................... 36 ............1.1编写目的本需求说明书的目的是明确T-3GABS项目的业务背景、业务范围以及项目定义的专业词汇,通过分析项目的核心功能和系统需求。
航空订票系统c语言课程设计

航空订票系统c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体、数组、函数等基本知识点的综合运用,特别是在航空订票系统中的应用。
2. 让学生了解并掌握航空订票系统的基本业务流程,如航班查询、预订、取消预订等功能。
3. 使学生能够通过C语言实现简单的航空订票系统,并了解其背后的数据结构和算法。
技能目标:1. 培养学生运用C语言进行问题分析、程序设计和调试的能力。
2. 培养学生独立思考和团队协作的能力,通过项目实践,提高解决实际问题的能力。
3. 培养学生具备良好的编程习惯,编写出结构清晰、可读性强的代码。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发他们主动探索新知识的精神。
2. 培养学生面对困难和挑战时,保持积极乐观的心态,勇于克服困难,不断进步。
3. 通过航空订票系统课程设计,使学生认识到编程在实际生活中的应用价值,提高他们对社会责任的认识。
课程性质:本课程为C语言程序设计课程的实践环节,以项目为导向,注重培养学生的动手能力和实际应用能力。
学生特点:学生已经掌握了C语言的基本语法和编程技巧,具有一定的编程基础,但缺乏实际项目经验。
教学要求:结合学生特点和课程性质,采用案例教学、任务驱动等方法,引导学生通过实践掌握课程内容,提高编程能力。
在教学过程中,注重启发式教学,鼓励学生提问、讨论,培养他们的问题解决能力和团队协作精神。
最终达到课程目标,使学生能够独立完成航空订票系统课程设计。
二、教学内容1. C语言基础知识回顾:结构体、数组、函数、指针、文件操作等。
2. 航空订票系统业务流程分析:航班查询、预订、取消预订、显示航班信息等。
3. 数据结构和算法:链表、排序算法、查找算法等在航空订票系统中的应用。
4. 编程规范和调试技巧:代码规范、调试方法、性能优化等。
5. 项目实践:根据业务流程,设计并实现航空订票系统各功能模块。
教学内容安排和进度:1. 第一周:C语言基础知识回顾,重点讲解结构体、数组和函数。
航空订票系统发展历程

航空订票系统发展历程
航空订票系统的发展历程始于20世纪60年代,当时航空公司开始采用计算机技术来管理和处理航班信息和乘客订票。
这些系统使用基本的计算机程序和数据库来存储航班时间表、座位预订和乘客信息。
随着计算机技术的进步,航空订票系统在20世纪70年代进入了第二阶段。
此时,一些大型航空公司开始使用集中式订票系统,这些系统可以同时为多个航空公司提供订票服务。
这些系统通常由航空公司或第三方公司开发和运营,并称为计算机预订系统(CRS)。
这些系统可以通过计算机终端和电话来接受乘客的订票请求,并自动处理座位预订。
到了20世纪80年代,航空订票系统进一步发展成为全球化的系统。
此时,全球范围内的航空公司开始使用相互连接的计算机系统,以实现航班信息的共享和联合销售。
这些全球预订系统(GDS)可以通过互联网提供订票服务,并通过电子邮件
和短信向乘客发送相关信息。
进入21世纪,随着互联网的普及和移动设备的兴起,航空订
票系统进入了一个新的阶段。
乘客可以通过电脑、手机和平板电脑等多种终端访问航空公司的网站或移动应用程序,并实时查询航班信息、预订航班、选座等。
同时,新的技术和算法也被应用于航空订票系统,以实现更高效的航班排班和座位分配。
目前,航空订票系统已经成为航空公司和乘客之间不可或缺的
连接工具。
随着人工智能和大数据技术的不断发展,航空订票系统还有望进一步提升预订体验和航班管理效率。
航空订票系统

航空订票系统引言航空订票系统是一种为乘客提供航班查询、航班预订、座位选择、支付等功能的在线平台。
它使乘客可以方便地搜索和比较航班信息,并进行机票预订和支付。
航空订票系统的出现极大地方便了旅客的出行,使航空运输更加高效便捷。
功能特点航班查询航空订票系统通过与航空公司的数据库连接,可以提供全面的航班信息查询功能。
乘客可以根据出发地、目的地、日期等条件进行航班查询,并获得对应的航班列表。
在查询结果中,乘客可以查看航班的起飞时间、到达时间、航班号、航空公司等信息,以便做出合适的选择。
航班预订在航班查询结果中,乘客可以选择心仪的航班,并进行预订。
通过航空订票系统,乘客可以输入乘客信息、联系方式、选择座位等,并生成订单进行确认。
系统会实时检查座位的可用性,以确保乘客选择的座位仍然有效。
座位选择航空订票系统提供座位选择功能,使乘客可以根据自己的喜好选择座位。
系统会显示航班的座位图,乘客可以根据图中示意图选择合适的座位。
座位选择功能可以提高乘客的出行舒适度,满足不同乘客的座位需求。
支付航班预订完成后,乘客需要进行支付才能确保机票的有效性。
航空订票系统与支付接口相连接,可以提供多种支付方式供乘客选择,如信用卡支付、支付宝、微信支付等。
乘客可以根据个人的支付习惯选择合适的支付方式进行支付。
订单管理航空订票系统提供订单管理功能,乘客可以登录系统进行订单查询、修改、取消等操作。
通过订单管理功能,乘客可以实时了解订单状态,及时做出相应的处理。
系统也会提供订单的历史记录,以便乘客查阅。
技术实现前端技术航空订票系统的前端使用HTML、CSS和Javascript等技术实现。
前端页面负责与用户进行交互,展示航班信息、座位选择、支付界面等。
前端界面的设计需要具有良好的用户体验,方便用户操作和浏览。
后端技术航空订票系统的后端使用Java、Python等语言进行开发。
后端负责与前端进行数据交互,连接航空公司的数据库,进行航班查询、座位预订、支付等功能的实现。
航空订票系统分析需求报告

航空订票系统分析需求报告1252355 1.编写目的及背景1.1编写目的1.本文档旨在从技术、经济、操作等方面综合研究分析机票预订系统的需求和各模块需要实现的具体要求,尽可能多地考虑在往后研发进程中可能出现的问题,为往后的概要设计和详细设计打基础2.便于用户、系统分析人员和程序员对需求进行理解和交流,初步判定目标软件可否知足其原来的期望,并可作为系统分析员设计软件的大体起点;3.确立可测试标准,用于软件开发完成后测试产品。
4.预期的读者和阅读建议:项目领导,项目组成员:须将本文档的全数内容理解清楚。
测试人员:主要阅读本文中详细的需求部份。
客户:需明确所有的需求分析是不是符合自己提出的要求。
1.2背景说明:1.软件系统名称:航空机票预订系统。
2.任务提出者:XX航空公司3.用户:XX航空公司,各大订票点4.实现:XX航空公司计算中心1.3概念结构化语言:将加上的控制结构就成了结构化语言。
数据库:依照数据结构来组织、存储和管理数据的仓库。
旅客信息:旅客提出订票要求时输入的信息,包括姓名、性别、工作单位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求等。
取票通知:旅客取票凭证。
账单:旅客取票和交易的凭证。
机票:旅客登机凭证。
2任务概述2.1目标1.|开发用意:为方便旅客订票,提高工作效率,在技术、经济可行的条件下开发目标软件。
2.应用目标:接收预定机票的旅客信息(姓名、性别、工作单位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求等)。
为旅客安排航班。
当旅客交付了预订金后,系统打印出取票通知和帐单给旅客。
旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统查对无误即打印出机票给旅客。
能够及时对于航班售票情况进行统计。
3.作用范围:xx航空公司所有订票点。
4.目标软件作为航空公司内部管理系统的一部份,与其他软件的关系如下:航空公司管理系统订票管航班员工管设备管管理2.2用户的特点1.利用本软件人员要求有必然计算机基础的人员,系统管理员要求有计算机的专业知识,所有人员都要通过本公司培训.2.管理人员也需经一般培训.3.系统管理员,审计员将进行专业培训,以保证他们将熟练管理本系统.4.目标软件的预期利用频度:二十四小时不按期利用。
航空订票系统设计报告

一绪论31.1 课题背景及现状 (3)1.2 开发工具介绍 (3)二需求分析 (2)(一)航空售票系统的数据需求(二)数据字典(三) 主要数据流图三概要设计 (6)四逻辑设计 (7)五详细设计 (7)(一)基本查询语句(二) 程序流图中某些加工实现采用IPO图的方式描述(三)数据库的逻辑结构设计六测试结果 (12)七小结 (17)参考文献 (18)附录(主要源代码) (19)一绪论1.1 课题背景及现状随着旅游业的逐渐的成熟发达,航空客运量大幅度的提高,国内国际的旅游航班的增加,这些都对航空的信息管理系统提出了更高的要求,所以要不断的完善更新航空售票系统,提高航空售票系统的工作效率。
航空公司为方便旅客,需开发一个订票系统。
系统的操作者是有登录密码和用户名的售票员。
系统要实现的基本功能是航班的调整,售票,订票,取票,退票,乘客信息的管理,乘客购票的统计;而系统在以后扩展时还可以实现的功能有:对机组工作人员的管理,预定机票的送票情况管理等。
此系统的开发由我们分模块完成,而我所负责的模块是实现系统的航班调整,售票,订票,退票,取票,航班查询功能。
举一个旅客订票的例子:预定机票的旅客信息,包括姓名、性别、地址、证件号、目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。
旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。
航空售票系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点1.2 开发工具介绍本次课程设计应用的开发工具主要是用java语言和SQL Server 2005 。
航班订票系统可行性分析

航班订票系统可行性分析引言随着航空业的快速发展,航空公司面临着越来越多的订票需求。
传统的人工订票方式不仅效率低下,而且存在很多问题,例如订票过程繁琐、容易出现错误、实时查询困难等。
为了提高订票效率和顾客满意度,航空公司亟需开发一套高效、智能的航班订票系统。
本文将对航班订票系统的可行性进行分析,包括技术可行性、经济可行性和操作可行性。
技术可行性首先,航班订票系统需要具备强大的技术支持。
现代信息技术的发展使得构建一个高效的航班订票系统成为可能。
以下是技术可行性的分析:1. 必要的硬件设备航班订票系统需要运行在稳定的硬件环境中。
航空公司需要投入一定的资金购买服务器、计算机和网络设备等硬件设备,以保证系统的稳定性和安全性。
2. 强大的软件支持航班订票系统需要使用先进的软件工具和技术进行开发。
例如,可以采用面向对象的编程语言如Java或Python来编写系统的后端逻辑,采用先进的前端开发框架如React或Vue.js来设计用户界面。
此外,系统还需要使用数据库管理系统如MySQL或Oracle来存储和管理数据。
3. 数据安全和网络安全航班订票系统需要保证数据的安全性和网络的稳定性。
系统需要采取必要的措施保护用户的个人信息,例如使用SSL协议加密数据传输通道,限制对敏感数据的访问权限等。
同时,系统还需要具备防止黑客攻击和恶意行为的能力。
经济可行性进行经济可行性分析可以帮助航空公司评估开发航班订票系统所需的投资和预期收益。
以下是经济可行性的分析:1. 投资成本开发航班订票系统需要投入人力、物力和财力等资源。
航空公司需要支付软件开发人员的工资,购买硬件设备、服务器租用费用和网络运营费用等。
这些投资成本需要在系统投入使用之前进行预估和筹措。
2. 维护成本航班订票系统的开发只是一个开始,系统还需要进行后续的维护和更新。
维护成本包括人力成本、服务器运维费用和软件升级等。
航空公司需要评估每年的维护成本,以确保航班订票系统的长期可行性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淮阴工学院算法设计技能训练报告学号:姓名:班级:NIIT1151学院:计算机与软件工程学院专业:计算机科学与技术题目:航空订票系统指导教师:2016年12月目录1 课题任务描述 (1)1.1查询航线: (1)1.2承办订票业务: (1)1.3承办退票业务: (1)1.4实现提示: (1)2 系统设计 (1)2.1主界面模块 (1)2.2算法设计 (2)3.详细设计 (3)3.1.录入航班 (3)3.2.主界面选择 (3)3.3查询 (3)3.4.订票 (4)3.5.退票 (4)3.6关键代码 (4)4 测试 (15)结论 (17)致谢 (18)参考文献 (19)1 课题任务描述每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。
1.1查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;1.2承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。
若需要,可登记排队候补;1.3承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
1.4实现提示:两个客户名单可分别由线性表和队列实现。
为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。
由于预约人数无法预计,队列也应以链表作为存储结构。
2 系统设计2.1主界面模块表1文字命令Case功能命令函数查询已有航线1输出所有航班信息ShowAllFlight(FlightNode *F)录入新的航班信息2保存新的航班信息addFlight(FlightNode *F)查询单条航线3查询目的地(单次)ShowOneFlight(FlightNode *F)查询乘客信息4输出所有乘客信息ShowAllCkNode(CkNode *C)查询我的订票信息5查询乘客名字(单次)ShowOneCkNode(CkNode *C)订票6录入乘客信息;选择是否录入候补信息BookTicket(FlightNode*F,CkNode*C,WaitNode *W);退票7删除乘客信息;查询候补信息ReturnTicket(FlightNode *F,CkNode*C,WaitNode *W)查看候补乘客8输出候补乘客信息ShowAllWaitNode(Wait Node *W)退出9退出系统return2.2算法设计本程序定义了三个类,分别为乘客类,候补乘客类,航班类,并定义了若干函数(如:输出所有航班函数,输出所有乘客函数,增加航班函数等),用主函数将他们联系起来,实现了预订航班查询航班的快捷操作。
使用前需要首先由工作人员进行录入航班,然后再使用。
使用中通过用户的选择不同,程序执行不同的操作。
对于此程序的时间空间复杂度,主要是对于调用各种输入输出函数的复杂度分析:时间复杂度:O(n);空间复杂度:O(n)。
刚开始编写时,只定义了两个类,乘客类和航班类,在做候补名单时不方便操作,而且不能单图处理候补乘客,因为其意义和普通乘客不一样,所以也不能将各种信息录入到乘客类中。
解决方法:重新定义一个类,单独用来保存候补乘客信息由于本程序的时间要求只是用星期表示,所以只有1到7的选择,刚开始没有考虑到这个问题,所以输入时可以输入比7大的数,这样就不符合要求,使录入信息无意义。
解决方法:使用判定语句,如果大于7,则叫用户重新输入当每个单独的功能实现后,应该返回哪一步,刚开始编写程序时,是使全部返回主界面,这使得很多操作过于繁琐,比如当用户查找了所有航班,想单独查看某一航班时间,必须首先退回主界面重新选择。
解决方法:通过把功能的图画出来,搞清哪些程序功能相互关联,在该程序和做一个选择语句,让用于自己决定是否返回。
在飞机票订票功能是如何进入候补选择;在退票功能结束如何调用候补名单。
由于刚开始编写时在订票失败后直接要求用户返回或者重新选择航班,没有提供候补的选项。
同样在退票完成时只是返回主界面。
解决方法:订票失败后,让用户选择是否成为候补,也可以选择放弃返回,否则进行录入候补名单操作;退票成功,先查找是否有在候补该航班的乘客,如果用输出他的信息,没有则返回3.详细设计录入航班3.1.3.2.3.3查询3.4.订票3.5.退票3.6关键代码1定义乘客类.class CkNode {public:int Add;char Name[50]; int Fly;CkNode(const int Add=0,char N[50]="",const int F=0);};2,定义航班类class FlightNode{public:char Over[50];int Fnum;int Pnum;int Day;int Max;int Left;FlightNode(char O[50]="",const int F=0,const int P=0,const int D=0,const int M=0,const int L=0);};3,定义候补乘客类class WaitNode{public:char Name[50];int Fly;WaitNode(const int Fly=0,char Name[50]="");};4,增加,录入航班函数void addFlight(FlightNode *F){cout<<"现在开始增加航班\n"<<endl;cout<<"++++++++++++++++++++++++++++++++++++++++++++++"<<endl;int i=0,n=0;top9: cout<<"请输入航班的信息:\n"<<endl;cout<<"+_+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;top8: do{cout<<"请输入航班的终点站名:";cin>>F[n].Over;cout<<"请输入新航班的航班号:";cin>>F[n].Fnum;for(int j=0;j<n;j++)if(F[n].Fnum==F[j].Fnum){cout<<"航班号已存在,请重新输入。
/n----------------------------------------";goto top8;}}while(i);cout<<"请输入新航班的飞机号(飞机编码):";cin>>F[n].Pnum;cout<<"请输入新航班的飞行日(星期几):";top15: cin>>F[n].Day;if(F[n].Day>7){cout<<"该系统只针对一周内航班\n"<<endl;cout<<"请重新输入\n"<<endl;goto top15;}top11: cout<<"请输入新航班的成员定额:";cin>>F[n].Max;cout<<"请输入如新航班的余票量:";cin>>F[n].Left;if(F[n].Max<F[n].Left){cout<<"输入错误\n"<<endl;cout<<"输入的定额比余票数大,你他妈逗我?\n"<<endl;goto top11;}cout<<"录入成功";n++;cout<<"是否继续录入(y/n)";char ch;top10:cin>>ch;if(ch=='y'){goto top9;}else if(ch=='n')return;else{cout<<"输入错误!请重新选择:";goto top10;}}5,输出全部乘客函数void ShowAllCkNode(CkNode *C){cout<<"---------------------------------------------"<<endl;cout<<"姓名"<<"\t"<<"飞机号"<<"\t"<<"座位号"<<endl;int n=50;for(int i=0;i<n;i++){if(!C[i].Fly)break;else{cout<<C[i].Name<<"\t"<<C[i].Fly<<"\t"<<C[i].Add<<endl;}}cout<<"---------------------------------------------"<<endl;cout<<"你可以进行以下操作:1.查看单位乘客;"<<"2.返回上一级.\n"<<"请选择:";int chioce;top7:cin>>chioce;if(chioce==1){ShowOneCkNode(C);}else if(chioce==3){return;}else{cout<<"输入错误!请重新选择:";goto top7;}}6,输出全部航班函数void ShowAllFlight(FlightNode *F){cout<<"---------------------------------------------"<<endl;cout<<"航班号"<<"\t"<<"终点站"<<"\t"<<"飞行日"<<endl;int n=50;for(int i=0;i<n;i++){if(!F[i].Fnum)break;else{cout<<F[i].Fnum <<"\t"<<F[i].Over <<"\t"<<F[i].Day <<endl;}}cout<<"---------------------------------------------"<<endl;cout<<"你可以进行以下操作:1.查看单条航线;"<<"2.录入新的航班信息"<<"3.返回上一级.\n"<<"请选择:";int chioce;top2:cin>>chioce;if(chioce==1){ShowOneFlight(F);}else if(chioce==2)addFlight(F);else if(chioce==3){return;}else{cout<<"输入错误!请重新选择:";goto top2;}}7,输出单个乘客函数void ShowOneCkNode(CkNode *C){char Q[20];int n=50;int choice;cout<<"请输入查询乘客名字:\n";cin>>Q;CkNode temp[50];int m=0;for(int i=0;i<=n;i++){if(strcmp(Q,C[i].Name)==0)temp[m]=C[i];m++;}if(m==0)cout<<"没有您的订票信息"<<endl;else{CkNode temp1=temp[0];cout<<"姓名"<<temp[0].Name<<"飞机号"<<temp[0].Fly<<"座位号"<<temp[0].Add<<endl;}cout<<"请选择所要的操作:1.继续查询2.返回上一级\n"; top12:cin>>choice;if(choice==1){ShowOneCkNode(C);}else if(choice==2){return;}else{cout<<"输入错误!请重新选择:";goto top12;}}8,输出单个航班函数void ShowOneFlight(FlightNode *F){char T[20];int n=50;int choice;cout<<"请输入终点站名称:\n";cin>>T;FlightNode temp[50];int m=0;for(int i=0;i<=n;i++){if(strcmp(T,F[i].Over)==0){temp[m]=F[i];m++;}}if(m==0)cout<<"无此终点站"<<endl;else{FlightNode temp1=temp[0];cout<<"航班号:"<<temp[0].Fnum<<ends<<"飞机号:"<<temp[0]. Pnum<<ends<<"飞行日:"<<temp[0].Day<<ends<<"余票额:"<<temp[0].Left<<endl;for(int j=1;j<m;j++){if(temp[j].Day!=0){cout<<"航班号:"<<temp[j].Fnum<<ends<<"飞机号:"<<temp[j].Pnum<<ends<<"飞行日:"<<temp[j].Day<<ends<<"余票额:"<<temp[j]. Left<<endl;if(temp[j-1].Day>temp[j].Day)temp1=temp[j];}}cout<<"最近一天的航班:\n"<<"航班号:"<<temp1.Fnum<<ends<<"飞机号:"<<temp1.Pnum<<ends<<"飞行日:"<<temp1.Day<<ends<<"余票额:"<<temp1.Left<<endl;}cout<<"请选择所要的操作:1.继续查询2.返回上一级\n";top3:cin>>choice;if(choice==1){ShowOneFlight(F);}else if(choice==2){return;}else{cout<<"输入错误!请重新选择:";goto top3;}}9,订票函数void BookTicket(FlightNode *F,CkNode *C){char O[20];char Na[20];int choice;int temp;cout<<"请输入您想到达的目的地:\n";top6:cin>>O;for(int i=0;i<=50;i++){if(strcmp(O,F[i].Over)==0){cout<<"最近一周有到达该地的航班\n"<<endl;cout<<"++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;temp=i;cout<<"航班号:"<<F[i].Fnum<<ends<<"飞机号:"<<F[i].Pnum<<ends<<"飞行日:"<<F[i].Day<<ends<<"余票额:"<<F[i].Left<<endl;goto top14;}if(i>=50){cout<<"对不起,最近一星期没有到该地航班"<<endl;cout<<"+++++++++++++++++++++++++++++++++++++++++++++"<<endl;goto top6;}}top14:cout<<"实名制购票,请输入您的名字,一人限购一张:\n";cin>>Na;if(F[temp].Left>=1){char choice1;cout<<"尚有余票,您现在预订的是"<<"飞行日(星期几):"<<F[temp].Day<<ends<<"飞机号:"<<F[temp].Pnum<<ends<<"的机票,确定订票?(N/Y)"<<endl;cin>>choice1;switch(choice1){case 'Y':case 'y':F[temp].Left=F[temp].Left-1;for(int i=0;i<=50;i++){if(C[i].Fly==0){C[i].Fly=F[temp].Pnum;C[i].Add=F[temp].Left;cout<<"请再次输入你的名字确认"<<endl;cin>>C[i].Name;cout<<"订票成功!\n";break;}if(i>=50){cout<<"订票人数达到上限,请稍后再试!"<<endl;}}cout<<"您预订的"<<"飞机号:"<<F[temp].Pnum<<ends<<"飞往:"<<F[temp].Over<<ends<<"将于"<<"飞行日(星期几):"<<F[temp].Day<<ends<<"起飞,希望您旅途愉快!"<<endl;break;default:return ;}}if(F[temp].Left<=1){cout<<"抱歉您想要定的航班已满,对此我们深表歉意,订票失败"<<endl;}cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"<<e ndl;cout<<"您可以:1.继续订票 3.返回上一级\n"<<endl;top4:cin>>choice;if(choice==1){BookTicket(F,C);}else if(choice==3){return;}else{cout<<"输入错误!请重新选择:";goto top4;}}10,退票函数void ReturnTicket(FlightNode *F,CkNode *C){char Na[20];int temp;int choice;int n=50;int y;cout<<"请输入你的名字:";top13: cin>>Na;for(int i=0;i<n;i++){if(strcmp(Na,C[i].Name)==0){ temp=i;cout<<"++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;cout<<"尊敬的"<<C[i].Name<<ends<<"已查到您的订票信息,您的飞机号是"<<C[i].Fly<<ends<<"座位号是"<<C[i].Add<<endl;break;}else{cout<<"没有查询到您的订票信息,请核对后继续!"<<endl;cout<<"++++++++++++++++++++++++++++++++++++++++++++++"<<endl;goto top13;}}cout<<"尊敬的"<<C[temp].Name<<"是否确认退票?"<<endl;cout<<"1,确认 2,取消";cin>>y;if(y==1){*C[temp].Name=NULL;C[temp].Add=0;C[temp].Fly=0;F[temp].Left=F[temp].Left+1;cout<<"退票成功"<<endl;}else{cout<<"取消退票"<<endl;goto top13;}cout<<"请选择下一步操作:1.继续退票 2.订票 3.返回上级菜单\n"; top5:cin>>choice;if(choice==1){ReturnTicket(F,C);}else if(choice==2){BookTicket(F,C);}else if(choice==3){return;}else{cout<<"输入错误!请重新选择:";goto top5;}}11,输出所有候补乘客函数void ShowAllWaitNode(WaitNode *W){cout<<"---------------------------------------------"<<endl;cout<<"姓名"<<"\t"<<"候补飞机号"<<"\t"<<endl;int n=50;for(int i=0;i<n;i++){if(!W[i].Fly)break;else{cout<<W[i].Name<<"\t"<<W[i].Fly<<"\t"<<endl;}}cout<<"---------------------------------------------"<<endl;cout<<"你可以进行以下操作:"<<"1.返回上一级.\n"<<"请选择:";int chioce;top17:cin>>chioce;if(chioce==1){return;}else{cout<<"输入错误!请重新选择:";goto top17;}}12,主函数,调用各种函数void main(){FlightNode F[50];CkNode C[50];int n=0;int choice;cout<<"欢迎使用订票系统\n"<<endl;cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<end l;cout<<"请工作人员录入本周航班\n"<<endl;addFlight(F);while(1){cout<<"++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;cout<<" *** 欢迎使用航空客运订票系统!!*** "<<endl;cout<<"++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;cout<<"你可以进行以下的操作:\n"<<"1==>查询已有航线\n"<<"2==>录入新的航线信息\n"<<"3==>查询单条航线\n"<<"4==>查询乘客信息\n"<<"5==>查询我的订票信息\n"<<"6==>订票\n"<<"7==>退票\n"<<"8==>退出.\n"<<"----------------------------------------"<<endl;cout<<"请选择:";top:cin>>choice;switch(choice){case 1 : ShowAllFlight(F);break;case 2 : addFlight(F);break;case 3 : ShowOneFlight(F);break;case 4 : ShowAllCkNode(C);break;case 5: ShowOneCkNode(C);break;case 6: BookTicket(F,C) ;break;case 7: ReturnTicket(F,C) ;break;case 8 : cout<<"退出系统!多谢使用!\n";return;default : cout<<"输入错误,请重新输入:\n";goto top;}}}4 测试首先进入程序界面,由工作人员进行录入航班:可以录入航班情况;航班录入完毕后进入使用界面,根据界面提示可以有不同的选择,分别为:1,查询航线:分为全部查询和单此查询,全部查询可以输出所有航班的信息;单个查询由用户输入终点,查询符合情况的航班2,承办订票业务:根据客户提出的要求查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或者余票数少于订票额,则需重新寻味客户要求,若需要,可登记排队候补;3,承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队等候补,首先询问排在第一的客户,若所有退票额能满足他的要求,则为他办理订票手续否则依次询问其他排队候补的客户。