实验设备管理系统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)修改功能
仪器修改功能
鉴于我不明白老师给的题目中设备的破损耗费和遗损处理是什么意思,便只做了记录破损情况处理,代码中还有许多不足的地方,如有不当之处请指出。

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

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

(0)
上一篇 2022年10月13日 下午4:46
下一篇 2022年10月13日 下午5:00


相关推荐

  • FASTAI_AI领域

    FASTAI_AI领域Fastai简介在深度学习领域,最受学生欢迎的MOOC课程平台有三个:Fast.ai、deeplearning.ai/Coursera和Udacity。Fastai作为其中之一,是一个课程平台,一个讨论社区,也是一个PyTorc的顶层框架。Fastai的理念就是:Makingneuralnetsuncoolagain,让神经网络没那么望而生畏,其课程也是采用项目驱动的方式教学。经过Fa…

    2025年10月2日
    3
  • Python 逐行读取txt 文件并生成列表

    前言开始1.载入文件2.读取数据流3.数据处理4.关闭文件前言我们在编写一些自动化脚本的时候,为了方便,经常需要以txt文件作为数据输入,今天就跟大家讨论一下如何对txt文件进行读取并生成对应的列表等程序可操作的数据载体。开始1.载入文件这步就大家比较熟悉,文件操作中最基本的了。因为我们只需要读取文件,并不需要写入文件,所以在这里指定mode=”r”为只读模式(默认)。f=open(“C:/foo.txt”,”r”,encoding=’utf-8′)此时就有了这.

    2022年4月8日
    1.5K
  • 使用AMD CPU实例部署千问Qwen-VL-Chat

    使用AMD CPU实例部署千问Qwen-VL-Chat

    2026年3月13日
    2
  • java的输入输出格式

    java的输入输出格式不是特别完整和齐全,自己的一些小感悟,希望能帮助大家。对新手很友好,哈哈哈。输入:Scannerin=newScanner(System.in);新创建一个输入的Scanner对象,然后赋值给in,这个作用就是获取控制台的输入!!!in.nextInt()表示读入一个整数inta;表示定义一个变量a=in.nextInt();表示读入了一个数,把右边输入的值赋值给a。这里注意有一些规则,我们可以看到后面的类型名称首字母大写,大家可以记住这个小tip,养成好的代码风

    2022年7月9日
    20
  • 小程序父组件向子组件传值

    小程序父组件向子组件传值子组件:tabs1父组件:demo04先将子组件和父组件直接产生特定的联系,需要在demo04.json里面以键值对的方式添加。添加完毕后在父组件中就可以使用标签,就可以渲染出子组件内容。因为tabs1多次复用,所以数据不能在tabs1.js中写死。一般都是由父组件中data数据传到子组件。1.先在父组件data中添加list数据,data:{list:[{id:“2”,nam…

    2022年5月18日
    44
  • Linux 如何开放端口和关闭端口

    Linux 如何开放端口和关闭端口一、查看哪些端口被打开netstat-anp二、关闭端口号:iptables-AOUTPUT-ptcp–dport端口号-jDROP三、打开端口号:iptables-AINPUT-ptcp–dport端口号-jACCEPT四、以下是linux打开端口命令的使用方法。  nc-lp23&amp;(打开23端口,即telnet) …

    2022年7月20日
    16

发表回复

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

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