信息科学与工程学部
数据结构课程设计
题 目 航空客运订票系统
姓 名
学 号 [1**********]894
学 院 信息科学与工程学院
专业、年级 软件工程1101班
指 导 教 师
2012 年 11月 27 日
摘 要
随着科技与经济的发展,人们的生活水平不断的提高,旅游业的逐渐的成熟发展,人们追求快节奏的生活方式,越来越多的人选择乘飞机,从而国内国际的航班不断的增加。航空客运量大幅的提高,也促使了航空业得到迅速的发展。而且随着网络的盛行,航空订票系统就显得尤为重要,所以航空客运订票系统主要是为了方便人们,让人们能够快速、清晰、准确地了解航班信息而不至于象以前那样排队等候,从而避免耽搁乘客大量的等待时间,使旅客轻松快捷的踏上愉快的旅程。
该航空客运订票系统分为乘客操作模块和系统管理员操作模块。乘客操作模块包含了浏览所有航班信息、办理订票业务、办理退票业务,航班查询、等候订票人登记功能,而管理员操作模块包含添加航班、删除航班、查看已订票人信息、查看等待订票人信息功能,最后就是退出系统功能。
该系统主要运用动态线性链表和动态线性队列及其文件的保存与读取完成的。航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。
本系统在Visual C++ 6.0环境下进行开发,根据我们自身所学的知识利用动态线性链表、动态队列链表和文件操作实现了对数据的保存、读取等功能,达到了预定要求。
该系统虽然还存在一点点不足,那就是对乘客的座位号和座舱等级的具体安排没有实现,但该系统的所有功能均能实现,并且系统考虑的问题全面、易于操作、界面简单明了、服务器程序利于维护。
关键词: 动态线性链表;动态队列链表;文件操作;订票
目 录
第1章 前 言----------------------------------------------------1
1.1课题背景及其现实意义-----------------------------------错误!未定义书签。
1.1.1 系统开发背景-------------------------------------
错误!未定义书签。
1.1.2 系统开发意义-------------------------------------
错误!未定义书签。
1.2 课程设计的目的-----------------------------------------2
1.3 课程设计的内容-----------------------------------------2
第2章 系统功能分析------------------------------------------------4
2.1 可行性分析---------------------------------------------4
2.1.1 经济可行性分析-----------------------------------4
2.1.2 技术可行性分析-----------------------------------4
2.1.3 社会可行性分析----------------------------------4
2.2 需求分析-----------------------------------------------4
第3章 系统总体设计 -----------------------------------------------6
3.1 系统的功能简介-----------------------------------------6
3.2 系统的设计构想-----------------------------------------6
3.2.1 系统的算法分析-----------------------------------6
3.2.2 系统的具体实现过程-------------------------------6
3.3 系统的流程图-------------------------------------------7
第4章 系统详细设计-------------------------------------------------8
4.1 系统的浏览所有航班功能---------------------------------8
4.2 系统的订票功能-----------------------------------------9
4.3 系统的退票功能----------------------------------------10
4.4 系统的航班查询功能------------------------------------10
4.5 系统的等候订票人登记功能------------------------------11
4.6 系统的添加航班功能------------------------------------11
4.7 系统的删除航班功能------------------------------------12
4.8 系统的查看已订票人信息功能----------------------------12
4.9 系统的查看等待订票人信息功能--------------------------13
第5章 系统测试----------------------------------------------------14
5.1 添加航班功能测试--------------------------------------14
5.2 浏览所有航班信息功能测试------------------------------15
5.3 办理订票业务功能测试----------------------------------15
5.4 查看已订票功能测试------------------------------------16
5.5 等待订票人登记功能测试--------------------------------16
5.6 查看等待订票人信息功能测试----------------------------16
5.7 办理退票人信息功能测试--------------------------------17
5.8 航班查询功能测试--------------------------------------17
5.9 删除航班功能测试--------------------------------------17
第6章 总结--------------------------------------------------------------------------------------------18 参考文献------------------------------------------------------------------------------------------------19
第1章 前言
1.1 研究的背景及意义
1.1.1 系统开发背景
1994 年10 月,美国联合航空公司率先推出了网上售票系统,乘客只须在网上输入自己的信用卡号和有效期,就可以直接购买机票。出票方式有电子机票、机场取票、送票上门等多种方式。
网上订票的优越性使国内越来越多的航空公司着手研制自己的网上订票系统。1999 年9 月,中国南方航空公司的网上订票系统正式启动,只要进入南航的网上订座页面就可以自己订购机票了,票款的支付方式为网上支付和现金支付。1999 年10 月,中国东方航空公司也正式开通了网上购票系统,凡是持工商银行上海分行牡丹信用卡的客户均可在东航网站购买上海始发的国际国内机票。
民航总局鼓励和支持航空公司采取多种方式建设和拥有座位控制系统。中国将加快航空物流信息平台建设,各方将在现有进展的基础上,本着互利互惠、求同存异、联合共建的原则,加快系统建设步伐,力争在明年投入运行。按照国际标准,中国将加快推广电子客票,规范其使用和安检流程,解决其报销凭证问题,力争到2007年全行业电子客票比例达到50%。
1.1.2 系统开发意义
因特网技术的飞速发展为航空公司带来了全新的售票方式。航空客运订票系统的意义是解决航空公司全套网络信息化中的B2C 服务。前各大航空公司的直销网点都采用的是航空公司内部使用的大型信息化网络系统,由于其牵涉面太广一般不会轻易改换其他系统软件。
随着我国航空业务的迅速扩张,各航空公司在全国各大、中城市的直销网点显然不能满足其业务发展的需要。于是,一大批航空公司票务区域代理商如雨后春笋繁荣起来。但传统的手工拿票、订票、送票方式已经远远不能满足其业务扩张的需要,如果其信息化建设不急时跟上,那么这种手工作坊将难以在目前这个信息化高度发达的社会立足而面临淘汰。这类区域代理商没有足够的经济实力也没有必要去购买航空公司所用的大型网络系统软件,但太小的网络系统管理软件
有很难满足企业的可持续性发展需求。经调查,很多区域性航空票务代理商都渴望在市场上能买到一种廉价且实用的中小型网络订票系统。
1.2 课程设计的目的
数据结构是计算机专业的核心课程,是一门实践性很强的课程。课程设计是加强学生实践能力的一个强有力手段,要求学生掌握数据结构的应用、算法的编写、类C 语言的算法转换成C (C++)程序并上机调试的基本方法,还要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
1.3 课程设计的内容
整个航空客运订票系统分为三个小的模块来实现题目要求的各种功能,三个模块分为用户操作模块、航班管理模块、查询系统模块、退出模块,乘客操作模块包含了浏览所有航班信息、办理订票业务、办理退票业务,航班查询、等候订票人登记功能,而管理员操作模块包含添加航班、删除航班、查看已订票人信息、查看等待订票人信息功能,最后就是退出系统模块。另外,将所有用到的数据类型及其基本操作整理在一个模块下,使系统更易于维护和更新。
此系统最基本的思想是:两个客户名单可分别有线性表和对列实现。已订票的客户的线性表按客户姓名有序,并且,为插入和删除方便,以链表作序存储结构。由于等候排队订票人数无法预计,所以队列也以链表作存储结构。整个系统是以航班链表为主线,由于航线可能随时会增添和删除,也采用链式存储结构,航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。此程序的功能如下:
(1) 浏览所有航班信息就是在航班线性链表的遍历操作。
(2)办理订票业务就是在航班线性链表中的已订票链表的插入操作。
(3)办理退票业务就是在航班线性链表中的已订票链表的删除操作。
(4)航班查询就是在航班线性链表结点的查询操作。
(5)等候订票人登记功能就是在航班线性先查找乘客需要订票的终点站名找到该航班飞机,然后在该结点的排队候补人的信息的队列链表末尾插入结点。
(6)添加航班就是在航班线性链表的尾插入新的结点。
(7)删除航班功能就是航班线性链表的删除操作。
(8)查看已订票人信息就是航班线性链表中的已订票链表的遍历。
(9)查看等候订票人信息就是航班线性链表中队列链表的遍历。
而系统中加入了文件的保存与读取,方便信息的保存与读取。其中排队等候订票人的订票实现是嵌套在退票函数里,如果有人退票成功,则查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户等等。
第2章 系统功能分析
2.1 可行性分析
2.1.1 经济可行性分析
网站运行所需经济成本很低。可采取虚拟空间租用,每年费用不到三百元,维护成本基本为零,节省的房屋的租用和雇佣人力的费用,且维护性高。
2.1.2 技术可行性分析
我的航空客运订票系统的构建基于数据结构的应用、算法的编写、类C 语言的算法转换成C (C++)程序的基础上完成的。并采取了线性链表、队列链表和C 语言文件的操作,故此结构能满足系统的稳定性及各功能的需要。
2.1.3 社会可行性分析
随着我国航空业务的迅速扩张,各航空公司在全国各大、中城市的直销网点显然不能满足其业务发展的需要。很多区域性航空票务代理商都渴望在市场上能买到一种廉价且实用的中小型网络订票系统。该系统满足航空票务代理商的要求,所以它是合法的。
结论:该系统是在经济、技术、社会上都是可行的,本系统也是合法的,成本低,也满足很多区域性航空票务代理商的需求,长期发展的效益也高。
2.2 需求分析
随着我国航空业务的迅速扩张,各航空公司在全国各大、中城市的直销网点显然不能满足其业务发展的需要。于是,一大批航空公司票务区域代理商如雨后春笋繁荣起来。但传统的手工拿票、订票、送票方式已经远远不能满足其业务扩张的需要,如果其信息化建设不急时跟上,那么这种手工作坊将难以在目前这个信息化高度发达的社会立足而面临淘汰。这类区域代理商没有足够的经济实力也没有必要去购买航空公司所用的大型网络系统软件,但太小的网络系统管理软
件有很难满足企业的可持续性发展需求。经调查,很多区域性航空票务代理商都渴望在市场上能买到一种廉价且实用的中小型网络订票系统。
随着知识经济的到来,人类已经逐步进入信息化社会,信息增长的速度越来越快,人们希望利用先进的管理理论方法手段来得到并处理越来越多的信息,以提高工作效率和管理水平。由于信息资源对人们生活的重要性,不断提高信息的收集,传输,加以利用等活动,日益成为人们社会生活的重要组成部分。网上机票预订管理系统的产生和发展正好满足人们的这种需求。
这是一个航空客运订票系统,此系统的目标是为了改变传统的排队等候,从而避免耽搁乘客大量的等待时间和提高订购飞机票预定的效率达到方便客户的目的,具有对飞机票的订购、退票、查询等信息进行管理和维护功能。普通注册用户可以通过此系统进行订票、退票、查询、浏览等基本操作。系统开发的总体任务是实现飞机订票的系统化、规范化和简洁化。
第3章 系统总体设计
3.1 系统的功能简介
系统的功能有浏览所有航班信息、办理订票业务、办理退票业务,航班查询、等候订票人登记功能,而管理员操作模块包含添加航班、删除航班、查看已订票人信息、查看等待订票人信息功能,最后就是退出系统功能。
该系统主要运用动态线性链表和动态线性队列及其文件的保存与读取完成的。航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。
3.2 系统的设计构想
3.2.1 系统的算法分析
该系统主要运用动态线性链表和动态线性队列及其文件的保存与读取完成的。航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。
3.2.2 系统的具体实现过程
航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。浏览所有航班信息是在航班线性链表的遍历,办理订票和退票业务是在已订票链表的插入和删除,航班查询是在航班线性链表结点的查询,等候订票人登记功能是在航班线性先查找乘客需要订票的终点站名找到该航班飞机,然后在该结点的排队候补人的信息的队列链表末尾插入结点,添加航班是在航班线性链表的尾插入新的结点,删除航班功能是航班线性链表的删除,查看已订票人信息是
航班线性链表中的已订票链表的遍历,查看等候订票人信息是航班线性链表中队列链表的遍历,系统中加入了文件的保存与读取,方便信息的保存与读取,最终完成该系统。
3.3 系统的流程图
根据上述描述,给出系统的大体的总设计图,如下图所示:
第4章 系统详细设计
该系统主要运用动态线性链表和动态线性队列及其文件的保存与读取完成的。航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。
4.1 系统的浏览所有航空的信息功能
浏览所有航班信息的功能是对航班线性链表的遍历,并显示每趟航班的信息,给乘客提高航班信息,以便乘客订购合适的航班票。其流程图如下:
图4.1 浏览所有航空信息功能流程图
4.2 系统的订票功能
办理订票业务就是在航班线性链表中的已订票链表的插入操作,录入客户输入的信息,为每位乘客办理订票业务。其流程图如下:
图4.2 订票功能流程图
4.3 系统的退票功能
办理退票业务就是在航班线性链表中的已订票链表的删除操作,根据乘客的姓名与航班的航班号在航班线性链表中的已订票链表找到该客户结点并删除,则
图4.3 退票功能流程图
4.4 系统的航班查询功能
航班查询就是在航班线性链表结点的查询操作,根据乘客输入的终点名在航空链表中查找与终点名相同的结点,并输出该结点的相关信息。其流程图如下:
图4.4 航班查询功能流程图
4.5 系统的等候订票人登记功能
等候订票人登记功能就是在航班线性先查找乘客需要订票的终点站名找到该航班飞机,然后在该结点的排队候补人的信息的队列链表末尾插入结点,等候订票人登记成功,当乘客登记的航班的余票满足队列里第一个人时,则系统自动给其完成订票功能。其流程图如下:
图4.5 等待订票人登记功能流程图
4.6 系统的添加航班功能
添加航班就是在航班线性链表的尾插入新的结点。航空公司的管理员根据需
图4.6 添加功能流程图
4.7 系统的删除航班功能
删除航班功能就是航班线性链表的删除操作, 航空公司的管理员根据需求在在主链航班链表中删除不需要的航班结点。
图4.7 删除航班功能流程图
4.8 系统的查看已订票人信息功能
查看已订票人信息就是航班线性链表中每个结点中已订票链表的遍历,然后显示所有信息以便管理员管理。其流程图如下:
图4.8 查看已订票人信息功能流程图
4.9 系统的查看等待订票人信息功能
查看等候订票人信息就是航班线性链表中队列链表的遍历。其流程图如下:
图4.9 查看等待订票人信息功能流程图
第5章 系统测试
系统的主界面如下:
图5.1 系统主界面
5.1 添加航班功能测试
表5.1 添加航班功能 根据以上数据测试,其功能能得以实现。
5.2 浏览所有航班信息功能测试
表5.2 浏览所有航班信息功能
根据以上数据测试,其功能能得以实现。
5.3 办理订票业务功能测试
先根据客户所要到的终点站名显示所有到该地的所有航班给乘客看,例如: 输入 表5.3 订票输入终点站名
则显示以下:
表5.4 显示所到地的所有航班
表5.5 客户输入相关信息
根据以上数据测试,其功能能得以实现。
5.4 查看已订票人信息功能测试
表5.6 查看已订票人信息
根据以上数据测试,其功能能得以实现
5.5 等待订票人登记功能测试
当乘客所要定票的航班余票不符合乘客的需求时,则为乘客办理等待订票人登记。
表5.7 等待订票人登记信息
根据以上数据测试,其功能能得以实现。
5.6 查看等待订票人信息功能测试
管理员通过密码进入此功能查看等待订票人信息。
表5.8 等查看等待订票人信息
根据以上数据测试,其功能能得以实现。
5.7 办理退票人信息功能测试
当乘客办理退票人信息时,则该乘客办理的订票信息则全部被清除。此时当该余票量满足等待订票人的时,则自动为其办理订票。则此时查看已订票人信息时,则退票人的信息都被清除,而等待订票人办理订票后信息则出现在已订票人的信息中,如下表格:
表5.9 等待订票人登记信息
根据以上数据测试,其功能能得以实现。
5.8 航班查询功能测试
表5.10 航班查询功能
根据以上数据测试,其功能能得以实现。
5.9 删除航班功能测试
根据管理员输入终点站名,在航班链表中删除该航班,如输入终点站名:北京,则浏览所有航班的信息如下:
表5.11 删除航班功能
根据以上数据测试,其功能能得以实现。
第6章 总结
通过短暂的课程设计,我深有感触。在平时做的时候感觉没这么吃力,但是在我真正做设计时发现有很多错误,有的时候要解决一个错误会花上很多时间,在做的过程中,有很多错误意想不到,有的错误却犯得很幼稚,不过这样对自身的排错能力能得到很大的提高。
本次的课程设计之中我们还运用到了很多以前所学到的知识,比如动态链表、文件的使用等等,这也让我们加深了对以前所学知识的理解和运用,并且有时候在程序出错时,通过几小时甚至几天的时间去解决问题,让我们明白了自己在学习数据结构这门课的一些不足,上课时哪些问题听得不够仔细,知道自己的实践能力怎么样。因此,我们在学习上要更加的努力。这些细小错误让我深受感慨,它告诉了我编程细心重要,养成一个好的编程习惯更重要。这次项目的完整开发,让我有项目初步的思想,这次项目的开发让我把软件生成的流程从信息的收集,再写需求,再完成后台设计到编写代码,到测试,让我知道还有很多地方的不足。这次课程设计的时间很紧迫,再加上各方面的经验不足,也遇到很多问题,这个订票系统还有很多地方没有完善,希望老师能谅解。总的来说,这次课程设计对我很有帮助,我发觉老师上课讲的很多东西对我们都很有用,让我受到不少的启发,在此谢谢老师辛勤的教育。
经过这次课程设计,也使我学到了很多东西,得到了不少的成长,我对调试掌握的更加熟练了,学会了断点调试,可以清晰的了解程序运行的过程,改变了过去只调试不知道如何对照程序语言修改程序的坏习惯,对调试也有了新的认识,意识到了程序语言的规范性以及我们在编程时要有严谨的态度,同时在写程序时如果加一定量的注释,既增加了程序的可读性,也可以使自己在读程序时更容易。
通过这次的课程设计,在经过发现问题到解决问题的过程中,激发了我们对于在今后的学习兴趣,懂得了学习的重要性,了解到了理论指导和实践相结合的重要意义,学会了坚持,耐心和努力。坚定了学好数据结构的信心。
参考文献:
[1] 严蔚敏、吴伟民主编. 《数据结构》(C 语言版):清华大学出版社,2002. [2] 许卓群等著. 《数据结构与算法》:高等教育出版社 ,2004
[3] 严蔚敏、吴伟民. 数据结构习题集》(C 语言版), 清华大学出版社,2003.
信息科学与工程学部
数据结构课程设计
题 目 航空客运订票系统
姓 名
学 号 [1**********]894
学 院 信息科学与工程学院
专业、年级 软件工程1101班
指 导 教 师
2012 年 11月 27 日
摘 要
随着科技与经济的发展,人们的生活水平不断的提高,旅游业的逐渐的成熟发展,人们追求快节奏的生活方式,越来越多的人选择乘飞机,从而国内国际的航班不断的增加。航空客运量大幅的提高,也促使了航空业得到迅速的发展。而且随着网络的盛行,航空订票系统就显得尤为重要,所以航空客运订票系统主要是为了方便人们,让人们能够快速、清晰、准确地了解航班信息而不至于象以前那样排队等候,从而避免耽搁乘客大量的等待时间,使旅客轻松快捷的踏上愉快的旅程。
该航空客运订票系统分为乘客操作模块和系统管理员操作模块。乘客操作模块包含了浏览所有航班信息、办理订票业务、办理退票业务,航班查询、等候订票人登记功能,而管理员操作模块包含添加航班、删除航班、查看已订票人信息、查看等待订票人信息功能,最后就是退出系统功能。
该系统主要运用动态线性链表和动态线性队列及其文件的保存与读取完成的。航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。
本系统在Visual C++ 6.0环境下进行开发,根据我们自身所学的知识利用动态线性链表、动态队列链表和文件操作实现了对数据的保存、读取等功能,达到了预定要求。
该系统虽然还存在一点点不足,那就是对乘客的座位号和座舱等级的具体安排没有实现,但该系统的所有功能均能实现,并且系统考虑的问题全面、易于操作、界面简单明了、服务器程序利于维护。
关键词: 动态线性链表;动态队列链表;文件操作;订票
目 录
第1章 前 言----------------------------------------------------1
1.1课题背景及其现实意义-----------------------------------错误!未定义书签。
1.1.1 系统开发背景-------------------------------------
错误!未定义书签。
1.1.2 系统开发意义-------------------------------------
错误!未定义书签。
1.2 课程设计的目的-----------------------------------------2
1.3 课程设计的内容-----------------------------------------2
第2章 系统功能分析------------------------------------------------4
2.1 可行性分析---------------------------------------------4
2.1.1 经济可行性分析-----------------------------------4
2.1.2 技术可行性分析-----------------------------------4
2.1.3 社会可行性分析----------------------------------4
2.2 需求分析-----------------------------------------------4
第3章 系统总体设计 -----------------------------------------------6
3.1 系统的功能简介-----------------------------------------6
3.2 系统的设计构想-----------------------------------------6
3.2.1 系统的算法分析-----------------------------------6
3.2.2 系统的具体实现过程-------------------------------6
3.3 系统的流程图-------------------------------------------7
第4章 系统详细设计-------------------------------------------------8
4.1 系统的浏览所有航班功能---------------------------------8
4.2 系统的订票功能-----------------------------------------9
4.3 系统的退票功能----------------------------------------10
4.4 系统的航班查询功能------------------------------------10
4.5 系统的等候订票人登记功能------------------------------11
4.6 系统的添加航班功能------------------------------------11
4.7 系统的删除航班功能------------------------------------12
4.8 系统的查看已订票人信息功能----------------------------12
4.9 系统的查看等待订票人信息功能--------------------------13
第5章 系统测试----------------------------------------------------14
5.1 添加航班功能测试--------------------------------------14
5.2 浏览所有航班信息功能测试------------------------------15
5.3 办理订票业务功能测试----------------------------------15
5.4 查看已订票功能测试------------------------------------16
5.5 等待订票人登记功能测试--------------------------------16
5.6 查看等待订票人信息功能测试----------------------------16
5.7 办理退票人信息功能测试--------------------------------17
5.8 航班查询功能测试--------------------------------------17
5.9 删除航班功能测试--------------------------------------17
第6章 总结--------------------------------------------------------------------------------------------18 参考文献------------------------------------------------------------------------------------------------19
第1章 前言
1.1 研究的背景及意义
1.1.1 系统开发背景
1994 年10 月,美国联合航空公司率先推出了网上售票系统,乘客只须在网上输入自己的信用卡号和有效期,就可以直接购买机票。出票方式有电子机票、机场取票、送票上门等多种方式。
网上订票的优越性使国内越来越多的航空公司着手研制自己的网上订票系统。1999 年9 月,中国南方航空公司的网上订票系统正式启动,只要进入南航的网上订座页面就可以自己订购机票了,票款的支付方式为网上支付和现金支付。1999 年10 月,中国东方航空公司也正式开通了网上购票系统,凡是持工商银行上海分行牡丹信用卡的客户均可在东航网站购买上海始发的国际国内机票。
民航总局鼓励和支持航空公司采取多种方式建设和拥有座位控制系统。中国将加快航空物流信息平台建设,各方将在现有进展的基础上,本着互利互惠、求同存异、联合共建的原则,加快系统建设步伐,力争在明年投入运行。按照国际标准,中国将加快推广电子客票,规范其使用和安检流程,解决其报销凭证问题,力争到2007年全行业电子客票比例达到50%。
1.1.2 系统开发意义
因特网技术的飞速发展为航空公司带来了全新的售票方式。航空客运订票系统的意义是解决航空公司全套网络信息化中的B2C 服务。前各大航空公司的直销网点都采用的是航空公司内部使用的大型信息化网络系统,由于其牵涉面太广一般不会轻易改换其他系统软件。
随着我国航空业务的迅速扩张,各航空公司在全国各大、中城市的直销网点显然不能满足其业务发展的需要。于是,一大批航空公司票务区域代理商如雨后春笋繁荣起来。但传统的手工拿票、订票、送票方式已经远远不能满足其业务扩张的需要,如果其信息化建设不急时跟上,那么这种手工作坊将难以在目前这个信息化高度发达的社会立足而面临淘汰。这类区域代理商没有足够的经济实力也没有必要去购买航空公司所用的大型网络系统软件,但太小的网络系统管理软件
有很难满足企业的可持续性发展需求。经调查,很多区域性航空票务代理商都渴望在市场上能买到一种廉价且实用的中小型网络订票系统。
1.2 课程设计的目的
数据结构是计算机专业的核心课程,是一门实践性很强的课程。课程设计是加强学生实践能力的一个强有力手段,要求学生掌握数据结构的应用、算法的编写、类C 语言的算法转换成C (C++)程序并上机调试的基本方法,还要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
1.3 课程设计的内容
整个航空客运订票系统分为三个小的模块来实现题目要求的各种功能,三个模块分为用户操作模块、航班管理模块、查询系统模块、退出模块,乘客操作模块包含了浏览所有航班信息、办理订票业务、办理退票业务,航班查询、等候订票人登记功能,而管理员操作模块包含添加航班、删除航班、查看已订票人信息、查看等待订票人信息功能,最后就是退出系统模块。另外,将所有用到的数据类型及其基本操作整理在一个模块下,使系统更易于维护和更新。
此系统最基本的思想是:两个客户名单可分别有线性表和对列实现。已订票的客户的线性表按客户姓名有序,并且,为插入和删除方便,以链表作序存储结构。由于等候排队订票人数无法预计,所以队列也以链表作存储结构。整个系统是以航班链表为主线,由于航线可能随时会增添和删除,也采用链式存储结构,航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。此程序的功能如下:
(1) 浏览所有航班信息就是在航班线性链表的遍历操作。
(2)办理订票业务就是在航班线性链表中的已订票链表的插入操作。
(3)办理退票业务就是在航班线性链表中的已订票链表的删除操作。
(4)航班查询就是在航班线性链表结点的查询操作。
(5)等候订票人登记功能就是在航班线性先查找乘客需要订票的终点站名找到该航班飞机,然后在该结点的排队候补人的信息的队列链表末尾插入结点。
(6)添加航班就是在航班线性链表的尾插入新的结点。
(7)删除航班功能就是航班线性链表的删除操作。
(8)查看已订票人信息就是航班线性链表中的已订票链表的遍历。
(9)查看等候订票人信息就是航班线性链表中队列链表的遍历。
而系统中加入了文件的保存与读取,方便信息的保存与读取。其中排队等候订票人的订票实现是嵌套在退票函数里,如果有人退票成功,则查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户等等。
第2章 系统功能分析
2.1 可行性分析
2.1.1 经济可行性分析
网站运行所需经济成本很低。可采取虚拟空间租用,每年费用不到三百元,维护成本基本为零,节省的房屋的租用和雇佣人力的费用,且维护性高。
2.1.2 技术可行性分析
我的航空客运订票系统的构建基于数据结构的应用、算法的编写、类C 语言的算法转换成C (C++)程序的基础上完成的。并采取了线性链表、队列链表和C 语言文件的操作,故此结构能满足系统的稳定性及各功能的需要。
2.1.3 社会可行性分析
随着我国航空业务的迅速扩张,各航空公司在全国各大、中城市的直销网点显然不能满足其业务发展的需要。很多区域性航空票务代理商都渴望在市场上能买到一种廉价且实用的中小型网络订票系统。该系统满足航空票务代理商的要求,所以它是合法的。
结论:该系统是在经济、技术、社会上都是可行的,本系统也是合法的,成本低,也满足很多区域性航空票务代理商的需求,长期发展的效益也高。
2.2 需求分析
随着我国航空业务的迅速扩张,各航空公司在全国各大、中城市的直销网点显然不能满足其业务发展的需要。于是,一大批航空公司票务区域代理商如雨后春笋繁荣起来。但传统的手工拿票、订票、送票方式已经远远不能满足其业务扩张的需要,如果其信息化建设不急时跟上,那么这种手工作坊将难以在目前这个信息化高度发达的社会立足而面临淘汰。这类区域代理商没有足够的经济实力也没有必要去购买航空公司所用的大型网络系统软件,但太小的网络系统管理软
件有很难满足企业的可持续性发展需求。经调查,很多区域性航空票务代理商都渴望在市场上能买到一种廉价且实用的中小型网络订票系统。
随着知识经济的到来,人类已经逐步进入信息化社会,信息增长的速度越来越快,人们希望利用先进的管理理论方法手段来得到并处理越来越多的信息,以提高工作效率和管理水平。由于信息资源对人们生活的重要性,不断提高信息的收集,传输,加以利用等活动,日益成为人们社会生活的重要组成部分。网上机票预订管理系统的产生和发展正好满足人们的这种需求。
这是一个航空客运订票系统,此系统的目标是为了改变传统的排队等候,从而避免耽搁乘客大量的等待时间和提高订购飞机票预定的效率达到方便客户的目的,具有对飞机票的订购、退票、查询等信息进行管理和维护功能。普通注册用户可以通过此系统进行订票、退票、查询、浏览等基本操作。系统开发的总体任务是实现飞机订票的系统化、规范化和简洁化。
第3章 系统总体设计
3.1 系统的功能简介
系统的功能有浏览所有航班信息、办理订票业务、办理退票业务,航班查询、等候订票人登记功能,而管理员操作模块包含添加航班、删除航班、查看已订票人信息、查看等待订票人信息功能,最后就是退出系统功能。
该系统主要运用动态线性链表和动态线性队列及其文件的保存与读取完成的。航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。
3.2 系统的设计构想
3.2.1 系统的算法分析
该系统主要运用动态线性链表和动态线性队列及其文件的保存与读取完成的。航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。
3.2.2 系统的具体实现过程
航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。浏览所有航班信息是在航班线性链表的遍历,办理订票和退票业务是在已订票链表的插入和删除,航班查询是在航班线性链表结点的查询,等候订票人登记功能是在航班线性先查找乘客需要订票的终点站名找到该航班飞机,然后在该结点的排队候补人的信息的队列链表末尾插入结点,添加航班是在航班线性链表的尾插入新的结点,删除航班功能是航班线性链表的删除,查看已订票人信息是
航班线性链表中的已订票链表的遍历,查看等候订票人信息是航班线性链表中队列链表的遍历,系统中加入了文件的保存与读取,方便信息的保存与读取,最终完成该系统。
3.3 系统的流程图
根据上述描述,给出系统的大体的总设计图,如下图所示:
第4章 系统详细设计
该系统主要运用动态线性链表和动态线性队列及其文件的保存与读取完成的。航班线性链表中每一个结点包含了航班号、飞机号、终点站名、起飞时间、乘员定额、票价、余票量,已订票人的信息的链表和排队候补人的信息的链表等内容。
4.1 系统的浏览所有航空的信息功能
浏览所有航班信息的功能是对航班线性链表的遍历,并显示每趟航班的信息,给乘客提高航班信息,以便乘客订购合适的航班票。其流程图如下:
图4.1 浏览所有航空信息功能流程图
4.2 系统的订票功能
办理订票业务就是在航班线性链表中的已订票链表的插入操作,录入客户输入的信息,为每位乘客办理订票业务。其流程图如下:
图4.2 订票功能流程图
4.3 系统的退票功能
办理退票业务就是在航班线性链表中的已订票链表的删除操作,根据乘客的姓名与航班的航班号在航班线性链表中的已订票链表找到该客户结点并删除,则
图4.3 退票功能流程图
4.4 系统的航班查询功能
航班查询就是在航班线性链表结点的查询操作,根据乘客输入的终点名在航空链表中查找与终点名相同的结点,并输出该结点的相关信息。其流程图如下:
图4.4 航班查询功能流程图
4.5 系统的等候订票人登记功能
等候订票人登记功能就是在航班线性先查找乘客需要订票的终点站名找到该航班飞机,然后在该结点的排队候补人的信息的队列链表末尾插入结点,等候订票人登记成功,当乘客登记的航班的余票满足队列里第一个人时,则系统自动给其完成订票功能。其流程图如下:
图4.5 等待订票人登记功能流程图
4.6 系统的添加航班功能
添加航班就是在航班线性链表的尾插入新的结点。航空公司的管理员根据需
图4.6 添加功能流程图
4.7 系统的删除航班功能
删除航班功能就是航班线性链表的删除操作, 航空公司的管理员根据需求在在主链航班链表中删除不需要的航班结点。
图4.7 删除航班功能流程图
4.8 系统的查看已订票人信息功能
查看已订票人信息就是航班线性链表中每个结点中已订票链表的遍历,然后显示所有信息以便管理员管理。其流程图如下:
图4.8 查看已订票人信息功能流程图
4.9 系统的查看等待订票人信息功能
查看等候订票人信息就是航班线性链表中队列链表的遍历。其流程图如下:
图4.9 查看等待订票人信息功能流程图
第5章 系统测试
系统的主界面如下:
图5.1 系统主界面
5.1 添加航班功能测试
表5.1 添加航班功能 根据以上数据测试,其功能能得以实现。
5.2 浏览所有航班信息功能测试
表5.2 浏览所有航班信息功能
根据以上数据测试,其功能能得以实现。
5.3 办理订票业务功能测试
先根据客户所要到的终点站名显示所有到该地的所有航班给乘客看,例如: 输入 表5.3 订票输入终点站名
则显示以下:
表5.4 显示所到地的所有航班
表5.5 客户输入相关信息
根据以上数据测试,其功能能得以实现。
5.4 查看已订票人信息功能测试
表5.6 查看已订票人信息
根据以上数据测试,其功能能得以实现
5.5 等待订票人登记功能测试
当乘客所要定票的航班余票不符合乘客的需求时,则为乘客办理等待订票人登记。
表5.7 等待订票人登记信息
根据以上数据测试,其功能能得以实现。
5.6 查看等待订票人信息功能测试
管理员通过密码进入此功能查看等待订票人信息。
表5.8 等查看等待订票人信息
根据以上数据测试,其功能能得以实现。
5.7 办理退票人信息功能测试
当乘客办理退票人信息时,则该乘客办理的订票信息则全部被清除。此时当该余票量满足等待订票人的时,则自动为其办理订票。则此时查看已订票人信息时,则退票人的信息都被清除,而等待订票人办理订票后信息则出现在已订票人的信息中,如下表格:
表5.9 等待订票人登记信息
根据以上数据测试,其功能能得以实现。
5.8 航班查询功能测试
表5.10 航班查询功能
根据以上数据测试,其功能能得以实现。
5.9 删除航班功能测试
根据管理员输入终点站名,在航班链表中删除该航班,如输入终点站名:北京,则浏览所有航班的信息如下:
表5.11 删除航班功能
根据以上数据测试,其功能能得以实现。
第6章 总结
通过短暂的课程设计,我深有感触。在平时做的时候感觉没这么吃力,但是在我真正做设计时发现有很多错误,有的时候要解决一个错误会花上很多时间,在做的过程中,有很多错误意想不到,有的错误却犯得很幼稚,不过这样对自身的排错能力能得到很大的提高。
本次的课程设计之中我们还运用到了很多以前所学到的知识,比如动态链表、文件的使用等等,这也让我们加深了对以前所学知识的理解和运用,并且有时候在程序出错时,通过几小时甚至几天的时间去解决问题,让我们明白了自己在学习数据结构这门课的一些不足,上课时哪些问题听得不够仔细,知道自己的实践能力怎么样。因此,我们在学习上要更加的努力。这些细小错误让我深受感慨,它告诉了我编程细心重要,养成一个好的编程习惯更重要。这次项目的完整开发,让我有项目初步的思想,这次项目的开发让我把软件生成的流程从信息的收集,再写需求,再完成后台设计到编写代码,到测试,让我知道还有很多地方的不足。这次课程设计的时间很紧迫,再加上各方面的经验不足,也遇到很多问题,这个订票系统还有很多地方没有完善,希望老师能谅解。总的来说,这次课程设计对我很有帮助,我发觉老师上课讲的很多东西对我们都很有用,让我受到不少的启发,在此谢谢老师辛勤的教育。
经过这次课程设计,也使我学到了很多东西,得到了不少的成长,我对调试掌握的更加熟练了,学会了断点调试,可以清晰的了解程序运行的过程,改变了过去只调试不知道如何对照程序语言修改程序的坏习惯,对调试也有了新的认识,意识到了程序语言的规范性以及我们在编程时要有严谨的态度,同时在写程序时如果加一定量的注释,既增加了程序的可读性,也可以使自己在读程序时更容易。
通过这次的课程设计,在经过发现问题到解决问题的过程中,激发了我们对于在今后的学习兴趣,懂得了学习的重要性,了解到了理论指导和实践相结合的重要意义,学会了坚持,耐心和努力。坚定了学好数据结构的信心。
参考文献:
[1] 严蔚敏、吴伟民主编. 《数据结构》(C 语言版):清华大学出版社,2002. [2] 许卓群等著. 《数据结构与算法》:高等教育出版社 ,2004
[3] 严蔚敏、吴伟民. 数据结构习题集》(C 语言版), 清华大学出版社,2003.