资源简介
1. 查询航线:根据旅客提出的终点名 输出下列信息:终点站名,航班号,飞机号,星期几,6. 乘员定额,余票量,已订票的客户名9.单(包括姓名,订票量,航船舱等级1 2或3)以及等候替补的客户名单姓名,需求量;
2.由于公司的发展添加航线,增加对某个地区的航班,和取消对某地的航班。
3.承办订票义务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若尚有余票,则客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需要重新询问客户要求。若需要,可登记排队后补;
4.承办退票业务:根据客户提供的情况为客户办理退票手续,然后查询该航班是否有人排队后补,30.首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问排在他后面的候补客户。
代码片段和文件信息
#include
#include
#include
#include
#include
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAXSIZE 2
#define MAXCHAR 20
typedef struct PassengerNode
{
char name[MAXCHAR];
char ID[MAXCHAR];
char phoneno[20];
int booknum;
int grade;
PassengerNode *next;
}PassengerNode; //已订票客户结点
typedef struct
{
PassengerNode *passenger;
int length; //单链表的长度
}passengerlink; //已订票客户单链表(按ID有序)
typedef struct WPassengerNode
{
char name[20]; //待订票客户的姓名
char ID[20]; //待订票客户的身份证号
char phoneno[20]; //待订票客户电话号码
int neednum; //待订票客户机票需求量
WPassengerNode *next;
}WPassengerNode; //待订票客户结点
typedef struct
{
WPassengerNode *front;
WPassengerNode *rear;
}WpassengerQueue; //侍订票客户链队列
typedef struct flightnode
{
char cityname[20]; //终点站名称
int number; //航班编号
char flight_no[20]; //飞机编号
int weekday; //星期几
int total; //飞机能载最大人数
int remain; //还余下多少张票
flightnode *next;
WpassengerQueue npassenger; //侍订票客户链队列
passengerlink passenger; //已订票客户单链表
}flightnode;//航班结点
typedef struct
{
flightnode *flight;
int length;
}SqFlight;//航班顺序线性表
int InitList_Sq(SqFlight &LF) //构造一个空的线性表LF
{
LF.flight=(flightnode*)malloc(sizeof(flightnode));
if(!LF.flight)exit(ERROR);
LF.length=0;
LF.flight->next=NULL;
return(OK);
}//InitList_Sq
int InitList_pa(passengerlink &PA) //为客户链表建一个空链表
{
PA.passenger=(PassengerNode*)malloc(sizeof(PassengerNode));
if(!PA.passenger)exit(ERROR);
PA.length=0;
PA.passenger->next=NULL;
return(OK);
}//InitList_CL
int InitList_WPQ(WpassengerQueue &WPQ)//为待票客户建一个空的队列
{
WPQ.front=WPQ.rear=(WPassengerNode*)malloc(sizeof(WPassengerNode));
if(!WPQ.front)exit(ERROR);
WPQ.front->next=NULL;
return(OK);
}//InitList_WCQ
int InitFlightNode(SqFlight &LF) //对航线结点赋值并接到航班顺序表
{
flightnode *p;
passengerlink PAL1;
InitList_pa(PAL1);
WpassengerQueue WPQ1;
InitList_WPQ(WPQ1);
p=(flightnode*)malloc(sizeof(flightnode));
if(!p){printf(“无法找到指向航线结点的指针\n“);exit(ERROR);}
strcpy(p->cityname“连云港--北京“); //头结点赋值
p->passenger=PAL1;
strcpy(p->flight_no“LYG127“);
p->npassenger=WPQ1;
p->number=747;
p->remain=200;
p->total=200;
p->weekday=1;
p->next=LF.flight->next;
LF.flight->next=p;
p=(flightnode*)malloc(sizeof(flightnode));
if(!p){printf(“申请不到航线结点\n“);exit(ERROR);}
passengerlink PAL2;
InitList_pa(PAL2);
WpassengerQueue WPQ2;
InitList_WPQ(WPQ2);
strcpy(p->cityname“连云港--北京“); //结点1赋值
p->passenger=PAL2;
strcpy(p->flight_no“LYG225“);
p->npassenger=WPQ2;
p->number=380;
p->remain=180;
p->total=180;
p-
评论
共有 条评论