实验室设备管理系统[通俗易懂]
2023-06-13 09:14:32 时间
#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.cn/182253.html原文链接:https://javaforall.cn
相关文章
- Webrtc及WEB端音视频设备获取及流处理
- 排名前五的设备管理软件
- 第一款低代码应用平台搭建的设备管理系统
- JAVA实验室设备管理系统代码_java做一个简单学生管理系统
- 实验室仪器管理系统_实验室设备管理系统代码
- 实验室 系统_实验室设备管理系统流程图
- 2022新一代工单管理系统,助力企业设备维修管理
- 网络芯片变革之路:从设备内置转为软件编程
- 设备点巡检管理系统解决方案
- 设备远程运维管理系统—实现设备全生命周期智慧维保
- 2023年,基于低代码平台的设备管理系统提升设备管理效率
- Linux 内核之字符设备驱动
- 易点易动设备管理系统如何实现水厂设备的智能巡检?
- 易点易动设备管理系统如何帮助制造业提升设备管理效率?
- TRICONEX 4200 具有集成用户界面的设备驱动程序
- Linux 绑定裸设备:窥探技术深度(linux绑定裸设备)
- 玉张元Linux设备驱动:宋玉、张元的演绎(Linux设备驱动宋)
- 轻松管理Linux设备——加载驱动(linux设备加载)
- Linux下的DTB:设备树的实现(linuxdtb)
- 用物理设备保护你的账号,GitHub 宣布支持 U2F
- 探索Linux TTY设备的奥秘(linuxtty设备)
- 如何在 Linux 上查看 USB 设备信息(linuxusb查看)
- 调试Linux设备之串口函数实现(linux 串口函数)