机票预定系统课程设计说明书
- 格式:doc
- 大小:182.00 KB
- 文档页数:22
*******************实践教学*******************兰州理工大学计算机与通信学院2011秋季学期面向对象课程设计题目:机票预定系统专业班级:10级计算机(1)班姓名:张凯学号:10240114指导教师:年福忠成绩:目录摘要 (1)前言 (2)基本算法的实现(正文) (3)1.采用类c语言定义相关的数据类型 (3)2.各模块的伪码算法 (3)3.函数的调用关系图 (5)4.调试分析 (6)5.测试结果 (7)6.源程序(带注释) (10)总结 (17)参考文献 (18)致谢 (19)附件Ⅰ部分源程序代码 (20)摘要该设计要求对飞机航班信息进行排序和查找。
可按航班的班号、起点站、到达站、起飞时间以及到达时间等信息时行查询。
对于本设计,主要是通过线性表的逻辑结构、存储结构,线性表及队列上基本运算实现的。
可以让我们学会如何把学到的知识用于解决实际问题。
关键词:航班信息,客户信息,类C语言前言飞机在现今的社会中已是越来越重要了,人们在旅游、工作、学习等生活中对飞机几乎是不可缺少了。
而由乘坐飞机所引起的问题也深入到了计算机领域,飞机订票系统就是解决这种问题的一种途径。
如人们常常在订票前要对问很多信息(飞机的起落时间,机票的价格,乘坐的人数以及是否有票等等)。
这个系统主要是由线性表的链式存储结构以及队列的存储结构来存储航班信息与客户信息的。
它的主要功能:1、是录入航班信息,其调用函数为—insert_airline;2、查询航线(航班号,飞机号,日期,航班容量,余票数),其调用函数为:search_air;3、订票(根据客户提供的情况,办理订票手续),其调用函数为:book_air;4、承办退票业务(根据客户提供的情况,办理退票手续),其调用函数为:del_cus;5、删除已有航班信息,其调用函数为:del_airline .设计这样的一个系统可以很快的查出人们所需要的信息,能省去很多的步骤,而且还非常的准确。
1 引言............................................................................................................................. -2 -1.1 编写目的 ............................................................................................................ - 2 -1 。
2 背景.................................................................................................................. - 2 -1.3 定义 .................................................................................................................... - 2 -1.4 参考资料 ............................................................................................................ - 2 -2 总体设计 (3)2 。
1 需求规定 (3)2.2 运行环境 (3)2.3 基本设计概念和处理流程 ................................................................................... - 3 -2 。
4 结构 (5)2 。
5 功能需求与程序的关系 (6)2.6 人工处理过程 (7)2 。
航班预定系统课程设计一、课程目标知识目标:1. 了解航班预定系统的基本概念、功能模块及其在旅游业中的作用;2. 掌握航班预定系统中涉及的数据结构、算法和编程技巧;3. 学会运用所学知识分析、设计和实现一个简单的航班预定系统。
技能目标:1. 培养学生运用编程语言(如Python、Java等)实现航班预定系统各功能模块的能力;2. 培养学生运用软件工程方法进行系统分析、设计和测试的能力;3. 提高学生团队协作、沟通表达和解决问题的能力。
情感态度价值观目标:1. 激发学生对计算机科学和航空业的兴趣,培养其探究精神;2. 培养学生关注社会热点问题,认识到科技对生活的改变;3. 增强学生的社会责任感和职业道德意识,使其明白诚信、公正、敬业的重要性。
课程性质:本课程为信息技术课程,旨在通过实际项目设计,让学生掌握编程技能和软件工程方法,提高其解决实际问题的能力。
学生特点:本课程面向初中年级学生,学生对计算机编程有一定的基础,对实际项目设计充满好奇心。
教学要求:教师应注重理论与实践相结合,引导学生主动参与课程设计,培养其创新意识和实践能力。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 航班预定系统概述- 了解航班预定系统的基本概念和发展历程;- 掌握航班预定系统的功能模块及其相互关系。
2. 数据结构与算法- 学习航班预定系统中涉及的数据结构(如列表、栈、队列等);- 掌握航班预定系统中常用的算法(如排序、查找等)。
3. 编程语言与开发环境- 学习使用Python、Java等编程语言进行航班预定系统的开发;- 熟悉开发环境(如Eclipse、PyCharm等)的使用。
4. 软件工程方法- 学习软件需求分析、系统设计、编码、测试等阶段的方法;- 掌握UML图、流程图等工具的使用。
5. 航班预定系统功能模块设计与实现- 设计并实现用户注册、登录、查询航班、预订航班、取消预订等功能;- 学习数据库的连接与操作,存储用户信息和航班信息。
目录摘要 .......................................................................... 错误!未定义书签。
第1章问题描述........................................................ 错误!未定义书签。
第2章概要设计........................................................ 错误!未定义书签。
2.1系统设计思想.................................................... 错误!未定义书签。
2.2系统设计与分析 (4)2.3 系统类层次及关系图 (5)第3章详细设计 (6)第4章测试与维护 (7)第5章软件使用说明书 (16)总结 (19)参考文献 (20)致谢 (21)摘要本课设是以飞机订票系统为实例,运用Visual c++ 6.0进行程序设计,开发机票预订系统。
本设计主要包括航班信息模块、用户基本资料模块。
根据这些功能,设计出系统的功能模块,每一个功能模块都需要针对不同的函数完成不同的操作,分别是录入信息模块, 查询信息模块,显示所有航班和订票信息模块,订票和退票模块;设计利用Visual c++ 6.0的基本特点,尽量提高了编程效率和可靠性。
关键词:机票预订系统,航班信息,订票信息。
第1章问题描述该设计要求以机票预订管理业务为背景,设计、开发一套“机票预订系统”软件。
实现航班信息和订票信息的录入,航班信息和订票信息的查询。
通过该题目的设计,培养面向对象程序设计的思想,要求达到熟练掌握C++(或Java)语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
同时强调好的程序设计风格,提高解决实际问题的能力。
四、概要设计说明书1.引言 (2)1.1 编写目的 (2)1.2 项目背景 (3)1.3 定义 (3)1.3.1 专门术语 (3)1.3.2 缩写 (3)1.4 参考资料 (4)2.任务概述 (4)2.1运行环境 (4)2.2需求概述 (4)3.总体设计 (5)3.1 处理流程 (5)3.1.1 客户机程序流程 (5)3.1.2 服务器程序流程 (6)数据库的输入输出。
(6)3.2 总体结构和模块外部设计 (7)3.3 功能分配 (7)4.接口设计 (7)4.1 外部接口 (7)4.1.1 用户界面 (7)4.1.2 软件接口 (8)4.1.3 硬件接口 (8)4.2 内部接口 (8)5.数据结构设计 (8)5.1 数据库数据结构设计 (8)5.2 物理数据结构设计 (10)5.3 数据结构与程序的关系 (11)6.运行设计 (12)6.1 运行模块的组合 (12)6.2 运行控制 (12)6.3 运行时间 (12)7.出错处理设计 (12)7.1 出错输出信息 (12)7.2 出错处理对策 (13)8.安全保密设计 (13)9.维护设计 (13)1.引言1.1编写目的在本机票预定系统项目的前一阶段,也就是需求分析阶段中,已经将系统用户对本系统的需求做了详细的阐述,这些用户需求已经在上一阶段中对航空公司、各旅行社及机场的实地调研中获得,并在需求规格说明书中得到详尽得叙述及阐明。
本阶段已在系统的需求分析的基础上,对机票预定系统做概要设计。
主要解决了实现该系统需求的程序模块设计问题。
包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。
在以下的概要设计报告中将对在本阶段中对系统所做的所有概要设计进行详细的说明。
在下一阶段的详细设计中,程序设计员可参考此概要设计报告,在概要设计对机票预定系统所做的模块结构设计的基础上,对系统进行详细设计。
在以后的软件测试以及软件维护阶段也可参考此说明书,以便于了解在概要设计过程中所完成的各模块设计结构,或在修改时找出在本阶段设计的不足或错误。
五、详细设计说明书1.引言 (2)1.1编写目的 (2)1.2项目背景 (2)1.3定义 (2)1.4参考资料 (2)2.总体设计 (3)2.1需求概述 (3)2.2软件结构 (3)3.程序描述 (3)3.1功能 (4)3.2性能 (4)3.3输入,输出项目 (5)3.4程序逻辑 (6)3.4.1、登录 (6)3.4.2、查询系统 (7)3.4.3、订票系统 (7)3.4.4、修改系统 (8)3.4.5、退票系统 (8)3.5接口 (8)3.5.1、用户接口 (8)3.5.2、外部接口 (9)3.5.3、内部接口 (9)3.6存储分配 (9)3.7限制条件 (9)3.8测试要点 (9)1.引言1.1编写目的在本机票预定系统项目的前一阶段,也就是概要设计阶段中,已经将系统用户对本系统的子模块功能做了详细的阐述,这些模块功能具体设计将在本报告中详尽得以叙述及阐明。
本阶段已在系统的概要设计的基础上,对机票预定系统做详细设计。
主要解决了实现该系统程序模块具体设计问题。
包括确定算法,数据结构,模块接口的使用,数据库的动态操作以及界面设计等。
在以下的概要设计报告中将对在本阶段中对系统所做的所有详细设计进行详细的说明。
在下一阶段的编码过程中,程序设计员可参考此详细设计报告,在详细设计对机票预定系统所做的算法设计,数据结构以及数据库动态操作的基础上,对系统进行编码。
在以后的软件测试以及软件维护阶段也可参考此说明书,以便于了解在详细设计过程中所完成的各模块算法设计,或在修改时找出在本阶段设计的不足或错误。
1.2项目背景开发软件名称:机票订票系统项目开发者:兰州理工大学软件工程机票订票系统开发小组:用户单位:旅客、航空公司1.3定义数据字典:关于数据的信息的集合,也即对数据流图中包含的元素的定义的集合。
1.4参考资料1.《软件工程导论》清华大学出版社张海藩编著2.《实用软件工程》清华大学出版社郑人杰等编著3.数据库系统概论(第三版)》高等教育出版社萨师煊王珊等编著4.《概要设计说明书》5.《需求规格说明书》2.总体设计2.1需求概述某航空公司为方便旅客,需开发一个机票预定系统。
目录6.1引言 (3)6.1.1编写目的 (3)6.1.2背景 (3)6.1.3定义 (4)6.1.4参考资料 (4)6.2 程序系统的结构 (5)6.3 登陆设计说明 (5)6.3.1 程序描述 (5)6.3.2 输人项 (6)6.3.3 输出项 (6)6.3.4 算法 (6)6.3.5 流程逻辑 (7)6.3.6 测试计划 (7)6.4 航班管理设计说明 (7)6.4.1 程序描述 (7)6.4.2 输人项 (7)6.4.3 输出项 (8)6.4.4 算法 (8)6.4.5 流程逻辑 (9)6.4.6 测试计划 (10)6.5 用户管理设计说明 (10)6.5.1 程序描述 (10)6.5.3 输出项 (10)6.5.4 算法 (11)6.5.5 流程逻辑 (12)6.5.6 测试计划 (13)6.6 管理员设计说明 (13)6.6.1 程序描述 (13)6.6.2 输人项 (14)6.6.3 输出项 (14)6.6.4 算法 (14)6.6.5 流程逻辑 (15)6.6.6 测试计划 (15)6.7 查询机票设计说明 (16)6.7.1 程序描述 (16)6.7.2 输人项 (16)6.7.3 输出项 (16)6.7.4 算法 (17)6.7.5 流程逻辑 (18)6.7.6 测试计划 (18)6.8 取票设计说明 (18)6.8.1 程序描述 (18)6.8.2 输人项 (19)6.8.3 输出项 (19)6.8.4 算法 (19)6.8.5 流程逻辑 (20)6.8.6 测试计划 (20)6.9 旅客管理设计说明 (20)6.9.1 程序描述 (20)6.9.2 输人项 (21)6.9.3 输出项 (21)6.9.4 算法 (21)6.9.5 流程逻辑 (22)6.9.6 测试计划 (22)6.10 旅行社设计说明 (22)6.1引言随着社会的发展,计算机已经被广泛应用到各个行业,为各个行业的发展都带来了很大的帮助。
机票订购系统.数据库设计说明书机票订购系统数据库设计说明书1.引言1.1 目的1.2 范围1.3 预期读者1.4 术语定义2.数据库概述2.1 数据库系统概述2.2 数据库模型选择2.3 数据库管理系统选择3.实体-关系模型设计3.1 实体识别3.2 属性定义3.3 关系建模3.4 实体-关系图4.数据库表设计4.1 用户表设计4.1.1 用户ID 4.1.2 用户名 4.1.3 密码4.1.4 个人信息 4.1.54.2 航班表设计4.2.1 航班ID 4.2.2 起飞城市 4.2.3 到达城市 4.2.4 航班时间 4.2.54.3 订单表设计4.3.1 订单ID 4.3.2 用户ID 4.3.3 航班ID4.3.4 订单状态 4.3.54.45.数据库关系定义5.1 主键约束5.2 外键约束5.3 唯一约束5.4 默认约束5.56.数据库安全性设计6.1 数据库登录认证 6.2 用户权限管理 6.3 数据备份与恢复6.47.性能和优化设计7.1 查询性能优化 7.2 索引设计7.3 数据库分区设计7.48.数据库测试与维护8.1 测试计划8.2 测试用例8.3 定期维护任务8.49.附件9.1 数据库模型文件9.2 数据库脚本10.法律名词及注释- 数据库:指存储有组织的数据的集合,可以被多个用户共享和访问的一种系统- 实体:指在数据库中表示现实世界中具体或抽象的对象,可以与其他实体发生关系- 关系: 指实体之间的联系,可以是一对多、多对多等关系- 主键约束: 用于确保关系表中的每条记录都具有唯一标识,并且不能为NULL的字段- 外键约束: 用于确保关系表中的外键与另一个表中的主键或唯一键之间的一致性- 唯一约束: 确保某个字段或字段组合的取值在整个表中都是唯一的- 默认约束: 为某个字段指定一个默认值,当该字段的值不被显式指定时,将自动使用默认值。
五、详细设计说明书1.引言 (1)1.1编写目的 (1)1.2项目背景 (2)1.3定义 (2)1.4参考资料 (2)2.总体设计 (2)2.1需求概述 (2)2.2软件结构 (3)3.程序描述 (3)3.1功能 (4)3.2性能 (4)3.3输入,输出项目 (4)3.4程序逻辑 (6)3.4.1、登录 (6)3.4.2、查询系统 (7)3.4.3、订票系统 (7)3.4.4、修改系统 (8)3.4.5、退票系统 (8)3.5接口 (8)3.5.1、用户接口 (8)3.5.2、外部接口 (9)3.5.3、内部接口 (9)3.6存储分配 (9)3.7限制条件 (9)3.8测试要点 (9)1.引言1.1编写目的在本机票预定系统项目的前一阶段,也就是概要设计阶段中,已经将系统用户对本系统的子模块功能做了详细的阐述,这些模块功能具体设计将在本报告中详尽得以叙述及阐明。
本阶段已在系统的概要设计的基础上,对机票预定系统做详细设计。
主要解决了实现该系统程序模块具体设计问题。
包括确定算法,数据结构,模块接口的使用,数据库的动态操作以及界面设计等。
在以下的概要设计报告中将对在本阶段中对系统所做的所有详细设计进行详细的说明。
在下一阶段的编码过程中,程序设计员可参考此详细设计报告,在详细设计对机票预定系统所做的算法设计,数据结构以及数据库动态操作的基础上,对系统进行编码。
在以后的软件测试以及软件维护阶段也可参考此说明书,以便于了解在详细设计过程中所完成的各模块算法设计,或在修改时找出在本阶段设计的不足或错误。
1.2项目背景开发软件名称:机票订票系统项目开发者:兰州理工大学软件工程机票订票系统开发小组:用户单位:旅客、航空公司1.3定义数据字典:关于数据的信息的集合,也即对数据流图中包含的元素的定义的集合。
1.4参考资料1.《软件工程导论》清华大学出版社张海藩编著2.《实用软件工程》清华大学出版社郑人杰等编著3.数据库系统概论(第三版)》高等教育出版社萨师煊王珊等编著4.《概要设计说明书》5.《需求规格说明书》2.总体设计2.1需求概述某航空公司为方便旅客,需开发一个机票预定系统。
目录1.课程设计目的 (1)2.课程设计题目描述和要求 (1)2.1.课题描述 (1)2.2 要求 (2)3.设计环境 (2)4.可行性研究 (3)4.1技术可行性 (3)4.2可行性方案 (3)4.3开发风险 (3)5.需求分析 (4)5.1系统的数据流图 (4)5.2机票预订系统的业务流程图 (5)5.3 机票预订系统数据描述 (6)6.概要设计 (8)6.1 系统功能图 (8)6.2 航班信息管理 (9)6.3取票处理模块 (9)6.4异常处理模块 (9)6.5接口设计 (10)7.数据库设计 (10)7.1数据库平台概述 (10)7.2数据库概念设计 (10)7.3 数据表结构 (11)7.4 数据库连实现 (12)8.详细设计 (14)8.1编码 (14)8.2系统实现 (14)9测试与维护 (17)9.1白盒测试 (17)9.2单元测试 (17)9.3综合测试 (20)9.4维护 (21)10.故障分析及解决 (21)10.1故障分析 (21)10.2解决办法 (22)10.3安全保密设计 (22)10.4维护设计 (22)11.总结 (22)12.课程设计结束语 (24)参考书目 (25)1.课程设计目的《软件工程》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完《软件工程》课程后进行的一次全面的综合练习,涉及的深度广些并更加接近实用。
通过课程设计,使我们综合使用所学过的软件工程知识,掌握软件工程的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,通过一个实例,运用软件开发中各个环节,加深对所学知识的理解与掌握,增强利用自己所学知识解决实际问题的能力,为后续各门计算机课程的学习打下坚实基础。
具体而言可以实现以下目的:1. 通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,比如,软件项目的完整设计与开发过程、结构化技术、快速原型法和面向对象方法等。
广西工学院c++面向对象课程设计说明书设计题目:航空客运订票系统系别计算机系专业班级学生姓名学号指导教师日期 2005-12-25完成飞机订票系统设计.设计目的:(1) 要求学生达到熟练掌握C++语言的基本知识和技能; (2) 基本掌握面向对象程序设计的基本思路和方法;(3) 能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
问题描述:航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。
本课程设计一个航空客运订票系统,用标准的面向对象c++语言使上述业务可以借助计算机在vc++平台上操作实现 基本要求:a) 要求利用面向对象的方法以及算法思想来完成系统的设计; b) 要求在设计的过程中,建立清晰的功能结构图; c) 在系统中要求使用文件存贮数据;d) 在系统的设计中,要设计完备的程序流程图。
关键字:Customer ,AirInfo ,飞机信息 包括乘客的基本信息,班机剩余的机票等 主要功能描述:i. 每条航线所涉及的信息有:终点名、航班号、飞机号、飞行时间、订票数余票量、已订票的客户名单:包括姓名、订票量、以及等候替补的客户名单(包括姓名、所需票量); ii.系统能实现的操作和功能如下:(1) 输入航班信息 :主要有 航班号,航班起点站,和 终点站,起飞的时间,飞行总时间,余票数和订票数。
(2) 查询航班:根据旅客提出的1航班号,2终点站,3航线名查找输出下列信息:(航班号、起点站、终点站,飞行时间,余票数;如果没有你查找的信息或查找完毕,输出询问信息是否继续查找用Y 和N 回答。
)(3) 订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出信息;若已满员或余票少于订票额,则重新询问客户要求。
若需要,可登记排队候补;(4) 退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他候补的客户。
(5) 修改航班信息 :对各航班信息进行修改,如航班号,航班起点站,和 终点站,起飞的时间,飞行的时间,余票数和订票数。
(6) f 删除航班信息 (7) g 航班信息保存 (8) h 退出订票系统模块设计的思想:i.程序程序建立所需的.txt 文件。
运行程序时,若找不到初始化所需文件,程序将视所有数据为空,即所有班机的机票都未被预定。
例如,首次运行该程序,不采取任何操作或加入— — 装 订 线— —若干信息后可从wait.txt文件导出文件已存有的信息。
ii.在查询模块中可根据程序给出的功能进行查询,然后输入要查询的信息,在输出界面上显示已订票的客户和正在排队等待的订票客户的所有信息,按任意键返回主界面。
iii.订票功能模块中,输入要订票的航班信息,输出界面显示已订票的客户或正在排队等待的订票客户信息,如已有等待订票客户,则显示暂时不能满足新的订票客户的需求,询问是否进入等待队列,是输入y和n确定,是的话输入客户的ID信息和所需的航班信息。
iv.退票的模块:输入要退票的航班信息,显示航班信息,已订票的客户和正在排队等待订票的客户信息,对两类客户(已订票的客户和正在排队等待订票的客户)都进行询问是哪类客户需要退票服务?选择确定然后输入要退票的客户ID,程序输出显示客户信息,并接着输出显示进行退票业务修改后的航班信息。
v.修改功能模块可对航班信息和客户的所有信息进行修改。
vi. 及时存储,程序种只要内容进行了改动,就及时的保存入文件,从而加大了程序的安全性,减小了对各种不安全因素可能引起的损失。
主要类的设计描述:class Customer //////////////////////////////////////////////客户类{public:string m_strID; //客户ID号string m_strName; //客户姓名int m_nWant; //客户要订的票数};class AirInfo //////////////////////////////////////////航班信息类{string m_strNum; //航班号string m_strStart; //航班起点站string m_strEnd; //航班终点站string m_strTime; //航班起飞时间日期string m_strFlyTime; //飞行时间int m_nCount; //航班票数int m_nLeftCount; //剩余票数public:vector<Customer> m_wPerson;//等待订票的顾客队列,其中m_wPerson.size()即为排队的客户数 vector<Customer> m_haveBook;//已订票客户AirInfo();void SetNum(string &n); //设计航班号void SetStart(string &start); //设计航班起飞点void SetEnd(string &end); //设计航班终点地void SetTime(string &time); //设计航班起飞时间void SetCount(int count); //设计航班票数void SetLeftCount(int left); //设计航班剩余票数void SetFlyTime(string &time); //设计航班飞行总时间void SetWait(Customer &p); //设计航班的等候订票队列,每次进一个人void SetHavingBookCustomer(Customer &p);//设计已订票的客户string GetFlyTime(); //获取航班飞行总时间string GetTime(); //获取航班起飞时间日期int GetWaitCount(); //获取等侯订票队列人数int GetLeftCount(); //航班剩余票数string GetStart(); //获取该航班起飞地string GetEnd(); //获取该航班终点地string GetNum(); //获取该航班号int GetCount(); //获取该航班总票数void PrintInfo(); //打印该航班的信息~AirInfo(){}}功能实现流程图:数据测试进入主界面:查询界面:订票界面:退票界面:分析总结:通过对C++面向对象此次课题的课程设计,加强了我对C++知识的掌握,特别是对面向对象的重载性、继承性、多态性有了比较熟练的掌握以及对模板应用进一步加强,给本人积累了丰富的编程经验和大大提高了我的动手能力,最后通过不少的数据测试运行,结果表明:各项数据在界面的传递正常,能达到预期效果。
通过这一课题的研究,使我受益非浅优点:本系统的特点是条理清晰,而且界面友善,大方,简单易用,美观。
类与类的关系明了,每个类都有头文件与实现文件分开。
缺点:界面是控制台的界面。
根据要求我觉得这是本程序的一个小缺陷。
致谢:感谢李老师和王老师给传输给我们的知识及你们的耐心指导。
同时也感谢身边同学给我提供各种帮助,特别是编程能力很强的那些同学给我的帮助,都是他们在我做这个课程设计过程中遇到问题时都教会我解决的方法。
参考文献:<C++编程思想> Bruce Eckel 刘宗田等机械工业出版社<C++程序设计教程> 钱能清华大学出版社附录:程序关键源代码:void AirInfo::SetHavingBookCustomer(Customer &p)// /记录已订票的客户int AirInfo::GetLeftCount()int AirInfo::GetWaitCount()string AirInfo::GetTime()string AirInfo::GetFlyTime()void AirInfo::SetWait(Customer &p)//每次进入一个等侯订票的客户,让客户排在队列后面void AirInfo::SetFlyTime(string &time)void AirInfo::SetLeftCount(int left)AirInfo::AirInfo(){//初始化为空m_strNum=""; //航班号m_strStart=""; //航班起点站m_strEnd=""; //航班终点站m_strTime=""; //航班起飞时间m_strFlyTime=""; //飞行时间m_nCount=0; //航班票数m_nLeftCount=0; //剩余票数}int AirInfo::GetCount()string AirInfo::GetNum()string AirInfo::GetEnd()string AirInfo::GetStart()void AirInfo::SetCount(int count)void AirInfo::SetTime(string &time)void AirInfo::SetEnd(string &end)void AirInfo::SetStart(string &start)void AirInfo::SetNum(string &n)void AirInfo::PrintInfo()//打印本航班信息{cout<<endl;cout<<"\t************************航班信息********************"<<endl;cout<<"\t航班号:"<<m_strNum<<"\t"<<"起飞站:"<<m_strStart<<"\t终点站:"<<m_strEnd<<endl;cout<<"\t起飞时间:"<<m_strTime<<"\t飞行总时间:"<<m_strFlyTime<<endl;cout<<"\t航班总票数:"<<m_nCount<<"\t剩余票数"<<m_nLeftCount<<endl;if(m_haveBook.size()!=0){cout<<"\t该航班有"<<m_haveBook.size()<<"个客户已订票,其信息如下:"<<endl;cout<<"\t\t";for(int i=0;i<m_haveBook.size();i++){cout<<"客户ID号:"<<m_haveBook[i].m_strID<<" "<<"客户姓名:"<<m_haveBook[i].m_strName<<" "<<"订票数量:"<<m_haveBook[i].m_nWant;cout<<endl<<"\t\t";}cout<<endl;}cout<<"\t\t**********"<<endl;if(m_wPerson.size()!=0){cout<<"\t该航班有"<<m_wPerson.size()<<"个客户等待订票,其信息如下:"<<endl;cout<<"\t\t";for(int i=0;i<m_wPerson.size();i++){cout<<"客户ID号:"<<m_wPerson[i].m_strID<<" "<<"客户姓名:"<<m_wPerson[i].m_strName<<" "<<"订票数量:"<<m_wPerson[i].m_nWant;cout<<endl<<"\t\t";}cout<<endl;}cout<<"\t*****************************************************"<<endl; }void LoadData(vector<AirInfo*> *vec_Air)//从文件导入数据{AirInfo* pA; //航班信息指针fstream dateFile;dateFile.open("AirInfo.txt",ios::in);//打开航班信息数据文件string tem; //临时变量int wait=0; //等待订票的客户数int date=0;int havedBook=0; //已订票和客户数while(dateFile>>tem) //从文件里导入数据{//处理一条航班记录{//动态创建pA=new AirInfo();//在内存申请一块空间pA->SetNum(tem); //设计航班编号//正在对一条记录处理,不能跳到另外一条记录}///////////////////////////////对数字处理{dateFile>>tem;date=atoi(tem.c_str()); //把字符串转换成整形intpA->SetCount(date); //设计航班票数dateFile>>tem;date=atoi(tem.c_str());pA->SetLeftCount(date); //设计航班剩余票数//////对已订票的客户处理dateFile>>tem;havedBook=atoi(tem.c_str());for(int j=0;j<havedBook;j++){Customer havedPerson;dateFile>>tem;havedPerson.m_strID=tem; //客户IDdateFile>>tem;havedPerson.m_strName=tem;//客户名字dateFile>>tem;havedPerson.m_nWant=atoi(tem.c_str());//客户要订票的数目pA->SetHavingBookCustomer(havedPerson);}////////////////////////////////////////////////////////////////////////////对等候客户的数据导入dateFile>>tem;wait=atoi(tem.c_str()); //本航班有wait个客户等候排队订票for(int i=0;i<wait;i++) //有wait个客户等待订票,每个客户订票数不同{Customer person;dateFile>>tem;person.m_strID=tem; //客户IDdateFile>>tem;person.m_strName=tem;//客户名字dateFile>>tem;person.m_nWant=atoi(tem.c_str());//客户要订票的数目pA->SetWait(person);}}vec_Air->push_back(pA);//把本航班的整条信息记录放入模板里(用作航班信息暂存器)}dateFile.close(); //关闭文件}void FindAirInfo(vector<AirInfo*> vec_Air)// ////////////////////////////查询航班信息void BookAirInfo(vector<AirInfo*> *vec_Air)// ////////////////////////////订票{vector<AirInfo*>::iterator v_Iter;//当作指针用system("cls");//清屏cout<<endl;string num;//航班号cout<<"\t请输入要订票的航班号:";cin>>num;for(v_Iter=vec_Air->begin();v_Iter!=vec_Air->end();v_Iter++){if((*v_Iter)->GetNum()==num)//找到相应的航班号{(*v_Iter)->PrintInfo();//输出航班信息break;}}if(v_Iter==vec_Air->end())//如果找到记录最后还没有找到此航班的记录{cout<<"\t对不起,暂时没有此航班号!";cin.get();cin.get();return ;}if((*v_Iter)->m_wPerson.size()!=0)//是否有客户在等候订票{for(int i=0;i<(*v_Iter)->m_wPerson.size();i++){//如果第一个客户所订票数小于此航班所剩余的票数,则询问此客户是否要订票if((*v_Iter)->m_wPerson[0].m_nWant<(*v_Iter)->GetLeftCount()){cout<<"\t请先核对并满足排队等候本航班的客户!"<<endl;//计算剩余票数int left=(*v_Iter)->GetLeftCount()-(*v_Iter)->m_wPerson[0].m_nWant;char meet;//满足要求cout<<"\t可以满足等候本航班的第一个客户的订票数,是否要订票?(y/n):";cin>>meet;if(meet=='y')//满足此客户的订票需求{vector<Customer>::iterator Iter_person; //声明一个客户类型的指针Iter_person=(*v_Iter)->m_wPerson.begin(); //指向等候队列首地址(*v_Iter)->SetLeftCount(left);cout<<"\t已经为等候本航班的第一个客户订票!请通知该客户!"<<endl;Customer Person;Person.m_strID=(*v_Iter)->m_wPerson[0].m_strID;Person.m_strName=(*v_Iter)->m_wPerson[0].m_strName;Person.m_nWant=(*v_Iter)->m_wPerson[0].m_nWant;//把已满足的客户放入已订得票的客户记录(*v_Iter)->m_haveBook.push_back(Person);//删除第一个已经满足订票的客户(*v_Iter)->m_wPerson.erase(Iter_person);//输出修改后的本航班所有信息(*v_Iter)->PrintInfo();i--;//为了不错过每一个客户}}}}if((*v_Iter)->m_wPerson.size()!=0)//还有客户等候本航班{char wait='n';cout<<"\t系统暂不能满足新客户的订票要求!是否要排队等候?(y/n):";cin>>wait;if(wait=='y'){Customer p;//声明一个要等候的客户对象cout<<"\t请输入此客户的ID编号:";cin>>p.m_strID;cout<<"\t请输入此客户的姓名:";cin>>p.m_strName;cout<<"\t请输入要订票的数目:";cin>>p.m_nWant;(*v_Iter)->m_wPerson.push_back(p);//进行排队等候cout<<"\t此客户已经进入本航班的订票排队!";}}else //新客户,本航班没有客户在等候排票{int count;cout<<"\t请输入新客户要订票的数量:";cin>>count;if((*v_Iter)->GetLeftCount()<count){cout<<endl;cout<<"\t对不起,本航班已没有足够的票数"<<endl;cout<<"\t是否要进入排队等候?(y/n):";char ch;cin>>ch;if(ch=='y'){Customer p;cout<<endl;cout<<"\t请输入此客户的ID号:";cin>>p.m_strID;cout<<endl;cout<<"\t请输入此客户的姓名:";cin>>p.m_strName;p.m_nWant=count;(*v_Iter)->m_wPerson.push_back(p);cout<<"\t此客户已进入等候排队订票中!"<<endl;}else{cout<<endl;cout<<"\t您已取消了排队等候订票!"<<endl;}}else//可以满足订票要求,把新客户放入已订得票的客户记录里{Customer person;cout<<endl;cout<<"\t请输入新客户的ID号:";cin>>person.m_strID;cout<<endl;cout<<"\t请输入新客户的姓名:";cin>>person.m_strName;person.m_nWant=count;int left=(*v_Iter)->GetLeftCount()-count;//(*v_Iter)->SetLeftCount(left); //设计本航班剩余票数(*v_Iter)->m_haveBook.push_back(person); //记录可订得票的客户cout<<endl;cout<<"\t成功为新客户订票!"<<endl;}}cout<<"\t按任意键返回主界面";//////////////////////////////////////////////////////////////////////////// cin.get();cin.get();}void CancelAirInfo(vector<AirInfo*> *vec_Air)// /////////////////////////////////////////取消订票(航班){vector<AirInfo*>::iterator v_Iter;//指针system("cls");cout<<endl;string num;//航班号cout<<"\t请输入要取消订票的航班号:";cin>>num;for(v_Iter=vec_Air->begin();v_Iter!=vec_Air->end();v_Iter++){if((*v_Iter)->GetNum()==num)//找到相应的航班号{(*v_Iter)->PrintInfo();//输出航班信息break;}}if(v_Iter==vec_Air->end())//如果找到最后还没找到相应的航班记录{cout<<"\t对不起,暂时没有此航班号!";cin.get();cin.get();return ;}char choice='n';cout<<"\t要取消订票的客户是否在等候订票队列?(是则输入'y'):"<<endl;cout<<"\t要取消订票的客户已经得了票(是则输入'n'):";cout<<"\t请选择(y/n):";cin>>choice;if(choice=='y'&&(*v_Iter)->m_wPerson.size())//在等候订票的客户取消等候订票业务{string strID;//客户IDcout<<"\t请输入在排队的客户ID:";cin>>strID;for(int i=0;i<(*v_Iter)->m_wPerson.size();i++)//查找队列是否有此ID的客户{if((*v_Iter)->m_wPerson[i].m_strID==strID)//找到有此ID的客户{cout<<"\t所找的客户信息如下:"<<endl;cout<<"\t客户ID:"<<(*v_Iter)->m_wPerson[i].m_strID<<"\t"<<"姓名:"<<(*v_Iter)->m_wPerson[i].m_strName<<"\t"<<"所订票数:"<<(*v_Iter)->m_wPerson[i].m_nWant<<endl;cout<<"\t确定要取消此客户的等候订票业务吗?(y/n):";cin>>choice;if(choice=='y')//取消订票{vector<Customer>::iterator v;v=(*v_Iter)->m_wPerson.begin()+i;(*v_Iter)->m_wPerson.erase(v);//删除此客户所有信息cout<<"\t成功取消此客户的订票业务!"<<endl;(*v_Iter)->PrintInfo();//输出取消订票业务后的此航班记录信息}break;}}if(i==(*v_Iter)->m_wPerson.size()){cout<<"\t对不起,没有此客户在等候订票队列!"<<endl;}}else if(choice=='n'&&(*v_Iter)->m_haveBook.size())//订票的客户,不在等候队列里即已经得到票){string strID;//客户IDcout<<"\t请输入要退票的客户ID:";cin>>strID;for(int i=0;i<(*v_Iter)->m_haveBook.size();i++)//查找队列是否有此ID的客户{if((*v_Iter)->m_haveBook[i].m_strID==strID)//找到有此ID的客户{cout<<"\t所找的客户信息如下:"<<endl;cout<<"\t客户ID:"<<(*v_Iter)->m_haveBook[i].m_strID<<"\t"<<"姓名:"<<(*v_Iter)->m_haveBook[i].m_strName<<"\t"<<"所订票数:"<<(*v_Iter)->m_haveBook[i].m_strName<<endl;cout<<"\t确定要取消此客户的订票业务吗?(y/n):";cin>>choice;if(choice=='y')//取消订票{int left=(*v_Iter)->GetLeftCount()+(*v_Iter)->m_haveBook[i].m_nWant;(*v_Iter)->SetLeftCount(left);//设计剩余票数vector<Customer>::iterator v;v=(*v_Iter)->m_haveBook.begin()+i;(*v_Iter)->m_haveBook.erase(v);//删除此客户所有信息cout<<"\t成功完成此客户的退票业务!"<<endl;cout<<"\t修改订票业务后的本航班信息如下:"<<endl;(*v_Iter)->PrintInfo();//输出取消订票业务后的此航班记录信息}break;}}if(i==(*v_Iter)->m_haveBook.size()){cout<<"\t对不起,没有此客户在已订票客户记录里!"<<endl;}}else{cout<<"\t本航班没有任何客户!"<<endl;}cout<<endl;cout<<"\t按任意键返回主界面";cin.get();cin.get();}void SaveAirInfo(vector<AirInfo*> vec_Air)// ///////////////////////////所有航班信息记录存盘void main() //////////////////////////////////////////////////////////////////////////////////////////主函数{vector<AirInfo*> vec_Air; //用于对所有航班信息记当进行各种操作,相当于内存暂存器vector<AirInfo*>::iterator v_Iter;//用于对vec_Air进行遍历的AirInfo类型的指针AirInfo* pA;LoadData(&vec_Air);//导入数据char choice='p';while(choice!='0'){system("cls");//清屏cout<<endl;cout<<"\t******************航空订票系统********************"<<endl; cout<<"\t******广西工学院计算机工程系计035班梁姣莹******"<<endl; cout<<"\t\t\t"<<endl;cout<<"\t\t1.输入航班信息"<<"\t\t2.查询航班"<<endl;cout<<"\t\t3.订票业务"<<"\t\t4.退票业务"<<endl;cout<<"\t\t5.修改航班信息"<<"\t\t6.删除航班信息"<<endl;cout<<"\t\t7.浏览总航班信息"<<"\t8.保存"<<endl;cout<<"\t\t0.退出"<<endl;cout<<"\t**************************************************"<<endl; cout<<"\t请选择(0-8):";cin>>choice;switch(choice){case '1'://输入航班信息{NewAirInfo(&vec_Air); break;}case '2'://查询航班{FindAirInfo(vec_Air); break;}case '3'://订票业务{BookAirInfo(&vec_Air); break;}case '4'://退票业务{CancelAirInfo(&vec_Air); break;}case '5'://修改航班信息{ModifyAirInfo(&vec_Air);break;}case '6'://删除航班信息{DelAirInfo(&vec_Air); break;}case '7'://浏览总航班信息{ScanAirInfo(vec_Air); break;//}case '8'://所有航班记录存盘{SaveAirInfo(vec_Air); break;}case '0':break;//退出本系统default:break;}}}。