⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hb.txt

📁 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据必须存储在一个外部文件中
💻 TXT
字号:
#include"stdafx.h"
#include"stdio.h" //标准输入、输出头文件
#include"string.h"    //包含字符串函数处理头文件
#include"stdlib.h"    //包含动态存储与释放函数头文件
#include"iostream"
using namespace std;
#define N 10000 
struct air        //定义结构体数组
{
	int num;
	char start[20];
	char over[20];
	char time[10];
	int count;
}
s[N];
int i;
int m=0;
void input();    //输入航班信息
void print();    //输出航班信息
void save();     //保存航班信息 
void read();     //读取航班信息
void search();   //查找航班信息
void shanchu(); //删除航班信息
void dingpiao(); //订票信息
void tuipiao(); //退票信息
void xiugai();   //修改信息
void main()
{
	int j;
	cout<<"                       ★---您好,欢迎进入中国民航管理系统!---★ "<<endl; 
	cout<<"================================================================================";
    do
	{
		cout<<"     -------- ☆        1.输入航班信息            ☆-------- "<<endl;
		cout<<"     -------- ☆        2.浏览航班信息            ☆-------- "<<endl;
		cout<<"     -------- ☆        3.修改航班信息            ☆-------- "<<endl;
		cout<<"     -------- ☆        4.查找航班信息            ☆-------- "<<endl;
		cout<<"     -------- ☆        5.删除航班信息            ☆-------- "<<endl;
		cout<<"     -------- ☆        6.订票信息                ☆-------- "<<endl;
		cout<<"     -------- ☆        7.退票信息                ☆-------- "<<endl;
		cout<<"     -------- ☆        0.退出                    ☆-------- "<<endl;
		cout<<"================================================================================ "<<endl;
		cout<<"请在0-7中选择以回车键结束:";
		cin>>j;
		if(j==1) input();//调用输入模块
		if(j==2)print();//调用打印模块
		if(j==3)xiugai();//调用修改模块
		if(j==4)search();//调用查找模块
		if(j==5)shanchu(); //调用删除模块
		if(j==6)dingpiao();//调用订票模块
		if(j==7)tuipiao();//调用退票模块
		if(j==0)break;
	}
	while(j!='0');     //判断结束
	cout<<"谢谢使用,再见! ";
}//主函数结束 
void input()//打印模块程序
{ 
	char f[]="2008china";    //设置密码
	char z[10];
	int y;
	cout<<"请输入密码并以回车键结束: ";
	cin>>z;          //读取密码
	if(strcmp(f,"2008china")==0)
	{
		cout<<"请依次输入航班信息(机票数位0结束输入): "<<endl;
		cout<<"完成输入信息请键入w以回车键结束 "<<endl;      //打印提示信息
		cout<<"-------------------------------------------------------------------------"<<endl;
		for(i=0;i<N;i++)
		{
			cout<<"请输入航班号: "<<endl; 
			cin>>s[i].num;     //读取航班号
			cout<<"请输入起始站: "<<endl;cin>>s[i].start;//读取起始站
			cout<<"请输入终点站: "<<endl;
			cin>>s[i].over;//读取终点站
			cout<<"请输入时间: "<<endl;
			cin>>s[i].time;//读取时间
			cout<<"请输入机票数(机票数为0结束输入): "<<endl;
			cin>>s[i].count;//读取机票数
			m++;
			cout<<"第"<<m<<"个信息已经输完是否继续?1继续, 0结束"<<endl;
			cin>>y;
			if(y==0) break;
			else continue;
		}
	}
	else
		cout<<"输入密码错误!请检查您的密码是否正确!谢谢!再见! "<<endl;
}

void save()//保存模块程序
{ 
	FILE *fp,*fp1;//定义文件指针
	if((fp=fopen("chen.dat","wb"))==NULL)//打开文件并判断是否出错 
	{
		cout<<"创建文件失败! "<<endl;//打印出错提示
		getchar();
		return;
	}
	if((fp1=fopen("hao.dat","wb"))==NULL)//打开文件并判断是否出错 
	{
		cout<<"创建文件失败! "<<cout;//打印出错提示
		getchar();
		return;
	}
	for(i=0;i<m;i++)
		if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错
			cout<<"向文件输入数据失败! "<<endl;
		fprintf(fp1,"%d",m);
		fclose(fp);//关闭文件
		fclose(fp1);//关闭文件
} 

void read()//从文件读取信息模块
{
	FILE *fp,*fp1;//定义文件指针
	if((fp=fopen("chen.dat","rb"))==NULL)//打开文件,并判断是否出错
		if((fp1=fopen("hao.dat","rb"))==NULL)//打开文件并判断是否出错 
		{
			cout<<"创建文件失败! "<<endl;//打印出错提示
			getchar();
			return;
		}
		fscanf(fp1,"%d",&m);
		fclose(fp1);//关闭文件
		for(i=0;i<m;i++) 
			fclose(fp);//关闭文件
}
void print()//打印模块
{
	char w[10];
	read();//调用读取文件函数
	cout<<"航班号       起始站      终点站    时间       机票数 "<<endl;
	for(i=0;i<m;i++)
	{
		cout<<s[i].num<<"            "<<s[i].start<<"           "<<s[i].over<<"      "<<s[i].time<<"    "<<s[i].count<<endl;//打印信息
	}
	cout<<"请按任意键回车键结束返回上层菜单以: ";
	scanf("%s",w);
}
   
void search()//查询模块
{
	char name1[20];
	char name2[20];
	char ii[10];
	int n,no;
	do
	{
		cout<<"请选择查找方式: "<<endl;//打印查询方式菜单
		cout<<"1.按航班号查找 "<<endl;
		cout<<"2.按终点站查找 "<<endl;
		cout<<"3.按航线查找 "<<endl;
		cout<<"0.返回 "<<endl;
		cout<<"请在0-3中选择: "<<endl;
		cout<<"按其他键以回车键结束返回主菜单: ";
		cin>>n;//读取查找方式	
		if(n==0)
			break;
		switch(n)
		{
		case 1:
			cout<<"请输入航班号: "<<endl;
			cin>>no;//航班号
			break;
		case 2:
			cout<<"请输入终点站名称: "<<endl;
			cin>>name2;//读取终点站
			break;
		case 3:
			cout<<"请输入起始站名称: "<<endl;
			cin>>name1;//读取起始站
			cout<<"请输入终点站名称: "<<endl;
			cin>>name2;//终点站
			break;
		}
	}
read();//调用读取函数
for(i=0;i<m;i++)
{    
	if(strcmp(s[i].over,name1)==0&&strcmp(s[i].over,name2)==0)//按终点站起始站判断输出条件
	{
		cout<<" 查找航班信息成功! "<<endl;
		cout<<"航班号       起始站      终点站    时间       机票数 "<<endl;
		cout<<s[i].num<<"   "<<s[i].start<<"   "<<s[i].over<<"   "<<s[i].time<<"   "<<s[i].count<<endl;//打印信息
		break;
	}
	if(s[i].num==no)//按航班号判断输出条件
	{ 
		cout<<" 查找航班信息成功! "<<endl;
		cout<<"航班号       起始站      终点站    时间       机票数 "<<endl;
		cout<<s[i].num<<"   "<<s[i].start<<"   "<<s[i].over<<"   "<<s[i].time<<"   "<<s[i].count<<endl;//打印信息
		break;
	} 
}
no=0;//将航班号赋值为0
cout<<"没有您需要的信息或查找完毕: "<<endl;
cout<<"是否继续查找?请键入y或n以回车键结束 "<<endl;
cin>>i;
{
	while(strcmp(ii,"y")==0);//判断结束
}
void shanchu()//删除模块
{
	char name1[20];
	char name2[20];
	char ii[10];
	char f[10];//设置密码
	int no,n; 
	cout<<"请输入密码并以回车键结束: "<<endl;
	cin>>f;//读取密码
	if(strcmp(f,"2008china")==0)    //判断密码是否正确
	{
		do 
		{
			cout<<"请选择删除以方式回车键结束: "<<endl;//打印删除方式菜单
			cout<<"*1.按航班号删除 "<<endl;
			cout<<"*2.按航线删除 "<<endl;
			cout<<"*0.返回 "<<endl;
			cout<<"请在0-2中选择以回车键结束: "<<endl;
			cin>>n;//读取删除方式
			if(n==0)
				break;    //跳出循环
			switch(n)
			{
			case 1:
				cout<<"请输入航班号: "<<endl;
				cin>>no;//读取航班号
				read();//调用读取函数
				break;//跳出循环
			case 2:
				cout<<"请输入起始站 名称: "<<endl;
				cin>>name1;//读取起始站
				cout<<"请输入终点站名称: "<<endl;
				cin>>name2;//读取终点站
				read();//调用读取函数
				break;//跳出循环
			}
			for(i=0;i<m;i++)
				cout<<"查找完毕或没有这个信息 "<<endl;
			cout<<"是否继续删除 "<<endl;     
			cout<<"请键入y或n以回车键结束 "<<endl;
			cin>>ii;//读取是否继续信息
			save(); //调用读取函数
			if(!strcmp(ii,"y")) //判断是否继续删除    
				cout<<"请按任意键以回车键结束返回上层菜单: "<<endl;
			break;
		}
		while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); //判断结束
	}
	else
		cout<<"对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见! "<<endl;
}
void dingpiao()//订票模块
{
	int n;
	char a[10];
	do
	{
		search();//调用查询模块		
		cout<<"请输入您要订的机票数以回车键结束: "<<endl;
		cin>>n;//读取所订机票数
		if(n<0)
		{
			cout<<"请输入有效的机票数! "<<endl;//判断机票数是否出错
			break;
		}
		if(s[i].count!=0&&s[i].count>=n)//判断是否出错
		{
			s[i].count=s[i].count-n;
			save();//调用保存函数  
			cout<<"订票成功! "<<endl;
			break;
		}
		if(s[i].count<n)//判断是否出错
		{
			cout<<"请输入有效的机票数: "<<endl;
			break; 
		}
		cout<<"是否继续? 请输入y或n以回车键结束: "<<endl;//判断是否继续订票
		cin>>a;
	}
	while(!strcmp(a,"y"));//判断结束
}
void tuipiao()//退票模块
{
	int n;
	char a[10];
	do
	{
		search();//调用查询模块
		cout<<"请输入您要退的机票数目: "<<endl;
		cin>>n;//输入所退票数
		if(n<0) //判断票数是否有效
			cout<<"请输入有效的机票数! "<<endl;
		s[i].count=s[i].count+n;
		save(); //调用保存模块
		cout<<"退票成功! "<<endl;
		cout<<"是否继续? 请键入y或n以回车键结束: "<<endl;//判断是否继续退票
		cin>>a;
	}
	while(!strcmp(a,"y"));//判断并跳出循环
	getchar();
}
void xiugai()   //修改模块
{
struct xiu   //定义结构体 
{
	int no;
	char name1[20];
	char name2[20];
	char time[20];
	int count;
}
x[1];
char j[10];
char f[10];//设置密码
int n;
cout<<"请输入密码并以回车键结束: "<<endl;
cin>>f;//读取密码
if(strcmp(f,"2008china")==0)//判断是否出错
{
	read();//调用读取模块
	do
	{
		cout<<"请选择修改方式: "<<endl;
		cout<<"*1,按航班号修改: "<<endl;
		cout<<"*2,按航线修改: "<<endl;
		cout<<"请在1---2中修改以回车键结束: "<<endl;
		cin>>n;//读取修改方式
		switch(n)
		{
		case 1:cout<<"请输入航班号: "<<endl;
			cin>>x[0].no;//读取航班号
			break;
		case 2:cout<<"请输入起始站: "<<endl;
			cin>>x[0].name1;//读取起始站
			cout<<"请输入终点站: ";
			cin>>x[0].name2;//读取终点站
			break;
		}
		for(i=0;i<m;i++)
		{    
			if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)//判断输出条件
			{
				cout<<"航班号       起始站      终点站    时间       机票数 ";
				cout<<s[i].num<<"   "<<s[i].start<<"   "<<s[i].over<<"   "<<s[i].time<<"   "<<s[i].count<<endl;
				break;
			}
			if(s[i].num==x[0].no)//判断输出条件
			{ 
				cout<<"航班号       起始站      终点站    时间       机票数 "<<endl;
				cout<<s[i].num<<"   "<<s[i].start<<"   "<<s[i].over<<"   "<<s[i].time<<"   "<<s[i].count<<endl;
				break;
			}
		}
		x[0].no=0;            //将结构体中的号为零
		cout<<"请输入新航班号、起始站、终点站、时间(星期几)、机票数: "<<endl;
		cin>>x[0].no>>x[0].name1>>x[0].name2>>x[0].time>>x[0].count;//定义输入格式
		s[i].num=x[0].no;//替换航班号
		strcpy(s[i].start,x[0].name1);//替换其始站
		strcpy(s[i].over,x[0].name2);//替换终点站
		strcpy(s[i].time,x[0].time);//替换时间
		s[i].count=x[0].count;//替换机票数
		save();//调用保存模块
		cout<<"是否继续?请键入y或n以回车键结束: "<<endl;
		cin>>j;
		{
			while(strcmp(j,"y")==0); //判断结束
		}
		else
			cout<<"对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见! "<<endl;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -