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

实验室设备管理系统[通俗易懂]#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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DetailsView使用DropDownList1

    DetailsView使用DropDownList1 DetailsView使用DropDownList1类型”>012300112233在插入(DetailsView1_ItemInserting)或更新(DetailsView1_ItemUpdating)事件中加入代码:stringstr=((DropDownList)DetailsView1.Rows[3].Cells[1].FindControl(“DropDownList1”

    2022年7月18日
    16
  • Python任务调度模块 – APScheduler

    Python任务调度模块 – APScheduler

    2021年9月14日
    70
  • 【转AekdyCoin】求小于等于N的与N互质的数的和「建议收藏」

    【转AekdyCoin】求小于等于N的与N互质的数的和「建议收藏」话说我以前求这样的问题都是先求与N不互质的数,把N分解质因数,然后用容斥原理,今天看了大牛的博客,顿时觉得弱爆了。。。以下内容转大牛文章:ifgcd(n,i)=1thengcd(n,n-i)=1(1反证法:如果存在K!=1使gcd(n,n-i)=k,那么(n-i)%k==0而n%k=0那么必须保证i%k=0k是n的因子,如果i%k=0那么gcd(n,i)=k

    2022年7月23日
    11
  • NAT模式实现局域网物理机与虚拟机的互通访问「建议收藏」

    NAT模式实现局域网物理机与虚拟机的互通访问「建议收藏」玩过虚拟机的朋友都知道,不管是vbox还是vm,最常用的网络设置也不外乎3种:1、桥接模式:此模式下,虚拟机的操作系统就像和物理机同一段网络中的物理机一样,它可以访问网络中的任何机器,同时只要物理机可以访问网络,虚拟机也可以实现上网。此模式是懒人模式首选!但换来一个问题就是,如果你的物理机网络IP发生变化,虚拟机的IP也会相应的改变。如果IP变化对虚拟机有影响的环境,此模式慎用!

    2022年6月23日
    97
  • Java框架总结

    Java框架总结本系列用来记录常用java框架的基本概念、区别及联系,也记录了在使用过程中,遇到的一些问题的解决方法,方便自己查看,也方便大家查阅。欲速则不达,欲达则欲速!一、SSH1、基本概念SSH框架是JAVAEE中三种框架所集成,分别是Struts,Spring,Hibernate框架所组成,是当前比较流行的javaweb开源框架。集成SSH框架的系统从职责上分为(Struts2–…

    2022年7月9日
    15
  • 静态变量存储在那个区? – 转[通俗易懂]

    静态变量存储在那个区? – 转[通俗易懂]一时间忘咯然后就去转载..静态变量存储在__区A全局区B堆C栈D常量区参考答案:A知识点内存到底分几个区?1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由os回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域…

    2022年6月14日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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