#include <stdio.h>
#include <stdlib.h>
typedef struct date{
long long int Non;//航班号
char takeOffTime[20];//起飞时间
char landingTime[20];//降落时间
char startCity[40];//起飞城市
char endCity[40];//降落城市
float price;//飞机票价
float discount;//票价折扣
int seat;//座位数量
}Date;
typedef struct sfdate{
long long int sfz;//身份证号
char name[40];//姓名
int number;//购票数量
long long int Nno;//航班号
}Sfdate;
void enter(int x,Date* date){
//录入航班信息
for(int i=0;i<x;i++){
printf("航班号:");
scanf("%lld",&date[i].Non);
printf("起飞城市:");
scanf("%s",&date[i].startCity);
printf("起飞时间:");
scanf("%s",&date[i].takeOffTime);
printf("降落城市:");
scanf("%s",&date[i].endCity);
printf("降落时间:");
scanf("%s",&date[i].landingTime);
printf("飞机票价:");
scanf("%f",&date[i].price);
printf("票价折扣:");
scanf("%f",&date[i].discount);
printf("剩余座位:");
scanf("%d",&date[i].seat);
}
}
void inquire(int x,Date* date){
long long int a;
printf("请输入要查询的航班号:");
scanf("%lld",&a);
for(int i=0;i<x;i++){
if(a==date[i].Non){
printf("起飞城市:%s\n",date[i].startCity);
printf("起飞时间:%s\n",date[i].takeOffTime);
printf("降落城市:%s\n",date[i].endCity);
printf("降落时间:%s\n",date[i].landingTime);
printf("飞机票价:%f\n",date[i].price);
printf("票价折扣:%f\n",date[i].discount);
printf("剩余座位:%d\n",date[i].seat);
return;
}
}
printf("无相关航班");
}
void inquire2(int x,Date* date){
char start[40];
char end[40];
printf("出发地点:");
scanf("%s",start);
printf("到站地点:");
scanf("%s",end);
for(int i=0;i<x;i++){
int a=strcmp(date[i].startCity,start);
int b=strcmp(date[i].endCity,end);
if( a==0&& b==0 ){
printf("航班号:%lld\n",date[i].Non);
printf("起飞时间:%s\n",date[i].takeOffTime);
printf("降落时间:%s\n",date[i].landingTime);
printf("飞机票价:%f\n",date[i].price);
printf("票价折扣:%f\n",date[i].discount);
printf("剩余座位:%d\n",date[i].seat);
printf("----------------------------------------------------");
printf("\n");
}else{
printf("无相关航班");
}
}
}
void ticket(int x,int* count,Sfdate* sfdate,Date* date){
printf("请输入姓名:");
scanf("%s",&sfdate[*count].name);
printf("请输入身份证号:");
scanf("%lld",&sfdate[*count].sfz);
printf("购票数量:");
scanf("%d",&sfdate[*count].number);
printf("请输入要购买航班的航班号:");
scanf("%lld",&sfdate[*count].Nno);
for(int i=0;i<x;i++){
if(sfdate[*count].Nno==date[i].Non){
date[i].seat=date[i].seat+sfdate[i].number;
printf("购票成功");
*count=*count+sfdate[*count].number;
return;
}
}
printf("没有该航班");
}
void refundTicket(int x,int* count,Sfdate* sfdate,Date* date){
printf("请输入要退票航班的航班号:");
long long int a;
scanf("%lld",&a);
int b=0;
int c=0;
printf("请输入要退票的数目");
scanf("%d",&b);
for(int i=0;i<*count;i++){
if(a==sfdate[i].Nno){
c=sfdate[i].number-b;
if(c>=0){
for(int i=0;i<x;i++){
if(a==date[i].Non){
date[i].seat=date[i].seat+b;
*count=*count-b;
printf("退票成功");
return;
}else{printf("输入退票数目错误");return;}
}
}
}
}
printf("没有该航班购买信息");
}
void dateChange(int x,Date* date){
printf("请输入要更改航班信息的航班号:");
long long int a;
scanf("%lld",&a);
for(int i=0;i<x;i++){
if(a==date[i].Non){
printf("起飞城市:");
scanf("%s",&date[i].startCity);
printf("起飞时间:");
scanf("%s",&date[i].takeOffTime);
printf("降落城市:");
scanf("%s",&date[i].endCity);
printf("降落时间:");
scanf("%s",&date[i].landingTime);
printf("飞机票价:");
scanf("%f",&date[i].price);
printf("票价折扣:");
scanf("%f",&date[i].discount);
printf("剩余座位:");
scanf("%d",&date[i].seat);
printf("信息修改成功");
return;
}
}
printf("没有该航班信息");
}
int main()
{
Date *date;
date=(Date *)malloc(100*sizeof(Date));
Sfdate *sfdate;
sfdate=(Sfdate *)malloc(100000*sizeof(Sfdate));
int count=0;//记录买票人数
int x;
printf("请输入要录入的航班数量:");
scanf("%d",&x);
enter(x,date);//录入航班信息
//inquire(x,a,date);
int j;
while(1)
{
system("cls");//清屏
printf("\n\n\n\t\t\t 欢迎使用民航票务管理系统\n\n\n");
printf("\t\t\t***************************\n");
printf("\t\t\t* 主菜单 *\n");
printf("\t\t\t***************************\n\n\n");
printf("\t\t 1 航班号查找航班信息 2 出发地--抵达地查询\n\n");
printf("\t\t 3 订票 4 退票\n\n");
printf("\t\t 5 修改航班信息 6 退出系统 \n\n");
printf("\t\t 请选择[1/2/3/4/5/6]:\n");
scanf("%d",&j);
switch(j)
{
case 1:printf("\t\t\t请输入航班号:\n");inquire(x,date);break;
case 2:printf("\t\t\t请输入出发地和目的地\n");inquire2(x,date);break;
case 3:printf("\t\t\t\n");ticket(x,&count,sfdate,date);break;
case 4:printf("\t\t\t\n");refundTicket(x,&count,sfdate,date);break;
case 5:printf("\t\t\t\n");dateChange(x,date);break;
case 6:printf("\t\t\t退出系统\n");exit(0);
default:printf("\t\t\t输入错误,请重新输入\n");break;
}
getch();
}
free(date);
free(sfdate);
return 0;
}