机票管理系统C++完整代码 订退票、界面、文件存取、查找、排序、增加航班 票务管理 航班管理
大一的时课设,这是简单的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++完整代码 订退票、界面、文件存取、查找、排序、增加航班 票务管理 航班管理相关推荐
- 模拟图书管理系统的完整代码
模拟图书管理系统的完整代码: def readBook():with open(r"books.txt","r") as f:jsondata=f.read() ...
- python Django 餐馆点菜管理系统 毕业设计 完整代码
问题描述: 随着网络的迅速发展,越来越多的人开始接受甚至时依赖了网络营业的这种交易形式,传统的点菜模式不仅浪费时间,效率低下,而且特别耗费成本与人力,因此不少商家开始使用网上点菜系统.网上点菜系统是一 ...
- c语言车票管理系统(附完整代码和文档)
作业要求 1.能够录入班次信息,可不定时增加数据. 2.浏览信息,显示所有班次状态(如当前时间大于发车时间,显示"此班已发出"). 3.查询路线(1.班次号查询.2.终点站查询). ...
- C语言通讯录管理系统(含完整代码)
课题3:通讯录管理系统 设计内容: 设计一个通讯录管理系统,以实现以下功能:信息添加.查询.修改.删除.排序等功能. 设计要求: 1) 每条信息至包含 :姓名.电话.工作单位等信息 2) 作为一个完整 ...
- Java实现学生管理系统(完整代码)
案例需求 完成一个综合案例:学生管理系统!该系统主要功能如下: 添加学生:通过键盘录入学生信息,添加到集合中 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除 修改学生:通过键盘录入要 ...
- C语言--学生管理系统--(完整代码)
本系统分成了三个文件,main.c student.c student.h 功能: 实现对班级成员的增加.删除.修改.遍历.根据成绩排序. 增加 会检查,现在班级已有的人数,班级是否已满(没有学号重复 ...
- 机票管理系统 python3 航班动态管理 文件存储 项目完整代码
机票管理系统(python3) 一.问题分析 问题分析:从数据的逻辑结构.数据存储以及对数据的操作三个方面出发分析.各数据的关系是集合:数据存在文件之中,在内存中用对象数组来存储:涉及对数据的增删改查 ...
- 学校管理系统源码 代码测试完整,界面漂亮,多套皮肤供选择
学校管理系统源码 代码测试完整,界面漂亮,多套皮肤供选择 支持短信提醒 功能介绍: 一,通知公告管理 id=617987965914& 二,考勤管理 考勤查询,考勤统计,考勤设置,考勤干预,考 ...
- 校运动会c语言程序编写,校运动会管理系统报告C语言(含完整代码)
<校运动会管理系统报告C语言(含完整代码)>由会员分享,可在线阅读,更多相关<校运动会管理系统报告C语言(含完整代码)(20页珍藏版)>请在人人文库网上搜索. 1.目 录陈一. ...
最新文章
- 2022-2028年中国液化石油气(LPG)行业投资分析及前景预测报告
- PyTorch 1.6、TensorFlow 2.3、Pandas 1.1同日发布!都有哪些新特性?
- Python3学习笔记(一)简介 、 安装 、 解释器
- oracle 有计划任务吗,oracle计划任务的问题
- python打乱顺序的洗牌函数
- servlet3.1
- 群晖 mysql 自动备份_宝塔定时备份网站及数据库至群晖FTP存储空间
- ubuntu_python_environment
- C# 和欧姆龙 Omron PLC 以太网通信
- 摄像头录像存储计算方式
- ecshop常见漏洞
- 百度短网址 php,PHP实现百度、网易、新浪短网址服务的API接口调用
- Leco题目:整数反转
- 从网页复制内容到富文本、或者富文本里自己加样式,当ajax传参时候,总是莫名其妙丢失变成无意义的html,究竟是为什么呢
- SpringBoot接入支付宝
- 500 G JAVA视频网盘分享
- 16进制 dat matlab_用MATLAB生成DAT文件
- 计算机丢失UxTheme无法修复,怎样处理Win7系统提示uxtheme.dll丢失
- SONICWALL防火墙 L2TP ×××配置方法
- 第二章-空间众包(spatial crowdsourcing)概述