《数据结构课程设计(航空客运订票系统)》由会员分享,可在线阅读,更多相关《数据结构课程设计(航空客运订票系统)(18页珍藏版)》请在金锄头文库上搜索。
1、(贵州大学计算机科学与信息学院贡献) #include #include #include #include #include #include #define MAX 60 #define NULL 0 typedef struct Customer /*乘客信息*/ char Name8; /*姓名*/ int Amount; /*定票数*/ char Rank; /*舱位等级*/ int IDinfor; /*个人信息*/ struct Customer *Next; /*指向下一乘客结点*/ Customer; typedef struct Flight /*航线信息*/ char D
2、es_Name10; /*终点站名*/ char Flight_No6; /*航班号*/ char Plane_No6; /*飞机号*/ int Week_Day; /*飞行周日*/ int Customer_Amount; /*乘员定额*/ int Free_Amount; /*剩余票数*/ int Price3; /*舱位等级的价格*/ Customer *CustName; /*该航班的已定票乘客名单*/ Customer *ReplName; /*该航班的候补乘客名单*/ struct Flight *Next; /*指示下一航线结点*/ Flight,*PFlight; int Cu
3、stomer_Count=0; /*所有航线的定票乘客总数*/ Flight *Head; /*航线头指针*/ Flight *p2; /*航线结点指针*/ Customer *Custp1MAX; /*各条航线乘客结点指针*/ Customer *Replp1MAX; /*各条航线候补结点指针*/ int IsEmpty=1; /*是否有定票乘客*/ int IsReplace=1; /*是否有候补乘客*/ Customer *prior; /*满足要求的定票乘客的前结点,以作删除操作*/ int shouldsave=0; /*-询问是否继续的函数-*/ char Continue() c
4、har answer; while(1) printf(“nt 您是否想继续(Y/N)?“); scanf(“%s“, system(“cls“); if(answer=y|answer=Y) return y; else if(answer=n|answer=N) return n; else printf(“nt 输入有误,请重新输入!“); /*-操作出错函数-*/ void ErrorMess() printf(“nt 对不起,您的操作有误!“); getch(); /*-系统退出函数-*/ int ExitSystem() char answer; printf(“nt 您是否想要退
5、出系统(Y/N)?“); scanf(“%s“, 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 break; p1=p1-Next;/*指向下
6、一航班结点*/ return flag; int Find_Line(PFlight L,char *key,PFlight /*该标志位 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; /*-航班查找函数-*/ void Line_
7、search() Flight *p1; p1=Head; char Desname50;/查询终点站航班关键字 if(Head=NULL) printf(“nt 没有到达您想要的终点站的航班!“); getch(); return; printf(“nt 请输入终点站名:“); scanf(“%s“,Desname); printf(“nt 您所查询的航班的信息:n“); printf(“n_ _n“); while(p1!=NULL) if(strcmp(p1-Des_Name,Desname)=0) printf(“Des_Name Flight_No Plane_No Week_Day
8、 Cust_Num Free_Num 1_Price 2_Price 3_Pricen“); printf(“n%-9s%-10s%-9s%-9d%-9d%-9d%-8d%-8d%-8d“,p1-Des_Name,p1- Flight_No,p1-Plane_No,p1-Week_Day, p1-Customer_Amount,p1-Free_Amount,p1-Price0,p1-Price1,p1- Price2); p1=p1-Next; printf(“n_ _n“); Continue(); /*-航线添加函数-*/ void Line_Add() Flight *p1; /*建立临
9、时航线结点*/ while(1) if(Head=NULL)/*航线为空*/ p1=p2=new Flight; /*建立首个航线*/ Head=p2; else p1=new Flight; /*建立航线结点*/ p2-Next=p1; /*前一航线结点指向当前航班结点*/ p2=p1; /*保留当前航班结点地址*/ printf(“nt 添加新的航线!n“); printf(“nt 请输入终点站名:“); scanf(“%s“, while(1) /*数据合法性检验*/ printf(“nt 请输入唯一的航班号:“); scanf(“%s“, if(Find_Line(Head,p2-Fl
10、ight_No) /*存在航班号*/ printf(“nt 航班号已经存在!n“); else break; printf(“nt 请输入飞机号:“); scanf(“%s“, while(1) printf(“nt 请输入航班日期(请输入 17):“); scanf(“%d“, if(p2-Week_DayWeek_Day7) printf(“nt 输入日期有误,请重新输入!n“); else break; printf(“nt 请输入座位数量:“); scanf(“%d“, printf(“nt 请输入头等舱的价钱:“); scanf(“%d“, printf(“nt 请输入二等舱的价钱:
11、“); scanf(“%d“, printf(“nt 请输入三等舱的价钱:“); scanf(“%d“, p2-Free_Amount=p2-Customer_Amount; /*剩余票数与乘员定额相同*/ p2-CustName=NULL; /*该航线定票乘客头指针为空*/ p2-ReplName=NULL; /*初始候补名单为空 */ shouldsave=1; if(Continue()=n) p2-Next=NULL; /*航线的下一结点为空*/ return; /*-航线是否为空函数-*/ int Empty_Flight() if(Head=NULL) system(“cls“);
12、 printf(“nt 对不起,航线不存在,按任意键返回!“); getch(); return 1; else return 0; /*-航线查看函数-*/ void Line_See() system(“cls“); Flight *p1; p1=Head; if(Empty_Flight() /*航班线为空*/ return; printf(“nnt 航班信息:n“); printf(“n_ _n“); printf(“Des_Name Flight_No Plane_No Week_Day Cust_Num Free_Num 1_Price 2_Price 3_Pricen“); wh
13、ile(p1!=NULL) printf(“n%-9s%-10s%-9s%-9d%-9d%-9d%-8d%-8d%-8d“,p1-Des_Name,p1- Flight_No,p1-Plane_No,p1-Week_Day, p1-Customer_Amount,p1-Free_Amount,p1-Price0,p1-Price1,p1-Price2); p1=p1-Next; printf(“n_ _n“); printf(“nt 按任意键返回!n“); getch(); /*-航线管理菜单-*/ void LinemanageMenu() char c; system(“cls“); while(1) printf(“ntt 航线管理菜单:“); printf(“n_ _