1、 数据结构课程设计数据结构课程设计 设计题目:设计题目:航空订票系统航空订票系统 1. 课程设计题目课程设计题目: 航空订票系统 2. 分工人员及分工分工人员及分工 2.1. 总体设计 系统总体功能模块如下图: 2.2. 系统文件及函数组成及人员分工如下表: 主函数 浏览航 线信息 浏览已 订票客 户信息 查询航 线 办理订 票业务 办 理 退 票业务 退出系 统 查 终 点 站 名 航 线信息 3. 软硬件运行环境软硬件运行环境 软件: Microsoft Visual C+6.0 硬件: Pentium(R) Dual-Core CPU E5300 2.60GHz 2.60GHz 1.96
2、GB 的内存 4. 问题描述问题描述 根据旅客提出的终点站名输出:航班号、飞机号、星期几飞行,最近一 天航班的日期和余票额; 以链表的方式表示分别包括:查询航线、客票预订和办理退票等。设计 一个程序,对旅客输入任意的航班,求出查询航线、客票预订和办理退票等 信息的输出,或得出没有票或者航班的结论。 5. 需求分析需求分析 1 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几) 、 乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级 1,2 或 3)以及等候替补的客户名单(包括姓名、所需票量) ; 2 全部数据可以只放在内存中; 3 系统能实现的操作和功能如下: a)
3、 查询航线: 根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近 一天航班的日期和余票额; b) 承办订票业务: 根据客户提出的要求 (航班号、 订票数额) 查询该航班票额情况, 若尚有余票, 则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新 询问客户要求。若需要,可登记排队候补; c) 退票业务: 根据客户提供的情况(日期、航班) ,为客户办理退票手续,然后查询该航班 是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则 为他办理订票手续,否则依次询问其他排队候补的客户。 6. 算法分析与概要设计算法分析与概要设计:存储结构、基本算法
4、存储结构、基本算法 链表和队列 (1)显示已初始化的全部航线信息 (2)浏览已订票客户信息 (3)根据客户提出的终点站名,调用 find()函数寻找航线信息, 调用 list()函数输出航线信息 (4)办理订票业务:根据客户提供的航班号进行查询航线信息,若客户订票额 超过乘员定票总额,退出,若客户订票额末超过余票量,订票成功并登记信息, 在订票乘员名单域中添加客户信息; 如果暂时没有票, 询问客户是否要排队等侯, 如果是,则在等候队列增加该客户的订票信息。 (5)办理退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提 供的姓名到订票客户名单域进行查询。退票成功后,重新将航线名单域指向
5、订票 单链表的头指针。根据队列中从出的客户信息判断是否满足要求,如果满足,则 将该客户的信息插入到乘客信息链表中。 (6)退出本系统。 7. 算法的详细设计算法的详细设计 (1)显示已初始化的全部航线信息 开始 初始化 i=MAXSIZE 调用函数输出 未找到 结束 (4)办理订票业务 开始 初始化 !(info=find() 客户订票额不超过乘 员定票总额, 登记信息 加到客户名单域 结束 在排队等候乘员名单 域中添加客户信息 (5)办理退票业务 开始 调用 find 函对航线搜索 p1!=NULL 删除客户信息 重新将航线名单域指向订票单链表的 头指针,重新将航线名单域指向订票 单链表的头
6、指针, r 指向排队等候名单 队列的尾结点 t 不为空 将客户信息插到订票客 户名单链表 头结点 将客户信息插到订 票客户名单链表 结束 8. 测试数据和结果测试数据和结果 9. 总结总结: : 1 1、总体过程总体过程 编译和调试工具:选择 Visual C+6.0,该工具稳定,其中有一个强大的调 试工具,但不是熟悉。还需要进一步的练习。 2 2 、在一周半的时间里,不断地对程序及各模块进行修改、编译、调试、运行, 其间遇到很多问题: (1)因能力有限,在编写的时候只使用了相对较为简单的基础语言 ,代 替了相对较为复杂的语言,降低了运行效率。 (2)程序在起初设计的时候,经常出现溢出错误,而且不只一处。为了 修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原 来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字 符的不正确定义造成了后期大量的纠错工作。 (3) 由于忘记了一些 c 语言的规范使得在调试过程中一些错误没有发现。 例如,调用函数时,数组只需要传递数组名即可;字符0和整形