数据结构课程设计(航空客运订票系统)
- 格式:doc
- 大小:78.50 KB
- 文档页数:19
(大学计算机科学与信息学院贡献)
#include
#include
#include
#include
#include
#include
#define MAX 60
#define NULL 0
typedef struct Customer /*乘客信息*/
{
char Name[8]; /**/
int Amount; /*定票数*/
char Rank; /*舱位等级*/
int IDinfor; /*个人信息*/
struct Customer *Next; /*指向下一乘客结点*/
}Customer;
typedef struct Flight /*航线信息*/
{
char Des_Name[10]; /*终点站名*/
char Flight_No[6]; /*航班号*/
char Plane_No[6]; /*飞机号*/
int Week_Day; /*飞行周日*/
int Customer_Amount; /*乘员定额*/
int Free_Amount; /*剩余票数*/
int Price[3]; /*舱位等级的价格*/
Customer *CustName; /*该航班的已定票乘客*/
Customer *ReplName; /*该航班的候补乘客*/
struct Flight *Next; /*指示下一航线结点*/
}Flight,*PFlight;
int Customer_Count=0; /*所有航线的定票乘客总数*/ Flight *Head; /*航线头指针*/
Flight *p2; /*航线结点指针*/
Customer *Custp1[MAX]; /*各条航线乘客结点指针*/
Customer *Replp1[MAX]; /*各条航线候补结点指针*/
int IsEmpty=1; /*是否有定票乘客*/
int IsReplace=1; /*是否有候补乘客*/
Customer *prior; /*满足要求的定票乘客的前结点,以作删除操作*/ int shouldsave=0;
/*-------------询问是否继续的函数-------------*/
char Continue()
{
char answer;
while(1)
{
printf("\n\t 您是否想继续(Y/N)?");
scanf("%s",&answer);
system("cls");
if(answer=='y'||answer=='Y')
return 'y';
else if(answer=='n'||answer=='N')
return 'n';
else
printf("\n\t输入有误,请重新输入!");
}
}
/*---------------操作出错函数---------------*/
void ErrorMess()
{
printf("\n\t对不起,您的操作有误!");
getch();
}
/*--------------系统退出函数---------------*/
int ExitSystem()
{
char answer;
printf("\n\t 您是否想要退出系统(Y/N)?");
scanf("%s",&answer);
if(answer=='y'||answer=='Y')
return 1;
else
return 0;
}
/*--------------航线查找函数-------------*/
/*Find_Line()为重载函数*/
int Find_Line(PFlight L,char *key)/*核对航线是否唯一*/
{
int flag=0; /*该标志位0表示未找到相关信息,反之即找到,以下标志位同理*/ Flight *p1;
p1=L; /*赋航线首地址*/
if(p1==p2) /*首航线不作比较*/
return flag;
while(p1!=p2&&p1!=NULL) /*本航班号不纳入比较围,否则会一直提示航线不唯一*/ {
if(strcmp(p1->Flight_No,key)==0)
{
flag=1;
break;
}
p1=p1->Next;/*指向下一航班结点*/
}
return flag;
}
int Find_Line(PFlight L,char *key,PFlight &p2,int &Flight_No)/*航线查找函数*/ {
int flag=0; /*该标志位0表示未找到相关信息,反之即找到*/
Flight *p1;
p1=L; /*赋航线首结点*/
while(p1!=NULL)
{
if(strcmp(p1->Flight_No,key)==0)/*不包括当前航线*/
{
flag=1;
p2=p1;
break;
}
p1=p1->Next; /*指向下一航班结点*/
if(p1!=NULL) /*遇结束符不作统计围*/
Flight_No++;
}
return flag;
}