航空客运订票系统
 问题描述:业务主要包括查询航线和客票预订的信息、客票预订和办理
退票等。
 基本要求:

  1. 系统必须能存储以下数据信息:
    航班信息:飞机抵达城市、航班号、飞机号、起降时间、票价、总
    座位数和剩余座位数、已订票的客户名单。
    客户信息:客户姓名、证件号、座位号。
  2. 系统能实现的功能:
    承办订票业务:根据客户提出的要求查询该航班信息,若满足要求,
    则为客户办理订票手续,输出座位号。
    退票业务:根据客户提供的航班号和订票数量办理退票手续。
    查询功能:查询航线信息(根据飞机的降落地点输出航班号、飞机
    好、起降时间、票价和剩余座位数)和客户预订信息(根据客户证件
    号输出航班号、飞机号和座位号)
  3. 采用链式存储结构
    #ifndef MAINFRAM_H_INCLUDED
    #define MAINFRAM_H_INCLUDED
    #define flight_max 5//最大航班数
    struct passanager //乘客信息结构体
    {
    char name[10];//名字
    char id[20];//身份证号
    float money; //资产
    int ifstu; //是否学生认证
    char airnum[10]; //航班号
    int sex; //性别,男1女0
    char phone[15]; //预留手机号
    };
    typedef struct passanager pass;
    struct airplane//航班信息
    {
    char num[10]; //航班号
    float price; //票价
    float discount; //折扣
    char start[10]; //起始地
    char arrive[10]; //目的地
    int count; //余票数
    int min,sec; //时间
    };
    typedef struct airplane air;
    int setdiscount(air a); //设定折扣函数,只需要传递air指针即可,包含这些函数的模块只能对航班操作
    void disairline(air a);//显示航班信息,顺序结构,顾客用
    bool stu_confrim(pass p); //学生认证函数,传递pass指针,只需对乘客操作
    #endif
    etails/78864499
    #include “mainFram.h”
    #include “linklist.h”
    #include <malloc.h>
    #include
    #include
    #include <conio.h>
    #include <string.h>
    #include
    #include <stdlib.h>
    #include “graph.h”
    using namespace std;
    /
    ********************************************************
  • 功能描述:主函数

  • 输入参数:air型指针,pass型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数:无

  • 返回值 :无

  • 其他说明:入口函数
    ************************************************************/
    void mainFram(DLinkList *L,pass *p,air *a,ALGraph *&G)
    {
    system(“cls”);//清屏
    system(“color 9f”);//改变界面颜色,管理颜色为红色背景,普通服务为蓝色背景
    cout<<endl<<endl;
    cout<<" ** * ** ****** * **** **** * * ******"<<endl;
    cout<<" ** *** ** * * * * * * * * * * “<<endl;
    cout<<” ** ** ** ** ***** * * * * * * * * ***** “<<endl;
    cout<<” ** ** ** ** * * * * * * * * * * “<<endl;
    cout<<” *** *** * * * * * * * * * * “<<endl;
    cout<<” * * ****** ****** **** **** * * * ******"<<endl;
    cout<<endl<<endl<<endl;
    cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆ TCH Airplane Synthetic System ☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    cout<<endl;
    cout<<" ┏━━━━━━━━━━━━━┓\n";
    cout<<" ┃ 航空客运订票综合系统 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃1.用户服务系统 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃2.管理员管理系统 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃3.关于我们 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃0.退出 ┃\n";
    cout<<" ┗━━━━━━━━━━━━━┛\n";
    cout<<“请输入数字实现功能:”<<endl;
    int n;
    cin>>n;
    switch(n)
    {
    case 1:
    mainFram_pa(L,p,a,G);//调用用户服务认证界面
    break;
    case 2:
    if(rootlog(L,p,a,G)) //由函数返回的布尔值继续进行
    {
    getch();
    mainFram_ma(L,p,a,G); //登录成功之后,进入管理主界面
    }
    else
    {
    cout<<“密码或用户名不对!登陆失败”<<endl;
    getch();
    }
    break;
    case 3:
    system(“cls”);//清屏
    cout<<endl<<endl<<endl;
    cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆ TCH Airplane Synthetic System ☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;//我的信息
    cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆ 航空客运订票综合系统 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆版本号:V1.0 联系邮箱:153199613@qq.com☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆ 烟台大学计算机与控制工程学院 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    getch();

      break;
    

    default:

      break;
    

    }
    }
    /***********************************************************

  • 功能描述:用户服务系统主界面

  • 输入参数:air型指针,pass型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数: 认证界面

  • 返回值 :无

  • 其他说明:入口函数
    ************************************************************/
    void mainFram_pa(DLinkList *L,pass *p,air *a,ALGraph *&G)
    {
    int i1;//此变量用于存储LocateElem返回的值,判断认证顾客在链表中的位置
    pass pa1;//用于传递参数
    char name1[10];
    system(“cls”);
    cout<<“请输入您的身份证号来验证身份:”<<endl;
    cin>>pa1.id;
    i1=LocateElem(L,1,pa1);
    if(i1!=0)
    {
    cout<<“已确认身份合法,请输入您的姓名完成身份鉴定。”<<endl<<“请输入您的用户名:”<<endl;
    cin>>name1;
    int j=0;
    DLinkList *c=L;
    while (j<i1)
    {
    j++;
    c=c->next;
    }
    strcpy(pa1.name,c->data.name);
    if(!strcmp(name1,pa1.name))
    {
    pass *wo;
    wo=&c->data;
    cout<<“鉴定成功,您的信息如下:”<<endl;
    mainFram_pa_su(L,wo,a,G);//compare success
    }
    else
    {
    cout<<“鉴定故障,原因可能是您输入的用户名与您的身份证号不匹配。\nPress any key to continue…”<<endl;
    getch();
    mainFram(L,p,a,G);
    }
    }
    else
    {
    cout<<“该身份证号不存在,您的信息没有在数据库中,如有需要请联系管理员及时添加。”<<endl;
    cout<<“Press any key to continue…”<<endl;
    getch();
    mainFram(L,p,a,G);
    }

}
/***********************************************************

  • 功能描述:用户服务系统主界面1

  • 输入参数:air型指针,pass型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数: 用户服务主界面

  • 返回值 :无

  • 其他说明:用户服务入口窗口
    ************************************************************/
    void mainFram_pa_su(DLinkList *L,pass *p, air *a,ALGraph *&G)//认证之后的p指针是认证时的顾客,这样进行操作时,就会有目的进行修改
    {
    system(“cls”);//清屏
    system(“color 9f”);//改变界面颜色
    cout<<endl<<endl;
    cout<<" ** * ** ****** * **** **** * * ******"<<endl;
    cout<<" ** *** ** * * * * * * * * * * “<<endl;
    cout<<” ** ** ** ** ***** * * * * * * * * ***** “<<endl;
    cout<<” ** ** ** ** * * * * * * * * * * “<<endl;
    cout<<” *** *** * * * * * * * * * * “<<endl;
    cout<<” * * ****** ****** **** **** * * * ******"<<endl;
    cout<<endl<<endl<<endl;
    cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆ TCH Airplane Servervice System ☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    cout<<endl;
    cout<<" ┏━━━━━━━━━━━━━┓\n";
    cout<<" ┃ 欢迎使用航空客运订票系统 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃1.购买机票 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃2.查询航班信息 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃3.学生认证 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃0.退出 ┃\n";
    cout<<" ┗━━━━━━━━━━━━━┛\n";
    cout<<“请输入数字实现功能:”<<endl;
    int me;
    cin>>me;
    switch(me)
    {
    case 0:
    break;
    case 1:
    system(“cls”);
    if(!purtic(p,a))//根据返回的布尔值进行下列程序
    {
    cout<<“购买失败,给自己节省点时间吧,看看别的航班,请不要购买没有余票的航班!”<<endl;
    getch();
    purtic(p,a);
    }
    mainFram_pa_su(L,p,a,G);
    break;
    case 2:
    system(“cls”);
    cout<<endl<<endl;
    cout<<"\t\t"<<“航班信息表”<<endl;
    disairline(a);
    getch();
    mainFram_pa_su(L,p,a,G);
    break;
    case 3:
    if(stu_confrim§)//此处进行学生认证
    {
    p->ifstu=1;
    cout<<“认证成功,您在购买机票的时候将享受半价优惠。\n”;
    getch();
    mainFram_pa_su(L,p,a,G);
    }
    else
    {
    cout<<“您所在的大学不存在或者未与我方合作,认证失败!\n”;
    getch();
    mainFram_pa_su(L,p,a,G);
    }
    break;

    }
    }
    /***********************************************************

  • 功能描述:学生认证函数

  • 输入参数:air型指针,pass型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数: 认证界面

  • 返回值 :认证结果

  • 其他说明:使用文件输入流
    ************************************************************/
    bool stu_confrim(pass *p)//学生认证函数
    {
    ifstream infile;
    infile.open(“G://大学.txt”); //此处文件保存学校信息,只有在文件中的学校才能获得认证资格
    if(!infile) cout<<“error”<<endl; //文件读入数据操作
    char school[20];
    char input[20];
    cout<<“请输入您所在的大学:”<<endl;
    cin>>input;
    while(infile.getline(school,sizeof(school))) //以循环的方式
    {
    if(!strcasecmp(school,input))
    return true;
    }
    return false;
    }

bool purtic(pass *p,air *a)//购票函数
{
system(“cls”);
int i;
cout<<endl<<endl;
cout<<"#####欢迎来到购票系统#####"<<endl;
cout<<“请您选择购票的航班”<<endl;
for(i=1;i<=flight_max;i++)
{
cout<<i<<"."<<(a+i-1)->num<<" “<<(a+i-1)->start<<”–>"<<(a+i-1)->arrive<<" 票数剩余:"<<(a+i-1)->count<<endl;
cout<<“单价:”<<(a+i-1)->price<<endl;
}
cout<<“输入0取消购买。”<<endl;
cin>>i;
if(i0)
{
return true;
}
if((a+i-1)->count!=0)
{
float in;//purchase sucess
if((strcmp(p->airnum,“无”))!=0)//判断该用户是否已经购买机票
{
cout<<“您已经买过票了,给别人个机会吧,有钱也不要任性啊!”<<endl;
return false;
}
if(p->ifstu1)//判断是否是在校学生
{

        cout<<"您是在校学生,享有半价优惠。"<<endl;in=p->money-(a+i-1)->price*0.5;if(in<0)//确保不赊账{cout<<"大哥,没钱就别出来混了,快去充点钱吧,要不连家都回不去了。\n";return false;}in=p->money;cout<<"购买成功,账单明细:";p->money=p->money-(a+i-1)->price*0.5;strcpy(p->airnum,(a+i-1)->num);printf("\n您购票前账户余额:%0.2f\n您花费的金额为:%0.2f\n您当前余额为:%0.2f\n",in,(a+i-1)->price,p->money);cout<<"Press any key to continue..."<<endl;(a+i-1)->count--;getch();return true;}in=p->money-(a+i-1)->price;if(in<0){cout<<"大哥,没钱就别出来混了,快去充点钱吧,要不连家都回不去了。\n";return false;}in=p->money;cout<<"购买成功,账单明细:";p->money=(p->money-(a+i-1)->price);strcpy(p->airnum,(a+i-1)->num);printf("\n您购票前账户余额:%0.2f\n您花费的金额为:%0.2f\n您当前余额为:%0.2f\n",in,(a+i-1)->price,p->money);cout<<"Press any key to continue..."<<endl;(a+i-1)->count--;getch();return true;}
elsereturn false;

}
/g管理界面系统/
/***********************************************************

  • 功能描述:管理系统主界面
  • 输入参数:air型指针,pass型指针,Dlinklist型指针,ALGRAPH型指针
  • 输出参数: 主界面
  • 返回值 :无
  • 其他说明:管理员入口函数
    ************************************************************/
    void mainFram_ma(DLinkList *&L,pass *p,air *a,ALGraph *&G)//管理界面
    {
    system(“cls”);//清屏
    system(“color 4f”);//改变界面颜色
    cout<<endl<<endl;
    cout<<" ** * ** ****** * **** **** * * ******"<<endl;
    cout<<" ** *** ** * * * * * * * * * * “<<endl;
    cout<<” ** ** ** ** ***** * * * * * * * * ***** “<<endl;
    cout<<” ** ** ** ** * * * * * * * * * * “<<endl;
    cout<<” *** *** * * * * * * * * * * “<<endl;
    cout<<” * * ****** ****** **** **** * * * ******"<<endl;
    cout<<endl<<endl<<endl;
    cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆ TCH Airplane Reservation System ☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    cout<<endl;
    cout<<" ┏━━━━━━━━━━━━━┓\n";
    cout<<" ┃ 航空订票服务高级管理系统 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃1.用户信息管理 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃2.设置票价优惠 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃3.管理航班信息 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃0.退出 ┃\n";
    cout<<" ┗━━━━━━━━━━━━━┛\n";
    cout<<“请输入数字实现功能:”<<endl;
    int m;
    cin>>m;
    switch(m)
    {
    case 1:
    chapass(L,p,a,G); //更改用户信息
    break;
    case 2:
    float pr;
    pr=setdiscount(a);//设置折扣
    if(pr!=0)
    {
    cout<<“打折之后的票价为:”<<endl;
    cout<<pr<<endl;
    cout<<endl<<endl<<“Press any key to continue…”<<endl;
    }
    else
    {
    cout<<“设置失败!”<<endl;
    }
    getch();
    mainFram_ma(L,p,a,G);
    break;
    case 3:
    maairline(a,L,G);//管理航班信息
    mainFram_ma(L,p,a,G);
    break;
    case 0:
    break;
    default:
    cout<<“您的输入有误,系统无法提供服务,按任意键返回。”<<endl;
    mainFram_ma(L,p,a,G);
    }

}
/***********************************************************

  • 功能描述:查看航班信息

  • 输入参数:air型指针

  • 输出参数: 航班的详细信息

  • 返回值 :无

  • 其他说明:入口函数
    **/
    void disairline(air a) //用户查看航班信息,表格形式,顺序结构
    {
    int i;
    printf("|航班号| | 票价 | |折扣| |起始地| |目的地| | 发车时间 | |余票|\n");
    for(i=0;i<flight_max;i++)
    {
    printf("|%-6s| |%-6.2f| |%-4.2f| |%-6s| |%-6s| | %-2d : %-2d | |%-4d|\n",(a+i)->num,(a+i)->price,(a+i)->discount,(a+i)->start,(a+i)->arrive,(a+i)->min,(a+i)->sec,(a+i)->count);
    }
    printf("\nPress any key to continue…");
    }
    /
    用户信息管理界面 /
    /

  • 功能描述:用户信息更改实现界面

  • 输入参数:air型指针,pass型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数: 选择功能

  • 返回值 :无

  • 其他说明:更改信息,实现增删改查
    ************************************************************/
    void chapass(DLinkList *L,pass *p,air *a,ALGraph *&G)//更改顾客信息
    {
    system(“cls”);//清屏
    cout<<endl<<endl<<endl;
    cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆ TCH Airplane Reservation System ☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    cout<<endl;
    cout<<" ┏━━━━━━━━━━━━━┓\n";
    cout<<" ┃ 用户信息管理界面 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃1.查看所有用户信息 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃2.添加一个用户 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃3.删除一个用户 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃4.更改用户信息 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃5.查找用户 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃0.退出 ┃\n";
    cout<<" ┗━━━━━━━━━━━━━┛\n";
    cout<<“请输入数字实现功能:”<<endl;
    int m;
    cin>>m;
    switch(m)
    {
    case 1:
    system(“cls”);//清屏
    DispList(L);
    getch();
    chapass(L,p,a,G);
    break;
    case 2:
    system(“cls”);
    int i;
    cout<<“请输入您要插入的位置:”<<endl;
    cin>>i;
    pass e;
    if(ListInsert(L,i,e))
    cout<<“信息添加成功,请按任意键返回。。。”<<endl;//插入一个节点
    else
    cout<<“添加失败,可能是超过最大名额限制或者插入的位置超过上限,请联系开发人员(17865569098)。”<<endl;
    getch();
    chapass(L,p,a,G);
    break;
    case 3:
    int i1;
    pass e1;
    system(“cls”);
    cout<<endl<<endl;
    cout<<“warning : Your action is sensitive operation !”<<endl<<“警告:您现在的操作为敏感操作,请慎重考虑后再行删除!”<<endl;
    cout<<“请选择删除模式”<<endl<<“1.按照身份证号删除”<<endl<<“2.按照预留手机号删除”<<endl;
    int mode;
    cin>>mode; //此处的mode变量为模式,将模式的值传递给LocateElem函数,进行相应的操作
    if(mode==1)
    {
    cout<<“请输入您要删除用户的身份证号:”<<endl;
    cin>>e1.id;
    i1=LocateElem(L,mode,e1); //查找一个节点
    if(i1!=0)
    {
    if(ListDelete(L,i1,e1)) //删除一个节点
    {
    cout<<“删除该用户信息成功!按任意键退回。。。”<<endl;
    getch();
    chapass(L,p,a,G);
    }
    else
    {
    cout<<“删除失败,没有找到该身份证号对应的用户。。。”<<endl;
    getch();
    chapass(L,p,a,G);
    }
    }

          else{cout<<"未找到符合条件的用户,查找失败。。。"<<endl;getch();chapass(L,p,a,G);}}else if(mode==2){cout<<"请输入您要删除用户的手机号:"<<endl;cin>>e1.phone;i1=LocateElem(L,mode,e1); //查找一个节点if(i1!=0){if(ListDelete(L,i1,e1)) //删除一个节点{cout<<"删除该用户信息成功!按任意键退回。。。"<<endl;getch();chapass(L,p,a,G);}else{cout<<"删除失败,没有找到该手机号对应的用户。。。"<<endl;getch();chapass(L,p,a,G);}}else{cout<<"未找到符合条件的用户,查找失败。。。"<<endl;getch();chapass(L,p,a,G);}}break;
    

    case 4:
    int i3;
    pass e3;
    system(“cls”);//清屏
    cout<<endl<<endl<<“warning : Your action is sensitive operation !”<<endl<<“警告:您现在的操作为敏感操作,请谨慎操作!”<<endl; //敏感操作要警告
    cout<<endl<<"####更改用户信息####"<<endl;
    cout<<“请输入您要更改的用户的身份证号:”<<endl;
    cin>>e3.id;
    i3=LocateElem(L,1,e3);
    if(i3!=0)
    {
    cout<<“查找成功,可以进行修改操作,请谨慎进行!”<<endl;
    if(ListInsert(L,i3,e3))
    {
    cout<<“修改成功,Press any key to continue…”<<endl;
    getch();
    chapass(L,p,a,G);
    }
    else
    {
    cout<<“修改失败,可能是您没有操作权限或者操作非法!”<<endl;
    getch();
    chapass(L,p,a,G);
    }
    }
    else
    {
    cout<<“未能找到符合条件的用户,Press any key to continue…”<<endl;
    getch();
    chapass(L,p,a,G);
    }
    break;
    case 5:
    system(“cls”);
    cout<<endl<<endl<<"#####查找用户信息#####"<<endl;
    int i2,mode2;
    pass e2;
    cout<<endl<<“请选择查找方式:”<<endl<<“1.按照身份证号查找”<<endl<<“2.按照预留手机号查找”<<endl;
    cin>>mode2;
    cout<<endl;

      if(mode2==1){cout<<"请输入您要找的用户身份证号:"<<endl;cin>>e2.id;i2=LocateElem(L,mode2,e2);if(i2!=0){cout<<"查找成功!以下是身份证为"<<e2.id<<"的信息:"<<endl;GetElem(L,i2,e2);cout<<"|姓名\t| |     身份证号     | |性别|  |  电话号码  | |航班号\t| |学生认证|";printf("\n");printf("%-10s",e2.name);printf(" %-20s",e2.id);if(e2.sex==1)cout<<"  男\t";elsecout<<"  女\t";printf("%-11s",e2.phone);printf("    %-12s",e2.airnum);if(e2.ifstu==1)cout<<"  是"<<"\t";elsecout<<"  否"<<"\t";cout<<endl<<endl<<"按任意键继续。。。"<<endl;getch();chapass(L,p,a,G);}else{cout<<"未能查到符合条件的用户信息,Press any key to continue..."<<endl;getch();chapass(L,p,a,G);}}else{cout<<"请输入您要找的手机号:"<<endl;cin>>e2.phone;i2=LocateElem(L,mode2,e2);if(i2!=0){cout<<"查找成功!以下是手机号为"<<e2.phone<<"的信息:"<<endl;GetElem(L,i2,e2);cout<<"|姓名\t| |     身份证号     | |性别|  |  电话号码  | |航班号\t| |学生认证|";printf("\n");printf("%-10s",e2.name);printf(" %-20s",e2.id);if(e2.sex==1)cout<<"  男\t";elsecout<<"  女\t";printf("%-11s",e2.phone);printf("    %-12s",e2.airnum);if(e2.ifstu==1)cout<<"  是"<<"\t";elsecout<<"  否"<<"\t";cout<<endl<<endl<<"按任意键继续。。。"<<endl;getch();chapass(L,p,a,G);}else{cout<<"未能查到符合条件的用户信息,Press any key to continue..."<<endl;getch();chapass(L,p,a,G);}}break;
    

    case 0:
    mainFram_ma(L,p,a,G);
    break;
    default:
    cout<<“您的指令有误,请按正确的格式输入!Press any key to continue!”<<endl;
    getch();
    chapass(L,p,a,G);
    break;
    }
    }
    /***********************************************************

  • 功能描述:设置折扣

  • 输入参数:air型指针与折扣

  • 输出参数:折扣后的票价

  • 返回值 :票价

  • 其他说明:入口函数
    ************************************************************/
    int setdiscount(air a)
    {
    int i;
    float dis;
    system(“cls”);
    cout<<“请输入您想设置优惠的航班号:”<<endl;
    char hang[10];
    cin>>hang;
    for(i=0;i<flight_max;i++)
    {
    if(!strcmp(((a+i)->num),hang))
    {
    cout<<“请输入您要设置的优惠:”<<endl;
    cin>>dis;
    (a+i)->discount=dis;
    cout<<“设置成功。”<<endl;
    (a+i)->price=(a+i)->price
    (a+i)->discount;
    getch();
    return (a+i)->price;
    }
    }
    cout<<“没有该航班。”<<endl;
    getch();
    return 0;

}
/航班管理函数/
/***********************************************************

  • 功能描述:管理航班信息函数

  • 输入参数:air型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数: 功能实现

  • 返回值 :无

  • 其他说明:入口函数
    ************************************************************/
    void maairline(air *a,struct DNode *L,ALGraph *&G)
    {
    system(“cls”);
    cout<<endl<<endl;
    cout<<" ** * ** ****** * **** **** * * ******"<<endl;
    cout<<" ** *** ** * * * * * * * * * * “<<endl;
    cout<<” ** ** ** ** ***** * * * * * * * * ***** “<<endl;
    cout<<” ** ** ** ** * * * * * * * * * * “<<endl;
    cout<<” *** *** * * * * * * * * * * “<<endl;
    cout<<” * * ****** ****** **** **** * * * ******"<<endl;
    cout<<endl<<endl<<endl;
    cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆ TCH Airplane Airline System ☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    cout<<endl;
    cout<<" ┏━━━━━━━━━━━━━┓\n";
    cout<<" ┃ 航空订票航班管理系统 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃1.更改航班信息 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃2.显示所有航班信息 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃0.退出 ┃\n";
    cout<<" ┗━━━━━━━━━━━━━┛\n";
    cout<<endl<<endl<<“请输入数字以实现功能:”<<endl;
    int me5;
    cin>>me5;
    switch(me5)
    {
    case 0:
    break;
    case 1:
    chairline(a,L,G);
    getch();
    break;
    case 2:
    DispAdj(G);
    getch();
    break;
    default:
    cout<<“您的指令有误,请重新输入。”<<endl;
    getch();
    maairline(a,L,G);
    break;

    }
    }
    /***********************************************************

  • 功能描述:更改航班信息界面

  • 输入参数:air型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数: 实现界面与修改实现

  • 返回值 :无

  • 其他说明:入口函数
    ************************************************************/
    void chairline(air *a,struct DNode *L,ALGraph *&G)
    {
    system(“cls”);
    cout<<endl<<endl;
    cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆ TCH Airplane Airline System ☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    cout<<endl;
    cout<<" ┏━━━━━━━━━━━━━┓\n";
    cout<<" ┃1.更改航班号 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃2.放票、收票 ┃\n";
    cout<<" ┃━━━━━━━━━━━━━┃\n";
    cout<<" ┃0.退出 ┃\n";
    cout<<" ┗━━━━━━━━━━━━━┛\n";
    cout<<endl<<endl<<“请输入数字以实现功能:”<<endl;
    int me4;
    cin>>me4;
    switch(me4)
    {
    case 0:
    break;
    case 1:
    system(“cls”);
    if(chline(a,L,G))
    cout<<“修改成功!按任意键继续!”<<endl;
    else
    cout<<“您输入的航班号不存在,修改失败!”<<endl;
    getch();
    chairline(a,L,G);
    break;
    case 2:
    system(“cls”);
    if(chticcount(a,L,G))
    cout<<“修改成功!按任意键继续!”<<endl;
    else
    cout<<“您输入的航班号不存在或者操作非法,修改失败!”<<endl;
    getch();
    chairline(a,L,G);
    break;
    default:
    cout<<“您的指令有误,请重新输入。”<<endl;
    getch();
    maairline(a,L,G);
    break;

    }
    }
    /变更航班号函数/
    /***********************************************************

  • 功能描述:变更航班号

  • 输入参数:air型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数: 认证界面

  • 返回值 :无

  • 其他说明:入口函数
    *****/
    bool chline(air a,struct DNode L,ALGraph &G)
    {
    system(“cls”);
    cout<<endl<<endl;
    cout<<“请输入您要更改的航班号:”<<endl;
    char hangn[10];
    cin>>hangn;
    int i;
    ArcNode p; //创建节点
    for (i=0; in; i++) //用循环进行遍历
    {
    p=G->adjlist[i].firstarc;
    while (p!=NULL)
    {
    if(!strcmp(G->adjlist[i].data.num,hangn))
    {
    char nnum[10];
    cout<<“请输入新的航班号:”<<endl;
    cin>>nnum;
    strcpy(G->adjlist[i].data.num,nnum);
    strcpy(a[i].num,nnum);
    cout<<“修改成功!”;
    return true;
    }
    p=p->nextarc;
    }
    }
    return false;
    }
    /
    变更航班票数函数
    /
    /

  • 功能描述:放票收票函数

  • 输入参数:air型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数: 实现界面

  • 返回值 :实现结果

  • 其他说明:
    *****/
    bool chticcount(air a,struct DNode L,ALGraph &G)
    {
    system(“cls”);
    cout<<endl<<endl;
    cout<<“请输入您要更改的航班号:”<<endl;
    char hangn[10];
    cin>>hangn;
    int i;
    ArcNode p;
    for (i=0; in; i++)
    {
    p=G->adjlist[i].firstarc;//给p初始值
    while (p!=NULL)
    {
    if(!strcmp(G->adjlist[i].data.num,hangn))
    {
    int ncount;
    cout<<“请选择模式:1.放票 2.收票”<<endl;
    cout<<“当前此航班剩余票数:”<adjlist[i].data.count<<endl;
    int sel;
    cin>>sel;
    if(sel1)
    {
    cout<<“请输入放票数量:”<<endl;
    cin>>sel;
    ncount=G->adjlist[i].data.count+sel; //条件判断值
    if(ncount>60)
    {
    cout<<“大哥,飞机不是货车,哪有那么多票啊!”<<endl;
    return false;
    }
    G->adjlist[i].data.count=ncount;//同步图结构的值与线性表中的一致!!!!重要
    a[i].count=ncount;
    cout<<“放票成功!”<<endl;
    return true;
    }
    else if(sel2)
    {
    cout<<“请输入收票数量:”<<endl;
    cin>>sel;
    ncount=G->adjlist[i].data.count-sel;
    if(ncount<0)
    {
    cout<<“大哥,票都收没了,别收了!”<<endl;
    return false;
    }
    G->adjlist[i].data.count=ncount;
    a[i].count=ncount;
    cout<<“收票成功!”<<endl;
    return true;
    }
    else
    {
    cout<<“error!错误输入!”<<endl;
    return false;
    }
    }
    p=p->nextarc;
    }
    }
    return false;
    }
    /
    管理员登录函数
    /
    /

  • 功能描述:管理员登录

  • 输入参数:air型指针,pass型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数: 认证界面

  • 返回值 :无

  • 其他说明:管理员入口函数
    ************************************************************/
    bool rootlog(struct DNode *L,pass *p,air *a,ALGraph *&G)
    {
    system(“cls”);
    char username[10]=“root”;
    char password[10]=“123456”;
    char username1[10];
    char password1[10];
    cout<<endl<<endl<<endl<<endl;
    cout<<" ********************************************"<<endl;
    cout<<" * *"<<endl;
    cout<<" * 欢迎进入管理登录系统 *"<<endl;
    cout<<" * *"<<endl;
    cout<<" ********************************************"<<endl;
    cout<<endl<<endl<<endl<<endl;
    cout<<" 请输入用户名:";
    cin>>username1;
    cout<<endl;
    cout<<" 请输入密码:";
    cin>>password1;
    if((!strcmp(username1,username))&& (!strcmp(password1,password))) //匹配固定密码
    {
    cout<<“登录成功!”<<endl;
    return true;
    }
    else
    return false;
    }

.linklist.h
#ifndef LINKLIST_H_INCLUDED
#define LINKLIST_H_INCLUDED
#include “mainFram.h”
#include “graph.h”
typedef struct passanager NewType;
typedef struct DNode //定义双链表结点类型
{
NewType data;
struct DNode *prior; //指向前驱结点
struct DNode *next; //指向后继结点
} DLinkList;
void CreateListF(DLinkList *&L,NewType a[],int n);//头插法建双链表
void CreateListR(DLinkList *&L,NewType a[],int n);//尾插法建双链表
void InitList(DLinkList *&L); //初始化双链表
void DestroyList(DLinkList *&L); //销毁双链表
bool ListEmpty(DLinkList *L); //判断链表是否为空
int ListLength(DLinkList *L); //求链表的长度
void DispList(DLinkList *L); //输出链表
bool GetElem(DLinkList *L,int i,NewType &e); //获取节点的值,并按要求输出输出
int LocateElem(DLinkList *L,int mode,NewType e); //查找一个节点
bool ListInsert(DLinkList *&L,int i,NewType e) ;//插入一个节点
bool ListDelete(DLinkList *&L,int i,NewType &e); //删除一个节点
#endif

linklist.cpp

#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#include
#include “linklist.h”
#include <string.h>
using namespace std;
/***********************************************************

  • 功能描述:头插法创建双链表
  • 输入参数:Dlinklist 型引用指针,NewType 型数组首地址,插入数量
  • 输出参数: 创建结果
  • 返回值 :无
  • 其他说明:无
    ****/
    void CreateListF(DLinkList &L,NewType a[],int n)
    //头插法建双链表
    {
    DLinkList s;
    int i;
    L=(DLinkList )malloc(sizeof(DLinkList)); //创建头结点
    L->prior=L->next=NULL;
    for (i=0; i<n; i++)
    {
    s=(DLinkList )malloc(sizeof(DLinkList));//创建新结点
    s->data=a[i];
    s->next=L->next; //将
    s插在原开始结点之前,头结点之后
    if (L->next!=NULL) L->next->prior=s;
    L->next=s;
    s->prior=L;
    }
    }
    /
  • 功能描述:尾插法创建双链表
  • 输入参数:Dlinklist 型引用指针,NewType 型数组首地址,插入数量
  • 输出参数: 创建结果
  • 返回值 :无
  • 其他说明:无
    ****/
    void CreateListR(DLinkList &L,NewType a[],int n)
    //尾插法建双链表
    {
    DLinkList s,r;
    int i;
    L=(DLinkList )malloc(sizeof(DLinkList)); //创建头结点
    L->prior=L->next=NULL;
    r=L; //r始终指向终端结点,开始时指向头结点
    for (i=0; i<n; i++)
    {
    s=(DLinkList )malloc(sizeof(DLinkList));//创建新结点
    //a[i].signinfo();
    s->data=a[i];
    r->next=s;
    s->prior=r; //将
    s插入
    r之后
    r=s;
    }
    r->next=NULL; //终端结点next域置为NULL
    }
    /
  • 功能描述:插入链表
  • 输入参数:Dlinklist 型引用指针
  • 输出参数:Dlinklist 型指针引用
  • 返回值 :无
  • 其他说明:无
    ***/
    void InitList(DLinkList &L)
    {
    L=(DLinkList )malloc(sizeof(DLinkList)); //创建头结点
    L->prior=L->next=NULL;
    }
    /
  • 功能描述:销毁链表
  • 输入参数:Dlinklist 型引用指针
  • 输出参数:Dlinklist 型指针引用
  • 返回值 :无
  • 其他说明:无
    ****/
    void DestroyList(DLinkList &L)
    {
    DLinkList p=L,q=p->next;
    while (q!=NULL)
    {
    free§;
    p=q;
    q=p->next;
    }
    free§;
    }
    /
  • 功能描述:判断链表是否为空
  • 输入参数:Dlinklist 型指针
  • 输出参数:
  • 返回值 :bool型变量表示结果
  • 其他说明:无
    **/
    bool ListEmpty(DLinkList L)
    {
    return(L->next==NULL);
    }
    /
  • 功能描述:求链表长度
  • 输入参数:Dlinklist 型指针
  • 输出参数:长度
  • 返回值 :int整形长度信息
  • 其他说明:无
    ***/
    int ListLength(DLinkList L)
    {
    DLinkList p=L;
    int i=0;
    while (p->next!=NULL)
    {
    i++;
    p=p->next;
    }
    return(i);
    }
    /
  • 功能描述:按格式显示链表内容
  • 输入参数:Dlinklist 型指针
  • 输出参数:显示列表
  • 返回值 :无
  • 其他说明:无
    ***/
    void DispList(DLinkList L)
    {
    DLinkList p=L->next;
    cout<<"|姓名\t| | 身份证号 | |性别| | 电话号码 | |航班号\t| |学生认证| |用户资产|";//按格式输出
    while (p!=NULL)
    {
    printf("\n");
    printf("%-10s",p->data.name);
    printf(" %-20s",p->data.id);
    if(p->data.sex1)
    cout<<" 男\t";
    else
    cout<<" 女\t";
    printf("%-11s",p->data.phone);
    printf(" %-12s",p->data.airnum);
    if(p->data.ifstu1)
    cout<<" 是";
    else
    cout<<" 否";
    printf(" %0.2f",p->data.money);//p->data.display(); //一定要回头改,将全局变量问题解决之后
    p=p->next;
    }
    printf("\n信息显示完毕,请按任意键继续。。。\n");
    getch();
    }
    /
  • 功能描述:获取节点值
  • 输入参数:Dlinklist 型指针,位置,NewType型引用结构体
  • 输出参数:无
  • 返回值 :bool型结果
  • 其他说明:无
    ***/
    bool GetElem(DLinkList L,int i,NewType &e)
    {
    int j=0;
    DLinkList p=L;
    while (j<i && p!=NULL)
    {
    j++;
    p=p->next;
    }
    if (p==NULL)
    return false;
    else
    {
    e=p->data;
    return true;
    }
    }
    /
  • 功能描述:获取用户位置
  • 输入参数:Dlinklist 型引用指针,模式,NewType 型
  • 输出参数:Dlinklist 型指针引用
  • 返回值 :int型位置
  • 其他说明:无
    ************************************************************/
    int LocateElem(DLinkList *L,int mode,NewType e)
    {
    int n=1;
    DLinkList *p=L->next;
    if(mode1)
    {
    while (p!=NULL && (strcmp(p->data.id,e.id)))
    {
    n++;
    p=p->next;
    }
    if (pNULL)
    return(0);
    else
    return(n);
    }
    else if(mode2)
    {
    while (p!=NULL && (strcmp(p->data.phone,e.phone)))
    {
    n++;
    p=p->next;
    }
    if (pNULL)
    return(0);
    else
    return(n);
    }
    else
    {
    cout<<“您输入的模式有误,不能完成您的要求。。。”<<endl;
    getch();
    return(0);
    }

}
bool ListInsert(DLinkList &L,int i,NewType e)
{
cout<<endl<<endl<<endl;
cout<<“请输入该用户的用户名:”<<endl;
cin>>e.name;
cout<<“请输入该用户的身份证号:”<<endl;
cin>>e.id;
cout<<“请输入该用户的缴存金额:”<<endl;
cin>>e.money;
cout<<“请输入该用户的性别(男为1,女为0):”<<endl;
cin>>e.sex;
cout<<“请输入该用户的预留手机号:”<<endl;
cin>>e.phone;
strcpy(e.airnum,“无”);
e.ifstu=0;
int j=0;
DLinkList p=L,s;
while (j<i-1 && p!=NULL)
{
j++;
p=p->next;
}
if (p==NULL) //未找到第i-1个结点
return false;
else //找到第i-1个结点
p
{
s=(DLinkList )malloc(sizeof(DLinkList)); //创建新结点s
s->data=e;
s->next=p->next; //将s插入到p之后
if (p->next!=NULL) p->next->prior=s;
s->prior=p;
p->next=s;
return true;
}
}
/***********************************************************

  • 功能描述:删除用户实现
  • 输入参数:Dlinklist 型引用指针 int型位置 NewType临时
  • 输出参数:删除后的链表
  • 返回值 :bool型结果
  • 其他说明:无
    ************************************************************/
    bool ListDelete(DLinkList &L,int i,NewType &e)
    {
    int j=0;
    DLinkList p=L,q;
    while (j<i-1 && p!=NULL)
    {
    j++;
    p=p->next;
    }
    if (p==NULL) //未找到第i-1个结点
    return false;
    else //找到第i-1个结点
    p
    {
    q=p->next; //q指向要删除的结点
    if (q==NULL)
    return false; //不存在第i个结点
    e=q->data;
    p->next=q->next; //从单链表中删除q结点
    if (p->next!=NULL) p->next->prior=p;
    free(q); //释放q结点
    return true;
    }}
    graph.h
    #ifndef GRAPH_H_INCLUDED
    #define GRAPH_H_INCLUDED
    #define MAXV 5 //最大顶点个数
    #define INF 32767 //INF表示∞
    #include “mainFram.h”
    #include “linklist.h”
    //0烟1德2聊3菏
    //0-1 0-2 1-3 2-3 3-0
    typedef char InfoType;

//以下定义邻接矩阵类型
typedef struct
{
int no; //顶点编号
InfoType info[10]; //顶点其他信息,在此存放带权图权值
} VertexType; //顶点类型

typedef struct //图的定义
{
int edges[MAXV][MAXV]; //邻接矩阵
int n,e; //顶点数,弧数
VertexType vexs[MAXV]; //存放顶点信息
} MGraph; //图的邻接矩阵类型

//以下定义邻接表类型
typedef struct ANode //弧的结点结构类型
{
int adjvex; //该弧的终点位置
struct ANode *nextarc; //指向下一条弧的指针
int info; //该弧的相关信息,这里用于存放权值
} ArcNode;

typedef struct airplane Vertex;

typedef struct Vnode //邻接表头结点的类型
{
Vertex data; //顶点信息
int count; //存放顶点入度,只在拓扑排序中用
ArcNode *firstarc; //指向第一条弧
} VNode;

typedef VNode AdjList[MAXV]; //AdjList是邻接表类型

typedef struct
{
AdjList adjlist; //邻接表
int n,e; //图中顶点数n和边数e
} ALGraph; //图的邻接表类型

//功能:由一个反映图中顶点邻接关系的二维数组,构造出用邻接矩阵存储的图
//参数:Arr - 数组名,由于形式参数为二维数组时必须给出每行的元素个数,在此将参数Arr声明为一维数组名(指向int的指针)
// n - 矩阵的阶数
// g - 要构造出来的邻接矩阵数据结构
void ArrayToList(int Arr, int n, ALGraph &,air &a); //用普通数组构造图的邻接表
void MatToList(MGraph g,ALGraph &G);//将邻接矩阵g转换成邻接表G
void DispAdj(ALGraph G);//输出邻接表G
/
航班信息管理函数声明
/
//此处函数传值为airline结构体类型指针,将存放航班信息的头指针传递过来,进而可以实现遍历操作,增删改查
//传值还有DNode型指针,由于使用别名会造成其他头文件无法识别,故此处用前向声明,解决此矛盾,此为顾客链表的头结点
//图结构ALGraph型指针,传递此参数便于对图结构存储的信息进行操作,要注意与airline的数据统一
void maairline(air a,struct DNode L,ALGraph &G);//航班管理界面,界面函数无需返回值
void chairline(air a,struct DNode L,ALGraph &G);//更改航班信息界面
bool chline(air a,struct DNode L,ALGraph &G);//更改航班号实现,返回布尔值判断是否修改成功
bool chticcount(air a,struct DNode L,ALGraph &G);//放票收票实现,返回布尔值判断是否修改成功
/
主界面函数声明
/
//此处函数传值多一个passanager型指针,将乘客的头结点传入可以,对乘客进行修改及其他操作
void mainFram(struct DNode L,pass p,air a,ALGraph &G); //系统主界面
void mainFram_ma(struct DNode &L,pass p,air a,ALGraph &G);//管理员管理主界面
void chapass(struct DNode L,pass p,air a,ALGraph &G); //用户信息管理界面
void mainFram_pa(struct DNode L,pass p,air a,ALGraph &G);//顾客服务主界面认证
void mainFram_pa_su(struct DNode L,pass p,air a,ALGraph &G);//顾客服务主界面
bool rootlog(struct DNode L,pass p,air a,ALGraph &G);//管理员登录函数,此处声明为布尔型,返回登录成功与否的状态
bool purtic(pass p,air a); //购票实现,返回布尔型值判断是否购票成功
#endif
graph.cpp
#include <stdio.h>
#include <malloc.h>
#include “graph.h”
#include
using namespace std;
//功能:由一个反映图中顶点邻接关系的二维数组,构造出用邻接矩阵存储的图
//参数:Arr - 数组名,由于形式参数为二维数组时必须给出每行的元素个数,在此将参数Arr声明为一维数组名(指向int的指针)
// n - 矩阵的阶数
// g - 要构造出来的邻接矩阵数据结构
/
****************

  • 功能描述:数组转邻接表

  • 输入参数:air型指针,pass型指针,Dlinklist型指针,ALGRAPH型指针

  • 输出参数: 认证界面

  • 返回值 :无

  • 其他说明:入口函数
    ************************************************************/
    void ArrayToList(int *Arr, int n, ALGraph &G, air &a)
    {
    int i,j,count=0; //count用于统计边数,即矩阵中非0元素个数
    ArcNode p;
    G=(ALGraph )malloc(sizeof(ALGraph));
    G->n=n;
    for (i=0; i<n; i++) //给邻接表中所有头节点的指针域置初值
    G->adjlist[i].firstarc=NULL;
    for (i=0; i<n; i++) //检查邻接矩阵中每个元素
    for (j=n-1; j>=0; j–)
    if (Arr[i
    n+j]!=0) //存在一条边,将Arr看作n×n的二维数组,Arr[i
    n+j]即是Arr[i][j]
    {
    p=(ArcNode )malloc(sizeof(ArcNode)); //创建一个节点p
    p->adjvex=j;
    p->info=Arr[i
    n+j];
    p->nextarc=G->adjlist[i].firstarc; //采用头插法插入
    p
    G->adjlist[i].firstarc=p;
    G->adjlist[i].data=a[i];
    }

    G->e=count;
    }
    /***********************************************************

  • 功能描述:

  • 输入参数:Dlinklist 型引用指针

  • 输出参数:Dlinklist 型指针引用

  • 返回值 :无

  • 其他说明:图算法库
    ************************************************************/
    void DispAdj(ALGraph *G)
    //输出邻接表G
    {
    cout<<endl<<endl;
    cout<<“当前的航班信息为:”<<endl;
    int i;
    ArcNode *p;
    for (i=0; in; i++)
    {
    p=G->adjlist[i].firstarc;
    printf("%5s: “,G->adjlist[i].data.start);//首先输出起始地点
    while (p!=NULL)
    {
    printf(”–>终止地:%s/里程:%dkm/余票:%d/票价:%0.2f “,G->adjlist[i].data.arrive,p->info,G->adjlist[i].data.count,G->adjlist[i].data.price);//按格式输出
    p=p->nextarc;//实现循环
    }
    printf(”\n");
    }

}
.main.cpp
#include
#include
#include <malloc.h>
#include <conio.h>
#include “mainFram.h”
#include “linklist.h”
#include “graph.h”
using namespace std;
/***********************************************************

  • 功能描述:主函数
  • 输入参数:无
  • 输出参数:无
  • 返回值 :int
  • 其他说明:给所有功能实现主界面函数传值,并初始化一些数据
    ************************************************************/
    int main()
    {
    ALGraph *G;//图结构传值使用该指针,ALGraph型
    int gr[4][4]= //此数组存储航班路线信息,弧权值为里程
    {
    {0,200,300,0},
    {0,0,0,50},
    {0,0,0,100},
    {700,0,0,0}
    };
    air *conver;//传递航班信息
    air a[flight_max]=
    {
    {“SD001”,200,0,“烟台”,“德州”,22,10},//航班信息SD001烟台–>德州,SD002德州–>菏泽,SD003德州–>烟台
    {“SD002”,200,0,“烟台”,“聊城”,17,55},
    {“SD003”,200,0,“聊城”,“菏泽”,01,16},
    {“SD004”,200,0,“德州”,“菏泽”,06,30},
    {“SD005”,200,0,“菏泽”,“烟台”,02,22},
    };//初始化赋值
    conver=a;
    ArrayToList(gr[0],4,G,conver); //将数组转换为邻接表形式,存储航班路线信息,其顶点信息为航班信息
    pass p[5]=
    {
    {“tch”,“371427199701252217”,300,0,“无”,1,“17865569098”},
    {“zx”,“372458199823236636”,1000,1,“无”,1,“17865569102”},
    {“hcj”,“375864645531154566”,600,1,“无”,0,“17865569110”},
    {“zqb”,“376545555578951323”,500,0,“无”,0,“17865569105”},
    {“zkw”,“371165456486453125”,1500,1,“无”,0,“17865569108”}
    };//初始化乘客链表
    DLinkList *l;
    InitList(l);
    CreateListR(l,p,5); //创建双链表
    while(1)
    mainFram(l,p,a,G);
    return 0;
    }

C++数据结构 航空客运订票系统相关推荐

  1. 【数据结构应用】航空客运订票系统

    目录 前言 一.作业要求介绍 二.各个函数的实现 1.头文件总结需要的功能 (1)结构体的定义 (2)各个功能的函数 2.各个函数的具体实现 (1)初始化 (2)打印航班信息表 (4)查找航班信息 ( ...

  2. C语言版-数据结构-期末课程设计-大作业(航空客运订票系统)附源码+实验文档

    设计题目:航空客运订票系统 本项目涉及到的知识:指针.结构体数组.链表.参数传递 [问题描述]航空客运订票的业务活动包含查询航线和客票预订信息,可以办理订.退票等,用c语言设计一个程序模拟实现. 一. ...

  3. 航空客运订票系统(C语言,软件用的DEV)

    这两天整理之前的作业代码,把自己一点一点敲出来的系统又看了一下,挑几个发出来供大家参考.想要源码.报告可以找我啦,代码的注释之前写的都是非常详细的! 但是不是无偿的啦(不坑,一杯奶茶喽,不做白嫖怪啦^ ...

  4. win API之航空客运订票系统(课程设计)

    这学期的数据结构课结了,上个周做了课程设计,在此总结下(晒一下) 先是老师给了选题,我选了航空客运订票系统这个选题. 这个系统定义的也很简单,就是两个单链表,一个航班的,一个顾客的,再对它俩进行遍历. ...

  5. 航空客运订票系统C语言程序设计,航空客运订票系统.doc

    洛 阳 理 工 学 院 课 程 设 计 报 告 课程名称 数据结构课程设计 设计题目 航空客运订票系统 专 课 程 设 计 任 务 书 设计题目:航空客运订票系统___________________ ...

  6. (附源码)ssm航空客运订票系统 毕业设计 141612

    SSM航空客运订票系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针 ...

  7. ssm航空客运订票系统 毕业设计源码141612

    SSM航空客运订票系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针 ...

  8. C++课程设计:航空客运订票系统

    航空客运订票系统 选题背景 方案论证 过程论述 运行结果 完整代码 选题背景 ①背景: 现在人们更多的使用飞机作为出行交通工具,因此机票票务市场也在快速发展.国内外航空事业在飞速发展,各航空公司对票务 ...

  9. 编写一个模拟航空客运定票系统的程序

    原文地址:编写一个模拟航空客运定票系统的程序作者:木木女 实习报告 题目:2.7 编写一个模拟航空客运定票系统的程序 班级: 姓名: 学号:完成日期: 一.  需求分析: 1.     程序需要模拟航 ...

最新文章

  1. App性能分析数据监控
  2. J2SE,J2ME,J2EE解释
  3. docker desktop一直starting不变化
  4. 计算机视觉与深度学习 | ORB特征匹配:基于OpenCV+Python(暴力匹配、FLANN)
  5. 第三只眼使用局域网版本还是网络版好_iOS13.4测试版使用3天后,发现3个优化,建议升级!...
  6. asp.net取消页面表单内文本输入框的Enter响应
  7. 使用手机模拟器与android操作系统
  8. Android电池驱动【转】
  9. 文字发光_PS教程来喽,看PS大神如何使用PS制作发光字效果,果断收藏一下
  10. java map格式化_字符串模板格式化输出map 值
  11. chrome浏览器设置思源黑体
  12. HTML页面的全屏显示-Fullscreen API
  13. android开发简历,轻松拿到了阿里Android高级开发工程师的offer
  14. IT6561 IT6563 IT6562 IT6564系列 DP转HDMI
  15. php ajax 考试倒计时,ajax实现在线考试倒计时
  16. php代码解决乱码问题
  17. 2016全域大数据应用论坛11位嘉宾核心观点
  18. 解决:idea中tomcat项目改名后,原名项目启动后是新名项目的内容
  19. 【HaaS Python硬件积木】土壤湿度传感器
  20. AD20使用技巧和笔记

热门文章

  1. mongod 启动 Illegal instruction (core dumped)
  2. import 出现 Illegal instruction错误
  3. 盘一盘 QuantLib 系列 2 - 生成日期表
  4. 企业私域直播可以应用于哪些场景?
  5. python中幂函数_解决python中的幂函数、指数函数问题
  6. android高德地图轨迹纠偏,RoutePath-(高德地图)根据定位点绘制路线+轨迹纠偏
  7. 末日启示:向死而生--《罗辑思维》第一季第一期
  8. 关于宏的bypass学习
  9. 关于促销活动页面测试的那些事儿
  10. ASCII码中不同字符分类、含义及相关技巧