数据结构c语言课设报告航空客运订票系统.doc
《数据结构c语言课设报告航空客运订票系统.doc》由会员分享,可在线阅读,更多相关《数据结构c语言课设报告航空客运订票系统.doc(24页珍藏版)》请在悦读文库上搜索。
沈阳 理 工 大 学课 程 设 计课 程 数据结构课程设计 题 目 航班客运订票系统 院 系 信息工程与自动化学院 专业班级 通信工程102 姓 名 学 号 201210404225 指导教师 2015年12月30日目录一、设计任务与要求 11.1课程设计目的 11.2课程设计题目 11.3课程设计内容 11.4 实现提示 1二、需求分析 2三、概要设计 23.1系统结构图 23.2 算法设计 43.3 存储结构设计 4四、详细设计 64.1 数据类型定义 64.2 函数定义 74.3 函数流程图 74.4 程序的设计思想 12五、调试分析 125.1 程序测试 125.2 时间复杂度分析 135.3 算法的改进设想 13六、问题分析及课程设计的心得体会 14七、源程序 15- 21 - / 24一、设计任务与要求1.1 课程设计目的1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统。
2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用3. 学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧1.2课程设计题目1、 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名和所需数量)2、 系统能实现的操作和功能如下:1) 查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行和余票额;2) 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票量少余订票额,则需重新询问客户要求若需要,可登记排队候补;3) 承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
1.3 课程设计内容 航空客运订票的业务活动包括:查询航线、客票预订和办理退票等设计一个航空客运订票系统,以使上述业务可以借助计算机来完成 1.4 实现提示 两个客户名单分别由线性表和队列实现为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,以链表作为存储结构由于预约人数无法预计,队列也用链表作为存储结构整个系统需汇总各条航线的情况登录在一张线性表上,由于航线不变,可采用顺序存储结构,并按航班有序或终点站名有序每条航线是这张表上的一个记录,包含上述8个域,其中乘员名单域为指向成员名单链表的头指针,等候替补的客户名单域为分别指向对头和队尾的指针二、需求分析 本订票系统能够实现全部航线信息的浏览功能、订票客户信息的查询功能、单条航线查询功能、订票功能和退票功能 具体分析如下: a) 全部航线信息的浏览功能 浏览全部系统预设的航线信息,每条航线包含的信息有:终点站名、航班号、飞机号、飞行周日(星期几飞行)、乘员定额和余票量 b) 订票客户信息的查询功能根据输入的航班号查询该航线所有订票客户的信息,包括客户姓名、订票数额和舱位等级c) 单条航线查询功能 根据客户输入的终点站名查看该航线上所涉及的信息。
d) 订票功能根据客户提出的要求(航班号、订票数量)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则询问客户是否愿意排队等候,若愿意,系统则自动登记排队候补 e) 退票功能 根据客户提供的情况(航班、姓名),询问退票张数,然后为客户办理退票手续接着系统自动查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户 三、概要设计3.1 系统结构图(功能模块图) 航空订票系统 退 出 系 统 浏 览 航 线 信 息 浏 览 订 票 客 户 信 息 办 理 退 票 业 务 办 理 订 票 业 务 查 询 航 线图3-1航空订票系统系统结构图3.2 算法设计(每个模块的算法设计说明) (1) 浏览航线模块: 定义void display( struct airline *info),用info指向结构体struct airline中的每一个成员;调用list()函数输出全部航线信息。
(2) 浏览订票客户信息模块: 定义订票客户信息的结构体ord_ros,根据输入航班号调用find()函数寻找客户信息 (3) 查询航线模块: 顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功 (4) 订票模块: 查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功, 否则失败 (5) 退票模块: 输入要退票的乘客姓名,查找乘客资料的链表中是否有这位乘客,有则删去此节点,并在空位上加1,无则退票失败如果此时余票额大于等于候补客户的订票数量,那么候补客户订票成功3.3 存储结构设计 (1) 航班的信息:为了便于查找,航班情况的存储结构采用单链表,每个元素表示一个航班的情况,包括终点站名、航班号、飞机号、星期几、乘员定额和余票量,共六个数据项:终点站名航班号飞机号星期几乘员定额余票量 单链表如下:D3D2D1h 每个节点包含数据域和指针域:指针域数据域 图3-2 航班的存储结构C语言描述如下: 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;struct airline *start; (2)订票乘客的资料:为了便于插入和删除,同样采用单链表存储结构,每个数据元素包括姓名、订票量和舱位等级三个数据项: 乘客姓名 订票量 余票量 PtrPtrPtrPtr图3-3订票结点的创建C语言描述如下:typedef struct ord_ros{ char name[10];/*客户姓名*/ int ord_amt;/*订票量*/ int grade;/*舱位等级*/ struct ord_ros *next;}linklist;起飞城市抵达城市起飞时间抵达时间航班号票价剩余票量订票信息的指针*ptr自身指针*next航班信息结点(Airplane)客户姓名身份证号设置的密码订票数量自身指针*next订票信息结点(message)图3-4结点类型四、 详细设计4.1 数据类型定义 (1)已订票客户的结点: typedef struct ord_ros{ char name[10];/*客户姓名*/ int ord_amt;/*订票量*/ int grade;/*舱位等级*/ struct ord_ros *next;}linklist; (2)候补客户的结点: typedef struct wat_ros{ char name[10];/*姓名*/ int req_amt;/*订票量*/ struct wat_ros *next;}qnode,*qptr;typedef struct pqueue /*定义单链队列*/{ qptr front;/*等候替补客户名单域的头指针*/ qptr rear;/*等候替补客户名单域的尾指针*/}linkqueue; (3)航班结点: 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;struct airline *start;4.2 函数定义 (1)航线输出函数 。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 语言 报告 航空 客运 订票 系统
