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

实验室设备管理系统[通俗易懂]#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)


相关推荐

  • java中println和printf有什么区别_string和int的区别

    java中println和printf有什么区别_string和int的区别Java语言中print和println的区别简单的说:print意思是:打印而println是print+line的缩写,即:换行打印举例打印1和2:⑴不换行打印:publicclassMyDemo{ publicstaticvoidmain(Stringargs[]){ inti=1; intj=2; System.out.print(i)…

  • elasticsearch数据库搭建 linux版

    elasticsearch数据库搭建 linux版介绍Elasticsearch是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎ApacheLucene(TM)基础上的搜索引擎.当然Elasticsearch并不仅仅是Lucene那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 实时分析的分布式搜索引擎。 可以扩展到上百台服务器,处理P…

  • ipsec iptables_iptables -p

    ipsec iptables_iptables -piptablesiptables[-t表名]命令选项[链名][条件匹配][-j目标动作或跳转]-t表名可以省略,指定规则存放在哪个表中,默认为filter表用于存放相同功能的规则filter表:负责过滤功能能,nat表:网络地址转换功能mangle表:拆解报文做出修改并重新封装的功能raw表:关闭nat表上启用的连接追踪机制命令选项-A在…

  • java环境变量配置与adb环境变量配置的关系_mac设置环境变量

    java环境变量配置与adb环境变量配置的关系_mac设置环境变量Java环境变量配置与adb环境变量配置java环境变量配置第一步:下载jdk文件下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html第二步:安装jdk1.打开jdk安装包,点击下一步开始安装。2.弹出安装路径,将目录更改至D盘,点击下一步。3.在D盘Java目录下新建jer文件夹,并将安装路径更改至此目录下4.安装…

    2022年10月29日
  • arcgis python实例_arcgis二次开发_arcgis二次开发python_arcgis二次开发实例

    arcgis python实例_arcgis二次开发_arcgis二次开发python_arcgis二次开发实例[1.rar]-QQ连连看的源码.单消秒杀挂机等功能喜欢的朋友请拿去研究[qqCHAR.rar]-qq验证码识别程序可以叫准确的识别出qq登陆前的验证码[1.rar]-本书以Visualc++作为开发语言,结合大量实例,详细介绍了利用Arcobjects组件进行GIS二次开发的方法和过程。书中在讲述利用Arcobjects实现GIS功能的基础上,重点介绍了在Arcobjects环境…

  • vscode html注释快捷键_VSCode 的快捷键及常用插件总结

    vscode html注释快捷键_VSCode 的快捷键及常用插件总结1、注释:·单行注释:ctrl+/,注释后再按取消·取消单行注释:alt+shift+A注释后再按取消2、移动行·向上移动一行:alt+up·向下移动一行:alt+down3、显示/隐藏左侧目录栏·ctrl+b4、复制当前行·向上复制一行:shift+alt+up·向下复制一行:shift+alt+down5、删除当前行·shift+ctrl+k6、控制台显示隐藏…

发表回复

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

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