实验设备管理系统C语言_实验室设备管理系统代码

实验设备管理系统C语言_实验室设备管理系统代码这里写目录标题实验室设备管理系统题目要求源代码运行结果实验室设备管理系统题目要求实验设备管理系统设计实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。主要功能:(1)能够完成对设备的录入和修改(2)对设备进行分类统计(3)设备的破损耗费和遗损处理(4)设备的查询要求:使用文件方式存储数据。源代码#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#i

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

Jetbrains全系列IDE稳定放心使用

实验室设备管理系统

题目要求

实验设备管理系统设计
实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
主要功能:
(1)能够完成对设备的录入和修改
(2)对设备进行分类统计
(3)设备的破损耗费和遗损处理
(4)设备的查询
要求:使用文件方式存储数据。

源代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<malloc.h>
#include<windows.h>
#include<conio.h>
/*定义存放仪器信息的结构体*/
typedef struct Information
{ 

char Name[20];       //仪器名称
char Sort[2];        //仪器种类
char ID[20];         //仪器编号
char Price[20];      //仪器价格
char Buydate[20];    //设备购买日期
char State[2];       //设备状态
char Donatedate[20]; //报废日期
struct Information* next;
} Information;
/*定义文件*/
FILE* fp;
/*读出文件信息*/
Information* Fscanf()
{ 

Information* head = (Information*)malloc(sizeof(Information));
head->next = NULL;
FILE* fp = fopen("Equipment.txt", "rt");
if (fp == NULL)
{ 

puts("文件打开失败");
exit(1);   //程序异常退出
}
if (fscanf(fp, "%s %s %s %s %s %s %s", head->Name, head->Sort, head->ID, head->Buydate, head->Price, head->State, head->Donatedate) != EOF)
{ 

while (fgetc(fp) != EOF)  //判断是否已经到文件尾部了
{ 

Information* cur = (Information*)malloc(sizeof(Information));
fscanf(fp, "%s %s %s %s %s %s %s", cur->Name, cur->Sort, cur->ID, cur->Buydate, cur->Price, cur->State, cur->Donatedate);
cur->next = head;
head = cur;
}  //利用头插法将文件读入链表中
}
else
return NULL;
fclose(fp);
return head->next;
}
/*存入文件*/
void Fprintf(Information* head)
{ 

if ((fp = fopen("Equipment.txt", "w")) == NULL)
{ 

printf("\n\n文件打开失败!\n");
exit(1);
}
Information* cur = head;
while (cur)
{ 

fprintf(fp, "%s %s %s %s %s %s %s\n", cur->Name, cur->Sort, cur->ID, cur->Buydate, cur->Price, cur->State, cur->Donatedate);
cur = cur->next;
}
fclose(fp);
}
/*目录*/
Information* Addition(Information* head);//添加设备信息
Information* Query(Information* head);//查找设备信息
Information* Modify(Information* head);//修改仪器信息
Information* Delect(Information* head);//删除仪器信息
void Over();//结束系统
void Menu();//系统目录
/*添加设备信息*/
Information* Addition(Information* head)
{ 

int n, count = 0;
printf("\n请输入要添加的设备数量:");  //请输入要添加的设备数量
scanf("%d", &n);
system("cls");  //清屏操作
while (n--)
{ 

Information* cur = (Information*)malloc(sizeof(Information));
printf("*-------------请输入设备的信息------------*");
printf("\n");
printf(" %d.", ++count);
printf(" 名称: ");
scanf("%s", cur->Name);
fflush(stdin);                        //每一次输入完后清空缓存区
printf("\n");
printf(" 种类(1微机 2打印机 3扫描机): ");
scanf("%s", cur->Sort);
fflush(stdin);
printf("\n");
printf(" 编号: ");
scanf("%s", cur->ID);
fflush(stdin);
printf("\n");
printf(" 购买日期: ");
scanf("%s", cur->Buydate);
fflush(stdin);
printf("\n");
printf(" 价格: ");
scanf("%s", cur->Price);
fflush(stdin);
printf("\n");
printf(" 是否报废(未报废 0 报废 1): ");
scanf("%s", cur->State);
fflush(stdin);
printf("\n");
printf(" 报废日期: ");
scanf("%s", cur->Donatedate);
fflush(stdin);
system("cls");  //清屏
cur->next = head->next;
head->next = cur;
}
return head;
}
/*查询仪器信息*/
Information* Query(Information* head)
{ 

system("cls");
char choice;
printf("***************************************\n");
printf("**--------1.按仪器名称查询-----------**\n");
printf("**--------2.按仪器编号查询-----------**\n");
printf("**--------3.按仪器种类查询-----------**\n");
printf("**--------4.返回菜单----------——---**\n");
printf("***************************************\n");
choice = _getch();
fflush(stdin);  //清空缓存区
system("cls");
switch (choice)   //以三种方式查询
{ 

case '1':
{ 

printf("\n请输入仪器名称:");  //请输入仪器名称
char name[20];
gets_s(name);
fflush(stdin);
system("cls");
Information* cur = head->next;
while (cur && strcmp(cur->Name, name) != 0) cur = cur->next;
if (cur == NULL)
{ 

printf("\n未找到该仪器信息!");  //未找到该仪器信息
}
else  //打印找出的信息
{ 

printf("\n\t\t --仪器信息-- \n\n");
printf("\t---------------------------------------------------------------------------------------------------------\n");
printf("\t---名称---种类(1微机2打印机3扫描机)----编号-----价格-----购买日期------状态(0未报废 1报废)------报废日期\n");
printf("\t %s %s %s %s %s %s %s\n", cur->Name, cur->Sort, cur->ID, cur->Price, cur->Buydate, cur->State, cur->Donatedate);
cur = cur->next;
}
printf("\n\t\t按任意键返回.");  //按任意键返回
_getch();
break;
}
case '2':
{ 

printf("\n请输入仪器编号:");  //请输入仪器编号
char id[20];
gets_s(id);
fflush(stdin);
Information* pcur = head->next;
while (pcur && strcmp(pcur->ID, id) != 0) pcur = pcur->next;
if (pcur == NULL) printf("未找到该仪器信息!");  //未找到该仪器信息
else  //打印找出的信息
{ 

printf("\n\t\t --仪器信息-- \n\n");
printf("\t---------------------------------------------------------------------------------------------------------\n");
printf("\t---名称---种类(1微机2打印机3扫描机)----编号-----价格-----购买日期------状态(0未报废 1报废)------报废日期\n");
printf("\t %s %s %s %s %s %s %s\n", pcur->Name, pcur->Sort, pcur->ID, pcur->Price, pcur->Buydate, pcur->State, pcur->Donatedate);
pcur = pcur->next;
}
printf("\t\t按任意键返回.");  //按任意键返回
_getch();
break;
}
case '3':
{ 

printf("\n请输入仪器种类:");  //请输入仪器种类
int a = 0;
char sort[2];
gets_s(sort);
fflush(stdin);
Information* pcur = head->next;
printf("\n\t\t --仪器信息-- \n\n");
printf("\t---------------------------------------------------------------------------------------------------------\n");
printf("\t---名称---种类(1微机2打印机3扫描机)----编号-----价格-----购买日期------状态(0未报废 1报废)------报废日期\n");
while (pcur != 0)
{ 

while (pcur && strcmp(pcur->Sort, sort) != 0) pcur = pcur->next;
if (pcur != NULL)
{ 

printf("\t %s %s %s %s %s %s %s\n", pcur->Name, pcur->Sort, pcur->ID, pcur->Price, pcur->Buydate, pcur->State, pcur->Donatedate);
pcur = pcur->next;
a++;
}
if (a == 0)
{ 

printf("未找到该种类信息!");  //未找到该仪器信息
}
}
printf("\t\t按任意键返回.");  //按任意键返回
_getch();
break;
}
case '4':
{ 

Menu();  //返回主菜单
break;
}
default:
{ 

printf("输入错误!");  //输入错误
break;
}
}
return head;
}
/*修改仪器信息*/
Information* Modify(Information* head)
{ 

system("cls");
printf("\n请输入仪器名称:");  //请输入仪器名称
char name[20];
gets_s(name);
fflush(stdin);
Information* cur = head;
while (cur && strcmp(cur->Name, name) != 0) cur = cur->next;
if (!cur)
{ 

printf("\n未找到该仪器信息!");  //未找到该仪器信息
printf("\n\n\t\t按任意键返回.");  //按任意键返回
_getch();
}
else  //输入修改后信息
{ 

system("cls");
printf("*-------------输入修改后信息------------*");
printf("\n");
printf(" 名称: ");
scanf("%s", cur->Name);
fflush(stdin);
printf("\n");
printf(" 种类(1微机 2打印机 3扫描机): ");
scanf("%s", cur->Sort);
fflush(stdin);
printf("\n");
printf(" 编号: ");
scanf("%s", cur->ID);
fflush(stdin);
printf("\n");
printf(" 价格: ");
scanf("%s", cur->Price);
fflush(stdin);
printf("\n");
printf(" 购买日期: ");
scanf("%s", cur->Buydate);
fflush(stdin);
printf("\n");
printf(" 状态: ");
scanf("%s", cur->State);
fflush(stdin);
printf(" 报废日期: ");
scanf("%s", cur->Donatedate);
fflush(stdin);
printf("\n");
system("cls");
//修改完后打印这条信息
printf("\n\t\t --仪器信息-- \n\n");
printf("\t---------------------------------------------------------------------------------------------------------\n");
printf("\t---名称---种类(1微机2打印机3扫描机)----编号-----价格-----购买日期------状态(0未报废 1报废)------报废日期\n");
printf("\t %s %s %s %s %s %s %s\n", cur->Name, cur->Sort, cur->ID, cur->Price, cur->Buydate, cur->State, cur->Donatedate);
printf("\n\n\t\t按任意键继续.");
_getch();
}
system("cls");
return head;
}
Information* Delect(Information* head)
{ 

system("cls");
char choice;
printf("***************************************\n");
printf("**--------1.删除某个仪器信息---------**\n");
printf("**--------2.删除全部仪器信息---------**\n");
printf("**--------3.返回菜单-----------------**\n");
printf("***************************************\n");
choice = _getch();
fflush(stdin);
system("cls");
switch (choice)
{ 

case '1':
{ 

printf("\n输入要删除的仪器名称:");  //输入要删除的仪器名称
char name[20];
gets_s(name);
Information* pre = head;
while (pre->next && strcmp(pre->next->Name, name) != 0) pre = pre->next;
if (!pre->next)
{ 

printf("\n没有找到该仪器信息!");
printf("\n\n\t\t按任意键返回.");
_getch();
}
else
{ 

system("cls");
Information* cur = pre->next;
pre->next = pre->next->next;
free(cur);
printf("\n\t\t删除成功!");  //已删除成功
printf("\n");
printf("\n\t\t按任意键返回.");
_getch();
}
return head;
}
case'2':
{ 

system("cls");
Information* pre = head;
pre->next = NULL;
printf("\n\t\t\t删除成功 !\n");
printf("\n\t\t按任意键返回.");
_getch();
return head;
}
case '3':
{ 

Menu();
break;
}
default:
{ 

printf("输入错误!");
break;
}
return head;
}
}
/*退出系统*/
void Over(Information* head)
{ 

char t;
printf("***********************************");
printf("| 1.是 2.否 |");
printf("***********************************");
while (1)
{ 

t = _getch();     //输入t并且不回显
switch (t)
{ 

case '1':
{ 

Fprintf(head->next);
system("cls");
printf("Exiting....");
Sleep(1000);   //暂停1秒 
system("cls");
printf("退出成功");
exit(0); break; //终止程序 
}
case '2':
{ 

Menu();  //调用函数,进入菜单 
break;
}
default:break;
}
}
}
/*主菜单*/
void Menu()
{ 

Information* head = (Information*)malloc(sizeof(Information));
head->next = Fscanf();
do
{ 

system("cls");
char t;
printf(" ******************************\n");
printf(" -------实验设备管理系统------\n");
printf(" | 1.录入仪器信息 |\n");
printf(" | 2.查询仪器信息 |\n");
printf(" | 3.修改指定仪器信息 |\n");
printf(" | 4.仪器删除 |\n");
printf(" | 5.退出程序 |\n");
printf(" ******************************");
t = _getch();  //不回显函数 
system("cls");
switch (t)
{ 

case '1':head = Addition(head); break;
case '2':head = Query(head); break;
case '3':head = Modify(head); break;
case '4':head = Delect(head); break;
case '5':Over(head); break;
default:
printf("输入错误,请重新输入!"); break;
}
} while (1);
}
int main(void)
{ 

Information* createlist = (Information*)malloc(sizeof(Information));
Menu();
return 0;
}

运行结果

(1)信息录入功能信息录入功能(2)数据查询功能
数据查询功能
(3)分类统计功能
分类统计功能
(4)修改功能
仪器修改功能
鉴于我不明白老师给的题目中设备的破损耗费和遗损处理是什么意思,便只做了记录破损情况处理,代码中还有许多不足的地方,如有不当之处请指出。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

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

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

(0)
blank

相关推荐

  • linux搭建开源ldap服务器方法

    linux搭建开源ldap服务器方法1.什么是ldap服务器ldap是统一认证服务,它的优点是存储用户认证等不经常改变的信息,有清晰的组织结构。ldap条目概念:基准DN,例如dc=company,dc=com,DN,例如cn=test,dc=company,dc=com,一个DN就是一个条目,RDN是相对DN,具有唯一性,上面例子的DN的RDN就是cn=test2.下载openldapopenld…

  • OpenJDK 阅读源代码 Java 实现字节流输入类

    OpenJDK 阅读源代码 Java 实现字节流输入类

  • Eclipse代码自动补全操作

    Eclipse代码自动补全操作1、打开Eclipse,点击”Window-Preferences”2、在搜索栏上输入java->Editor->ContentAssist->修改AutoactivationtriggersforJava

  • 【目标检测】Labelme的改进——海量图片的自动标注「建议收藏」

    【目标检测】Labelme的改进——海量图片的自动标注「建议收藏」  深度学习一般需要对大量的图片进行标注,但是手动标注耗时耗力,所以模仿labelme软件的功能,使用程序对大批量的图片进行自动标注,大大减少手动操作。下面介绍如何实现对大批量的图片进行标注。自动标注的程序实现:https://github.com/shuyucool/Labelme.git程序内容均为原创,如果使用麻烦您点赞呀如遇疑问,欢迎随时交流,定尽量解答。联系方式:7819…

  • Canny算子边缘检测原理及实现

    Canny算子边缘检测原理及实现写在前面Canny边缘检是在在1986年提出来的,到今天已经30多年过去了,但Canny算法仍然是图像边缘检测算法中最经典、先进的算法之一。相比Sobel、Prewitt等算子,Canny算法更为优异。Sobel、Prewitt等算子有如下缺点:没有充分利用边缘的梯度方向。 最后得到的二值图,只是简单地利用单阈值进行处理。而Canny算法基于这两点做了改进,提出了:基于边缘梯度…

  • 数组求和方法汇总_用函数的方法对输入的数组求和

    数组求和方法汇总_用函数的方法对输入的数组求和vararr=[1,2,3,4,5,6];测试时我不想过度使用全局变量影响命名空间,所以没使用未声明变量。而是直接通过私有作用域设置静态私有变量,也可以用其他设计模式来限定变量作用域。因为数组对象的迭代方法也是一种遍历,所以也可以借助用来实现求和。一、利用数组对象的各迭代方法:1.array.every()查询是否有所有项都匹配的方法:1(function(){…

发表回复

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

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