某航空公司客机信息管理系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct _Plane
{
	char no[20];//客机编号
	char style[20];//客机型号
	char buy_time[20];//购买时间
	char use_time[20];//服役时间
	char fly[20];//已飞总里程
	char more[20];//备注信息
	int num1;//经济舱
	int num2;//公务
	int num3;//头等舱
}Plane;


//输入客机信息
void Input(Plane plane[],int* n)
{
	system("cls");
	printf("请输入客机编号:");
	scanf("%s",plane[*n].no);
	printf("请输入客机型号:");
	scanf("%s",plane[*n].style);
	printf("请输入客机购买时间:");
	scanf("%s",plane[*n].buy_time);
	printf("请输入客机服役时间:");
	scanf("%s",plane[*n].use_time);
	printf("请输入客机已飞行总里数:");
	scanf("%s",plane[*n].fly);
	printf("请输入客机经济舱座位数:");
	scanf("%d",&plane[*n].num1);
	printf("请输入客机公务舱座位数:");
	scanf("%d",&plane[*n].num2);
	printf("请输入客机头等舱座位数:");
	scanf("%d",&plane[*n].num3);
	printf("请输入客机备注信息:");
	scanf("%s",plane[*n].more);
	printf("录入成功!\n");
	system("pause");
	(*n)++;//客机的数量增加1
}

//显示客机信息
void Display(Plane plane[],int n)
{
	int i;
	printf("%-10s%-10s","编号","型号");
	printf("%-10s%-10s","购买时间","服役时间");
	printf("%-10s%-15s","已飞行","经济舱座位");
	printf("%-15s%-15s","公务舱座位","头等舱座位");
	printf("%-20s\n","备注");
	for(i=0;i<n;i++)//遍历结构体数组 输出信息
	{
		printf("%-10s%-10s",plane[i].no,plane[i].style);
		printf("%-10s%-10s",plane[i].buy_time,plane[i].use_time);
		printf("%-10s%-15d",plane[i].fly,plane[i].num1);
		printf("%-15d%-15d",plane[i].num2,plane[i].num3);
		printf("%-20s\n",plane[i].more);
	}
}

//根据编号查找
void Search_By_Num(Plane plane[],int m)
{
	int i;
	int flag=0;
	char temp[20];
	system("cls");
	printf("请输入要查询的客机编号:");
	scanf("%s",temp);
	
	for(i=0;i<m;i++)//遍历结构体数组
	{
		if(!strcmp(temp,plane[i].no))//如果找到
		{
			Display(&plane[i],1);//显示该图书
			flag=1;//说明已经找到
		}
	}
	if(flag==0)//还是等于0说明没找到
	{
		printf("无该编号!\n");
	}
	system("pause");	
}

//根据型号查找
void Search_By_Style(Plane plane[],int m)
{
	int i;
	int flag=0;
	char temp[20];
	system("cls");
	printf("请输入要查询的客机型号:");
	scanf("%s",temp);
	
	for(i=0;i<m;i++)
	{
		if(!strcmp(temp,plane[i].style))//如果相同
		{
			Display(&plane[i],1);//显示该信息
			flag=1;//说明已经找到
		}
	}
	if(flag==0)
	{
		printf("无该书名!\n");
	}
	system("pause");	
}




//删除客机信息
void Del(Plane plane[],int* n)
{
	int i,m=*n,j;
	int flag=0;
	char temp[20];
	system("cls");
	printf("请输入要删除的客机编号:");
	scanf("%s",temp);
	
	for(i=0;i<m;i++)
	{
		if(!strcmp(temp,plane[i].no))//如果号相同
		{
			flag=1;//说明已经找到
			break;
		}
	}
	if(flag==0)
	{
		printf("无该编号!\n");
		system("pause");
		return ;
	}
	Display(&plane[i],1);//显示该信息
	printf("是否删除?(Y/N)");
	scanf("%s",temp);
	if(!strcmp(temp,"Y")||!strcmp(temp,"y"))
	{
		for(j=i;j<m;j++)//结构体数组前移
		{
			plane[j]=plane[j+1];//用后一个数据覆盖前一个 达到删除效果
		}
		printf("删除成功!\n");
	
		(*n)--;//删除成功 结构体数组长度减一
	}
	else
	{
		printf("已取消删除!\n");
	}
	system("pause");
}

void Modify(Plane plane[],int m)
{
	int i;
	int flag=0;
	char temp[20];
	Plane swap;
	system("cls");
	printf("请输入要修改的客机编号:");
	scanf("%s",temp);
	
	for(i=0;i<m;i++)
	{
		if(!strcmp(temp,plane[i].no))//如果号相同
		{
			flag=1;//说明已经找到
			break;
		}
	}
	if(flag==0)
	{
		printf("无该编号!\n");
		system("pause");
		return ;
	}
	Display(&plane[i],1);//显示该信息

	printf("请输入客机型号:");
	scanf("%s",swap.style);
	printf("请输入客机购买时间:");
	scanf("%s",swap.buy_time);
	printf("请输入客机服役时间:");
	scanf("%s",swap.use_time);
	printf("请输入客机已飞行总里数:");
	scanf("%s",swap.fly);
	printf("请输入客机经济舱座位数:");
	scanf("%d",&swap.num1);
	printf("请输入客机公务舱座位数:");
	scanf("%d",&swap.num2);
	printf("请输入客机头等舱座位数:");
	scanf("%d",&swap.num3);
	printf("请输入客机备注信息:");
	scanf("%s",swap.more);
	strcpy(swap.no,temp);

	printf("是否修改?(Y/N)");
	scanf("%s",temp);
	if(!strcmp(temp,"Y")||!strcmp(temp,"y"))
	{
		plane[i]=swap;
		printf("已成功修改!\n");
	}
	else
	{
		printf("已取消修改!\n");
	}
	system("pause");
}

int Menu()
{
	int i;
	system("cls");
	printf("1:录入客机信息\n");
	printf("2:显示客机信息\n");
	printf("3:根据编号查询\n");
	printf("4:修改客机信息\n");
	printf("5:删除客机信息\n");
	printf("6:根据型号查询\n");
	printf("7:按编号显示\n");
	printf("8:统计各舱座位\n");
	printf("0:退出系统\n");
	printf("请输入选择:");
	scanf("%d",&i);
	while(i<0||i>9)//判断输入的是不是0-9范围内
	{
		printf("请重新选择:");
		scanf("%d",&i);
	}
	return i;
}

void Save(Plane arr[],int n)//保存信息到文件
{
	int i;
	FILE* fp;
	fp= fopen("plane_info.txt","w+");//打开文件
	if(fp==NULL)//打开失败则退出
	{
		return;
	}
	for(i=0;i<n;i++)//循环写入到文件
	{
		fwrite(&arr[i],1,sizeof(Plane),fp);
	}
	fclose(fp);
}

int Read(Plane arr[])//读取文件
{
	int i=0;
	FILE* fp;
	fp= fopen("plane_info.txt","r+");
	if(fp==NULL)
	{
		return 0;
	}
	while(fread(&arr[i++],1,sizeof(Plane),fp));//当文件不为空 一直读取
	fclose(fp);
	if(i>=1)//把读取的回车去掉
	{
		return i-1;
	}
	return 0;
}

void Sort(Plane arr[],int n)
{
	int i,j;
	Plane swap;
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(strcmp(arr[i].no,arr[j].no)>0)
			{
				swap=arr[i];
				arr[i]=arr[j];
				arr[j]=swap;
			}
		}
	}
}

void Total(Plane arr[],int n)
{
	int sum[3]={0};
	int i;
	system("cls");
	for(i=0;i<n;i++)
	{
		sum[0]+=arr[i].num1;
		sum[1]+=arr[i].num2;
		sum[2]+=arr[i].num3;
	}
	printf("总客机数:%d\n",n);
	printf("总座位数量:%d\n",sum[0]+sum[1]+sum[2]);
	printf("总经济舱数量:%d\n",sum[0]);
	printf("总公务舱数量:%d\n",sum[1]);
	printf("总头等舱数量:%d\n",sum[2]);
	system("pause");
}


int main()
{
	int choice;
	Plane plane[100];//记录信息
	int n=Read(plane);//数量
	system("mode con: cols=120 lines=30");//设置屏幕大小
	while(1)
	{
		choice=Menu();//获取用户选择
		switch(choice)//根据选择进入相应功能
		{
		case 0:
			Save(plane,n);
			exit(0);
			break;
		case 1:
			Input(plane,&n);
			break;
		case 2:
			system("cls");
			Display(plane,n);
			system("pause");
			break;
		case 3:
			Search_By_Num(plane,n);
			break;
		case 4:
			Modify(plane,n);
			break;
		case 5:
			Del(plane,&n);
			break;
		case 6:
			Search_By_Style(plane,n);
			break;
		case 7:
			Sort(plane,n);
			system("cls");
			Display(plane,n);
			system("pause");
			break;
		case 8:
			Total(plane,n);
			break;
		}
	}
	return 0;
}

相关文章: