大一的时课设,这是简单的1.0版本,可供参考框架和思路。那时候喜欢用拼音做变量名函数名,介意的望海涵。
还不会上传资源,完整代码在最后。
功能全面升级的完整版我过几天会整理上来。

实现功能:

具体实现:
1、头文件、结构体和函数如下:

#include <iostream>
#include<cstring>     //包含字符串函数处理头文件
#include<process.h>       //包含access函数的头文件
#include<io.h>
#include<cstdlib>
#include<windows.h>
#include<conio.h>
#include<fstream>
#define N 9999          //定义最多的航班数
#define PRINT s[i].num<<"\t\t"<<s[i].start<<"\t\t"<<s[i].over<<"\t\t星期"<<s[i].time<<"\t\t"<<s[i].count<<endl   //宏定义输出格式
using namespace std;struct air          //定义航班信息结构体数组
{int num;               //定义航班号char start[20];          //航班起始站char over[20];           //终点站char time[10];         //飞行时间int count;                //机票数量
}s[N];int i,a,m=0;             //定义全局变量
char ii[10];void add();     //函数声明增加航班信息函数
void print();       //显示航班信息
bool search();      //查找航班信息
void dingpiao();    //订票业务
void tuipiao();     //退票
void Read();        //读取文件
void save();        //保存文件
void output();      //输出格式
void paixu();       //航班排序
void chushihua();   //系统初始化
void build();       //建立数据文件
void paixu1();      //按航班号从小到大排序
void paixu2();      //从大到小
int head ();        //进入订票系统

要点:
宏定义输出格式:可以让代码方便简洁
结构体数组:保存多组信息

2、主函数

int main()       //主函数
{int j;system("color b0");    //这里可以调整颜色chushihua();      //系统初始化判断是否存在原始数据文件system("cls");head();  //打印出系统主界面system("cls");do{cout<<"================================================================================ ";cout<<"\n\t\t\t\t1.增加航班信息\n\t\t""\t\t2.浏览航班信息\n\t\t""\t\t3.查找航班信息(按航班号)\n\t\t""\t\t4.航班排序(按航班号)\n\t\t""\t\t5.订票业务\n\t\t""\t\t6.退票业务\n\t\t""\t\t0.退出\n";cout<<"================================================================================ " ;cout<<"\n请在0-6中选择以回车键结束: " ;cin>>j ;switch(j){case 1: add();  system("cls");        //调用增加航班函数break;case 2:print(); system("cls");//调用显示模块break;case 3:search();system("cls");  //调用查找模块break;case 4:paixu(); system("cls");  //调用排序函数break;case 5:dingpiao();system("cls");    //调用订票模块break;case 6:tuipiao();system("cls"); //调用退票模块break;case 0:               //退出系统save();system("cls");cout<<"\n\n\n\t\t\t\t\n\n\t谢谢使用,再见! ";cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n";break;}}while(j!=0);       //判断是否调用其他函数}

要点:
打印主界面,选择后跳转各个功能函数。

3、建立数据文件
用于保存航班信息


void build()        //定义建立数据文件函数
{FILE *fp;      //定义文件指针if((fp=fopen("hangban.dat","wb"))==NULL)     //打开文件并判定是否出错{cout<<"创建文件失败! " ;        //打印出错提示getchar();return;}cout<<"请依次输入航班信息(以回车键结束):\n" ;      //打印提示信息cout<<"-------------------------------------------------------------------------- \n" ;for(i=0;i<N;i++){cout<<"请输入航班号: " ;cin>>s[i].num ;     //输入航班号cout<<"请输入起始站: " ;cin>>s[i].start ;        //输入起始站cout<<"请输入终点站: " ;cin>>s[i].over ;     //输入终点站cout<<"请输入时间(星期几 : " ;cin>>s[i].time ;     //输入时间cout<<"请输入机票数: " ;cin>>s[i].count ; //输入机票数fwrite(&s[i],sizeof(struct air),1,fp);m++;cout<<"添加完毕,是否继续添加?请键入y或n以回车键结束:";cin>>ii ;if(strcmp(ii,"y")!=0)            //判断是否继续添加航班信息{fclose(fp);          //关闭文件return;}}
}

要点:
定义文件指针,打开(或创建文件)
保存到结构体,循环用结构体写文件fwrite(&s[i],sizeof(struct air),1,fp);
不再添加信息,则关闭文件。

4、退出前保存信息
使用系统后,更改数据到文件


void save()         //定义保存函数
{FILE *fp;if((fp=fopen("hangban.dat","wb"))==NULL){cout<<"创建文件失败! ";getchar();return;}for(i=0;i<m;i++)         //逐块保存数据fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);cout<<"正在保存数据并退出";for(a=0;a<3;a++){cout<<"." ;Sleep(200);}cout<<"\n";cout<<"\n" ;}

要点:
定义文件指针。打开或创建文件。
逐个保存航班信息,写文件。

5、读取信息

void Read()  //定义读取文件函数
{FILE *fp;if((fp=fopen("hangban.dat","r"))==NULL){cout<<"创建文件失败! " ;getchar();return;}i=0;while(!feof(fp)){fread(&s[i],sizeof(struct air),1,fp);        //逐块读取数据i++;m++;        //计算存在航班数}m--;fclose(fp);cout<<"请稍候,正在初始化" ;for(a=0;a<3;a++){cout<<"." ;Sleep(200);}cout<<"\n";
}

要点:
定义文件指针,打开文件。
逐个结构体读取,同时计数。

添加航班信息:
保存信息到结构体,指针后移即可。
订票退票:
先查找到航班,修改结构体数组上的数据即可。

完整代码如下:

#include <iostream>
#include<cstring>     //包含字符串函数处理头文件
#include<process.h>       //包含access函数的头文件
#include<io.h>
#include<cstdlib>
#include<windows.h>
#include<conio.h>
#include<fstream>
#define N 9999          //定义最多的航班数
#define PRINT s[i].num<<"\t\t"<<s[i].start<<"\t\t"<<s[i].over<<"\t\t星期"<<s[i].time<<"\t\t"<<s[i].count<<endl   //宏定义输出格式
using namespace std;struct air          //定义结构体数组
{int num;               //定义航班号char start[20];          //航班起始站char over[20];           //终点站char time[10];         //飞行时间int count;                //机票数量
}s[N];int i,a,m=0;             //定义全局变量
char ii[10];void add();     //函数声明增加航班信息函数
void print();       //显示航班信息
bool search();      //查找航班信息
void dingpiao();    //订票业务
void tuipiao();     //退票
void Read();        //读取文件
void save();        //保存文件
void output();      //输出格式
void paixu();       //航班排序
void chushihua();   //系统初始化
void build();       //建立数据文件
void paixu1();      //按航班号从小到大排序
void paixu2();      //从大到小
int head ();        //进入订票系统int main()      //主函数
{int j;system("color b0");chushihua();        //系统初始化判断是否存在原始数据文件system("cls");head();  //打印出系统主界面system("cls");do{cout<<"================================================================================ ";cout<<"\n\t\t\t\t1.增加航班信息\n\t\t""\t\t2.浏览航班信息\n\t\t""\t\t3.查找航班信息(按航班号)\n\t\t""\t\t4.航班排序(按航班号)\n\t\t""\t\t5.订票业务\n\t\t""\t\t6.退票业务\n\t\t""\t\t0.退出\n";cout<<"================================================================================ " ;cout<<"\n请在0-6中选择以回车键结束: " ;cin>>j ;switch(j){case 1: add();  system("cls");        //调用增加航班函数break;case 2:print(); system("cls");//调用显示模块break;case 3:search();system("cls");  //调用查找模块break;case 4:paixu(); system("cls");  //调用排序函数break;case 5:dingpiao();system("cls");    //调用订票模块break;case 6:tuipiao();system("cls"); //调用退票模块break;case 0:               //退出系统save();system("cls");cout<<"\n\n\n\t\t\t\t\n\n\t谢谢使用,再见! ";cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n";break;}}while(j!=0);       //判断是否调用其他函数}void chushihua()       //定义系统初始化函数
{if(access("hangban.dat",0)){build();}elseRead();
}void build()       //定义建立数据文件函数
{FILE *fp;      //定义文件指针if((fp=fopen("hangban.dat","wb"))==NULL)     //打开文件并判定是否出错{cout<<"创建文件失败! " ;        //打印出错提示getchar();return;}cout<<"请依次输入航班信息(以回车键结束):\n" ;      //打印提示信息cout<<"-------------------------------------------------------------------------- \n" ;for(i=0;i<N;i++){cout<<"请输入航班号: " ;cin>>s[i].num ;     //输入航班号cout<<"请输入起始站: " ;cin>>s[i].start ;        //输入起始站cout<<"请输入终点站: " ;cin>>s[i].over ;     //输入终点站cout<<"请输入时间(星期几 : " ;cin>>s[i].time ;     //输入时间cout<<"请输入机票数: " ;cin>>s[i].count ; //输入机票数fwrite(&s[i],sizeof(struct air),1,fp);m++;cout<<"添加完毕,是否继续添加?请键入y或n以回车键结束:";cin>>ii ;if(strcmp(ii,"y")!=0)            //判断是否继续添加航班信息{fclose(fp);          //关闭文件return;}}
}void Read()    //定义读取文件函数
{FILE *fp;if((fp=fopen("hangban.dat","r"))==NULL){cout<<"创建文件失败! " ;getchar();return;}i=0;while(!feof(fp)){fread(&s[i],sizeof(struct air),1,fp);        //逐块读取数据i++;m++;        //计算存在航班数}m--;fclose(fp);cout<<"请稍候,正在初始化" ;for(a=0;a<3;a++){cout<<"." ;Sleep(200);}cout<<"\n";
}void save()        //定义保存函数
{FILE *fp;if((fp=fopen("hangban.dat","wb"))==NULL){cout<<"创建文件失败! ";getchar();return;}for(i=0;i<m;i++)         //逐块保存数据fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);cout<<"正在保存数据并退出";for(a=0;a<3;a++){cout<<"." ;Sleep(200);}cout<<"\n";cout<<"\n" ;}void add()     //定义增加航班信息函数
{do{cout<<"请依次输入您要增加的航班信息(以回车键结束):  \n" ;      //打印提示信息cout<<"-------------------------------------------------------------------------- \n" ;cout<<"请输入航班号: " ;cin>>s[m].num ;       //读取航班号cout<<"请输入起始站: " ;cin>>s[m].start ;        //读取起始站cout<<"请输入终点站: " ;cin>>s[m].over ;     //读取终点站cout<<"请输入时间(星期几): " ;cin>>s[m].time ;     //读取时间cout<<"请输入机票数: " ;cin>>s[m].count ; //读取机票数m++;cout<<"添加完毕,是否继续添加?请键入y或n以回车键结束:" ;cin>>ii ;}while(!strcmp(ii,"y"));       //判断是否继续添加cout<<"正在保存,请稍候" ;for(a=0;a<5;a++){cout<<"." ;Sleep(600);}cout<<"\n" ;
}void output()      //定义输出格式函数
{cout<<"航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n" ;     //信息标题for(i=0;i<m;i++)cout<<PRINT;//打印出信息}void print()      //定义显示航班信息函数
{cout<<"正在加载,请稍候" ;for(a=0;a<5;a++){cout<<"." ;Sleep(400);}cout<<"\n" ;system("cls");cout<<"\n目前我们有如下航班:\n\n" ;output();         //调用输出格式函数cout<<"\n请按回车键返回上层菜单 " ;getchar();getchar();}bool search()        //定义查询函数
{int n;do{cout<<"\n请输入航班号: " ;cin>>n;      //输入查询的航班号cout<<"正在查询" ;for(a=0;a<5;a++){cout<<"." ;Sleep(400);}cout<<"\n" ;for(i=0;i<m;i++){if(s[i].num==n)  //按航班号判定输出条件{cout<<"\n您所查找的航班信息为:\n " ;cout<<"航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数 \n\n" ;cout<<PRINT ;     //显示信息cout<<"\n查询完毕,按回车键继续" ;getchar();getchar();return true;}}cout<<"\n对不起,没有您需要的信息!\n " ;cout<<"是否重新查找?请键入y或n以回车键结束 " ;cin>>ii ;}while(!strcmp(ii,"y"));//判定是否重新查找}void dingpiao()       //定义订票业务函数
{int n,x;char a[10]="y";do{if(!search()){cout<<"对不起!没有找到您所需要的航班,所以不能订票。\n" ; //未查找到所需航班cout<<"\n请按回车键返回上层菜单 " ;getchar();getchar();strcpy(ii,"n");break;}do{cout<<"请输入您要订的机票数(以回车键结束): " ;cin>>n ;      //输入所订机票数cout<<"请稍候,正在订票" ;for(x=0;x<3;x++){cout<<"." ;Sleep(600);}cout<<"\n" ;if(n<=0)           //判定机票数是否出错{cout<<"输入错误!至少需订1张机票。\n" ;}else if(s[i].count==0)//判定机票是否售完{cout<<"对不起,你所选择的航班的机票已售完!\n" ;break;}else if(s[i].count!=0&&s[i].count>=n) //判定机票数是否大于等于订票数{s[i].count=s[i].count-n;cout<<"订票成功! " ;break;}else if(s[i].count<n)//判定机票数是否小于订票数{cout<<"对不起,你所选择的航班只剩"<<s[i].count<<"张机票\n";cout<<"是否需要重新输入机票数?\n请输入y或n以回车键结束: " ;//判定是否重新输入订票数cin>>a ;cout<<"请稍候,正在订票" ;for(x=0;x<3;x++){cout<<"." ;Sleep(600);}cout<<"\n" ;}}while(!strcmp(a,"y"));cout<<"是否需要订其他航班的机票?\n请输入y或n以回车键结束: " ;cin>>a ;}while(!strcmp(a,"y" )) ;     //判定是否继续订票
}void tuipiao() //定义退票函数
{int n,x;char a[10];do{if(!search()){cout<<"对不起!没有找到您所需要的航班,所以不能退票。\n";cout<<"\n请按回车键返回上层菜单 " ;getchar();getchar();strcpy(ii,"n");break;}cout<<"请输入您要退的机票数目: " ;cin>>n ;         //输入所退票数cout<<"请稍候,正在退票" ;for(x=0;x<3;x++){cout<<"." ;Sleep(600);}cout<<"\n" ;if(n<=0)            //判定票数是否有效cout<<"输入错误!至少需退1张机票。 " ;else{s[i].count=s[i].count+n;cout<<"退票成功! " ;}cout<<"是否继续? 请键入y或n以回车键结束: " ;     //判定是否继续退票cin>>a ;}while(!strcmp(a,"y"));       //判定并跳出循环}void paixu()      //定义排序函数
{int n;cout<<"\n******************************************************************************** " ;cout<<"\n\t\t1.按航班号从小到大排序\t\t\n""\t\t2.按航班号从大到小排序\t\t\n" ;cout<<"******************************************************************************** " ;cout<<"请在1-2中选择以回车键结束: " ;cin>>n ;      //输入排序方式switch(n){case 1:paixu1();//调用从小到大排序函数break;case 2:paixu2();//调用从大到小排序函数break;}cout<<"排序后的航班信息为:\n" ;output();          //显示排序后航班信息cout<<"\n请按回车键返回上层菜单 " ;getchar();getchar();/*for(a=0;a<5;a++){cout<<"." ;Sleep(400);}cout<<"\n" ;*/
}void paixu1()      //定义从小到大排序函数
{int k,j;struct air t;for(i=0;i<m;i++)    //选择排序{k=i;for(j=i+1;j<m;j++)if(s[k].num>s[j].num)k=j;if(i!=k){t=s[k];s[k]=s[i];s[i]=t;}}cout<<"正在排序,请稍后" ;for(a=0;a<5;a++){cout<<"." ;Sleep(400);}cout<<"\n" ;}void paixu2()      //定义从大到小排序函数
{int k,j;struct air t;for(i=0;i<m;i++){k=i;for(j=i+1;j<m;j++)if(s[k].num<s[j].num)k=j;if(i!=k){t=s[k];s[k]=s[i];s[i]=t;}}cout<<"正在排序,请稍后" ;for(a=0;a<5;a++){cout<<"." ;Sleep(400);}cout<<"\n" ;
}int head ()            //进入订票系统
{cout<<"=================================================================\n" ;cout<<"*                                                               *\n" ;cout<<"*                       欢迎使用机票订票管理系统                *\n" ;cout<<"*                                                               *\n" ;cout<<"*                                                               *\n" ;cout<<"=================================================================\n" ;cout<<"请按回车键进入界面" ;getchar();cout<<"正在进入系统选项" ;for(a=0;a<3;a++){cout<<"." ;Sleep(600);}cout<<"\n" ;return 0;
}

机票管理系统C++完整代码 订退票、界面、文件存取、查找、排序、增加航班 票务管理 航班管理相关推荐

  1. 模拟图书管理系统的完整代码

    模拟图书管理系统的完整代码: def readBook():with open(r"books.txt","r") as f:jsondata=f.read() ...

  2. python Django 餐馆点菜管理系统 毕业设计 完整代码

    问题描述: 随着网络的迅速发展,越来越多的人开始接受甚至时依赖了网络营业的这种交易形式,传统的点菜模式不仅浪费时间,效率低下,而且特别耗费成本与人力,因此不少商家开始使用网上点菜系统.网上点菜系统是一 ...

  3. c语言车票管理系统(附完整代码和文档)

    作业要求 1.能够录入班次信息,可不定时增加数据. 2.浏览信息,显示所有班次状态(如当前时间大于发车时间,显示"此班已发出"). 3.查询路线(1.班次号查询.2.终点站查询). ...

  4. C语言通讯录管理系统(含完整代码)

    课题3:通讯录管理系统 设计内容: 设计一个通讯录管理系统,以实现以下功能:信息添加.查询.修改.删除.排序等功能. 设计要求: 1) 每条信息至包含 :姓名.电话.工作单位等信息 2) 作为一个完整 ...

  5. Java实现学生管理系统(完整代码)

    案例需求 完成一个综合案例:学生管理系统!该系统主要功能如下: 添加学生:通过键盘录入学生信息,添加到集合中 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除 修改学生:通过键盘录入要 ...

  6. C语言--学生管理系统--(完整代码)

    本系统分成了三个文件,main.c student.c student.h 功能: 实现对班级成员的增加.删除.修改.遍历.根据成绩排序. 增加 会检查,现在班级已有的人数,班级是否已满(没有学号重复 ...

  7. 机票管理系统 python3 航班动态管理 文件存储 项目完整代码

    机票管理系统(python3) 一.问题分析 问题分析:从数据的逻辑结构.数据存储以及对数据的操作三个方面出发分析.各数据的关系是集合:数据存在文件之中,在内存中用对象数组来存储:涉及对数据的增删改查 ...

  8. 学校管理系统源码 代码测试完整,界面漂亮,多套皮肤供选择

    学校管理系统源码 代码测试完整,界面漂亮,多套皮肤供选择 支持短信提醒 功能介绍: 一,通知公告管理 id=617987965914& 二,考勤管理 考勤查询,考勤统计,考勤设置,考勤干预,考 ...

  9. 校运动会c语言程序编写,校运动会管理系统报告C语言(含完整代码)

    <校运动会管理系统报告C语言(含完整代码)>由会员分享,可在线阅读,更多相关<校运动会管理系统报告C语言(含完整代码)(20页珍藏版)>请在人人文库网上搜索. 1.目 录陈一. ...

最新文章

  1. 2022-2028年中国液化石油气(LPG)行业投资分析及前景预测报告
  2. PyTorch 1.6、TensorFlow 2.3、Pandas 1.1同日发布!都有哪些新特性?
  3. Python3学习笔记(一)简介 、 安装 、 解释器
  4. oracle 有计划任务吗,oracle计划任务的问题
  5. python打乱顺序的洗牌函数
  6. servlet3.1
  7. 群晖 mysql 自动备份_宝塔定时备份网站及数据库至群晖FTP存储空间
  8. ubuntu_python_environment
  9. C# 和欧姆龙 Omron PLC 以太网通信
  10. 摄像头录像存储计算方式
  11. ecshop常见漏洞
  12. 百度短网址 php,PHP实现百度、网易、新浪短网址服务的API接口调用
  13. Leco题目:整数反转
  14. 从网页复制内容到富文本、或者富文本里自己加样式,当ajax传参时候,总是莫名其妙丢失变成无意义的html,究竟是为什么呢
  15. SpringBoot接入支付宝
  16. 500 G JAVA视频网盘分享
  17. 16进制 dat matlab_用MATLAB生成DAT文件
  18. 计算机丢失UxTheme无法修复,怎样处理Win7系统提示uxtheme.dll丢失
  19. SONICWALL防火墙 L2TP ×××配置方法
  20. 第二章-空间众包(spatial crowdsourcing)概述

热门文章

  1. 十大品牌笔记本电脑型号命名规则详解
  2. 12.Redis 事务有何意义?
  3. 专 静 谦 筹 悟 慎 透 恒
  4. C#——if 和 Switch 的区别,与在内存中的占有量
  5. oracle触发器更新自身,Oracle触发器修改自身字段解决方案
  6. php 车型接口,车型大全API接口_汽车配置_免费数据接口 - 极速数据
  7. gdc服务器系统,gdc服务器远程
  8. Python-闭包与自由变量
  9. YOLO微信小程序实践
  10. 前端与后端的模板引擎