数据结构课程设计(航空客运订票系统)

  • 格式:doc
  • 大小:78.50 KB
  • 文档页数:19

下载文档原格式

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

(大学计算机科学与信息学院贡献)

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

}