一、绪论
该航空客运订票系统主要是通过链表算法设计来实现其各项功能,其业务活动包括:查询航线、客票预定和办理退票等业务,这些业务分别是通过链表的查找、插入和删除等操作来实现的。
二、需求分析
编制一个航空客运订票系统,要求有查询航线,客票订制,办理退票等业务;
1,每条航线设计的信息有:终点站名,航班号,飞机号,飞行周日(星期几),乘员定额,余票量,已订票的客户名单(包括姓名、订票量、舱位等级)以及等待替补的客户名单(包括姓名,所需票量);
2,作为示意系统,全部的数据可只放在内存中;
3,系统能实现的操作和功能如下:
<1>查询航线:根据旅客提出的终点站名输出下列信息:航班号,飞机号,星期几飞行;
<2>承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班信息,若尚有余票,则为顾客办理订票业务,输出座位号;若余票不够,则询问顾客是否愿意进入等待名单,若愿意,登记排队候补;
<3>承办退票业务:根据客户提供的情况(航班)为其办理退票业务,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
从题目的基本要求可以看出,航线信息的储存、客户信息的储存、航线的查询、客票的预定、退票的办理业务等的操作,都类似于线性链表的建立、查找、插入、删除等的操作,所以我用了线性链表的算法设计来实现该系统的各项操作。
根据题目要求和实际情况可以将该程序的各项功能要求概括如下:
1、首先,定义三个线性链表,分别用来储存航线信息、已订票乘客的信息、因预定票额不够而成为替补乘客的信息。
2、其次,实现订票功能,若余票不够,则征求客户的同意后将其全部加入等待,即成为替补乘客,而不只是满足其中一部分的要求。
3、退票的操作原则和订票一样,只查看队头的人,若可以满足其全部要求则满足之,即全部退还机票,不只是退还其中的一个或几个。
4、为了便于查找信息,还赋予该系统一个显示功能,显示航线信息和乘客信息,其中,乘客信息又包括已订票的乘客信息和替补的乘客信息。
为实现上述功能,需要链表这个数据结构,其抽象数据类型设计如下:
ADT List{
数据对象:D={ai| ai ElemType,i=1,2,…,n,n≥0}
数据关系:R1={<ai-1, ai > ai-1, ai D ai-1<ai i=1,2,…,n,n≥0}
基本操作:
InitiList(&L)
操作结果:构造一个空的链表。
DestroyList(&L)
初始条件:链表存在:
操作结果:销毁本链表。
ListInsert(&L,e)
初始条件:循环表存在:
操作结果:在表尾处插入一个值为e的元素。
Listlength(L)
初始条件:链表存在:
操作结果:返回L的长度。
ListEmpty(L)
初始条件:链表存在:
操作结果:若本表为空,则返回true,否则返回false。
ListDelete(&L,*a,&e)
初始条件:链表存在:
操作结果:将L中a指针指向的元素删除,并用e返回其值.
}ADT List
5、系统中子程序及功能要求:
ModelMenu(char *s[],int Item) //菜单模板函数,为各个菜单制作模板
MainMenu()//主菜单函数,显示主菜单
Continue()//是否继续函数,征求客户意见是否要继续程序
ExitSystem()//系统退出函数,征求客户意见是否要退出程序
prefix(char *Item) //操作提示函数,提示用户操作信息
Find_Line(PFlight L,char *key) //航线查找函数,根据用户需求,查找指定的航线信息
Line_Add()//航线添加函数,由用户向系统中添加航线信息
Empty_Flight()//航线是否为空函数,检查航线是否为空
Line_See()//航线查看函数,查看当前系统中的航线信息
Display_Reserve()//订票乘客信息
Display_Replace()//候补乘客信息
Sub1Menu()//航线信息管理函数,增设、查看航线信息
Sub2Menu()//订票办理函数
Sub3Menu()//退票办理函数
Sub4Menu()//乘客管理子菜单函数
6、函数的调用关系图:若图片无法显示请联系QQ752018766,本论文免费,转发请注明源于www.751com.cn
Line_Add Line_See Continue prefix Empty_Flight
Find_Line
Display_Reserve Display_Replace
四 详细设计
#include <iostream.h>
#include <stdlib.h>
#include <process.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>
#define MAX 50
{
char Name[7]; //姓名
int Amount; //定票数
char Rank; //舱位等级
char Seat_No; //座位号
struct Replace *Next;
}Replace,*PReplace;
typedef struct Flight //航线信息
{
char Des_Name[10]; //终点站名
char Flight_No[6]; //航班号
char Plane_No[6]; //飞机号
char Week_Day; //飞行周日
int Customer_Amount; //乘员定额
int Free_Amount; //剩余票数
float Price[3]; //舱位等级的价格
Replace *ReplName; //该航班的候补乘客名单
Customer *CustName; //该航班的已定票乘客名单
struct Flight *Next; //指示下一航线结点
}Flight,*PFlight;
int Customer_Count=0; //所有航线的定票乘客总数
Flight *Head; //航线头指针
Flight *p2; //航线结点指针
Customer *Custp1[MAX]; //各条航线乘客结点指针
Replace *Replp1[MAX]; //各条航线候补结点指针
int IsEmpty=1; //是否有定票乘客
int IsReplace=1; //是否有候补乘客
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页