精品资料
实习报告
题目:设计一个包括查询航线、客票预订和办理退票等业务的航空客运订票系统
班级: 姓名: 学号: 完成日期:
一、需求分析
.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几) 、乘员定
额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级 1, 2或3)以及等候替补 的客户名单(包括姓名、所需票量);
.全部数据可以只放在内存中;
.系统能实现的操作和功能如下:
a)查询航线:
根据旅客提出的终点站名输出下列信息:航班号、飞机号、 星期几飞行,最近一天航班的
日期和余票额;
b)承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户
办理订票手续,
输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。若需要, 可登记排
队候补;
c)退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排
队候补,首先询
问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其 他排队候补的客户。
精品资料
精品资料
4. 测试数据:
查看航线信息
办理订票业务: 航班号: 5
订票数量: 5 姓名: 1
舱位等级: 1
办理订票业务: 航班号: 5
订票数量: 6 是否候票: y 姓名: 2
办理订票业务: 航班号: 5
订票数量: 3 是否候票: y 姓名: 3
: 航班号: 5 姓名: 1 6 .查询航线: 终点站名: haerbin 7 .查看已定票客户信息:航班号: 5
8 .查询航线: 终点站名: shanghai
详细测试数据见调试分析。
、概要设计
1 .本程序含有订票客户结构体,候补队列,航线结构体等
3 个主要模块。 Main 和菜
单 menu 也是重要模块。
客户结构采用链表存储, 主要操作有插入 insert ; 队列采用链队列存储, 主要操作有插入 add ,
航线结构采用顺序存储。
2.功能模块说明
( 1 )显示已初始化的全部航线信息利用 airlinelist() 函数。
( 2 )浏览已订票客户信息利用 Viewlink() 函数。
( 3 )根据客户提出的终点站名,调用 search ()函数输出航线信息。
( 4 ) order() 办理订票业务:根据客户提供的航班号进行查询航线信息,若客户订票额超过
乘员定票总额, 退出,若客户订票额末超过余票量,订票成功并登记信息, 在订票乘员名单
域中添加客户信息; 如果暂时没有票,询问客户是否要排队等侯, 如果是, 则在等候队列增
加该客户的订票信息。
精品资料
( 5 ) refund() 办理退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提供
的姓名到订票客户名单域进行查询。 退票成功后, 重新将航线名单域指向订票单链表的头指
针。 根据队列中从出的客户信息判断是否满足要求, 如果满足, 则将该客户的信息插入到乘
客信息链表中。
( 6 )退出本系统
三、详细设计
主程序中需要的全程量
#define FLIGHT_NUMBER 5 /* 给定 5 条航线 */
#define MAX 200 /* 给定座位号最大为 200*/
int seat[MAX]={0,0};/* 初始化每条航线 200 个座位号为 0 ,即未被预定 */
int seat_num[MAX]; /* 暂时存放已发给客户的座位号,为存放到客户名单域的媒介 */
链队列类型
(1) 结点类型
typedef struct QNode
{ char name[10];/* 等候替补客户姓名 */
int Wnumber;/* 订票量 */
struct QNode *next;
}QNode,*Queueptr;
( 2 )队列类型
typedef struct WaitQueue
{ Queueptr front; /* 等候替补客户名单域的头指针 */
Queueptr rear; /*等候替补客户名单域的属指针 */
精品资料
}LinkQueue; /*等候替补客户用链队列存储 */
LinkQueue AddQueue(LinkQueue q,char name[],int amount)
return q; 返回等候替补的客户名单域为分别指向队头和队尾的指针
.链表类型
typedef struct LNode /* 定义已定票客户的线性链表结构 */
{ char name[10];/* 客户姓名 */
航空客运订票系统实验报告 来自淘豆网m.daumloan.com转载请标明出处.