数据结构.航空客运订票系统
- 格式:doc
- 大小:231.50 KB
- 文档页数:26
《数据结构》
课程设计报告书
题目:航空客运订票系统
专业:
班级:
学号:
姓名:
完成时间:
一、需求分析
1.1问题描述
设计一个航空客运订票系统,为乘客提供各种航空客运信息服务。
1.2 基本要求
每条航线所涉及的信息有:终点站名、航班号、飞机号、星期几飞行、乘员定额、余票量、订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。
已订票客户和预订票客户名单可分别由线性表linklist和队列linkqueue来实现。为了插入和删除方便,两者皆采用链表作为存储结构。
系统需实现的操作和功能如下。
(1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票量。
(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。若需要,可登记排队候补。
(3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若退票能满足他人要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
二、概要设计
1.1 链表的抽象数据类型定义
ADT List
Data:D={ai|ai∈ElemtSet,i=1,2,…,n,n≥0}
Relation:R={
Operation:
airline *find_fin()//根据客户提出的终点站名输出航线信息
airline *find_air()//根据客户提出的航班号查询航班信息
airline *find_plane()//根据客户提出的飞机号查询航班信息
airline *find_date()//根据客户提出的飞行日期查询航班信息
void search()//根据客户提出的要求输出航线信息
void list()//全部航线的信息
void booklist()//订票客户名单
linklist *addlink(linklist*,int,char,int)//增加订票的客户信息
void sort_ticket()//按剩余票数排序
endADT
1.2 队列的抽象数据类型定义
ADT Queue
Data:D={ai|ai∈ElemtSet,i=1,2,…,n,n≥0}
Relation:R={
Operation:
linkqueue plusqueue(linkqueue,char,int)//增加排队等候的客户名单endADT
2、本程序包含三个模块
(1)主程序模块:
void main()
{初始化;
Do{
输入指令;
处理指令;
}while (指令!=”退出”);
}
(2)已买票的乘客的链表模块——实行对买票乘客信息的管理
(3)排队买票乘客的队列模快——实行对排队买票乘客信息的管理3、各模块之间的调用关系
三、详细设计
1、为简化问题,本系统假设只有五条航线
#define MAX 5//定义航线量的最大值
2、客户的存储信息:结点中保存的信息包括姓名,订票量,舱位等级
typedef struct book
{char name[10];//客户姓名
int amount;//订票量
int level;//舱位等级
book *next;
}linklist;
3、航班的存储信息:结点中保存的信息包括终点站名,航班号,飞机号,飞行日期,乘员定额,余票量。
struct airline
{char fin_name[10];//终点站名
char air_name[10];//航班号
char plane_name[10];//飞机号
char date[10];//飞行日期
int ticket_amount;//乘员定额
int ticket_left;//余票量
linklist*book;
linkqueue wait;
}linkinfo;
为了方便调用乘员的信息和排队等候的客户信息,设置指针分别指向乘员名单和等候替补的客户名单。
4、根据客户提出的要求查询航班信息
struct airline *find_fin()//根据客户提出的终点站名输出航线信息
{struct airline *info;
char name[10];
int i=0;
info=start;
cout<<"请输入终点站名:";
cin>>name;
while(i<=MAX)
{if(strcmp(name,info->fin_name)) {info++;i++;}
else break;
}
if(i>MAX)
cout<<"对不起,该航线未找到!\n";
else
{cout<<"终点站名"<<"\t"<<"航班号"<<"\t"<<"飞机号"<<"\t"<<"飞行日
期"<<"\t"<<"乘员定额"<<"\t"<<"余票量\n";