航空订票系统

一、题目

1.录入功能

可以录入航班信息(如航班号,起飞降落时间,城市,座位数,票价)

2.查询功能

可以查询航班的各项信息(如根据航班号,起飞降落城市查找航班并显示航班信息)

3.修改删除功能

可以修改删除航班的信息

4.追加航线

在原本的航线之后可以继续添加航线方便操作

5订票功能

可以订票并且记录下乘客的相关信息(如姓名,身份证号码)

6.退票功能

可以退票并且记录乘客的相关信息以及退票信息

二、代码

#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<string.h>
using namespace std;typedef struct Node
{int hangbanhao;//航班号char qifeichengshi[10];//起飞城市char jiangluochengshi[10];//降落城市char qifeishijian[10];//起飞时间char jiangluoshijian[10];//降落时间int zuoweishu;//座位数int piaojia;//票价struct Node *next;//结点的指针域
}LNode,*LinkList;//定义航班信息 LinkList为指向结构体LNode的指针类型typedef struct CK
{char name[10];//乘客姓名char id[18];//乘客身份证号struct CK *next;//结点的指针域
}ck,*cke;//乘客信息void import(int n,LinkList &L)//录入航班函数: n为所要录入航班的数量:
{//建立一个带头结点的单链表LL=(LinkList)malloc(sizeof(LNode));//申请表空间L->next=NULL;//头结点的指针域置空LNode * tail=L;//将尾赋给尾指针,等价LinkList tail=L;for(int i=0; i<n; i++)//逐个赋值{LNode *p=(LinkList)malloc(sizeof(LNode));//创建一个p结点cout<<"请输入第"<<i+1<<"个航班的航班号 ";cin>>p->hangbanhao;cout<<"请输入第"<<i+1<<"个航班的起飞城市 ";cin>>p->qifeichengshi;cout<<"请输入第"<<i+1<<"个航班的降落城市 ";cin>>p->jiangluochengshi;cout<<"请输入第"<<i+1<<"个航班的起飞时间 ";cin>>p->qifeishijian;cout<<"请输入第"<<i+1<<"个航班的降落时间 ";cin>>p->jiangluoshijian;cout<<"请输入第"<<i+1<<"个航班的座位数 ";cin>>p->zuoweishu;cout<<"请输入第"<<i+1<<"个航班的票价";cin>>p->piaojia;p->next=NULL;//头结点的指针域置空tail->next=p;//将新结点插入尾部tail=p;//插入的结点变为尾结点,尾插法}
}
//写入本地文件,并读取输出显示void show_L(LinkList &L)//输出浏览机票信息
{ofstream out("out.txt");//实例化一个对象if (out.is_open()){LinkList p=L->next;while(p){out<<"航班号:";out<<p->hangbanhao;out<<" 起飞城市:";out <<p->qifeichengshi;out<<" 降落城市:";out <<p->jiangluochengshi;out<<" 起飞时间:";out <<p->qifeishijian;out<<" 降落时间:";out <<p->jiangluoshijian;out<<" 座位数:";out<<p->zuoweishu;out<<" 票价:";out<<p->piaojia;out<< "\n";//用于换行,是下面in.getline的关键p=p->next;}}out.close(); //写完char buffer[256];ifstream in("out.txt");if (! in.is_open()){ cout << "Error opening file"; exit (1); }while (!in.eof() ){in.getline (buffer,100);cout << buffer << endl;}
}//按航班号查找
LinkList GetElem_L(LinkList &L,int e)
{LinkList p=L->next;while(p){if(p->hangbanhao!=e)p=p->next;else return p;}return 0;
}//按航班起降城市查找
LinkList GetElem_Lc(LinkList &L,char qi[10],char ji[10])
{LinkList p=L->next;while(p){if(strcmp(p->qifeichengshi,qi)!=0||strcmp(p->jiangluochengshi,ji)!=0)p=p->next;else return p;}return 0;
}//删除
int ListDelete_L(LinkList &L,int e){LinkList p=L;while(p->next&&p->next->hangbanhao!=e){p=p->next;//直到查找到要删除的结点}if(!p->next)return 0;LinkList q=p->next;p->next=q->next;//p->next=p->next->next;free(q);//本题q是需要删除的结点return 1;
}//插入
int ListInsert_L(LinkList &L,int i){LinkList p=L;//i为插入的位置int j=0;while(p&&j<i-1){p=p->next;++j;}if(!p||j>i-1)return 0;LNode *s=(LinkList)malloc(sizeof(LNode));cout<<"输入航班号:";cin>>s->hangbanhao;cout<<"输入起飞城市:";cin>>s->qifeichengshi;cout<<"输入降落城市:";cin>>s->jiangluochengshi;cout<<"输入起飞时间:";cin>>s->qifeishijian;cout<<"输入降落时间:";cin>>s->jiangluoshijian;cout<<"输入座位数:";cin>>s->zuoweishu;cout<<"输入票价:";cin>>s->piaojia;s->next=p->next;p->next=s;//s->next=p->next;p->next=s;return 1;
}//修改
LinkList xiugai(LinkList &L,int yxg)
{LinkList q=L->next;while(q){if(q->hangbanhao!=yxg)q=q->next;else return q;}return 0;
}//乘客信息录入
void importren(int n,cke &C)//录入航班函数: n为所要录入航班的数量:
{C=(cke)malloc(sizeof(ck));C->next=NULL;ck*ta=C;for(int i=0; i<n; i++){ck *p=(cke)malloc(sizeof(ck));//就是创建一个p结点,关键就是写法,LNdoe *p;cout<<"请输入第"<<i+1<<"个乘客的姓名 ";cin>>p->name;cout<<"请输入第"<<i+1<<"个航班的身份证ID ";cin>>p->id;p->next=NULL;ta->next=p;ta=p;//尾插法,根据循环画图可知,tail指针始终在最后}
}//订票乘客信息和航班信息写入本地和读取
void show_dp(cke &C,LinkList &R)
{ofstream out("dinpiao.txt");//实例化一个对象if (out.is_open()){cke p=C->next;while(p){out<<"姓名 ";out<<p->name;out<<"  身份证ID ";out<<p->id;out<< "\n";//用于换行,是下面in.getline的关键p=p->next;}if(R->zuoweishu-1>=0){out<<"航班号:"<<R->hangbanhao;out<<" 起飞城市:"<<R->qifeichengshi;out<<" 降落城市:"<<R->jiangluochengshi;out<<" 起飞时间:"<<R->qifeishijian;out<<" 降落时间:"<<R->jiangluoshijian;out<<" 座位数:"<<R->zuoweishu-1;//订票之后座位数减一out<<" 票价:"<<R->piaojia;out<< "\n";//用于换行,是下面in.getline的关键out<<"订票成功";out<< "\n";//用于换行,是下面in.getline的关键}else{out<<"航班号:"<<R->hangbanhao;out<<" 起飞城市:"<<R->qifeichengshi;out<<" 降落城市:"<<R->jiangluochengshi;out<<" 起飞时间:"<<R->qifeishijian;out<<" 降落时间:"<<R->jiangluoshijian;out<<" 座位数:"<<R->zuoweishu;out<<" 票价:"<<R->piaojia;out<< "\n";//用于换行,是下面in.getline的关键out<<"该航班暂无票,请选择其他航班";out<< "\n";//用于换行,是下面in.getline的关键}}out.close(); //写完char buffer[256];ifstream in("dinpiao.txt");if (! in.is_open()){ cout << "Error opening file"; exit (1); }while (!in.eof() ){in.getline (buffer,100);cout << buffer << endl;}
}//退票乘客信息和航班信息写入本地和读取
void show_tp(cke &C,LinkList &R)
{ofstream out("dinpiao.txt");//实例化一个对象if (out.is_open()){cke p=C->next;while(p){out<<"姓名 ";out<<p->name;out<<"身份证ID ";out<<p->id;out<< "\n";//用于换行,是下面in.getline的关键p=p->next;}out<<"航班号 "<<R->hangbanhao;out<<" 起飞城市:"<<R->qifeichengshi;out<<" 降落城市:"<<R->jiangluochengshi;out<<" 起飞时间:"<<R->qifeishijian;out<<" 降落时间:"<<R->jiangluoshijian;out<<" 座位数:"<<R->zuoweishu;//退票之后不需要加1,用最初的座位数;out<<" 票价:"<<R->piaojia;out<< "\n";//用于换行,是下面in.getline的关键out<<"退票成功";out<< "\n";//用于换行,是下面in.getline的关键}out.close(); //写完char buffer[256];ifstream in("dinpiao.txt");if (! in.is_open()){ cout << "Error opening file"; exit (1); }while (!in.eof() ){in.getline (buffer,100);cout << buffer << endl;}
}void menu()//显示菜单界面
{cout<<"=================================欢迎使用航空订票系统==============================="<<endl;cout<<"*                                1请先录入航班信息                                 *"<<endl;cout<<"*                                2根据航班号查找航班                               *"<<endl;cout<<"*                                3根据起降城市查找航班                             *"<<endl;cout<<"*                                4删除航班                                         *"<<endl;cout<<"*                                5插入航班                                         *"<<endl;cout<<"*                                6修改航班                                         *"<<endl;cout<<"*                                7订票录入乘客信息                                 *"<<endl;cout<<"*                                8退票                                             *"<<endl;cout<<"===================================================================================="<<endl;
}
int main()
{LinkList L;//L是指针 航班cke C;//乘客while(1){menu();int caozuo;cout<<"请选择操作";cin>>caozuo;switch(caozuo){case 1:
//创建int num;cout<<"请输入要录入的航班数:";cin>>num;cout<<endl;import(num,L);//录入航班函数: n为所要录入航班的数量:cout<<endl;cout<<"航班信息录入成功";cout<<endl<<endl;
//写入本地文件,并读取输出显示show_L(L);break;case 2:
//根据航班号查找int dchbh;//根据航班号查找printf("请输入待查航班号:");cin>>dchbh;LinkList p;p=GetElem_L(L,dchbh);//查找cout<<"待查航班为:";cout<<"航班号:"<<p->hangbanhao;cout<<" 起飞城市:"<<p->qifeichengshi;cout<<" 降落城市:"<<p->jiangluochengshi;cout<<" 起飞时间:"<<p->qifeishijian;cout<<" 降落时间:"<<p->jiangluoshijian;cout<<" 座位数:"<<p->zuoweishu;cout<<" 票价:"<<p->piaojia;cout<<endl<<endl;break;case 3:
//根据起降城市查找char qi[10];char ji[10];printf("请输入待查航班起降城市:");cout<<"输入起飞城市:";cin>>qi;cout<<"输入降落城市:";cin>>ji;LinkList J;J=GetElem_Lc(L,qi,ji);//查找cout<<"待查航班为:";cout<<"航班号:"<<J->hangbanhao;cout<<" 起飞城市:"<<J->qifeichengshi;cout<<" 降落城市:"<<J->jiangluochengshi;cout<<" 起飞时间:"<<J->qifeishijian;cout<<" 降落时间:"<<J->jiangluoshijian;cout<<" 座位数:"<<J->zuoweishu;cout<<" 票价:"<<J->piaojia;cout<<endl<<endl;break;case 4:
//删除int shanchu;printf("请输入要删除的航班号:");scanf("%d",&shanchu);ListDelete_L(L,shanchu);//删除show_L(L);cout<<endl<<endl;break;case 5:
//插入//这里位置始终在第一行ListInsert_L(L,1);//插入show_L(L);cout<<endl<<endl;break;case 6:
//修改printf("请输入要修改的航班号:");int yxg;cin>>yxg;LinkList q;q=xiugai(L,yxg);//修改cout<<"航班号修改为:";cin>>q->hangbanhao;cout<<"航班起飞城市修改为:";cin>>q->qifeichengshi;cout<<"航班降落城市修改为:";cin>>q->jiangluochengshi;cout<<"航班起飞时间修改为:";cin>>q->qifeishijian;cout<<"航班降落时间修改为:";cin>>q->jiangluoshijian;cout<<"航班座位数修改为:";cin>>q->zuoweishu;cout<<"航班票价修改为:";cin>>q->piaojia;show_L(L);cout<<endl<<endl;break;case 7:
//订票int renshu;cout<<"请选择您要订票的人数:";cin>>renshu;cout<<endl;importren(renshu,C);//录入乘客信息cout<<endl;cout<<"乘客信息录入成功";cout<<endl;int m;cout<<"请输入您要订的航班号:";cin>>m;cout<<endl<<endl;LinkList R;R=GetElem_L(L,m);//查找乘客订的航班show_dp(C,R);//写入本地文件,并读取输出显示cout<<endl<<endl;break;case 8:
//退票cout<<"请输入您要退票的航班号:";int yt;cin>>yt;cout<<endl<<endl;LinkList K;K=GetElem_L(L,yt);//查找乘客订的航班show_tp(C,K);//写入本地文件,并读取输出显示cout<<endl<<endl;break;}//swith的大括号}//while的大括号return 0;
}//主函数的大括号

**

三、运行结果

**1、录入航班信息

2、查找航班(根据航班号、起降城市查找航班)

3、删除航班

4、插入航班

5、修改航班

6、订票、退票

航空订票系统C++课程设计相关推荐

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

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

  2. cs结构航空订票系统java_VC++航空订票系统数据库设计-课程设计

    VC++航空订票系统数据库设计 目录 一  绪论 1 二 需求分析 1 三 概要设计 2 四 详细设计 4 五 调试分析 19 六 测试结果 20 七 用户使用说明 29 小结 29 参考文献 30 ...

  3. 基于ssh的航空订票系统-飞机订票系统javaweb-机票订购课程设计java代码(源码+数据库文件+文档)

    基于ssh的航空订票系统-飞机订票系统javaweb-机票订购java代码(源码+数据库文件+文档) 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 作者:IT跃迁谷 1.开发环境 开发语言: ...

  4. 数据结构课程设计【航空订票系统】

    /* * Copyright (c) 2017,烟台大学计算机学院 * All right reserved. * 文件名称:main.cpp * 作者:于嵩 * 完成日期:2017年12月22日 * ...

  5. 基于h5的航空订票系统的设计与实现

    1,项目介绍 基于 SpringBoot,h5 的航空订票系统系统拥有两种角色,分别为管理员和用户. 用户:机票浏览,机票查询,机票预定,新闻浏览,购票信息管理,留言信息管理 管理员:购票信息管理,机 ...

  6. 精品基于java开发的航空订票系统SSM

    <基于java开发的航空订票系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 使用技术: 开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1. ...

  7. 基于java开发的航空订票系统

    <基于java开发的航空订票系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 使用技术: 开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1. ...

  8. JAVA毕业设计航空订票系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计航空订票系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计航空订票系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  9. 基于JAVA航空订票系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA航空订票系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA航空订票系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  10. 基于android实现航空订票系统【100010286】

    研究意义 通过在 Android 系统,进行航空订票系统的设计与实现,充分运用所学的数据库.Java 语言.数据结构.操作系统.设计模式等知识.了解一个较完整的 Android 项目的构建过程,同时, ...

最新文章

  1. 单链表——判断一个单链表中是否有环
  2. Java路径问题最终解决方案使用演示
  3. 《Docker技术从入门到实践》第1,2章
  4. Position与localPosition的区别
  5. coderforces Gym 100803A/Aizu 1345/CSU 1536/UVALive 6832 Bit String Reordering(贪心证明缺)
  6. shiro整合ehcache Cannot resolve reference to bean 'securityManager' while setting bean property 'secur
  7. SQL Server中自定义函数:用指定的分隔符号分割字符串
  8. 什么是OneData?阿里数据中台实施方法论解读
  9. python3 collections模块 tree_python3上的ete3模块无法导入TreeStyle、faces、AttrFace、NodeSty...
  10. YNWA,同样是我们普通人的鞭策
  11. 苹果悄悄在硅谷买楼 以古希腊诸神命名 据说跟造车有关
  12. 详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilate()对图像进行腐蚀和膨胀操作
  13. Java中的Math函数常用方法都在这里
  14. 关于外卖骑手被困在算法里的问题解决方法浅析
  15. 问题 D: 上帝视角
  16. net-java-php-python-班级信息管理系统计算机毕业设计程序
  17. matlab gain使用,matlabgain模块
  18. 【免费】微软Surface Go出厂镜像百度网盘链接
  19. Android音频边录边放
  20. 操作系统原理田丽华,测试与作业

热门文章

  1. 分享个最终幻想勇气启示录脚本,手游上能一键推图自动升级
  2. vmospro启动黑屏_VMOSPro(com.vmos.pro) - 1.1.28 - 应用 - 酷安网
  3. 金庸群侠传苍龙逐日1.2-szlzw手机移植版攻略
  4. 复盘模型_如何运用MT4软件进行复盘,提高水平
  5. Tushare基本操作教程
  6. 中国环境统计年鉴(2000到2018年)
  7. 斗地主Java课程设计_Java课程设计---web版斗地主
  8. 唐宇迪学习笔记17:支持向量机
  9. Java根据关键字在PDF/Word插入图片
  10. Python坦克大战源代码