#include<stdio.h> //标准输入、输出头文件
#include<string.h> //包含字符串函数处理头文件
#include<stdlib.h> //包含动态存储与释放函数头文件
#include<iostream.h> //基本输入输出流
#define N 10000
//===========================================储存飞机航班信息的结构体的定义===========================================
struct air //定义结构体数组
{
int num; //航班号
char start[20]; //起始站
char over[20]; //终点站
char time[20]; //起飞时间
int count; //飞机票数(可订)
}s[N];
//===================================================================================================================
char z[20]="ldl"; //密码设置
int i;
int m=0; //航班信息个数
//=============================================函数声明部分===============================================================
void input(); //输入航班信息
void print(); //输出航班信息
void search(); //查找航班信息
void shanchu(); //删除航班信息
void dingpiao(); //订票信息
void tuipiao(); //退票信息
void xiugai(); //修改信息
//===========================================================================================================================
//====================================================主函数(菜单选择项)===================================================
void main()
{
int j;
cout<<" 欢迎进入陈军飞机订票系统 "<<endl;
cout<<"================================================================================";
do
{
cout<<" 1.输入航班信息 "<<endl;
cout<<" 2.浏览航班信息 "<<endl;
cout<<" 3.修改航班信息 "<<endl;
cout<<" 4.查找航班信息 "<<endl;
cout<<" 5.删除航班信息 "<<endl;
cout<<" 6.订票信息 "<<endl;
cout<<" 7.退票信息 "<<endl;
cout<<" 0.退出 "<<endl;
cout<<"================================================================================ "<<endl;
cout<<"请在0-7中选择以回车键结束:";
cin>>j;
if(j==1) input(); //调用输入模块
if(j==2) print(); //调用打印模块
if(j==3) xiugai(); //调用修改模块
if(j==4) search(); //调用查找模块
if(j==5) shanchu(); //调用删除模块
if(j==6) dingpiao(); //调用订票模块
if(j==7) tuipiao(); //调用退票模块
if(j==0) break;
}while(j!='0'); //判断结束
cout<<"谢谢使用,再见! "<<endl;
}//主函数结束 ===========================================================================================================
//=============================================输入模块程序==============================================================
void input()
{
char f[20];
int y;
cout<<"请输入密码并以回车键结束: ";
cin>>f; //读取密码
if(strcmp(f,z)==0)
{
cout<<"请依次输入航班信息: "<<endl;
cout<<"--------------------------------------------------------------------------"<<endl;
for(i=0;i<N;i++)
{
cout<<"请输入航班号: "<<endl;
cin>>s[i].num; //读取航班号
cout<<"请输入起始站: "<<endl;
cin>>s[i].start;//读取起始站
cout<<"请输入终点站: "<<endl;
cin>>s[i].over;//读取终点站
cout<<"请输入时间: "<<endl;
cin>>s[i].time;//读取时间
cout<<"请输入机票数(机票数为0结束输入): "<<endl;
cin>>s[i].count;//读取机票数
m++;
cout<<"第"<<m<<"个信息已经输完是否继续?1继续, 0结束"<<endl;
cin>>y;
if(y==0) break;
else continue;
}
}
else
cout<<"输入密码错误!请检查您的密码是否正确!谢谢!再见! "<<endl;
}
//=====================================================================================================================
//================================================================输出模块============================
void print()
{
for(int aa=0;aa<m;aa++)
{
cout<<"航班号:/t"<<s[aa].num<<"/t起始站:/t"<<s[aa].start<<"/t终点站:/t"<<s[aa].over<<"/t时间:/t"<<s[aa].time<<"/t机票数:/t"<<s[aa].count<<endl;
}
}
void search()//=====================================================查询模块============================================
{
char name1[20]; //用来读取起始站名
char name2[20]; //用来读取终点站名
char ii[20];
int n,no; //n用来读取输入信息 no代表航班号
do
{
cout<<"请选择查找方式: "<<endl;//打印查询方式菜单
cout<<"1.按航班号查找 "<<endl;
cout<<"2.按终点站查找 "<<endl;
cout<<"3.按航线查找 "<<endl;
cout<<"0.返回 "<<endl;
cout<<"请在0-3中选择: "<<endl;
cout<<"按其他键以回车键结束返回主菜单: ";
cin>>n;//读取查找方式
if(n==0)
break;
switch(n)
{
case 1:
cout<<"请输入航班号: "<<endl;
cin>>no;//航班号
break;
case 2:
cout<<"请输入终点站名称: "<<endl;
cin>>name2;//读取终点站
break;
case 3:
cout<<"请输入起始站名称: "<<endl;
cin>>name1;//读取起始站
cout<<"请输入终点站名称: "<<endl;
cin>>name2;//终点站
break;
}
for(i=0;i<m;i++)
{
if(strcmp(s[i].over,name2)==0)//按终点站 判断输出条件
{
cout<<" 查找航班信息成功! "<<endl;
cout<<"航班号/t"<<s[i].num<<"/t起始站:/t"<<s[i].start<<"/t终点站:/t"<<s[i].over<<"/t时间:/t"<<s[i].time<<"/t机票数:/t"<<s[i].count<<endl;
break;
}
if(strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)//按终点站 起始站判断输出条件
{
cout<<" 查找航班信息成功! "<<endl;
cout<<"航班号/t"<<s[i].num<<"/t起始站:/t"<<s[i].start<<"/t终点站:/t"<<s[i].over<<"/t时间:/t"<<s[i].time<<"/t机票数:/t"<<s[i].count<<endl;
break;
}
if(s[i].num==no)//按航班号判断输出条件
{
cout<<" 查找航班信息成功! "<<endl;
cout<<"航班号/t"<<s[i].num<<"/t起始站:/t"<<s[i].start<<"/t终点站:/t"<<s[i].over<<"/t时间:/t"<<s[i].time<<"/t机票数:/t"<<s[i].count<<endl;
break;
}
}
no=0;//将航班号赋值为0
cout<<"没有您需要的信息或查找完毕: "<<endl;
cout<<"是否继续查找?请键入y或n以回车键结束 "<<endl;
cin>>ii;
}while(strcmp(ii,"y")==0);//判断结束
}
void shanchu()//=======================================删除模块=============================================#############====
{
char name1[20];
char name2[20];
char ii[20];//读取是否继续信息
char f[20];//设置密码
int no,n;
cout<<"请输入密码并以回车键结束: "<<endl;
cin>>f;//读取密码
if(strcmp(f,z)==0) //判断密码是否正确
{
do
{
cout<<"请选择删除以方式回车键结束: "<<endl;//打印删除方式菜单
cout<<"*1.按航班号删除 "<<endl;
cout<<"*2.按航线删除 "<<endl;
cout<<"*0.返回 "<<endl;
cout<<"请在0-2中选择以回车键结束: "<<endl;
cin>>n;//读取删除方式
if(n==0)
break; //跳出循环
int aa;
switch(n)
{
case 1:
cout<<"请输入航班号: "<<endl;
cin>>no;//读取航班号
for(aa=0;aa<m;aa++)
{
if(s[aa].num==no)
{
for(int xx=aa;xx<m-1;xx++)
{s[xx]=s[xx+1];}
m=m-1;
break;
}
}
break;//跳出循环
case 2:
cout<<"请输入起始站 名称: "<<endl;
cin>>name1;//读取起始站
cout<<"请输入终点站名称: "<<endl;
cin>>name2;//读取终点站
for(aa=0;aa<m;aa++)
{
if(strcmp(s[aa].start,name1)==0&&strcmp(s[aa].over,name2)==0)
{
for(int xx=aa;xx<m-1;xx++)
{s[xx]=s[xx+1];}
m=m-1;
break;
}
}
break;//跳出循环
}
cout<<"是否继续删除 "<<endl;
cout<<"请键入y或n以回车键结束 "<<endl;
cin>>ii;//读取是否继续信息
if(!strcmp(ii,"y")) //判断是否继续删除
cout<<"请按任意键以回车键结束返回上层菜单: "<<endl;
break;
}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); //判断结束
}
else
cout<<"对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见! "<<endl;
}
void dingpiao()//==================================================订票模块==================================================
{
int n;
char b[10];
search();//调用查询模块
do
{
cout<<"请输入您要订的机票数以回车键结束: "<<endl;
cin>>n;//读取所订机票数
if(n<0)
{
cout<<"请输入有效的机票数! "<<endl;//判断机票数是否出错
break;
}
if(s[i].count!=0&&s[i].count>=n)//判断是否出错
{
s[i].count=s[i].count-n;
cout<<"订票成功! "<<endl;
break;
}
if(s[i].count<n)//判断是否出错
{
cout<<"请输入有效的机票数: "<<endl;
break;
}
cout<<"是否继续? 请输入y或n以回车键结束: "<<endl;//判断是否继续订票
cin>>b;
}while(!strcmp(b,"y"));//判断结束
}
void tuipiao()//=====================================================退票模块==============================
{
int n;
char a[10];
search();//调用查询模块
do
{
cout<<"请输入您要退的机票数目: "<<endl;
cin>>n;//输入所退票数
if(n<0) //判断票数是否有效
cout<<"请输入有效的机票数! "<<endl;
s[i].count=s[i].count+n;
cout<<"退票成功! "<<endl;
cout<<"是否继续? 请键入y或n以回车键结束: "<<endl;//判断是否继续退票
cin>>a;
}while(!strcmp(a,"y"));//判断并跳出循环
getchar();
}
void xiugai() //================================================修改模块================================
{
struct xiu //定义结构体
{
int no;
char name1[20];
char name2[20];
char time[20];
int count;
}x[1];
char j[10];
char f[10];//设置密码
int n;
cout<<"请输入密码并以回车键结束: "<<endl;
cin>>f;//读取密码
if(strcmp(f,z)==0)//判断是否出错
{
do
{
cout<<"请选择修改方式: "<<endl;
cout<<"*1,按航班号修改: "<<endl;
cout<<"*2,按航线修改: "<<endl;
cout<<"请在1---2中修改以回车键结束: "<<endl;
cin>>n;//读取修改方式
switch(n)
{
case 1:cout<<"请输入航班号: "<<endl;
cin>>x[0].no;//读取航班号
break;
case 2:cout<<"请输入起始站: "<<endl;
cin>>x[0].name1;//读取起始站
cout<<"请输入终点站: ";
cin>>x[0].name2;//读取终点站
break;
}
for(i=0;i<m;i++)
{
if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)//判断输出条件
{
cout<<"航班号/t"<<s[i].num<<"/t起始站:/t"<<s[i].start<<"/t终点站:/t"<<s[i].over<<"/t时间:/t"<<s[i].time<<"/t机票数:/t"<<s[i].count<<endl;
break;
}
if(s[i].num==x[0].no)//判断输出条件
{
cout<<"航班号/t"<<s[i].num<<"/t起始站:/t"<<s[i].start<<"/t终点站:/t"<<s[i].over<<"/t时间:/t"<<s[i].time<<"/t机票数:/t"<<s[i].count<<endl;
break;
}
}
x[0].no=0; //将结构体中的号为零
cout<<"请输入新航班号 、起始站 、终点站 、时间、机票数: "<<endl;
cin>>x[0].no>>x[0].name1>>x[0].name2>>x[0].time>>x[0].count;//定义输入格式
s[i].num=x[0].no;//替换航班号
strcpy(s[i].start,x[0].name1);//替换其始站
strcpy(s[i].over,x[0].name2);//替换终点站
strcpy(s[i].time,x[0].time);//替换时间
s[i].count=x[0].count;//替换机票数
cout<<"是否继续?请键入y或n以回车键结束: "<<endl;
cin>>j;
}while(strcmp(j,"y")==0); //判断结束
}
else
cout<<"对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见! "<<endl;
}