数据结构课程设计航空订票系统样本

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构

课程设计报告

设计题目: 航空客运订票系统

院系计算机学院

年级 xxxxx

学生 xxx

学号 xxxxxxxxxxx

指导教师 xxxxxxxxxxx

起止时间 9-6/9-13

9月10日星期二

目录

一、课程设计目的3

二、需求分析3

三、概要设计

1.设计步骤 4 2.系统整体结构图 5 3.功能模块及调用关系说明 5

四、详细设计和源代码

1.实现概要设计中定义数据的存储结构 6

2.查询航线信息功能的算法设计 7

3.订票功能的算法设计 9

4.退票功能的算法设计 12

5.录入功能的算法设计 14

6.总航线预览功能的程序源代码 15

五、调试分析

1.各功能的具体实例分析 16

2.实验过程中出现的问题及解决方法 20

六、课程设计总结20

七、参考资料21

一、课程设计目的

(1) 熟练使用 C 语言编写程序, 解决实际问题;

(2) 了解并掌握数据结构与算法的设计方法, 具备初步的独立分析和设计能力;

(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

航空订票系统:

( 1) 熟练掌握链表存储结构及其建立过程和常见操作;

( 2) 熟练掌握队列的建立过程和常见操作;

(3)学会自己调试程序的方法并掌握一定的技巧。

二、需求分析

问题描述: 航空客运订票的业务活动包括: 查询航线、客票预订和办理退票等。试设计一个航空客运订票系统, 以使上述业务能够借助计算机来完成。

设计任务: 经过此系统能够实现如下功能:

录入: 能够录入航班情况( 数据能够存储在一个数据文件中, 数据结构、具体数据自定)

查询: 能够查询某个航线的情况( 如, 输入航班号, 查询起降时间, 起飞抵达城市, 航班票价, 票价折扣, 确定航班是否满仓) ; 能够输入起飞抵达城市, 查询飞机航班情况; 根据旅客提出的终点站名输出下列信息: 航班号、飞机号、星期几飞行, 最近一天航班的日期和余票额;

订票: ( 订票情况能够存在一个数据文件中, 结构自己设定) 根据客户提出的要求( 日期、航班号、订票数额) 查询该航班票额情况, 若尚有余额, 则为客户办理订票手续, 输出座位号; 若已满员或余票额少于订票额, 则需要重新询问客户要求。若需要, 可预约登记排队等候。如果该航班已经

无票, 能够提供相关可选择航班;

退票: 根据客户提供的情况( 日期、航班、退票数额) , 为客户办理退票手续, 然后查询该航班是否有人预约登记, 首先询问排在第一的客户, 若所退票额能满足她的要求, 则为她办理订票手续, 否则依次询问其它排队预约的客户……退票成功后修改相关数据文件。

客户资料有姓名, 证件号, 订票数量及航班情况, 订单要有编号。

修改航班信息: 当航班信息改变能够修改航班数据文件

要求: 根据以上功能说明, 设计航班信息, 订票信息的存储结构, 设计程序完成功能。

测试数据: 由学生任意指定, 但报告上要求写出多批数据测试结果。

实现提示: 每条航线应包含的信息有: 终点站名、航班号、飞机号、飞行日期( 星期几) 、乘员定额、余票额、已订票的客户名单( 包括姓名、订票额、座位号) 和预约登记的客户名单( 包括日期、姓名、所需票额) 。

这最后两项显然是一个线性表和一个队列。为查找方便、已订票客户的线性表应按客户姓名有序, 而且, 为插入和删除方便, 应以链表作存储结构。由于预约人数无法预料, 队列也应以链表作存储结构。整个系统需汇总各条航线的情况登录在一张线性表上, 由于航线基本不变, 可采用顺序存储结构, 并按航班有序或按终点站名有序。每条航线是这张表上的一个记录, 包含上述八个域, 其中乘员名单域为指向乘员名单链表的头指针, 预约登记客户名单域为分别指向队头和队尾的指针。

选做内容: 当客户订票要求不能满足时, 系统可向客户提供到达同一目的地的其它航线情况。

三、概要设计

1.设计步骤

1) 分析问题, 给出数学模型, 设计相应的数据结构。

提示:

(1)己订票的客户名单能够用线性表来实现。为查找方便, 线性表应按照客户姓名有序,

而且为了插入和删除的方便, 应以链表作为存储结构。

(2)等候替补的客户名单能够用队列来实现。由于预约人数无法预计, 因此队列也应以链表作为存储结构。

(3)需将输入的航班情况登录到一张线性表上(用顺序存储结构或链表存储结构)。为了查询的方便, 能够将航班情况按照航班有序或按照终点站名有序建立线性表。每条航线是这张线性表的一个记录, 包含上述8个域, 其中已订票的客户名单域是指向己订票的客户名单链表的头指针, 等候替补的客户名单域是指向队头和队尾的指针。

2) 算法设计

在已经选择好数据结构的前提下, 为解决问题设计算法。

( 1) 确定所需模块

对于稍复杂的程序设计, 要充分利用模块化程序设计方法, 自顶向下, 逐步细化, 在整体思路确定的情况下, 考虑所需模块数, 各模块完成功能以及模块之间的数据联系和调用关系。

( 2) 各子模块功能描述

给出主要模块的算法描述, 用流程图或伪代码表示。

( 3) 模块之间的调用关系

3) 源程序清单

为了提高工作效率, 充分利用上机调试程序的时间, 要求学生在上机之前给

相关文档
最新文档