⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.txt

📁 航空订票系统
💻 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 + -