航空客运订票系统课程设计_第1页
航空客运订票系统课程设计_第2页
航空客运订票系统课程设计_第3页
航空客运订票系统课程设计_第4页
航空客运订票系统课程设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 目 录 一 设计任务说明 2 二 需求分析 2 2 1 系统结构图 功能模块图 2 2 2 系统能实现的操作和功能 3 三 设计方案 程序流程图 4 四 测试分析 9 4 1 程序的模块 9 4 2 测试结果分析 9 五 总结 13 5 1 总体过程 13 5 2 问题和不足 13 5 3 调试体会 14 参考文献 14 2 一 设计任务说明一 设计任务说明 1 数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构 以及程 序设计语言 C 语言 自行实现一个较为完整的应用系统的设计与开发 2 通过课程设计 自己通过系统分析 系统设计 编程调试 写实验报告等环节 进一步掌握应用系统设计的方法和步骤 灵活运用并深刻理解典型数据结构在软件开 发中的应用 3 学会将知识应用于实际的方法 提高分析和解决问题的能力 增加综合能力 4 航空空订票系统 1 熟练掌握链表存储结构及其建立过程和常用操作 2 熟练掌握队列的建立过程和常用操作 3 学会自己调试程序的方法并掌握一定的技巧 航空客运订票的业务活动包括 查询航线 客票预订和办理退票等 设计一个航空 客运订票系统 以使上述业务可以借助计算机来完成 二 需求分析二 需求分析 2 12 1 系统结构图 功能模块图 系统结构图 功能模块图 3 浏览 航线 信息 浏览 已订 票客 户信 息 查询 航线 办理 订票 业务 办理 退票 业务 退出 系统 按剩 余票 数排 序 主函 数 每条航线所涉及的信息有 终点站名 航班号 飞机号 飞行日 星期几 乘员 定额 余票量 已订票的客户名单 包括姓名 订票量 舱位等级 1 2 或 3 以及等 候替补的客户名单 包括姓名 所需票量 全部数据可以只放在内存中 2 22 2 系统能实现的操作和功能系统能实现的操作和功能 1 查询航线 根据旅客提出的终点站名输出下列信息 航班号 飞机号 星期几飞行 最近一天 航班的日期和余票额 2 办理订票业务 根据客户提出的要求 航班号 订票数额 查询该航班票额情况 若尚有余票 则 为客户办理订票手续 输出座位号 若已满员或余票额少于定票额 则需重新询问客户要求 若需要 可 登记排队候补 3 办理退票业务 根据客户提供的情况 日期 航班 为客户办理退票手续 然后查询该航班是否有 人排队候补 首先询问排在第一的客户 若所退票额能满足他的要求 则为他办理订 票手续 否则依次询问其他排队候补的客户 4 三 设计方案三 设计方案 程序流程图程序流程图 3 1 显示已初始化的全部航线信息 5 开始 初始化 iter name info i i MAXSIZE 调用函数输出 未找到 结束 6 3 4 办理订票业务 根据客户提供的航班号进行查询航线信息 若客户订票额超过乘员定票总额 退 出 若客户订票额末超过余票量 订票成功并登记信息 在订票乘员名单域中添加客 户信息 如果暂时没有票 询问客户是否要排队等侯 如果是 则在等候队列增加该 客户的订票信息 经过分析可以得出此业务算法的流程图分析结果如下图所示 开始 初始化 info find 客户订票额不超过乘员定票总额 登记信息 加到客户名单域 结束 在排队等候乘员名单域中添加客户信息 3 5 办理退票业务 调用查询函数 根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名 单域进行查询 退票成功后 重新将航线名单域指向订票单链表的头指针 根据队列 中从出的客户信息判断是否满足要求 如果满足 则将该客户的信息插入到乘客信息 链表中 经过分析 可以得出关于办理退票业务的算法的流程分析图分析结果如下图所示 7 开始 调用 find 函对航线搜索 数 p1 NULL p1 NULL 删除客户信息 重新将航线名单域指向订票单链表的 头指针 重新将航线名单域指向订票 单链表的头指针 r 指向排队等候名 单队列的尾结点 t 不为空 将客户信息插到订票客 户名单链表 头结点 将客户信息插到订票 客户名单链表 结束 8 四 测试分析四 测试分析 4 14 1 程序的模块程序的模块 录入功能 原始数据的输入 通过文件输入航线的基本信息 查询功能 根据客户需要 查询相关航线 订票功能 满足客户的订票任务 退票功能 根据客户的不同情况 支持客户的退票请求 退出功能 退出系统 4 24 2 测试结果分析测试结果分析 1 浏览航线信息 图 4 2 1 输入 1 通过文件进行航线原始数据的输入 2 浏览已订票客户信息 下面是有客户订票以及无客户订票的两种测试分析结果 9 图 4 2 2 输入 2 通过输入航班号 3 浏览已订票客户信息 图 4 2 3 输入 2 通过输入航班号 1 浏览已订票客户信息 3 查询航线 下列截图是以 shanghai 为例的航线查询结果 10 图 4 2 4 输入 3 通过输入终点站名查询航线信息 4 办理订票业务 图 4 2 5 输入 4 通过输入终点站名 进行订票 5 办理退票业务 11 图 4 2 6 输入 5 通过输入退票客户信息进行退票 6 退出订票系统 图 4 2 7 输入 6 退出订票系统 12 五 总结五 总结 5 15 1 总体过程总体过程 编译和调试工具 选择 V C 6 0 该工具稳定 其中有一个强大的调试工具 但 我不是很熟悉 还需要进一步的学习和练习 不断地完善自己 提高自己的编译能力 5 25 2 问题和不足问题和不足 1 在将近一周的时间里 不断地对程序及各模块进行修改 编译 调试 运行 其间遇到很多问题 1 程序在起初设计的时候 经常出现溢出错误 而且不只一处 为了修正这些 溢出错误 耗费了大量的时间 修正解释之后再看源程序 才发现原来只是因为开始 的函数定义的数据类型出现了问题 对函数的定义不清楚 字符的不正确定义造成了 后期大量的纠错工作 2 由于忘记了一些 c 语言的规范使得在调试过程中一些错误没有发现 例如 调用函数时 数组只需要传递数组名即可 字符 0 和整型的 0 是不同的 不可以直 接对其画等号 3 测试用例具有一定的广泛性 运行程序时输入了多种不同字符信息 经过多 次修改结果达到了预期效果 说明程序具有一定的可靠性和稳定性 2 经过不断地学习 我也终于结束了这次的课程设计 虽然最后也受益匪浅 但 是其中仍显现出许多的不足 1 录入系统 每次输入的数据会覆盖上次输入的数据 2 查询系统 只能查找最近输入的数据 并且相同终点站只能显现一个信息 3 在数据初始化的时候未对数据按照一定的顺序存放 如果航线信息较多时将 影响系统功能 13 5 35 3 调试体会调试体会 经过这次实习 我对调试掌握的更加熟练了 尽自己的努力 改变了过去只调试 不知道如何对照程序语言修改程序的坏习惯 对调试也有了新的认识 意识到了程序 语言的规范性以及我们在编程时要有严谨的态度 同时在写程序时如果加一定量的注 释 既增加了程序的可读性 也可以使自己在读程序时更容易 参考文献参考文献 1 谭浩强 编著 C 程序设计 北京清华大学出版社 1998 年 9 月 2 傅清祥等 算法与数据结构 北京电子工业出版社 1998 年 3 谭浩强 C 程序设计题解与上机指导 北京清华大学出版社 2004 年 3 月 4 田淑清等 C 语言程序设计辅导与习题集 中国铁道出版社 2000 年 1 月 5 谭浩强等编著 算法与数据结构 中国铁道出版社 2003 年 9 月 6 柴欣 C C 程序设计 河北大学出版社 2002 年 14 源代码 航空票务管理系统源代码 include include include define MAXSIZE 3 定义航线量的最大值 typedef struct wat ros char name 10 姓名 int req amt 订票量 struct wat ros next qnode qptr typedef struct pqueue qptr front 等候替补客户名单域的头指针 qptr rear 等候替补客户名单域的属指针 linkqueue typedef struct ord ros char name 10 客户姓名 int ord amt 订票量 int grade 舱位等级 struct ord ros next linklist struct airline char ter name 10 终点站名 char air num 10 航班号 char plane num 10 飞机号 char day 7 飞行周日 星期几 int tkt amt 乘员定额 int tkt sur 余票量 linklist order 乘员名单域 指向乘员名单链表的头指针 linkqueue wait 等候替补的客户名单域 分别指向排队等候名单队头队尾的指针 lineinfo 15 struct airline start void display struct airline info 打印每条航线的基本信息 printf 8s t 3s t s t 4s t t 3d t 10d n info ter name info air num info plane num info day info tkt amt info tkt sur void list 打印全部航线信息 struct airline info int i 0 info start printf 终点站名 t 航班号 t 飞机号 t 飞行周日 t 乘员定额 t 余票量 n while i MAXSIZE display info info i printf n n void search 根据客户提出的终点站名输出航线信息 struct airline info find char name 10 int i 0 info start printf 请输入终点站名 scanf s name while iter name break info i if i MAXSIZE printf 对不起 该航线未找到 n 16 else printf 终点站名 t 航班号 t 飞机号 t 飞行周日 t 乘员定额 t 余票量 n display info struct airline find 根据系统提出的航班号查询并以指针形式返回 struct airline info char number 10 int i 0 info start printf 请输入航班号 scanf s number while iair num return info info i printf 对不起 该航线末找到 n return NULL void prtlink 打印订票乘员名单域的客户名单信息 linklist p struct airline info info find p info order if p NULL printf 客户姓名 订票数额 舱位等级 n while p printf s t t d t d n p name p ord amt p grade p p next else 17 printf 该航线没有客户信息 n linklist insertlink linklist head int amount char name int grade 增加订票乘员名单域的客户信息 linklist p1 new p1 head new linklist malloc sizeof linklist if new printf nOut of memory n return NULL strcpy new name name new ord amt amount new grade grade new next NULL if head NULL 若原无订票客户信息 head new new next NULL else head new new next p1 return head linkqueue appendqueue linkqueue q char name int amount 增加排队等候的客户名单域 qptr new new qptr malloc sizeof qnode strcpy new name name new req amt amount new next NULL if q front NULL 若原排队等候客户名单域为空 q front new else q rear next new q rear new return q void order 18 办理订票业务 struct airline info int amount grade char name 10 info start if info find return 根据客户提供的航班号进行查询 如为空 退出该模块 printf 请输入你订票所需要的数量 scanf d if amount info tkt amt 若客户订票额超过乘员定票总额 退出 printf n 对不起 您输入的票的数量已经超过乘员定额 return if amounttkt sur 若客户订票额末超过余票量 订票成功并等记信息 int i printf 请输入您的姓名 订票客户 scanf s name printf 请输入 s 票的舱位等级 name scanf d info order insertlink info order amount name grade 在订票乘员名单域中添加客 户信息 for i 0 itkt amt info tkt sur i 1 info tkt sur amount 该航线的余票量应减掉该客户的订票量 printf n 祝您乘坐愉快 n else 若满员或余票额少于订票额 询问客户是否需要进行排队等候 char r printf n 已经没有更多的票 您需要排队等候吗 Y N r getch printf c r if r Y r y printf n 请输入您的姓名 排队订票客户 scanf s name info wait appendqueue info wait name amount 在排队等候乘员名单域中添加客户 信息 printf n 注册成功 n 19 else printf n 欢迎您下次再次订购 n void return tkt 退票模块 struct airline info qnode t back f r int grade linklist p1 p2 head char cusname 10 if info find return 调用查询函数 根据客户提供的航线进行搜索 head info order p1 head printf 请输入你的姓名 退票客户 scanf s cusname while p1 NULL 根据客户提供的姓名到订票客户名单域进行查询 if strcmp cusname p1 name break p2 p1 p1 p1 next if p1 NULL printf 对不起 你没有订过票 n return 若未找到 退出本模块 else 若信息查询成功 删除订票客户名单域中的信息 if p1 head head p1 next else p2 next p1 next info tkt sur p1 ord amt grade p1 grade printf s 成功退票 n p1 name free p1 info order head 重新将航线名单域指向订票单链表的头指针 f info wait front f 指向排队等候名单队列的头结点 r info wait rear r 指向排队等候名单队列的尾结点 t f t 为当前满点条件的排队候补名单域 while t if info tkt sur info wait front req amt 若满足条件者为头结点 20 int i info wait front t next printf s 订票成功 n t name for i 0 ireq amt i 输出座位号 printf s 的座位号是 d n t name info tkt sur i info tkt sur t req amt info order insertlink info order t req amt t name grade 插入到订票客 户名单链表中 free t break back t t t next if info tkt sur t req amt back next t next printf s 订票成功 n t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论