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

📄 file.cpp

📁 是用C语言实现的
💻 CPP
字号:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 20 

struct air
{
	char num[10];//航班号
	char start[20];//起点站
	char destination[20];//终点站
	char data[10];//班期
	char DepartureTime[10]; //起飞时间
	char ArrivingTime[10];//到达时间
	char kind[10];//机型
	int  price;//票价
	long int value;
}s[N];

int length;//文件所含航班信息的长度

void read();//读取文件
void insert();//插入
void save();//保存
void print();//打印模块
void compositor();//排序
void search();//查找

void search_num();//按航班号查找
int  bin_search (double sum);
void search_start();//按起点查找
void search_destination();//按终点查找
void search_DepartureTime();//按起飞时间查找
void search_ArrivingTime();//按到达时间查找

void main()
{
	int  i=0,j;
	read();		
	do
	{	
		printf("**********************************************\n");
		printf("1.初始化航班信息 \n");
		printf("2.插入航班信息 \n");
		printf("3.对航班信息进行排序 \n");
		printf("4.查询航班\n");
		printf("5.浏览航班\n");
		printf("0.退出系统\n");
		printf("**********************************************\n");
		printf("请输入0-5选择:");
		scanf("%d",&j);
		switch(j)
		{
		case 1:
			system("cls");
			read();
			printf("初始化完毕\n");
			break;
		case 2:
			system("cls");
			insert();
			save();
			break;
		case 3:
			system("cls");
			compositor();
			break;
		case 4:
			system("cls");
			search();
			break;
		case 5:
			system("cls");
			print();
			break;
		}
	}
	while(j!=0);     //判断结束
	
}//主函数


void read()
{
	FILE *fp;
	fp=fopen("information.txt","r");
	int i=0;
	while(!feof(fp))
	{
		fscanf(fp,"%s %s %s %s %s %s %s %d",s[i].num,s[i].start,s[i].destination,
		s[i].data,s[i].DepartureTime,s[i].ArrivingTime,s[i].kind,&s[i].price);
		s[i].value=0;
		i++;
	}
	length=i-1;
	fclose(fp);
}



void insert()//插入
{ 
	int flag=1;
	int i=length;
	printf("请依次输入航班信息:\n\n");
	while(flag==1)
	{
	
		printf("请输入航班号:\n");  
		scanf("%s",s[i].num);     //读取航班号
		printf("请输入起始站:\n");
		scanf("%s",s[i].start);//读取起始站
		printf("请输入终点站:\n");
		scanf("%s",s[i].destination);//读取终点站
		printf("请输入该航班的班期:\n");
		scanf("%s",s[i].data);//读取班期
		printf("请输入起飞时间:\n");
		scanf("%s",s[i].DepartureTime);//读取时间
		printf("请输入降落时间:\n");
		scanf("%s",s[i].ArrivingTime);//读取时间
		printf("请输入飞机型号:\n");
		scanf("%s",s[i].kind);//读取型号
		printf("请输入票价:\n");
		scanf("%d",&s[i].price);//读取票价
		length++;
	
		printf("信息已经输完是否继续?按任意键继续,按 0结束");
		scanf("%d",&flag);
	}

}
void save()
{
	int i=0;
	FILE *fp;
	fp=fopen("information.txt","w");
	for(i=0;i<length;i++)
	{
		fprintf(fp,"%s\t %s\t %s\t %s\t %s\t %s\t %s\t %d \n",s[i].num,s[i].start,s[i].destination,
		s[i].data,s[i].DepartureTime,s[i].ArrivingTime,s[i].kind,s[i].price,s[i].value);
	}
	fclose(fp);
}
double value(char *p)
{
    double sum = 0;
	int i=1000;
	while(*p)
	{
		sum = sum + (*p-'0'+1)*i;
		p = p + 1;
		i = i/10.0;
	}
	return sum;
}

void compositor()
{
    double ss[N];
	int i;
	int j;
	double k;
	air a;
	for(i = 0;i < length;i++)
	{
		ss[i] = value(s[i].num);
	}
    for(i = 0;i < length-1;i++)
    for(j = 0;j < length - i - 1;j++)
	{
		if(ss[j] > ss[j+1] )
		{
			k = ss[j+1];
			ss[j+1] = ss[j];
			ss[j] = k;
			a = s[j];
			s[j] = s[j+1];
			s[j+1] = a;
		}
	}
	save();
}
void print()//打印模块
{
	int i;
	printf("航班号\t起点站\t终点站\t班期\t    起飞时间 到达时间   机型\t票价\n");
	read();//调用读取文件函数
	for(i=0;i<length ;i++)
	printf("%s\t%s\t%s\t%s\t\t%s\t%s\t%s\t%d\n",s[i].num,s[i].start,s[i].destination,
	s[i].data,s[i].DepartureTime,s[i].ArrivingTime,s[i].kind,s[i].price);
}

void search()
{
	int num;
loop:
	printf("*********************\n");
	printf("*    航班查询系统   *\n");
	printf("*********************\n");
	printf("   1.航班号\n");
	printf("   2.起点站\n");
	printf("   3.终点站\n");
	printf("   4.起飞时间\n");
	printf("   5.到达时间\n");
	printf("   0.返回上级菜单\n");
	printf("*********************\n");
	printf("请选择:");
	scanf("%d",&num);
	switch(num)
	{
	case 1:
		search_num();
		goto loop;
		break;
	case 2:
		search_start();
		goto loop;
		break;
	case 3:
		search_destination();
		goto loop;
		break;
	case 4:
		search_DepartureTime();
		goto loop;
		break;
	case 5:
		search_ArrivingTime();
		goto loop;
		break;
	case 0:
		break;
	}
}

void search_num()
{
	int flag;
	double sum;
	char p[10];
	printf("请输入要查找的飞机的航班号:\n");
	scanf("%s",p);
	sum=value(p);
	flag=bin_search(sum);
	if(flag==1)
	{
		printf("已找到该航班\n");
		
	}
	else 
		printf("该航班不存在\n");
}

int  bin_search (double sum)
{
	int low=0,mid;
	int hig=length;
	int found=0;
	while(low<=hig)
	{ 
		mid=(low +hig)/2;                           //取区间中点
		if (value(s[mid].num)==sum) 
		{ 
			found=1;			
			printf("航班号\t起点站\t终点站\t班期\t    起飞时间 到达时间   机型\t票价\n");
			printf("%s\t%s\t%s\t%s\t\t%s\t%s\t%s\t%d\n",s[mid].num,s[mid].start,s[mid].destination,
			s[mid].data,s[mid].DepartureTime,s[mid].ArrivingTime,s[mid].kind,s[mid].price);
			return(found);  
		}   //查找成功
		 if (value(s[mid].num)>sum)
			 hig=mid-1;                       //在左子区间中查找
		else  low=mid+1;                //在右子区间中查找
    }
	if(found==0)
	return(0); //查找失败
}

void search_start()
{
	char start[20];
	int i;
	printf("请输入要查找的航班的起点站:\n");
	scanf("%s",start);
	for(i=0;i<length;i++)
	{
		if(strcmp(start,s[i].start)==0)
		{
		printf("已找到该航班\n");
		printf("航班号\t起点站\t终点站\t班期\t    起飞时间 到达时间   机型\t票价\n");
		printf("%s\t%s\t%s\t%s\t\t%s\t%s\t%s\t%d\n",s[i].num,s[i].start,s[i].destination,
		s[i].data,s[i].DepartureTime,s[i].ArrivingTime,s[i].kind,s[i].price);
		return;
		}
	}
	printf("该航班不存在\n");
}

void search_destination()
{
	char destination[20];
	int i;
	printf("请输入要查找的航班的终点站:\n");
	scanf("%s",destination);
	for(i=0;i<length;i++)
	{
		if(strcmp(destination,s[i].destination)==0)
		{
			printf("已找到该航班\n");
			printf("航班号\t起点站\t终点站\t班期\t    起飞时间 到达时间   机型\t票价\n");
			printf("%s\t%s\t%s\t%s\t\t%s\t%s\t%s\t%d\n",s[i].num,s[i].start,s[i].destination,
			s[i].data,s[i].DepartureTime,s[i].ArrivingTime,s[i].kind,s[i].price);
			return;
		}
	}
	printf("该航班不存在\n");
}

void search_DepartureTime()
{
	char DepartureTime[20];
	int i;
	printf("请输入要查找的航班的起飞时间:\n");
	scanf("%s",DepartureTime);
	for(i=0;i<length;i++)
	{
		if(strcmp(DepartureTime,s[i].DepartureTime)==0)
		{
			printf("已找到该航班\n");
			printf("航班号\t起点站\t终点站\t班期\t    起飞时间 到达时间   机型\t票价\n");
			printf("%s\t%s\t%s\t%s\t\t%s\t%s\t%s\t%d\n",s[i].num,s[i].start,s[i].destination,
			s[i].data,s[i].DepartureTime,s[i].ArrivingTime,s[i].kind,s[i].price);
			return;
		}
	}
	printf("该航班不存在\n");
}


void search_ArrivingTime()
{
	char ArrivingTime[20];
	int i;
	printf("请输入要查找的航班的到达时间:\n");
	scanf("%s",ArrivingTime);
	for(i=0;i<length;i++)
	{
		if(strcmp(ArrivingTime,s[i].ArrivingTime)==0)
		{
		printf("已找到该航班\n");
		printf("航班号\t起点站\t终点站\t班期\t    起飞时间 到达时间   机型\t票价\n");
		printf("%s\t %s\t %s\t %s\t %s\t %s\t %s\t %d\n",s[i].num,s[i].start,s[i].destination,
		s[i].data,s[i].DepartureTime,s[i].ArrivingTime,s[i].kind,s[i].price);
		return;
		}
	}
	printf("该航班不存在\n");
}

⌨️ 快捷键说明

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