课程设计

/************************************************************
*版权所有(C)2014,李宁
*
*文件名称:订票系统.cpp
*文件标识:无
*内容摘要:改代码用于获取满足后缀要求的第一个文件
*其他说明:无
*当前版本:V1.0
*作者:李宁
*完成日期:2015.12.25
*
*修改日期:20151227
*修改人:李宁
*修稿内容:界面
          注释
*/
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
struct flight    //航班信息
{
	int a1;   //航班号
   string a2;    //起飞时间
   string a3;  //降落时间
	char a4[10];   //起飞城市
	char a5[10];   //降落城市
	int a6;       //价格
    int a7;   //票价折扣   
    int a8;      //余票
}fl[10];
struct customer  //客户信息
{
	char name[10];                    //定义字符型数组姓名name[10]
    int seat;                        //定义整型变量座位号seat
    int num;                        //定义整型变量航班号num
	char no[18];                    //证件号no
	int ps;                        //订票数ps
	string qfs;                    //起飞时间qfs
	string jls;                    //降落时间jls
	char qfd[10];                     //起飞城市qfd
	char jld[10];                     //降落城市jld
	int pj;                      //票价pj
}cu[200];
int cnum=3;
int len=0;
int A=0;
void luru();          //声明录入函数
void chaxun();       //声明查询函数
void chaxun1();       //声明查询方式1函数
void chaxun2();       //声明按查询方式2函数
void dingpiao();      //声明订票函数
void tuipiao();       //声明退票函数
void xiugai();        //声明修改函数
void menu();          //声明主菜单函数
void duqu();          //声明文件读取函数
void tuichu();         //声明退出并保存函数

/*
*功能描述:航班信息录入
*输入参数:航班号,起飞时间,降落时间,起飞城市,降落时间,票价,折扣,余票
*输出参数:无
*返回值:主菜单
*/
void luru()  
{ 
    cout<<"请输入航班信息:"<<endl;
	cout<<"请输入航班号"<<endl;
	cin>>fl[len].a1;          //录入航班号
    cout<<"起飞时间"<<endl;
	cin>>fl[len].a2;          //录入起飞时间
	cout<<"降落时间"<<endl;
	cin>>fl[len].a3;          //录入降落时间
	cout<<"起飞城市"<<endl;
	cin>>fl[len].a4;          //录入起飞城市
	cout<<"降落城市"<<endl;
	cin>>fl[len].a5;          //录入降落城市
	cout<<"票价"<<endl;
	cin>>fl[len].a6;         //录入票价
	cout<<"折扣"<<endl;
	cin>>fl[len].a7;         //录入机票折扣
	cout<<"剩余票量"<<endl;
	cin>>fl[len].a8;         //录入剩余票量
	len++;
	 cout<<"请选择所要进行的操作"<<endl;
	 menu();    //录入完成跳转回菜单选择操作
}

/*
*功能描述:航班信息查询
*输入参数:1或2
*输出参数:操作信息
*返回值:主菜单
*/
void chaxun()     //查询
{system("cls");
	cout<<"请选择查询方式"<<endl;
	cout<<"1.按航班号查询"<<endl;
	cout<<"2.按城市查询"<<endl;
	int t;
	cin>>t;          //选择查询方式
	switch(t)
	{
	case 1:
		chaxun1();
		break;
	case 2:
		chaxun2();
		break;
	default:cout<<"输入的数据有误,请重新输入!"<<endl;
		menu();        //输入错误返回主菜单重新输入
		break;
	}
}

void chaxun1()    //按航班号查询航班信息
{   
	int n;
	cout<<"请输入要查询的航班号:"<<endl;
	cin>>n;
	for(int j=0;j<len;j++)
		if(fl[j].a1==n)
		{
			cout<<"***航班信息****"<<endl<<"航班号:"<<fl[j].a1<<'\t'<<"起飞时间:"<<fl[j].a2<<'\t'<<"降落时间:"<<fl[j].a3<<'\t'<<"起飞城市:"<<fl[j].a4<<'\t'<<"降落城市:"<<fl[j].a5<<'\t'<<"票价:"<<fl[j].a6<<'\t'<<"折扣:"<<fl[j].a7<<'\t'<<"剩余票量:"<<fl[j].a8<<endl;
			break;}  //输出航班信息
	else
	cout<<"没有对应的航班!"<<endl;getchar();
	menu();
}

void chaxun2()  //按起飞城市和降落城市查询航班信息
{
	char m1[10],m2[10];
	int j;
	cout<<"请输入要查询的起始、降落城市:"<<endl;
	cin>>m1>>m2;   //输入起始城市和降落城市
	for(j=0;j<len;j++)
		if((strcmp(fl[j].a4,m1)==0)&&(strcmp(fl[j].a5,m2)==0))
		{cout<<"***航班信息****"<<endl<<"航班号:"<<fl[j].a1<<'\t'<<"起飞时间:"<<fl[j].a2<<'\t'<<"降落时间:"<<fl[j].a3<<'\t'<<"起飞城市:"<<fl[j].a4<<'\t'<<"降落城市:"<<fl[j].a5<<'\t'<<"票价:"<<fl[j].a6<<'\t'<<"折扣:"<<fl[j].a7<<'\t'<<"剩余票量:"<<fl[j].a8<<endl;break;}//输出航班信息
    if(j==10)    
		{ cout<<"没有对应的航班!"<<endl;}
	menu();
}

/*
*功能描述:航班订票
*输入参数:客户姓名,航班号
*输出参数:订票成功
*返回值:主菜单
*/
void dingpiao()        //订票
{
    char Name[10]; int fn;int sign=0;
	 cout<<"请输入你的姓名和想订的航班号:"<<endl;
	 cin>>Name;      //输入乘客姓名
	 cin>>fn;        //输入乘客所要订的航班号
	for(int i=0;i<len;i++)
	{if(fl[i].a1==fn)  
			if(fl[i].a8>0)  
			{strcpy(cu[A].name,Name);
			cu[A].num=fn;
			cu[A].seat=fl[i].a8;
			A++;fl[i].a8--;sign=1;
			cout<<"订票成功!"<<endl;break;}
			if(sign) break;
	}
	if(i==len)cout<<"航班号错误!"<<endl;
}

/*
*功能描述:航班退票
*输入参数:姓名,航班号
*输出参数:退票成功
*返回值:主菜单
*/
void tuipiao()   //退票
{system("cls");
	char Name[10];int fn;int sign=0;
	 cout<<"请输入你的姓名:";cin>>Name;  //输入乘客姓名

	 cout<<"请输入航班号:";cin>>fn;cout<<endl;  //输入乘客所订的航班的航班号
    for(int i=0;i<len;i++)
	{	if(fn==fl[i].a1)
			for(int j=0;j<A;j++)
				if(strcmp(Name,cu[j].name)==0)
				{cout<<" 退票成功!"<<endl;fl[i].a8++;sign=1;break;}
		if(sign)break;
	}
	if(i==len) cout<<"输入信息有误!退票失败"<<endl;
}  


/*
*功能描述:航班信息修改
*输入参数:航班号
*输出参数:保存成功
*返回值:主菜单
*/
void xiugai()    //修改航班信息
{
	cout<<"输入航班号:"<<endl;
    int num;cin>>num;
	for(int i=0;i<len;i++)
		if(fl[i].a1==num){num=i;    cout<<"起飞时间:";cin>>fl[num].a2;cout<<"达到时间:";cin>>fl[num].a3;cout<<endl;break;	 }

	   if(i==len)cout<<"航班号错误!"<<endl;
}
void tuichu()   //退出时保存录入和更改信息
{ 
		ofstream nfile2("cus.dat",ios_base::binary);  //输出方式打开文件    
		nfile2.close();  //关闭文件
	ofstream infile2("cus.dat",ios_base::binary|ios_base::app);   //输入方式打开文件 
	for(int i=0;i<A;i++)		
	{infile2.write((reinterpret_cast<char *>(&cu[i])),sizeof(customer));cout<<"写入成功!"<<endl;}//将乘客信息写入文件
	infile2.close();  //关闭文件
		ofstream nfile1("airline.dat",ios_base::binary);  //输出方式打开文件
		nfile1.close(); //关闭文件
   ofstream infile1("airline.dat",ios_base::binary|ios_base::app); //输出方式打开文件
	for( i=0;i<len;i++)		
     	infile1.write((reinterpret_cast<char *>(&fl[i])),sizeof(flight));//将航班信息写入文件
	infile1.close(); //关闭文件

}

/*
*功能描述:航班信息读取
*输入参数:任意键
*输出参数:文件内容
*返回值:主菜单
*/
void duqu()   //读取文件信息
{  
	ifstream infile1("airline.dat",ios_base::binary); 
	while(infile1.peek()!=EOF)		
	{	
		infile1.read((reinterpret_cast<char *>(&fl[len])),sizeof(flight));//输入方式读取文件
	cout<<"***航班信息****"<<endl<<"航班号:"<<fl[len].a1<<'\t'<<"起飞时间:"<<fl[len].a2<<'\t'<<"降落时间:"<<fl[len].a3<<'\t'<<"起飞城市:"<<fl[len].a4<<'\t'<<"降落城市:"<<fl[len].a5<<'\t'<<"票价:"<<fl[len].a6<<'\t'<<"折扣:"<<fl[len].a7<<'\t'<<"剩余票量:"<<fl[len].a8<<endl;
	len++;
	}
   	infile1.close();//关闭文件
	ifstream infile2("cus.dat",ios_base::binary); 
	while(infile2.peek()!=EOF)		
	{infile2.read((reinterpret_cast<char *>(&cu[A++])),sizeof(customer));} //输入方式读取文件
	infile2.close();     //关闭文件
	getchar();system("cls");
}

/*
*功能描述:主菜单
*输入参数:无
*输出参数:服务项
*返回值:主菜单
*/
void menu()
{
	cout<<"*******************航班订票系统*********************"<<endl;

	cout<<""<<endl;
	cout<<"1.录入航班信息"<<endl;
	cout<<"2.查询航班信息"<<endl;
	cout<<"3.订票"<<endl;
	cout<<"4.退票"<<endl;
	cout<<"5.修改航班信息"<<endl;
	cout<<"6.退出系统"<<endl;
	cout<<""<<endl;
	cout<<"****************************************************"<<endl;
	cout<<""<<endl;   //菜单界面
	int i;
	cout<<"输入选项:"<<endl;
	cin>>i;     //选择菜单
	switch(i)
	{
	case 1:
		luru(); 
		break;
	case 2:
		chaxun();  
		break;
	case 3:
		dingpiao();menu();
	case 4:
		tuipiao();
		menu();
	case 5:
		xiugai();
		menu();
	case 6:
		tuichu();
	    exit(1);      //退出
		break;
	default:cout<<"输入的选项不合法,请重新输入"<<endl;
		system("cls");    //清屏
		menu();
}
}
void main()
{
	cout<<"               **************************************"<<endl;





	cout<<"                    欢迎使用订票系统"<<endl;





	cout<<"               **************************************"<<endl;





		cout<<"读取"<<endl;duqu();    //跳转至读取航班信息文件
	menu();                           //菜单
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值