📄 1.txt
字号:
#include<iostream>
#include<string>//字符串函数处理头文件
#include<stdlib.h>//动态存储与释放的头文件
#define N 1000
using namespace std;
struct flight //定义结构体类型数组
{ int num; //航班号
char start[10]; //起飞时间
char over[10]; //到达时间
char startcity[20];//起飞城市
char arrivecity[20];//到达城市
int price; //航班票价
float discount; //票价折扣
int maxnum; //最多可容纳的乘客
int count; //机票数
char time[10]; //航行时间
}s[N];
void input(); //输入航班信息
void print(); //输出航班信息
void save(); //保存航班信息
void read(); //读取航班信息
void query(); //查询航班信息
void shanchu(); //删除航班信息
void booktiket();//订票
void tuipiao(); //退票
void xiugai(); //修改航班信息
int i;
int main()
{
int j;
do
{cout<<"\n"
"======================================================\n"
"\n"
" 欢迎进入航班查询系统 \n"
"\n"
" 1. 输入航班信息 \n"
" 2. 浏览航班信息 \n"
" 3. 修改航班信息 \n"
" 4. 查询航班信息 \n"
" 5. 删除航班信息 \n"
" 6. 订票信息 \n"
" 7. 退票信息 \n"
" 0. 退出系统 \n"
"\n"
"=====================================================\n";
cout<<" 请在0--7中选择您需要的信息以回车键结束 \n";
cin>>j;
if(j==1)
input(); //调用航班信息输入模块
if(j==2)
print(); //调用航班信息输出模块
if(j==3)
xiugai(); //调用修改航班信息模块
if(j==4)
query(); //调用查询航班信息模块
if(j==5)
shanchu(); //调用删除航班信息模块
if(j==6)
booktiket(); //调用订票模块
if(j==7)
tuipiao(); //调用退票模块
if(j==0)
break;
}while(j!='0'); //判断结束
cout<<"谢谢您的使用,再见!";
return 0;
}//主函数结束
int m=0;
void input()
{
cout<<"您选择的是输入航班信息,请输入航班信息:"<<endl;
cout<<"----------------------------------------"<<endl;
for(i=0;i<N;i++)
{ int x;
cout<<"请输入航班号:"<<endl;
cin>>s[i].num; //读取航班号
cout<<"请输入起飞时间:"<<endl;
cin>>s[i].start; //读取起飞时间
cout<<"请输入到达时间:"<<endl;
cin>>s[i].over; //读取到达时间
cout<<"请输入起飞城市:"<<endl;
cin>>s[i].startcity; //读取起飞城市
cout<<"请输入到达城市:"<<endl;
cin>>s[i].arrivecity;//读取到达城市
cout<<"请输入票价:"<<endl;
cin>>s[i].price; //读取票价信息
cout<<"请输入折扣:"<<endl;
cin>>s[i].discount; //读取折扣信息
cout<<"请输入准载乘客数:"<<endl;
cin>>s[i].maxnum; //读取准载人数信息
cout<<"请输入机票数(机票数为0结束输入): "<<endl;
cin>>s[i].count;//读取机票数
m++;
cout<<"第"<<m<<"个航班信息已输入是否要继续输入?1继续,0结束"<<endl;
cin>>x;
if(x==0) break;
else continue;
}
}
void save() //保存模块程序
{ FILE *fp=NULL,*fp1=NULL; //定义文件指针
if(fopen_s(&fp,"chen.dat","rb")!=0) // "wb"只写文件
//打开文件并判断是否出错
{cout<<"创建文件失败!"<<endl;//出错提示
getchar();
return;
}
if(fopen_s(&fp1,"hao.dat","rb")!=0) //打开文件并判断是否出错
{cout<<"创建文件失败!"<<endl;//出错提示
getchar();
return;
}
for(i=0;i<m;i++)
if(fwrite(&s[i],sizeof(struct flight),1,fp)==0)//向文件写入数据,并判断是否出错
cout<<"向文件输入数据失败!"<<endl;
fprintf(fp1,"%d",m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
void read()//从文件打印信息模块
{FILE *fp,*fp1; //定义文件指针
if(fopen_s(&fp,"chen.dat","rb")!=0)//打开文件,并判断是否出错
if(fopen_s(&fp1,"hao.dat","rb")!=0)//打开文件并判断是否出错
{cout<<"创建文件失败! "<<endl;//打印出错提示
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//关闭文件
for(i=0;i<m;i++)
fclose(fp);//关闭文件
}
void print() //输出航班信息
{ char y[10];
read(); // 调用文件读取函数
cout<<" 航班号 起飞时间 到达时间 起飞城市 到达城市 票价 折扣 准载人数 机票数"<<endl;
for(i=0;i<m;i++)
{cout<<s[i].num<<" "<<s[i].start<<" "<<s[i].over<<" "<<s[i].startcity<<" "<<s[i].arrivecity<<" "<<s[i].price<<" "<<s[i].discount<<" "<<s[i].maxnum<<" "<<s[i].count<<endl;
}
cout<<"请按任意键结束返回上层菜单:"<<endl;
cin>>y;
}
void query() //查询航班信息
{char name1[20];
char name2[20];
char ii[10];
int x;
char y;
int n;
int no;
do
{
cout<<"请选择查询方式:"<<endl;
cout<<"1.按航班号查找"<<endl;
cout<<"2.按终点站查找"<<endl;
cout<<"3.按航线查询"<<endl;
cout<<"0.返回 "<<endl;
cout<<"请在0-3中选择: "<<endl;
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;
}
read(); //调用读取函数
for(i=0;i<m;i++)
{ if(s[i].num==no)//按航班号查询
{
cout<<"查找航班信息成功"<<endl;
cout<<"航班号 起飞时间 到达时间 起飞城市 到达城市 票价 折扣 最大准载乘客数 机票数"<<endl;
cout<<s[i].num<<" "<<s[i].start<<" "<<s[i].over<<" "<<s[i].startcity<<" "<<s[i].arrivecity<<" "<<s[i].price<<" "<<s[i].discount<<" "<<s[i].maxnum<<" "<<s[i].count<<endl;
break;
}
if(strcmp(s[i].arrivecity,name1)==0&&strcmp(s[i].arrivecity,name2)==0)//按终点站起始站判断输出条件
{
cout<<"查找航班信息成功"<<endl;
cout<<"航班号 起飞时间 到达时间 起飞城市 到达城市 票价 折扣 最大准载乘客数 机票数"<<endl;
cout<<s[i].num<<" "<<s[i].start<<" "<<s[i].over<<" "<<s[i].startcity<<" "<<s[i].arrivecity<<" "<<s[i].price<<" "<<s[i].discount<<" "<<s[i].maxnum<<" "<<s[i].count<<endl;
break;
}
}
no=0; //将航班号赋值为0
cout<<"您没有需要的信息或查询完毕:"<<endl;
cout<<"是否继续查找?1继续,0结束"<<endl;
cin>>x;
if(x==0)
cout<<"按任意键返回上层菜单"<<endl;
cin>>y;
if(x==1) continue;
}while(strcmp(ii,"y")==0);//判断结束
}
void shanchu()//删除模块
{
char name1[20];
char name2[20];
char ii[10];
int num,n;
do
{
cout<<"请选择删除方式以回车键结束: "<<endl;//打印删除方式菜单
cout<<"1.按航班号删除 "<<endl;
cout<<"2.按航线删除 "<<endl;
cout<<"0.返回 "<<endl;
cout<<"请在0-2中选择以回车键结束: "<<endl;
cin>>n;//读取删除方式
if(n==0)
break; //跳出循环
switch(n)
{
case 1:
cout<<"请输入航班号: "<<endl;
cin>>num;//读取航班号
read();//调用读取函数
break;//跳出循环
case 2:
cout<<"请输入起飞城市: "<<endl;
cin>>name1;//读取起始站
cout<<"请输入终点站名称: "<<endl;
cin>>name2;//读取终点站
read();//调用读取函数
break;//跳出循环
}
for(i=0;i<m;i++)
cout<<"查找完毕或没有这个信息 "<<endl;
cout<<"是否继续删除 "<<endl;
cout<<"请键入y或n以回车键结束 "<<endl;
cin>>ii;//读取是否继续信息
save(); //调用读取函数
if(!strcmp(ii,"y")) //判断是否继续删除
cout<<"请按任意键以回车键结束返回上层菜单: "<<endl;
break;
}while(n!=0); //判断结束
}
void booktiket()//订票模块
{
int n;
char a[10];
do
{
query();//调用查询模块
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;
save();//调用保存函数
cout<<"订票成功! "<<endl;
break;
}
if(s[i].count<n)//判断是否出错
{
cout<<"请输入有效的机票数: "<<endl;
break;
}
cout<<"是否继续? 请输入y或n以回车键结束: "<<endl;//判断是否继续订票
cin>>a;
}while(!strcmp(a,"y"));//判断结束
}
void tuipiao()//退票模块
{
int n;
char a[10];
do
{
query();//调用查询模块
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;
save();//调用保存函数
cout<<"退票成功! "<<endl;
break;
}
if(s[i].count<n)//判断是否出错
{
cout<<"请输入有效的机票数: "<<endl;
break;
}
cout<<"是否继续? 请输入y或n以回车键结束: "<<endl;//判断是否继续订票
cin>>a;
}while(!strcmp(a,"y"));//判断结束
}
void xiugai() //修改模块
{
struct correct //定义结构体
{
int num;
char name1[20];
char name2[20];
char start[20];
char over[20];
float discount;
int maxnum;
int count;
int price;
}x[1];
char j[10];
int n;
read();//调用读取模块
do
{
cout<<"请选择修改方式: "<<endl;
cout<<"*1,按航班号修改: "<<endl;
cout<<"*2,按航线修改: "<<endl;
cout<<"请在1---2中修改以回车键结束: "<<endl;
cin>>n;//读取修改方式
switch(n)
{
case 1:cout<<"请输入航班号: "<<endl;
cin>>x[0].num;//读取航班号
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].arrivecity,x[0].name1)==0&&strcmp(s[i].arrivecity,x[0].name2)==0)//判断输出条件
{
cout<<"航班号 起飞时间 到达时间 起飞城市 到达城市 票价 折扣 最大准载乘客数 机票数"<<endl;
cout<<s[i].num<<" "<<s[i].start<<" "<<s[i].over<<" "<<s[i].startcity<<" "<<s[i].arrivecity<<" "<<s[i].price<<" "<<s[i].discount<<" "<<s[i].maxnum<<" "<<s[i].count<<endl;
break;
}
if(s[i].num==x[0].num)//判断输出条件
{
cout<<"航班号 起飞时间 到达时间 起飞城市 到达城市 票价 折扣 最大准载乘客数 机票数"<<endl;
cout<<s[i].num<<" "<<s[i].start<<" "<<s[i].over<<" "<<s[i].startcity<<" "<<s[i].arrivecity<<" "<<s[i].price<<" "<<s[i].discount<<" "<<s[i].maxnum<<" "<<s[i].count<<endl;
break;
}
}
x[0].num=0; //将结构体中的号为零
cout<<"请输入新航班号、 起飞时间 到达时间 起飞城市 到达城市 票价 折扣 最大准载乘客数 机票数: "<<endl;
cin>>x[0].num>>x[0].start>>x[0].over>>x[0].name1>>x[0].name2>>x[0].price>>x[0].discount>>x[0].maxnum>>x[0].count;//定义输入格式
s[i].num=x[0].num;//替换航班号
strcpy(s[i].startcity,x[0].name1);//替换其始站
strcpy(s[i].arrivecity,x[0].name2);//替换终点站
strcpy(s[i].start,x[0].start);//替换时间
strcpy(s[i].over,x[0].over);//替换时间
s[i].count=x[0].count;//替换机票数
save();//调用保存模块
cout<<"是否继续?请键入y或n以回车键结束: "<<endl;
cin>>j;
}while(strcmp(j,"y")==0); //判断结束
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -