//包含头文件 #include
//乘客信息结构体定义 typedef struct Customer {
char Name[8]; int IDinfor; int Amount; char Flight_No[6]; int Number; struct Customer *Next; }Customer;
//航班信息结构体定义 typedef struct Flight {
char Flight_No[6]; char Sta_Name[10]; char Des_Name[10]; char Sta_Time[10]; char Des_Time[10]; int Price; int Customer_Amount; int Free_Amount; int Discount; Customer *CustName; Customer *ReplName; struct Flight *Next; }Flight,*PFlight; //全局变量定义
int Customer_Count=0; Flight *Head=NULL; Flight *p2; Customer *Custp1[MAX]; Customer *Replp1[MAX]; int IsEmpty=1; int IsReplace=1; Customer *prior; int shouldsave=0;
//姓名 //证件号 //订票数 //航班号 //订单编号 //指向下一乘客结点 //航班号 //出发城市 //到达城市 //起飞时间 //到达时间 //价格 //总票数 //剩余票数 //折扣率 //已订票乘客名单 //候补乘客名单 //指示下一航班结点 //所有航班的订票总数 //航班头指针 //航班结点指针
//各航班乘客节点指针 //各航班候补节点指针 //是否有订票乘客 //是否有候补乘客
//满足要求的所有订票乘客的前节点,用于删除操作
//1.询问是否继续的函数 char Continue() { char answer; while(1) { printf(\您是否想继续(Y/N)?\ scanf(\ system(\ if(answer=='y'||answer=='Y') return 'y'; else if(answer=='n'||answer=='N') return 'n';
else printf(\输入有误,请重新输入!\ } }
//2.操作出错函数 void ErrorMess() {
printf(\对不起,您的输入有误!\ getch(); }
//3-1.核对航班函数
int Find_Line1(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;
}
//3-2.按航班号查询函数
int Find_Line2(PFlight L,char *key,PFlight *pp,int *Flight_No) { int flag=0; Flight *p1; p1=L; while(p1!=NULL) { if(strcmp(p1->Flight_No,key)==0) { flag=1; *pp=p1; break; } p1=p1->Next; if(p1!=NULL) Flight_No++; } return flag; }
//4.按目录地查询航班函数 void Line_search() { char Desname[50]; //终点站航班关键字 Flight *p1=Head; if(Head==NULL) {
printf(\没有达到您想要的终点站的航班!\ getch(); return; } printf(\请输入终点站名:\ scanf(\ printf(\您所查询的航班信息:\\n\ printf(\___________\\n\ while(p1!=NULL) { if(strcmp(p1->Des_Name,Desname)==0)
{
printf(\航班号 出发城市 到达城市 起飞时间 到达时间 价格 折扣率(%) 总票数 剩余票数\\n\ printf(\Des_Name, p1->Sta_Time,p1->Des_Time,p1->Price,p1->Discount,p1->Customer_Amount,p1->Free_Amount); } p1=p1->Next; } printf(\____________\\n\ Continue(); }
//5.航班添加函数 void Line_Add() { PFlight *p1; p1=&Head; while(1) { if(Head==NULL) { *p1=(PFlight)malloc(sizeof(Flight)); (*p1)->Next=NULL; p2=Head; } else { *p1=(PFlight)malloc(sizeof(Flight)); p2->Next=*p1; p2=*p1; } printf(\添加新的航班!\\n\ while(1) { printf(\请输入唯一的航班号:\ scanf(\ if(Find_Line1(Head,p2->Flight_No)) printf(\航班号已存在!\\n\
else break; }
printf(\请输入起始站名:\scanf(\
printf(\请输入终点站名:\scanf(\
printf(\请输入航班起飞时间:\scanf(\
printf(\请输入航班到达时间:\scanf(\printf(\请输入飞机票价:\scanf(\printf(\请输入折扣率:\scanf(\
printf(\请输入座位数量:\ scanf(\ p2->Free_Amount=p2->Customer_Amount; p2->CustName=NULL; p2->ReplName=NULL; shouldsave=1; if(Continue()=='n') { p2->Next=NULL; return; } } }
//6.判航班是否为空函数 int Empty_Flight() { if(Head==NULL) { system(\
printf(\对不起,航班不存在,按任意键返回!\ getch(); return 1; } else return 0; }
//7.航班查看函数