航空公司订票系统设计
- 格式:doc
- 大小:196.50 KB
- 文档页数:21
一绪论11.1 课题背景及现状 (1)1.2 开发工具介绍 (1)二需求分析 (2)(一)航空售票系统的数据需求(二)数据字典(三) 主要数据流图三概要设计 (6)四逻辑设计 (7)五详细设计 (7)(一)基本查询语句(二) 程序流图中某些加工实现采用IPO图的方式描述(三)数据库的逻辑结构设计六测试结果 (12)七小结 (17)参考文献 (18)附录(主要源代码) (19)一绪论1.1 课题背景及现状随着旅游业的逐渐的成熟发达,航空客运量大幅度的提高,国内国际的旅游航班的增加,这些都对航空的信息管理系统提出了更高的要求,所以要不断的完善更新航空售票系统,提高航空售票系统的工作效率。
航空公司为方便旅客,需开发一个订票系统。
系统的操作者是有登录密码和用户名的售票员。
系统要实现的基本功能是航班的调整,售票,订票,取票,退票,乘客信息的管理,乘客购票的统计;而系统在以后扩展时还可以实现的功能有:对机组工作人员的管理,预定机票的送票情况管理等。
此系统的开发由我们分模块完成,而我所负责的模块是实现系统的航班调整,售票,订票,退票,取票,航班查询功能。
举一个旅客订票的例子:预定机票的旅客信息,包括姓名、性别、地址、证件号、目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。
旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。
航空售票系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点1.2 开发工具介绍本次课程设计应用的开发工具主要是用java语言和SQL Server 2005 。
北京工业大学耿丹学院"五福航空"订票系统的设计与实现班级:计算机科学与技术09级2班学号:090201203姓名:牟森软件设计说明Version 1.0Revision目录1.引言 (3)1.1目的 (3)1.2范围 (3)1.3 定义、缩写词以及简写 (3)2.参考文献 (3)3. 分解说明 (3)3.1 模块分解 (3)4. 依赖关系说明 (4)4.1 模块间的依赖关系 (4)4.2数据依赖关系 (4)5. 接口说明 (4)5.1 模块接口 (4)6. 详细设计 (5)6.1 模块详细设计 (5)6.2 数据详细设计 (7)1.引言1.1目的本文档描述了五福航空公司订票系统的功能要求和非功能要求,文档阅读对象为本软件项目的订票客户和软件开发人员以及软件测试人员。
1.2范围本软件是五福航空公司定制航空订票系统。
本软件可以实现网络订票、柜台订票预约排号及安全保护几个总体功能。
在1.0版本中只实现网络订票,在后续版本中将继续完善软件功能并升级软件总体功能。
网络订票功能属于实时功能,订票成功后数据保存到数据库,再由数据库返回至在线客服平台,以供用户进行实时查阅、退订功能。
1.3定义、缩写词以及简写2.参考文献无3.分解说明3.1模块分解3.1.1 服务器管理员模块服务器管理员模块:售票信息的数据导入、售票报表统计、MAC地址验证、硬件信息验证、用户管理、下载、售后服务、订单提交。
3.1.2 注册用户模块注册用户模块:系统登陆、用户识别、管理、预定、查询、订票信息数据导出。
3.1.3 普通用户模块普通用户模块:软件安装、注册。
3.1.4 短信模块短信模块:把已订票信息发送给用户。
各模块的详细功能如图一所示:图一4.依赖关系说明4.1模块间的依赖关系本软件的服务器管理模块是作为基础模块存在的,服务器管理员模块、注册用户模块和短信模块都基于此模块,服务器管理模块是独立存在模块,注册用户模块依赖于服务器管理模块,短信模块依赖于注册用户模块和服务器模块,且短信模块只有在订票成功后才由服务器发送给指定手机。
飞机订票系统策划书3篇篇一飞机订票系统策划书一、引言二、系统目标1. 提供在线机票预订功能,方便用户随时随地预订机票。
2. 整合机票信息,提供实时的航班查询、预订和票价比较功能。
3. 支持多种支付方式,确保安全、便捷的支付流程。
4. 提供用户管理功能,方便用户查询订单、修改个人信息等。
5. 具备数据分析和报表功能,帮助航空公司进行市场分析和决策。
三、系统功能模块1. 用户界面模块机票搜索和预订:用户可以通过输入出发地、目的地、出发日期等信息搜索机票,并进行预订。
个人中心:用户可以查询订单、修改个人信息、管理常用联系人等。
客服中心:提供在线客服和常见问题解答,方便用户咨询。
2. 后台管理模块航班管理:航空公司可以管理航班信息、舱位设置、票价调整等。
订单管理:管理员可以查询、处理订单,报表。
用户管理:管理员可以管理用户信息,设置用户权限。
数据分析:系统可以分析用户行为、预订趋势等数据,为航空公司提供决策支持。
3. 支付模块支持多种支付方式,如在线支付、银行转账、信用卡支付等。
与第三方支付平台集成,确保支付安全可靠。
提供支付记录查询功能,方便用户查询支付状态。
4. 数据整合模块与航空公司的票务系统进行数据对接,实时获取航班信息和票价。
整合其他数据源,提供更多的机票信息和推荐。
四、技术选型1. 前端技术:采用 HTML、CSS、JavaScript 等技术,构建用户界面。
2. 后端技术:选择适合的编程语言和框架,如 Python、Django 等。
3. 数据库:使用关系型数据库如 MySQL 或 NoSQL 数据库如 MongoDB 存储数据。
4. 支付接口:与第三方支付平台进行集成。
五、项目时间表1. 需求分析与设计:[时间区间 1]2. 系统开发:[时间区间 2]3. 测试与修复:[时间区间 3]4. 上线与维护:[时间区间 4]六、预算1. 人力成本:[具体金额]2. 技术设备采购:[具体金额]3. 软件开发费用:[具体金额]4. 测试与维护费用:[具体金额]5. 其他费用:[具体金额]总预算:[具体金额]七、风险评估与应对措施1. 技术风险:关注技术发展趋势,及时解决技术难题。
《信息系统分析与设计》课程报告题目航空订票系统(详细设计说明书)院系电子工程专业信息工程(系统方向)学生姓名学号指导教师目录一、引言1. 编写目的2.项目背景3.定义4. 参考资料二、任务概述1.目标:完成一个航空订票信息系统的需求分析2.运行环境3.条件与限制三、总体设计1.处理流程2.总体结构与外部模块设计3. 功能分配四、接口设计1.外部接口,硬件接口、软件接口、用户界面2.内部接口五、数据结构设计1.逻辑结构设计2.物理结构设计六.运行设计1.运行模块组合2.运行控制3.运行时间七.出错处理设计1.出错输出信息2.出错处理对策八.安全保密设计九.维护设计摘要:航空订票信息系统开发的目的在于方便客户,其中包括系统总体设计、输入输出设计、代码设计、数据库设计等。
关键字:系统开发项目简介、数据流程图、数据结构图、ER图。
一:引言1.编写目的:航空公司开发航空订票信息系统以为了旅客旅行方便,提高工作效率,提高服务质量,增加经济效益,加快公司发展步伐。
2.项目背景:名称:航空订票信息系统本项目的提出者:开发者:用户:所有有需要的航空旅客实现软件的单位:本项目与其他软件或其他系统的关系:WINDOWS所有的系统3. 定义在我们进行正式软件设计之前,要先了解一些概念:(1)模块化:模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名而且可通过名字来访问,例如,过程、函数、子程序、宏等都可以作为模块;(2)抽象与逐步求精:软件工程过程的每一步都是对软件解法的的抽象层次的一次精化。
逐步求精与抽象是紧密相关的。
(3)模块独立性:模块独立性是指系统软件中每个模块只涉及软件的具体自功能,而和软件系统的其他的模块接口是简单的。
(4)耦合:是对一个软件结构内各个模块之间互连程度的度量。
耦合强弱取决与模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。
4.参考资料:管理信息系统(美) G.B戴维斯哈尔滨工业大学出版社 1985/1物流信息系统赵刚四川大学人民出版社 2002/9物流信息管理尹涛东北财经大学出版社2005/1编程逻辑与结构化程序设计(美)Harold J.Rood 中国水利水电出版社 2004/3信息处理与数据库刘玉梅邱基文人民教育出版社 1988/3数据库技术与应用-Access2000篇郭力平人民邮电出版社2002/8文档对象模型-处理结构化文档(美)马里尼清华大学出版社 2003二、任务概述1.目标:完成一个航空订票信息系统的需求分析2.运行环境:Windowsxp+Access3.条件与限制:查找相关资料、有一定的数据库知识、会画数据流程图、掌握数据字典的相关知识并会灵活运用。
航空订票系统课程设计一、课程目标知识目标:1. 让学生理解航空订票系统的基本概念,掌握其功能模块和工作原理。
2. 使学生掌握数据库查询、数据传递和数据处理的基本方法。
3. 帮助学生了解航空公司的运营策略和机票定价机制。
技能目标:1. 培养学生运用所学知识设计简单的航空订票系统,具备实际操作能力。
2. 培养学生分析问题、解决问题的能力,学会在实际项目中运用数据库技术。
3. 提高学生的团队协作能力,学会在项目中分工合作,共同完成任务。
情感态度价值观目标:1. 激发学生对计算机科学的兴趣,培养其主动学习的热情。
2. 培养学生的责任心,使其认识到严谨、细致的工作态度在项目实施中的重要性。
3. 增强学生的自信心,使其相信通过努力可以掌握复杂的计算机技术。
本课程针对高年级学生,结合航空订票系统课程特点,注重理论与实践相结合,旨在提高学生的实际操作能力和解决问题的能力。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果,并为后续的教学设计和评估提供依据。
二、教学内容1. 航空订票系统概述:介绍航空订票系统的基本概念、发展历程和功能模块,结合课本第二章内容,让学生对航空订票系统有整体的认识。
2. 数据库查询与处理:讲解数据库的基本原理,以课本第四章内容为基础,教授SQL查询语句、数据传递和数据处理方法,为设计航空订票系统奠定基础。
3. 航空公司运营策略与机票定价机制:分析航空公司的运营策略,结合课本第五章内容,介绍机票定价机制,帮助学生了解行业背景。
4. 航空订票系统设计:根据课本第六章内容,详细讲解航空订票系统的设计方法,包括系统架构、模块划分、功能实现等,指导学生进行实际操作。
5. 实践项目:组织学生分组进行航空订票系统设计实践,结合前述章节内容,完成以下任务:a. 设计并实现一个简单的航空订票系统;b. 编写系统需求分析、设计说明书;c. 进行系统测试,确保系统功能的正确性和稳定性。
6. 教学进度安排:共安排10个课时,具体如下:a. 第1-2课时:航空订票系统概述;b. 第3-4课时:数据库查询与处理;c. 第5-6课时:航空公司运营策略与机票定价机制;d. 第7-8课时:航空订票系统设计;e. 第9-10课时:实践项目指导与展示。
UML 建模设计航订票系统卫飞姓名:班1528级:学号:2一、背景1.1 背景概述随着知识经济的到来,人类已经逐步进入信息化社会,信息增长的速度越来越快,人们希望利用先进的管理理论方法手段来得到并处理越来越多的信息,以提高工作效率和管理水平。
由于信息资源对人们生活的重要性,不断提高信息的收集,传输,加以利用等活动,日益成为人们社会生活的重要组成部分。
网上机票预订管理系统的产生和发展正好满足人们的这种需求1.2 主要组成及功能1、新用户注册,新用户可以注册,注册时输入用户名可以查询用户可不可用,可用就可以注册,注册时可以判断用户输入的密码和验证密码是否相同,相同才给以注册,如果满意可以点注册,注册成功后用户可以选择不用在回到登陆界面,可以直接陆到用户主界面,以后就可以用这个用户登录了,如果不满意,点取消,所有信息清空,重新输入。
2、验证登陆名密码,正确进入主菜单,根据登录时所选的登录方式(客户、管理员)的不同分别对用户设定不同的访问权限(如果是输入的客户用户名和密码正确,选择以客户方式登陆则主界面里面的管理员界面不能用,如果输入的是管理员的相应用户密码正确,以管理员的方式登陆则管理员界面可用)不正确则清空登录框,最多可以输入三次,三次不正确系统会自动关闭3. 我的航班界面。
你可以点击你想查询的有关机票的信息的按钮(舱位信息查询,客机信息查询,航线查询,客户类型信息查询)获得相关信息的表,根据表的内容,你可以在下面的下拉框中选择你要定的票信息,点确定后在下面会显示你的机票的相关内容,如果满意可以点击订票,把相关信息添加到机票数据库表中,如果不满意,可以点重置,所有信息清空,再重新选择。
4. 退票功能。
用户可以根据用户信息表中的我的机票信息查询,找出机票号,在输入到机票号查询里,点击查询获得你的机票信息以及价格显示,点击退票则在数据库机票信息表中删除本条信息二、使用Rose 绘制图分别有:用例图、类图、包图、顺序图、协作图、状态图、活动图、组件图、部署图情景:机票预订系统是某航空公司推出的一款网上选票系统。
航空订票系统设计报告一绪论 1 课题背景及现状............................................................... ......1 开发工具介绍................................................................. ........1 二需求分析............................................................... ........................2 航空售票系统的数据需求数据字典(三) 主要数据流图三概要设计............................................................... ........................6 四逻辑设计............................................................... ........................7 五详细设计............................................................... ........................7 基本查询语句(二) 程序流图中某些加工实现采用IPO 图的方式描述数据库的逻辑结构设计六测试结果............................................................... ......................12 七小结............................................................... (17)(三) 主要数据流图如下:(1)功能模块设计4 主要层次结构图:旅客航班查询各项业务管理界面乘机资料人明细管理售票管理票务管理购送票管理定单信息管理退出点击乘客机组人员送票情况订票情况关闭该界面回到登陆界面客户购票统计航航班增加班删除航班修改查询业务订票业务退票业务售票业务取票业务机场航班查询 5 三概要设计航空订票系统E-R图如下:性别证件号电话旅客类型年龄姓名地址旅客 1 1 订票购买票价 1 n 1 型号姓名订票旅客 1 航班飞机证件号机型舱位n 目的地航班座位飞行航班类型舱位航班号起飞时间 1 座位飞机型号订票日期取票日期航班起飞时间航班号剩余票数目的地票价出发地起飞日期到达时间 6 四逻辑设计根据E-R图和相关要求,把ER模型图转换为关系表,进行数据模型转换,系统用到五个基本表:旅客表;购买表;航班表;飞行表;飞机表将E-R图转换成关系模型,关系的主码用横线标识:旅客购买(旅客证件号,航班,票价) 航班(航班,出发地,目的地,起飞时间,抵达时间,航班类型,剩余票数,票价,起飞日期) 飞行(航班,型号,航程,中转站) 飞机(型号,舱位,座位,航班) 五.详细设计基本查询语句订票业务: 每次当有旅客需要订票时,首先需要对机场的航班情况进行查询,当有符合旅客的航班的机票剩余时旅客可以订票,并记录下旅客的相关信息,用到的SQL 语句为:insert into passenger(姓名,证件号,年龄,性别,旅客类型,地址,电话);然后旅客的订票信息存入数据库,并分配相应的航班和取票信息;退票业务:当有旅客退票时,需要根据录入旅客相关的信息将数据库peopleorder表中相应的记录删除,所用SQL语句为:delete from peopleorder where 姓名=’旅客姓名’,证件号=’旅客证件号码’,状态= ‘买票’; 航班增加/删除/修改业务:当航空公司需要对机场航班情况进行调整时,如增加/删除/修改操作,通过以下SQL语句实现:增加:insert into flight values (‘航班号’,’出发地’,’目的地’,’起飞时间’,’抵达时间’,’航班类型’,’剩余票数’,’票价’,’起飞日期’) 删除:delete from flight where 航班号=’航班号码’; 修改:update flight set [任意属性列]=[修改值] where航班号=’航班号码’; 7 二) 程序流图中某些加工实现采用IPO图的方式描述:“收集旅客信息数据算法”IPO表系统:航空售票作者:孙启欢模块:收集数据算日期: 编号:被调用:取调用:数据模块输入:姓名、性输出:格式化之后别的数据处理:格式化后的各种数据= 格式化局部数据元素:注释:本加工仅采集数据,未进行实质性的数据变换8 (“收集航班信息数据算法”IPO表系统:航空售票作者:孙启欢模块:收集数据算日期:编号:被调用:取调用:数据模块输入:航班,出输出:格式化之后发地,目的地,的数据起飞时间,抵达时间,剩余票数,票价,起飞日期,处理:格式化后的各种数据= 格式化局部数据元素:注释:本加工仅采集数据,未进行实质性的数据变换9 “订票/售票/取票/退票相关数据算法”IPO表系统:航空售票作者:孙启欢模块:审核数据算日期:法编号:被调用:审调用:核数据模块输入:旅客的相输出:订单信息,关信息,飞机/航机票信息班的相关信息处理:订单信息=旅客信息+所购买航班信息+取票信息机票信息=旅客购买航班的详细信息局部数据元素:10 数据库的逻辑结构设计旅客购买(旅客证件号,航班,票价) 航班(航班,出发地,目的地,起飞时间,抵达时间,航班类型,剩余票数,票价,起飞日期) 飞行(航班,型号,航程,中转站) 11 飞机(型号,舱位,座位,航班) 七测试结果在航空售票系统的开发过程中,我完成的模块是需要系统实现如下功能:航班的调整,订票/售票,退票,取票,航班查询测试过程中有如下主要代表性功能界面主要功能界面如下:12 订票客户资料界面订单号创立成功13航班退票系统主界面点击退票当订单号不存在时14 点击查询可知道该订单号的详细信息管理主界面15 航班管理系统管理员可以更新数据库八小结数据库课程设计任务渐渐远去,通过这次课程设计积累的信心与斗志,我开始写这篇文章,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹。
机票预订系统系统设计报告1. 引言机票预订系统是现代航空业务中不可或缺的重要组成部分。
随着航空旅行的普及,人们对于机票预订系统的需求越来越多。
本报告旨在设计一个高效、可靠并且用户友好的机票预订系统。
2. 系统设计目标- 提供用户友好的界面:系统应该提供简洁明了、易于使用的界面,以方便用户进行机票查询、选择和预订操作。
- 快速响应及准确性:系统应能够在用户提交查询或预订请求后迅速返回结果,并保持数据的准确性。
- 灵活多样的功能:系统应提供灵活多样的功能,比如机票查询、价格比较、航班时间表、航空公司评价等。
- 高性能和扩展性:系统应具备高性能的特点,能够支持大量用户的并发访问;同时应能够方便地进行扩展,以适应不断增长的用户需求。
3. 系统设计架构3.1 前端设计机票预订系统的前端界面应该具备友好的用户体验,界面设计应简洁明了,符合用户习惯。
常见的前端技术如HTML、CSS和JavaScript等可以用来实现前端界面设计。
3.2 后端设计后端设计主要包括数据库设计和业务逻辑设计。
3.2.1 数据库设计数据库设计是机票预订系统的核心部分。
数据库应该包含必要的表以保存航班信息、用户信息、订单信息等。
可以使用关系型数据库如MySQL 或非关系型数据库如MongoDB等来存储数据。
3.2.2 业务逻辑设计业务逻辑设计应包括用户注册、登录、机票查询、价格比较、预订订单等基本功能的设计。
在设计过程中应考虑到用户需求的多样性和系统的可扩展性。
3.3 系统架构设计系统可以采用三层架构设计,将前端、后端和数据库相分离。
前端负责用户界面交互,后端处理业务逻辑,数据库存储数据。
采用这样的架构有利于系统的扩展和维护。
4. 系统功能实现在机票预订系统中应该实现以下功能:- 用户注册和登录功能:用户可以注册一个账号并进行登录以使用系统的各项功能。
- 机票查询功能:用户可以根据出发地、目的地和日期等条件进行机票查询。
- 价格比较功能:系统应能够自动比较不同航空公司的机票价格,并给出最低价格。
详细设计报告一、引言1.1 编写目的:本阶段在系统的需求分析的基础上,对航空订票系统做详细设计。
主要解决了实现该系统程序模块具体设计问题。
包括确定算法,数据结构,模块接口的使用,数据库的动态操作以及界面设计等。
在以下的概要设计报告中将对在本阶段中对系统所做的所有详细设计进行详细的说明。
在下一阶段的编码过程中,程序设计员可参考此详细设计报告,在详细设计对机票预定系统所做的算法设计,数据结构以及数据库动态操作的基础上,对系统进行编码。
1.2 项目背景:开发软件名称:航空订票系统。
用户:航空公司运行环境:宿舍电脑。
开发平台:MyEclipse 7.0 PostgreSql数据库。
系统架构:该系统采用java+jsp框架1.3 定义:查询:对数据库的操作的一种,用于搜索数据信息。
插入:对数据库的操作的一种,用于将数据存入数据库中。
更新:对数据库的操作的一种,用于更改数据库中的数据信息。
PostgreSql: 系统服务器所使用的数据库管理系统〔DBMS〕。
SQL: 一种用于访问查询数据库的语言事务流:数据进入模块后可能有多种路径进行处理。
主键:数据库表中的关键域。
值互不相同。
外部主键:数据库表中与其他表主键关联的域。
1.4 参考资料:需求分析说明书软件开发小组软件工程齐治昌谭庆平宁洪等高等教育实用软件工程郑人杰等,清华大学。
二、总体设计2.1 需求概述航空订票系统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机票预定系统,实现航空公司的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。
具体功能为用户把预定机票的旅客信息〔##、性别、##〔护照〕、乘坐时间、出行始发地和目的地等〕输入到系统中,系统为旅客安排航班。
当旅客交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统核对无误即打印出机票给旅客。
二、系统的设计(一).数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库设计的目标是建立一个合理、高效的数据模型。
合理的含义是,数据模型要能够满足用户需求,既能够合理地组织用户所需要的数据,又能够支持用户对数据处理的要求。
高效的含义是,数据模型的效益高、数据的完整性好,使于维护,没有数据冲突,能够满足较高的范式要求,同时数据模型还应该便于在DBMS中实现。
设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。
数据库设计一般包括如下几个步骤:数据库需求分析。
数据库概念结构设计。
数据库逻辑结构设计。
1.数据库需求分析针对一般航空公司管理信息系统的需求,通过对航空公司管理业务过程和数据流程分析,可以确定岀系统中一些实体对象及以及它们之间的关系,这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。
航空电子票务综合管理系统中的业务实体包括航班信息(flightTick),定票客户信息(clientlnfo),每期航空座位信息(seat),这些实体模型的含义如下所述。
(1)flightTick:代表一个航班信息实体:包括航班号(fight)、航空公司(airfirm)、起飞地(start)、到达地(destination)、起飞时间(leaveTime)、到达时间(arriveTime)、儿童票价(childFare),成人票价(adultFare)、座位(seat)等。
(2)clientlnfo:代表一个定票客户信息实体:包括身份证号(id)、用户名(name),出发地(start)、到达地(edu)、出发时间(startime)、返回时间(returntime)、航班号(flight)、联系电话(telephone)、返回航班号(returnflight)、航空公司(airfirm)、机票类型(style)等。
(3)seat:代表一个每期航班座位信息实体:包括航班标识(seatnumber),每期航班已售座位数(bookedSeats)。
机票预定系统的系统分析与设计(一)项目名称机票预定系统的系统分析与设计(二)项目概述航空公司为给旅客乘机提供方便,需要开发一个机票预定系统。
各个旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求等)输入到系统中,系统为旅客安排航班。
当旅客交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统核对无误即打印出机票给旅客。
此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。
(三)项目用例分析机票预定系统业务参与表●旅客:为取得机票而付费的人●旅行社:其安全状况已得到确认的机构,因此,可以把旅客信息输入到系统●Sys:处理旅客信息、预约、安排航班,进行定时查询统计的已有系统●航空公司:旅客进行预约机票的航空公司编写项目术语表业务用例表旅行社预定机票:其安全状况已得到确认的机构,因此,可以把旅客信息输入到系统1.系统查询统计:系统为掌握各个航班的乘载情况定时进行查询统计2.系统安排航班:系统根据旅客需求安排航班3.系统确认交付预约金:旅客为安排的航班满意后交付预约金4.旅客获知航班:根据统计结果可以安排到航班后,旅行社通知旅客5.系统获得预定:系统确认获得预约金后,打印出取票通知和帐单给旅客6.航空公司合法性验证:航空公司对旅客身份证、护照、取票通知和帐单进行合法性验证7.旅客交款:合法性验证通过后,旅客交款8.系统打印机票:核对信息无误后系统打印出机票给旅客9.旅客延误处理:得到合法性验证后,确定旅客延误,取消预约10.系统航班取消处理:旅客按时取预约机票时航班取消,系统取消预约并退还旅客预约金11.旅客更改航班的处理:旅客确认更改航班时,系统取消预约12.旅客重新预约:旅客更改航班后重新预约机票(四)用例细化描述B1: 系统查询统计:1.系统确认某一旅客的预约后,对可供预约的座位和已经预约的座位均进行更新和存档2.旅客因为延机而没有取得机票时,对可供乘载的座位号进行更新同时取消预约3.由于天气等一些非认为因素航班取消后,系统即时得到更新,并告知旅客取得预约金4.旅客更改航班后,系统对可供乘载的座位进行更新,取消旅客预约并重新进行旅客航班的预约B2: 系统安排航班:1.系统收到旅行社提交的旅客有关信息后,为旅客安排合适的座位2.当旅客要求的航班座位已经被预约后,系统为旅客提供可供参考的座位建议B3:系统确认交付预约金:1.当旅客对系统安排的航班满意后,并通过航空公司的合法性验证后,旅客缴纳预约金B4:旅客获知航班:1.当旅客向旅行社说明自己的旅行目的地、始发地后,为旅行社提供自己的有效证件,由旅行社向系统输入要求,通过搜索引擎获得航班信息2.旅客延机时即时取得最新航班信息3.系统航班取消后,旅客获得可供乘载的航班信息4.旅客更改航班后取得可供乘载的航班信息B5:系统获得预定:1.系统确认旅客已经缴纳预约金后,输出已预订的信息B6:航空公司合法性验证:1.系统受到旅客对座位满意的回复后,航空公司要求旅客提供身份证、护照2.航空公司检查扫描旅客的身份证、护照,确定是真实的后,通知旅客缴纳预约金3.当扫描发现旅客的证件是假的时,取消预约,不能通过合法性验证B7:旅客交款1.旅客通过航空公司的合法性验证后,向航空公司提交预约金B8:系统打印机票:1.旅客出示自己的取票通知和帐单2.旅客在飞机起飞前一天凭取票通知和帐单缴款3.系统确认旅客缴款无误后,打印机票给旅客B9: 旅客延误处理:1.旅客之前已经取得预约,但是在飞机起飞前没有到航空公司领取机票2.旅客之前已经取得预约,但是在飞机起飞前一天到航空公司缴款取票3.航空公司取消旅客预约B10:系统航班取消处理:1.旅客按时取得机票后,航班取消,航空公司预约并退还旅客机票钱2.旅客仅取得预约但航班取消后,航空公司取消预约退还旅客预约金B11:旅客更改航班的处理:1.旅客确认更改航班后取消原有预约2.旅客取消预约向航空公司所要预约金3.旅客重新在系统中搜索查看适合自己要求的航班位置B12:旅客重新预约:1.旅客由于延误取消预约后,重新预约2.由于航班取消,旅客重新预约3.旅客更改航班后进行重新预约系统需求参与者列表旅客:使用Web浏览器访问Sys的人旅行社:在航空公司提供了旅行社名称、地址和邮箱;每个旅行社都有自己的帐号和密码助手:航空公司的一个员工,他与旅客联系,告诉他们预约的紧张情况用例列表:1.浏览索引:旅客浏览航班情况的索引2.查看结果:给旅客显示检索到的航班班次子集3.查看航班情况的细节:给旅客显示检索到的航班细节4.搜索:旅客通过制定旅行时间、始发地、目的地、航班要求等,搜索航班班次5.登录:旅行社使用帐号和密码登陆sys6.查看旅行社信息:旅行社查看sys存储的旅行社名称、地址、邮箱等细节7.进行预约:旅客在查看航班的细节时,预约一个航位8.查看销售情况:旅行社查看当前的已销售航位汇总情况9.修改密码:旅行社修改用于登陆的密码10.查看预约情况:旅行社查看当前还没有结束的预约汇总情况11.取消预约:旅客取消预约12.注销:旅行社注销自己的帐号和密码13.查看航班信息:旅客从列表中检索航班情况的子集用例细节:1 浏览索引前提条件:无1.旅客选择一个索引标题2.旅客选择查看选中索引标题的航班班次后置条件:无2 查看结果前提条件:无1.Sys给旅客显示每个索引出来的航班班次,包括始发地、目的地后置条件:无3 查看航班情况的细节前提条件:无1.旅客选择一个满意的航班班次2.旅客请求选中的航班细节3.sys显示选中的航班细节后置条件:sys显示选中的航班细节4 搜索前提条件:无1.旅客选择旅行时间2.旅客选择始发地3.旅客选择目的地4.旅客选择航班要求5.旅客开始搜索后置条件:无5 登录前提条件:旅行社拥有自己的帐号和密码1.旅行社输入帐号2.旅行社输入密码3.sys通过验证登录4.旅行社选择登录后置条件:旅行社登录异常路径:如果帐号和密码组合是不正确的,sys会通知旅行社,这两个中的一个不正确6 查看旅行社信息前提条件:无1.旅行社选择查看旅行社信息2.给旅行社显示信息(旅行社名称、地址、邮箱等)后置条件:已给旅行社显示了旅行社信息7 进行预约前提条件:旅行社已经登录sys1.旅客的信息已经得到系统的有效验证2.系统要求旅客确认预约3.旅客缴纳预约金4.系统打印出取票通知和帐单后置条件:完成所有已请求的预约异常路径:如果sys限制了预约条件,就不能进行预约8 查看销售情况前提条件:无1.旅客选择查看他们预约的信息2.sys给旅客显示他们当前预约的航班的机票销售情况后置条件:无9 修改密码前置条件:无1.旅行社选择修改密码2.旅行社输入旧密码3.旅行社输入新密码4.旅行社再次输入新密码5.旅行社启动修改6.sys请求确认7.如果旅行社确认,就修改密码后置条件:密码已修改异常路径:1.如果旧密码或新密码不匹配,就告知旅行社2.如果新密码没有遵循密码规则,就告知旅行社10查看预约情况前置条件:无1.旅行社选择查看预约信息2.sys显示还没有结束的预约汇总信息后置条件:已给旅行社显示了已有的预约汇总信息11取消预约前置条件:无1.旅行社选择了一个预约2.旅行社取消了预约3.sys请求确认4.旅行社确认要取消预约5.sys把预约标记为已经结束,更新sys异常路径:如果旅行社没有确认取消预约,sys就不采取任何行动12 注销前置条件:无1.旅行社选择注销2.sys结束当前会话后置条件:旅行社已注销13查看航班信息前置条件:无后置条件:向旅行社显示检索到的航班班次汇总信息(五)项目各种图形示例旅客预约航班的活动图旅行社输...旅行社输...通过有效性验证进入系统未通过验证只能浏览页面调用注销确定注销不注销旅行社注销的活动图助手用例图旅客进行机票查询预定的状态图类的方法和属性: 旅客获得身份证号码获得护照...1: 出示2: ...3: 可用4: 返回5: 返回6: 通过7: 通过8: 通过验证9: 允许10:允许顺序图1:操作列表:Plane:setStart( ) 设置旅行的始发地。
航空公司票务管理系统的设计与优化一、引言航空公司作为现代交通工具的重要组成部分,其运行效率和服务质量的提升对于航空业的发展至关重要。
而票务管理系统作为航空公司运营中的重要一环,对于提高出票效率、提供更好的客户服务以及优化运营成本起着关键作用。
本文将对航空公司票务管理系统进行设计和优化的探讨,并提出一些建议。
二、设计要求1. 自动生成机票:票务管理系统应具备自动生成机票的功能,根据旅客的需求和机票的可用性,系统能够自动为旅客生成符合需求的机票。
这样旅客就能够省去手动选择航班、座位等繁琐步骤,提高出票效率。
2. 航班查询功能:系统应提供强大且高效的航班查询功能,旅客可以根据起飞日期、出发地和目的地等条件快速获取到符合需求的航班列表。
查询结果应包括航班号、舱位、价格、起飞时间和到达时间等相关信息。
3. 数据分析功能:系统应具备数据分析功能,能够实时统计和分析客户出行偏好、航班利用率、座位预订情况等数据信息。
这样航空公司可以根据数据分析结果进行精细化营销和资源优化,提高运营效率和盈利能力。
4. 客户服务支持:系统应该提供完善的客户服务支持,包括在线预订、退改签规则查询、退改签服务申请等功能。
此外,系统应支持旅客通过手机APP、网页等多种渠道访问,方便用户随时随地进行机票预订和查询。
5. 支付系统整合:系统应与第三方支付系统进行整合,以实现在线支付功能。
旅客可以通过支付宝、微信支付等方式进行机票支付,提高用户便捷性和支付安全性。
三、系统设计与优化1. 用户界面优化:航空公司票务管理系统的用户界面应简洁、友好,方便用户快速进行操作和查询。
界面设计应符合人机工程学原则,注重布局和交互的合理性,减少用户的操作难度和流程复杂度。
2. 数据库优化:由于航空公司票务管理系统涉及大量的航班、机票和订单等数据,系统的数据库设计需要考虑到数据的高效管理和查询性能。
采用合适的数据库结构,优化查询语句和索引,对数据进行分表分区等措施,可以提高系统的数据处理速度和查询效率。
项目概要设计说明书组长名:工作量系数【1.0,0.0】组员名1:工作量系数【1.0,0.0】组员名2:工作量系数【1.0,0.0】完成日期:年月日目录1 引言 (3)1.1编写目的: (3)1.2项目背景: (3)1.3定义: (3)缩写: (3)1.4参考资料: (4)2 任务概述 (4)2.1目标 (4)2.2需求概述 (4)2.3条件与限制 (5)3 总体设计 (6)3.1总体结构 (6)3.2功能分配: (6)4 接口设计 (8)4.1外部接口: (8)4.2内部接口: (8)5 数据结构设计 (8)6 逻辑结构设计 (9)7 物理结构设计 (10)8 数据结构与程序的关系 (10)9 出错处理设计 (11)9.1出错输出信息 (11)9.2出错处理对策: (11)10 安全保密设计 (11)11 维护设计 (11)1 引言1.1 编写目的:对软件项目系统进行总体的设计,确定项目开发的方向,对项目的实现以及功能的划分进行基本的概要设计,确定项目的总体实施方向,以及功能模块的确定,子系统的划分,项目总体设计报告面向项目组所有成员。
1.2 项目背景:1.系统名称:飞机订票系统2.任务提出者:XXX航空公司3.开发者:XXX计算机科学与技术学院4.用户:旅客,航空公司5.本系统是一个独立的订票信息1.3 定义:1.SQL SERVER:系统服务器所使用的数据库关系系统(DBMS)。
2.SQL:一种用于访问查询数据库的语言3.事务流:数据进入模块后可能有多种路径进行处理。
4.主键:数据库表中的关键域。
值互不相同。
5.外部主键:数据库表中与其他表主键关联的域。
6.ROLLBACK:数据库的错误恢复机制。
缩写:1.系统:若未特别指出,统指本航空订票系统。
2.SQL:Structured Query Language(结构化查询语言)。
3.UML:统一建模语言、是一套用来设计软件蓝图的标准建模语言,是一种从软件分析、设计到编写程序规范的标准化建模语言。
数据结构与算法设计课程设计【设计题目】航空公司订票系统【问题描述】编写一个航空公司订票大厅的一个订票系统,可以在系统中录入并修改各个航班的具体情况,帮助乘客准确的查询各航班的最新信息(包括航班号、航班的起始时间和地点、票价)和各项业务的及时办理(包括订票、退票等)。
该系统用可以用C++的类编写。
【软件功能】1.输入航班信息并保存到磁盘2.浏览航班信息3.修改航班信息并保存到磁盘4.查找航班5.删除航班信息6.订票7.退票【算法思想】1先定义一个乘客基本信息的类包含乘客的、证件号、订票数量及所乘的航班号(注:每个航班有固定的人数限制,若满额则提示其他可供选择的航班。
2建立一个功能类,包括对航班信息和乘客订票信息的录入及修改的函数,其中订票信息采用单链表的顺序存储方式存储。
另外还包括对信息的查询和修改的功能函数,乘客退票的函数。
并将最终的改动结果通过i/O流写入磁盘文件保存。
3编写主函数,对编写的航班系统进行全面测试,对用户界面采用人性化的菜单方式。
【类的设计】定义一个航班的类class plane{friend class customer;//友元类public:void input(); //插入航班信息void print(); //打印航班信息void save(); //保存航班信息void read(); //读取航班信息void search(); //查找航班信息void Delete(); //删除航班信息void book(); //订票void back(); //退票void xiugai(); //修改航班信息private:int num;//航班号char start_place[20];//起点站char arrive_place[20];//终点站char time[10];//起降时间int count;//机票数量}];定义一个顾客信息的类class customer{friend class plane;//友元类protected:I nt id;//号char name[10];//int customer_num;//订票数量public:void read1();//读取数据void save1();//保存数据};【存储结构设计】采用顺序存储结构,利用动态申请空间实现信息的存储。
【模块划分及调用关系】定义了两个类class plane和class customer,分别实现顾客及航班的信息操作。
在两个类的后面分别定义了类中的各个函数。
另外在主函数中分别调用函数,实现各个功能。
【模块流程图】1.主函数main()2.void search()//查询函数3.void book()//订票函数4.void back()//退票函数不存在该用户存在【界面设计】采用人性化的菜单提示语,让用户很容易的操作;【用户手册】用户只需要在vc环境下就可以操作,具体步骤可见菜单提示就可以顺利操作。
另外,再加入、删除、修改航班信息时必须以管理员的身份进去,所以必须要有密码,在这里初始密码事:xinxi0701.您的使用!!1、程序上机调试报告【语法错误及其排除】两个类的公有函数中,在循环嵌套调用时总是受阻,不能执行。
所以我把两个类都定义为相互的有元类。
这样问题就解决了。
【算法错误及其排除】在订票与退票函数中,要核对用户信息如、ID等,开始是自己定义一个函数进行字符间的比较,在调用时总是出现语法错误,最后想到可以用一个函数库中的函数strcmp(char,char).把问题简单化,而且语法错误也解决了。
2、程序测试结果输入您的姓名、ID、要退票数提示:退票成功进入退票系统【测试数据】说明:测试数据都是输入数据,见输出结果。
【输出结果】【程序性能评价】该程序可以查询航班的信息、修改信息,查询顾客的信息,订票、退票等,界面采用人性化的提示,可以让用户很容易的操作。
另外在修改信息、添加航班信息时必须要以管理员的身份进入即必须要有密码才能进入。
保证了系统的安全。
【性能改进方向】该系统在操作中要是不按照菜单的有关提示操作,而进行非法操作,可能会导致系统的死循环。
在这点该系统还有待改进。
【收获及体会】事实总比想象的难,刚开始编写这个程序的时候思路比较清晰。
可是编写的时候遇到了很多难题,譬如将顾客的信息及航班的信息保存到文件中,不知道用那种方式更简便,最后仔细思考,阅读课本资料,选择了用流的形式输出到文件中,感觉用起来特别方便简洁。
完成了程序的编写后又对该程序进行了大量的修改,调试,使程序更加简明,并添加了不少提示用户操作的语句,使用户使用该系统时更加方便。
对自己的这个程序还是比较满意的,可以说已经超出了自己当初的设想。
从编写这个程序的过程中不但发现了许多自己没学明白的地方,而且锻炼了自己的耐心。
刚调试时有很多错误,我逐个仔细的修改、排除,最终成功的完成了调试。
进过这次实习,我更加深刻的体会到,作任何事情要仔细,要静下心来认真思考,只要努力了,必定会有回报。
3、源程序代码#include<iostream.h>#include<string.h>#include<stdio.h>#include<iomanip.h>#include<stdlib.h>#define N 1000 //宏定义class customer;//申明顾客信息类//---------定义航班信息类----------------class plane{friend class customer;//有元类public:void insert(); //加入航班信息void print(); //输出航班信息void save(); //保存航班信息void read(); //读取航班信息void search(); //查找航班信息void Delete(); //删除航班信息void book(); //订票void back(); //退票void xiugai(); //修改航班信息private:int num;//航班号char start[10];//起点站char arrive[10];//终点站char time[20];//起降时间int plane_num;//机票数量}s[N];//------定义顾客信息类---------------------------class customer{friend class plane;//有元类protected:int id;//号char name[20];//int pshu;//用户订票数量public:void read1();//读取数据void save1();//保存数据}yh[N];int i,j;//全局变量int m=0,y=0;//宏定义一个输出#define PRINT s[i].num<<setw(13)<<s[i].start<<setw(13)<<s[i].arrive<<setw(13)<<s[i].time<<setw(13)<<s[i].pl ane_num<<endl //定义输出格式//-------------主函数------------void main(){plane abc;//定义一个航班类的对象int j;do{cout<<" 管理员密码:xinxi0701 "<<endl;cout<<" "<<endl;cout<<" -----------欢迎进入航空订票菜单------------"<<endl; //主界面cout<<"|============================================|"<<endl;cout<<" | 1.新增航班|"<<endl;cout<<" | 2.浏览航班信息|"<<endl;cout<<" | 3.修改航班信息|"<<endl;cout<<" | 4.查找航班信息|"<<endl;cout<<" | 5.删除航班|"<<endl;cout<<" | 6.订票|"<<endl;cout<<" | 7.退票|"<<endl;cout<<" | 0.退出|"<<endl;cout<<" |=====================================|"<<endl;cout<<"请选择(0~7):";cin>>j;switch(j){case 1:abc. insert();//调用插入函数break;case 2:abc.print();//调用打印函数break;case 3:abc.xiugai();//调用修改函数break;case 4:abc.search();//调用查找函数break;case 5:abc.Delete(); //调用删除函数break;case 6:abc.book();//调用订票函数break;case 7:abc.back();//调用退票函数break;case 0:;break;}}while(j!=0); //判断结束cout<<"使用,再见!\n";}//--------------主函数结束---------------//定义类中各个函数void plane::insert()//打印函数{char f[]="xinxi701"; //设置密码char y;cout<<"请输入密码:";cin>>f; //读取密码if(strcmp(f,"xinxi0701")==0){cout<<"--------------------------------------------------------------------------\n";for(i=0;i<N;i++){cout<<"航班号出发地点到达地点起降时间满载人数"<<endl;cout<<"|-------------------------------------------------|"<<endl;cin>>s[i].num>>s[i].start>>s[i].arrive>>s[i].time>>s[i].plane_num;cout<<"|-------------------------------------------------|"<<endl;m++;cout<<"第"<<m<<"个信息已经输入,是否继续(y/n)?";cin>>y;cout<<endl;if(y=='y')continue;else{save();//将结构体信息存盘cout<<"刚刚存盘的信息是:"<<endl;print();//输出输入的航班信息break;}}}elsecout<<"密码错误,您不能使用此项功能,强制推出!!!"<<endl;}void plane::save()//保存函数{FILE *fp,*fp1;//定义文件指针if((fp=fopen("chen.txt","wb"))==NULL)//打开文件并判断是否出错{cout<<"创建文件失败!"<<endl;//出错提示getchar();return;}if((fp1=fopen("hao.txt","wb"))==NULL)//打开文件并判断是否出错{cout<<"创建文件失败!"<<endl;//出错提示getchar();return;}for(i=0;i<m;i++)if(fwrite(&s[i],sizeof(class plane),1,fp)==0)//向文件写入数据,并判断是否出错cout<<"向文件输入数据失败!"<<endl;fprintf(fp1,"%d",m);fclose(fp);//关闭文件fclose(fp1);//关闭文件}//-------------------------------------------void plane::read()//从文件读取信息{FILE *fp,*fp1;//定义文件指针if((fp=fopen("chen.txt","rb"))==NULL)//打开文件,并判断是否出错{cout<<"出现错误,请检查文件是否存在!!";//出错提示getchar();}if((fp1=fopen("hao.txt","rb"))==NULL)//打开文件并判断是否出错{cout<<"创建文件失败!\n\n";//出错提示getchar();return;}fscanf(fp1,"%d",&m);fclose(fp1);//关闭文件for(i=0;i<m;i++){fread(&s[i],sizeof(plane),1,fp);//从文件中读取信息}fclose(fp);//关闭文件}//-----------------------------------void plane::print()//输出函数{char w[10];read();//调用读取文件函数cout<<"航班号起始站终点站时间机票数\n";for(i=0;i<m;i++){cout<<PRINT;//打印信息}cout<<"******************************************** "<<endl;cout<<"///请按任意键返回主菜单///"<<endl;cin>>w;//控制返回主菜单}//-----------------------------------------void plane::search()//查询函数{char name1[10];char name2[12];char ii[10];int n,no;do{cout<<" 欢迎进入查询菜单"<<endl;//查询方式菜单cout<<" "<<endl;cout<<" 1.按航班号查找\n\n"" 2.按终点站查找\n\n"" 3.按航线查找\n\n"" 0.返回"<<endl;cout<<"请选择(0~3):";cin>>n;if(n==0)break;switch(n){case 1:cout<<"请输入航班号:";cin>>no;//航班号break;case 2:cout<<"请输入终点站名称:";cin>>name2;//读取终点站break;case 3:cout<<"请输入起始站名称:\n";cin>>name1;//读取起始站cout<<"请输入终点站名称:\n";cin>>name2;//终点站break;}read();//调用读取函数for(i=0;i<m;i++){if(strcmp(s[i].arrive,name1)==0||strcmp(s[i].arrive,name2)==0)//按终点站起始站判断输出条件{cout<<"\n查找航班信息成功!"<<endl;cout<<"航班号起始站终点站时间机票数"<<endl;cout<<PRINT;//打印信息break;}if(s[i].num==no)//按航班号判断输出条件{cout<<"\n查找航班信息成功!\n";cout<<"航班号起始站终点站时间机票数"<<endl;cout<<PRINT;//打印信息break;}}no=0;//将航班号赋值为0if(i>m)cout<<"该航班不存在,是否继续查找(y/n)?";cin>>ii;}while(strcmp(ii,"y")==0);//判断结束}//------------------------------------void plane::Delete()//删除函数{char name1[10];char name2[12];char ii[12];char f[]="xinxi701";//设置密码int no,n;cout<<"请输入密码:";cin>>f;//读取密码if(strcmp(f,"xinxi0701")==0) //判断密码是否正确{do{cout<<" 欢迎进入删除菜单"<<endl;//删除方式菜单cout<<" "<<endl;cout<<" *1.按航班号删除\n\n"" *2.按航线删除\n\n"" *0.返回"<<endl;cout<<"请选择(0~2)";cin>>n;//读取删除方式if(n==0)break; //跳出循环switch(n){case 1:cout<<"请输入航班号:";cin>>no;//读取航班号read();//调用读取函数break;//跳出循环case 2:cout<<"请输入起始站名称:";cin>>name1;//读取起始站cout<<"请输入终点站名称:";cin>>name2;//读取终点站read();//调用读取函数break;//跳出循环}for(i=0;i<m;i++){if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].arrive,name2)==0)//判断输入信息是否存在{s[i]=s[m-1];m--;}}cout<<"没有该信息,是否继续删除(y/n):";cin>>ii; //读取是否继续信息save(); //调用读取函数if(!strcmp(ii,"y")) //判断是否继续删除cout<<"请按任意键返回删除菜单!!";break;}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); //判断结束}elsecout<<"密码错误,不能使用此项功能,强行退出!!\n\n";}//------------------------------------------------void plane::book()//订票函数{customer abc;int n;char a[12];do{cout<<"各位用户你好!请你先选择您要乘的航班"<<endl;search();abc.save1();abc.read1();y=y+1;cout<<" 欢迎进入订票系统!!!!"<<endl;cout<<"请输入你的ID号:";cin>>yh[y].id;cout<<"请输入你的:";cin>>yh[y].name ;cout<<"请输入您要订的机票数:";fai: cin>>n;//读取所订机票数if(n<=0)goto fai;yh[y].pshu=n;s[i].plane_num=s[i].plane_num-n;abc.save1();save();//调用保存函数cout<<"订票成功!\n\n";break;cout<<"是否继续(y/n)?";//判断是否继续订票cin>>a;}while(!strcmp(a,"y"));//判断结束}//-------------------------------------void plane::back()//退票函数{customer abc;int n;char a[12];do{cout<<"各位用户你好!请你先选择您要退的航班"<<endl;search();cout<<"请输入你的ID:"<<endl;cin>>abc.id;cout<<"请输入你的:"<<endl;cin>> ;cout<<"请输入您要退的机票数目:"<<endl;cin>>n;//输入所退票数if(n<0) //判断票数是否有效{cout<<"请输入有效的机票数!"<<endl;cin>>n;}abc.read1();for(i=0;i<y;i++){if((yh[i].id=abc.id)==0&&strcmp(yh[i].name,)==0)//按终点站起始站判断输出条件{cout<<"该顾客存在!"<<endl;cout<<"号订票数"<<endl;cout<<yh[i].id<<setw(8)<<yh[i].name<<setw(8)<<yh[i].pshu<<endl;//打印信息break;}}for(;i<y;i++){yh[i].id=yh[i+1].id;strcpy(yh[i].name,yh[i+1].name);yh[i].pshu=yh[i+1].pshu;}abc.save1();s[i].plane_num=s[i].plane_num+n;save(); //调用保存cout<<"退票成功!\n\n";cout<<"是否继续(y/n)?";//判断是否继续退票cin>>a;}while(!strcmp(a,"y"));//判断并跳出循环getchar();}//---------------------------------void plane::xiugai() //修改信息函数{class xiu //定义一个类{public:int no;char name1[12];char name2[12];char time[12];int plane_num;}x[1];char j[10];char f[]="xinxi701";//设置密码int n;cout<<"请输入密码:";cin>>f;//读取密码if(strcmp(f,"xinxi0701")==0)//判断是否出错{read();//调用读取do{cout<< " 欢迎进入修改系统"<<endl;cout<< " *1,按航班号修改"<<endl;cout<< " *2,按航线修改"<<endl;cout<<"请选择(1~2)";cin>>n;//读取修改方式switch(n){case 1:cout<<"请输入航班号:";cin>>x[0].no;//读取航班号break;case 2:cout<<"请输入起始站:";cin>>x[0].name1;//读取起始站cout<<"请输入终点站:";cin>>x[0].name2;//读取终点站break;}for(i=0;i<m;i++){if(strcmp(s[i].arrive,x[0].name1)==0&&strcmp(s[i].arrive,x[0].name2)==0)//判断输出条件{cout<<"航班号起始站终点站时间机票数\n";cout<<PRINT;break;}if(s[i].num==x[0].no)//判断输出条件{cout<<"航班号起始站终点站时间机票数\n";cout<<PRINT;break;}}x[0].no=0; //将结构体中的号为零cout<<"请输入新航班号起始站终点站时间机票数"<<endl;cin>>x[0].no>>x[0].name1>>x[0].name2>>x[0].time>>x[0].plane_num;s[i].num=x[0].no;//替换航班号strcpy(s[i].start,x[0].name1);//替换其始站strcpy(s[i].arrive,x[0].name2);//替换终点站strcpy(s[i].time,x[0].time);//替换时间s[i].plane_num=x[0].plane_num;//替换机票数save();//调用保存cout<<"是否继续(y/n)?";cin>>j;}while(strcmp(j,"y")==0); //判断结束}elsecout<<"密码错误,不能使用此项功能,强行退出!!\n\n";}//--------------------------------------------void customer::read1(){FILE *ff,*ff1;//定义文件指针if((ff=fopen("xinx.txt","rb"))==NULL)//打开文件,并判断是否出错{cout<<"出现错误,请检查文件是否存在.";//打印出错提示getchar();}if((ff1=fopen("shu.txt","rb"))==NULL)//打开文件并判断是否出错{cout<<"创建文件失败!"<<endl;//打印出错提示getchar();return;}fscanf(ff1,"%d",&y);fclose(ff1);//关闭文件for(j=0;j<y;j++){fread(&yh[j],sizeof(customer),1,ff);//从文件中读取信息}fclose(ff);//关闭文件}//----------------------------------------void customer::save1()//保存函数{FILE *ff,*ff1;//定义文件指针if((ff=fopen("xinx.txt","wb"))==NULL)//打开文件并判断是否出错{cout<<"创建文件失败!"<<endl;//出错提示getchar();return;}if((ff1=fopen("shu.txt","wb"))==NULL)//打开文件并判断是否出错{cout<<"创建文件失败!"<<endl;//打印出错提示getchar();return;}for(j=0;j<m;j++)if(fwrite(&yh[j],sizeof(class customer),1,ff)==0)//向文件写入数据,并判断是否出错cout<<"向文件输入数据失败!\n\n";fprintf(ff1,"%d",y);fclose(ff);//关闭文件fclose(ff1);//关闭文件}。