实验室设备管理系统[通俗易懂]

实验室设备管理系统[通俗易懂]#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX_NUM100 //数组最大长度typedefstruct_EQUIPMENT{intnum;//编号intis_bolish;//是否报废charstyle[20];//种类c…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_NUM 100	//数组最大长度

typedef struct _EQUIPMENT
{
   int num;//编号
   int is_bolish;//是否报废
   char style[20];//种类
   char name[20];//名称
   char buy_date[20];//购入日期
   char bolish_date[20];//报废日期
   float price;//价格
}EQU;

int Addnew(EQU arr[],int cur)//添加新设备
{
	system("cls");
	printf("输入编号:");
	scanf("%d",&arr[cur].num);
	printf("输入设备种类:");
	scanf("%s",arr[cur].style);
	printf("输入设备名称:");
	scanf("%s",arr[cur].name);
	printf("输入购入日期:");
	scanf("%s",arr[cur].buy_date);
	printf("输入购入价格:");
	scanf("%f",&arr[cur].price);

	printf("设备是否报废(1:报废 0:未报废):");
	scanf("%d",&arr[cur].is_bolish);
	if(arr[cur].is_bolish==1)//根据是否报废 判断是否要输入报废日期
	{		
		printf("输入报废日期:");
		scanf("%s",arr[cur].bolish_date);
	}
	printf("录入成功!\n");
	system("pause");
	return cur+1;//数组长度+1
}

/*
显示设备
根据首地址和数量n显示
*/
void Display(EQU arr[],int n)
{
	int i;
	system("cls");
	printf("%10s%10s%10s%10s%10s%10s%10s\n","编号","种类","名称","购入日期","是否报废","报废日期","购入价格");
	for(i=0;i<n;i++)
	{
		printf("%10d",arr[i].num);
		printf("%10s",arr[i].style);
		printf("%10s",arr[i].name);
		printf("%10s",arr[i].buy_date);
		printf("%10d",arr[i].is_bolish);
		if(arr[i].is_bolish == 1)//如果报废显示报废日期
		{
			printf("%10s",arr[i].bolish_date);
		}
		else
		{
			printf("%10s","-");
		}
		printf("%10.2f\n",arr[i].price);
	}
}

/*保存到文件*/
void Save_File(EQU arr[],int cur)
{	
	int i;
	FILE* fp=fopen("equipment.txt","w+");
	if(fp==NULL)	
	{		
		return ;	
	}	
	for(i=0;i<cur;i++)	
	{		
		fwrite(&arr[i],sizeof(EQU),1,fp);
	}	
	fclose(fp);
}
/*加载文件*/
int Open_File(EQU arr[])
{	
	int i=0;
	FILE* fp=fopen("equipment.txt","r+");
	if(fp==NULL)	
	{		
		return 0;	
	}	
	while(fread(&arr[i],sizeof(EQU),1,fp))	
	{
		i++;	
	}	
	return i;
}




/*查找设备*/
void Serach_Num(EQU arr[],int cur)
{
	int i;
	int temp;
	system("cls");
	printf("请输入要查询的设备编号:");
	scanf("%d",&temp);
	for(i=0;i<cur;i++)
	{
		if(temp==arr[i].num)
		{
			break;
		}
	}
	if(i==cur)//遍历结束i==cur  如果找到会break i<cur
	{
		printf("无该设备信息!\n");
	}
	else
	{
		Display(&arr[i],1);
	}
	system("pause");
}

/*修改设备信息*/
void Modify(EQU arr[],int cur)
{
	int i;
	int temp;
	char chioce[20];
	EQU swap;
	system("cls");
	printf("请输入要修改的设备编号:");
	scanf("%d",&temp);
	for(i=0;i<cur;i++)
	{
		if(temp==arr[i].num)
		{
			break;
		}
	}
	if(i==cur)
	{
		printf("无该设备信息!\n");
		system("pause");
		return ;
	}
	Display(&arr[i],1);

	printf("输入新编号:");
	scanf("%d",&swap.num);
	printf("输入设备种类:");
	scanf("%s",swap.style);
	printf("输入设备名称:");
	scanf("%s",swap.name);
	printf("输入购入日期:");
	scanf("%s",swap.buy_date);
	printf("输入购入价格:");
	scanf("%f",&swap.price);

	printf("设备是否报废(1:报废 0:未报废):");
	scanf("%d",&swap.is_bolish);
	if(swap.is_bolish==1)
	{		
		printf("输入报废日期:");
		scanf("%s",swap.bolish_date);
	}
	printf("确认修改?(Y/N)");
	scanf("%s",chioce);
	if(!strcmp(chioce,"Y")||!strcmp(chioce,"y"))//确认修改则将其覆盖
	{
		arr[i]=swap;
		printf("修改成功!\n");
	}
	system("pause");
}

void Total(EQU arr[],int cur)
{
	int i;
	int temp=0;
	system("cls");
	
	for(i=0;i<cur;i++)
	{
		if(1==arr[i].is_bolish)
		{
			temp++;
		}
	}
	
	printf("损坏设备数量:%d\n",temp);
	printf("未损坏设备数量:%d\n",cur-temp);
	printf("设备总数量:%d\n",cur);

	system("pause");
}

int Del_Num(EQU arr[],int cur)
{
	int i,j;
	int temp;
	char chioce[20];
	system("cls");
	printf("请输入要删除的设备编号:");
	scanf("%d",&temp);
	for(i=0;i<cur;i++)
	{
		if(temp==arr[i].num)
		{
			break;
		}
	}
	if(i==cur)
	{
		printf("无该设备信息!\n");
		system("pause");
		return cur;
	}
	Display(&arr[i],1);
	
	printf("确认删除?(Y/N)");
	scanf("%s",chioce);
	if(!strcmp(chioce,"Y")||!strcmp(chioce,"y"))
	{
		for(j=i;j<cur;j++)//用后一个元素覆盖前一个元素  达到删除效果
		{
			arr[j]=arr[j+1];
		}
		printf("删除成功!\n");
	}
	else
	{
		return cur;
	}
	return cur-1;//删除后数量-1
}


int Menu()
{
	int chioce;
	system("cls");
	printf("1:录入设备信息\n");
	printf("2:修改设备信息\n");
	printf("3:查询设备信息\n");
	printf("4:遗损设备删除\n");
	printf("5:显示全部设备\n");
	printf("6:统计设备信息\n");
	printf("0:退出\n");
	printf("请输入选项:");
	scanf("%d",&chioce);
	while(chioce<0||chioce>6)
	{
		printf("范围错误,请重新输入:");
		scanf("%d",&chioce);
	}
	return chioce;
}//菜单函数 提供用户菜单 返回给主函数用户选项  




int main()
{
	int chioce;
	EQU equ[MAX_NUM];//结构体数组
	int NUM = 0;//记录数组长度
	NUM=Open_File(equ);//读取文件
	do
	{
		chioce=Menu();//获取用户选择
		switch(chioce)//根据选择进入相应功能
		{
		case 1:
			NUM=Addnew(equ,NUM);
			break;
		case 2:
			Modify(equ,NUM);
			break;
		case 3:
			Serach_Num(equ,NUM);
			break;
		case 4:
			NUM=Del_Num(equ,NUM);
			break;
		case 5:
			Display(equ,NUM);
			system("pause");
			break;
		case 6:
			Total(equ,NUM);
			break;
		}
	}while(chioce!=0);
	Save_File(equ,NUM);//保存文件
	return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182253.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号