C语言文件实现设备管理

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#define N 10000

/*定义实验器材结构体*/

struct Equipment
{
char bianhao[20]; //设备编号
char name[20]; //设备名称
char model[20]; //设备类型
char price[20]; //设备价格
char buy_date[20]; //设备购买时间
char lab[20];    //实验室
};

/*声明实验器材数组及实验器材数量*/

struct Equipment equipment[1000];
int num=0;

/*通过购买时间返回数组下标*/
int Equipment_SearchByBuy_date(char riqi[])
{
int i;
for (i=0;i<num;i++)
{
if (strcmp(equipment[i].buy_date,riqi)==0)
{
return i;
}
}
return -1;
}

/*通过类别返回数组下标*/
int Equipment_SearchByModel(char leibie[])

{
int i;
for (i=0;i<num;i++)
{
if (strcmp(equipment[i].model,leibie)==0)
{
return i;
}
}
return -1;
}


/*通过价格返回数组下标*/
int Equipment_SearchByPrice(char jiage[])
{
int i;
for (i=0;i<num;i++)
{
if (strcmp(equipment[i].price,jiage)==0)
{
return i;
}
}
return -1;
}



/*通过实验室返回数组下标*/
int Equipment_SearchByLab(char shiyanshi[])

{
int i;
for (i=0;i<num;i++)
{
if (strcmp(equipment[i].lab,shiyanshi)==0)
{
return i;
}
}
return -1;
}


/*通过设备编号返回数组下标*/

int Equipment_SearchByIndex(char id[])
{
int i;
for (i=0;i<num;i++)
{
if (strcmp(equipment[i].bianhao,id)==0)
{
return i;
}
}
return -1;
}

/*通过设备名称返回数组下标*/

int Equipment_SearchByName(char name[])
{
int i;
for (i=0;i<num;i++)
{
if (strcmp(equipment[i].name,name)==0)
{
return i;
}
}
return -1;
}

/*显示单条设备记录*/

void Equipment_DisplaySingle(int index)
{
printf("设备编号  设备名称  设备类型  设备价格  设备购买时间  设备所属实验室\n");
printf("%3s%10s%10s%12s%13s%15s\n",equipment[index].bianhao,equipment[index].name,equipment[index].model,equipment[index].price,equipment[index].buy_date,equipment[index].lab);
}



/*手工录入信息*/

void Equipment_Insert()
{
while(1)
{
printf("请输入 实验设备编号 →");
scanf("%s",&equipment[num].bianhao);
printf("请输入 实验设备名称 →");
scanf("%s",&equipment[num].name);
printf("请输入 实验设备型号 →");
scanf("%s",&equipment[num].model);
printf("请输入 实验设备价格 →");
scanf("%s",&equipment[num].price);
printf("请输入 实验设备购买时间→");
scanf("%s",&equipment[num].buy_date);
printf("请输入 实验设备所属实验室→");
scanf("%s",&equipment[num].lab);
num++;
printf("\n是否继续信息录入 →(y/n)" );
getchar();
if (getchar()=='n')
{
break;
}
}
}


/*修改设备信息*/

void Equipment_Modify()
{
while(1)
{
char id[20];
int index;
printf("\n\n\n\n\n请输入 需要修改的实验设备编号→");
scanf("%s",&id);
index=Equipment_SearchByIndex(id);
if (index==-1)
{
printf("**该设备不存在! 抱歉**\n");
}
else
{
printf("你需要修改的设备信息为 →\n");
Equipment_DisplaySingle(index);
printf("--* 请输入修改新值 *--\n");
printf("请输入 设备编号→:");
scanf("%s",&equipment[index].bianhao);
printf("请输入 设备名称→");
scanf("%s",&equipment[index].name);
printf("请输入 设备类型→");
scanf("%s",&equipment[index].model);
printf("请输入设备价格→");
scanf("%s",&equipment[index].price);
printf("请输入 设备购买时间 →");
scanf("%s",&equipment[index].buy_date);
printf("请输入 实验设备所属实验室→");
scanf("%s",&equipment[num].lab);
}
printf(" 是否继续 →(y/n)");
getchar();
if (getchar()=='n')
{
break;
}
}
}

/*删除设备信息*/

void Equipment_Delete()
{
int i;
while(1)
{
char id[20];
int index;
printf("请输入 要删除的设备编号 →");
scanf("%s",&id);
index=Equipment_SearchByIndex(id);
if (index==-1)
{
printf("设备不存在! 抱歉\n");
}
else
{
printf("你要删除的设备信息为 →\n");
Equipment_DisplaySingle(index);
printf("是否真的要删除该设备→(y/n)");
getchar();
if (getchar()=='y')
{
for (i=index;i<num-1;i++)
{
equipment[i]=equipment[i+1]; //把后边的对象都向前移动
}
num--;
}
}
printf("是否继续 →(y/n)");
getchar();
if (getchar()=='n')
{
break;
}
}
}

/*按实验室查询*/
void Equipment_labSelect()
{
while(1)
{
char lab[20];
int index;
printf("请输入 要查询的设备所属实验室→");
scanf("%s",&lab);
index=Equipment_SearchByLab(lab);
if (index==-1)
{
printf("设备不存在! 抱歉\n");
}
else
{
printf("你要查询的设备信息为→\n");
Equipment_DisplaySingle(index);
}
printf("是否继续→(y/n)");
getchar();
if (getchar()=='n')
{
break;
}
}
}

/*按设备名称查询*/
void Equipment_nameSelect()
{
while(1)
{
char name[20];
int index;
printf("请输入 要查询的设备名称→");
scanf("%s",&name);
index=Equipment_SearchByName(name);
if (index==-1)
{
printf("设备不存在! 抱歉\n");
}
else
{
printf("你要查询的设备信息为→\n");
Equipment_DisplaySingle(index);
}
printf("是否继续→(y/n)");
getchar();
if (getchar()=='n')
{
break;
}
}
}

/*按设备编号查询*/

void Equipment_bianhaoSelect()
{
while(1)
{
char bianhao[20];
int index;
printf("请输入 要查询的设备编号→");
scanf("%s",&bianhao);
index=Equipment_SearchByIndex(bianhao);
if (index==-1)
{
printf("设备不存在! 抱歉\n");
}else
{
printf("你要查询的设备信息为→\n");
Equipment_DisplaySingle(index);
}
printf("是否继续 →(y/n)");
getchar();
if (getchar()=='n')
{
break;
}
}
}
/*按设备价格查询*/

void Equipment_priceSelect()
{
while(1)
{
char price[20];
int index;
printf("请输入 要查询的设备价格→");
scanf("%s",&price);
index=Equipment_SearchByPrice(price);
if (index==-1)
{
printf("设备不存在! 抱歉\n");
}
else
{
printf("你要查询的设备信息为→\n");
Equipment_DisplaySingle(index);
}
printf("是否继续 →(y/n)");
getchar();
if (getchar()=='n')
{
break;
}
}
}

/*按设备类别查询*/
void Equipment_modelSelect()
{
while(1)
{
char model[20];
int index;
printf("请输入 要查询的设备类别→");
scanf("%s",&model);
index=Equipment_SearchByModel(model);
if (index==-1)
{
printf("设备不存在! 抱歉\n");
}
else
{
printf("你要查询的设备信息为→\n");
Equipment_DisplaySingle(index);
}
printf("是否继续 →(y/n)");
getchar();
if (getchar()=='n')
{
break;
}
}
}
/*按设备购买时间查询*/
void Equipment_buydateSelect()
{
while(1)
{
char buy_date[20];
int index;
printf("请输入 要查询的设备编号→");
scanf("%s",&buy_date);
index=Equipment_SearchByPrice(buy_date);
if (index==-1)
{
printf("设备不存在! 抱歉\n");
}
else
{
printf("你要查询的设备信息为→\n");
Equipment_DisplaySingle(index);
}
printf("是否继续 →(y/n)");
getchar();
if (getchar()=='n')
{
break;
}
}
}
/*按设备编号排序*/

void Equipment_paixubianhao()
{
int i,j;
struct Equipment paixu1;
for (i=0;i<num;i++)
{
for (j=1;j<num-i;j++)
{
if (equipment[j-1].bianhao>equipment[j].bianhao)
{
paixu1=equipment[j-1];
equipment[j-1]=equipment[j];
equipment[j]=paixu1;
}
}
}
}

/*添加新设备*/
void Equipment_Add()
{
while(1)
{
printf("请输入 实验设备编号 →");
scanf("%s",&equipment[num].bianhao);
printf("请输入 实验设备名称 →");
scanf("%s",&equipment[num].name);
printf("请输入 实验设备型号 →");
scanf("%s",&equipment[num].model);
printf("请输入新的实验设备价格 →");
scanf("%s",&equipment[num].price);
printf("请输入新的实验设备购买时间→");
scanf("%s",&equipment[num].buy_date);
printf("请输入新的实验设备所属实验室→");
scanf("%s",&equipment[num].lab);
num++;
printf("\n是否继续信息录入 →(y/n)" );
getchar();
if (getchar()=='n')
{
break;
}
}
}

/*显示在库设备信息*/

void Equipment_Display()
{
int i;
printf("设备编号    设备名称   设备分类    设备价格    设备购买时间   设备所属实验室\n");
printf("-------------------------------------------------------------\n");
for (i=0;i<num;i++)
{
printf("%5s%12s%10s%12s%15s%15s\n",equipment[i].bianhao,equipment[i].name,equipment[i].model,equipment[i].price,equipment[i].buy_date,equipment[i].lab);
}
}

/*按类别对设备进行统计*/
int Equipment_total()
{
int i;
int count=0;
char model[20];
printf("请输入想要的设备类别:");
scanf("%s",model);
for(i=0;i<num;i++)
{
if(strcmp(equipment[i].model,model)==0)
{
printf("OK!\n");
printf("%5s%12s%10s%12s%15s%15s\n",equipment[i].bianhao,equipment[i].name,equipment[i].model,equipment[i].price,equipment[i].buy_date,equipment[i].lab);
count++;
}
}
printf("%d\n",count);
return count;
}

/*将设备信息从文件读出*/

void IO_ReadInfo()
{
FILE *fp;
int i;
if ((fp=fopen("shebei.txt","rb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&equipment[i],sizeof(struct Equipment),1,fp);
}
}
fclose(fp);
}

/*将设备信息写入文件*/

void IO_WriteInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("写入文件错误!\n");
}
for (i=0;i<num;i++)
{
if (fwrite(&equipment[i],sizeof(struct Equipment),1,fp)!=1)
{
printf("写入文件错误!\n");
}
}
fclose(fp);
}


/*实验设备管理系统主程序*/

void main()
{
int choice;
int n;
int choice2;
IO_ReadInfo();
while(1)
{

/*主菜单*/

printf("\n\n\n\n\n\t\t------实验室设备管理系统------\n\n");
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(" -----9.退出\n");
printf("------*------*-----*-----*-----*-----*------\n");
printf("-----请选择(1-8):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case 1:
Equipment_Insert();
break;
case 2:
Equipment_Modify();
break;
case 3:
Equipment_Delete();
break;
case 4:
printf("请选择(1/2/3/4/5/6) → 1.按设备所属实验室查询   2.按设备名称查询   3.按设备编号查询   4.按设备价格查询   5.按设备类别查询   6.按设备购买时间查询\n");
scanf("%d",&choice2);
switch(choice2)
{
case 1:
Equipment_labSelect();
break;
case 2:
Equipment_nameSelect();
break;
case 3:
Equipment_bianhaoSelect();
break;
case 4:
Equipment_priceSelect();
break;
case 5:
Equipment_modelSelect();
break;
case 6:
Equipment_buydateSelect();
break;
}
break;
case 5:

Equipment_paixubianhao();
Equipment_Display();
break;

break;
case 6:
Equipment_Add();
break;
case 7:n=Equipment_total();
break;
case 8:
Equipment_Display();
break;
case 9:
exit(0);
break;
}
system("Pause");
system("cls");
IO_WriteInfo();
}
}

  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值