数据结构.航空客运订票系统

  • 格式:doc
  • 大小:231.50 KB
  • 文档页数:26

下载文档原格式

  / 26
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》

课程设计报告书

题目:航空客运订票系统

专业:

班级:

学号:

姓名:

完成时间:

一、需求分析

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={|ai-1,ai∈D,i=2,…,n}

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={|ai-1,ai∈D,i=2,…,n}

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";

相关主题