航空客运订票系统实习报告
- 格式:doc
- 大小:529.50 KB
- 文档页数:7
课程设计
课程名称数据结构
题目名称____航空客运订票系统学生学院计算机学院
专业班级 07级软件工程(1)班学号**********
学生姓名伍健聪
指导教师温雪莲
2009 年 6 月20 日
题目:航空客运订票系统
一、需求分析
1.本演示程序中,航线信息以一个结构体数组line表示,包括终点站名、航班号、飞机号、飞行周日、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级)以及等候替补的客户名单(包括姓名、所需要票量)。
2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中的规定的运算命令;相应的输入数据和操作结果显示在其后。
3.程序执行的操作和功能包括:
(1)查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最后一天航班的日期和余票额;
(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需要重新询问客户要求。若需要,可登记排队候补;
(3)承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
4.测试数据
程序设定了三组航线数据,终点站分别shanghai、chongqin、changsha。另外程序提供了航线数据构建功能,可供航空公司工作人员添加或修改航线信息。
二、概要设计
为实现上述程序功能,应以结构体数组表示航线结点。
1.结构体数组的数据类型定义为:
struct 结构体名
{
成员表列
}变量名表列;
2.本程序包含三个模块:
1)主程序模块:
Void main(){
初始化;
进入用户菜单界面;
do{
接受命令;
处理命令;
}while (“命令”==“退出”);
}
2)功能单元模块――实现程序功能;
3)结点结构的单元模块――定义结构体数组的结点结构。各模块之间的调用关系如下:
三、详细设计
1.元素类型、结点类型
2.初始化模块
3.各功能模块
4.主程序
5.函数的调用关系图反映了演示程序的层次结构:
四、调试分析
1.用户界面设计比较清楚,用户使用简明易懂。
2.由于刚开始设计算法时对程序结点认识不足,在替补客户名单元素只采用了结构体数组类型,没有使用强大功能的队列数据类型,导致最后实现退票功能时,替补客
户候补功能出错,无法实现。
3.程序初始化时,构建了三组航线信息,节省了运行时构造航线的时间,同时演示也较为方便。
4.在初始化航线信息的同时,程序提供了航线随时构建和修改功能,方便工作人员的管理,也为系统航线的升级的实现提供了基础。
5.在航线构建功能模块中,设置了开启密码和界面提醒,用以区分用户和工作人员的使用,同时提供了航线信息保护的安全性。
6.算法的时空分析
1)数据初始化模块中,清零数据的时间复杂度为O(n^3)。
2)构建航线模块中,只需要输入和输出航线信息,只占用存储空间,时间复杂度为
O(1)。
3)查询航线模块中,需要一一比较各条航线中的终点站名,而且采用各字符一一比
较算法,所以时间复杂度为O(n^2),不占用存储空间。
4)订票模块中,时间主要花费在比较各航线中航班号码与所输入的航班号的比较中,
时间复杂度为O(n)。
5)退票模块中,比较航班号与输入数,同时移动航线中订票客户名单的顺序,时间
复杂度为O(n),不占用存储空间。
7.本实习作业采用数据封装在结构体中,调用方便。整个程序分成三个层次:元素结构体结点,功能模块,主控模块。实现时调试顺利,具有较强的可读性。但同时订
票候补客户的功能没有完全实现,缺陷明显,是比较严重的设计错误。
五、用户手册
1.本程序的编译软件为Microsoft Visual C++ 6.0,执行文件为fly.exe。
2.进入演示程序后即显示用户菜单界面如下:
3.选项4为工作人员构建航线所用,需要输入密码,其他选项为用户功能,各输入命令的结束符为“回车符”。
4.接受其他命令后即执行相应操作和显示相应结果。
六、测试结果
执行查询命令’1’:查询航线信息
执行订票命令’2’:订票
执行退票命令’3’:退票
执行命令’4’:建立航线信息
系统提醒为工作人员专用功能,需要提示密码。依次输入航线各信息元素。即构建航线信息成功。
执行命令’5’:退出
七、附录
源程序文件名:Fly.C //主程序