实验设备管理系统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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • eigen库的使用_sfml是什么库

    eigen库的使用_sfml是什么库Eigen是开源的C++线性代数库,常用在计算机图形学中。有份英文的Eigen使用手册,简要整理一下#include<Eigen/Core>创建新矩阵的时候如下Matrix3fA;Matrix4dB;这里的命名有一个便利性,比如A的类型是Matrix3f,就表示A是3x3float型矩阵,同理B是4x4double型矩阵。但并不是所有组合都work的,比如Matrix5s就会报错(虽然想的是5x5short);也不是必须是正方形的矩阵。那如果想用5x5shor

    2022年8月31日
    0
  • c++ priority queue_priority

    c++ priority queue_priority既然是队列那么先要包含头文件#include&lt;queue&gt;优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的定义:priority_queue&lt;Type,Container,Functional&gt;Type就是数据类型,Container就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用

    2022年10月21日
    0
  • vue页面缓存问题_vue项目自动打开浏览器设置

    vue页面缓存问题_vue项目自动打开浏览器设置目录1.什么是浏览器缓存2.浏览器缓存类型:3.浏览器缓存的优势与劣势:4.浏览器缓存机制5.如何清除浏览器缓存在代码更新发布后,都会要求运营人员在访问网址时清除下本地缓存,防止万一掉坑那问题就来了:每次清缓存很麻烦,怎样就不需要他们每次去手动清缓存呢?1.什么是浏览器缓存浏览器缓存(BrowserCaching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页

    2022年10月20日
    0
  • fastclick

    fastclickfastclick–处理移动端click事件300毫秒延迟安装:npminstallfastclick–save   之后,在main.js中引入    importFastClickfrom’fastclick’    并绑定到bodyFastClick.attach(document.body);1、兼容性iOS3及更高版本的移动SafariiOS5及更高版本的C…

    2022年6月19日
    51
  • 日志大全_打印机日志

    日志大全_打印机日志日志信息每个用例都会生成一个对应的log日志,位置:<ProjectRootDir>/logs/TestCaseID.run.log.如果你想看到request和response、提取

    2022年7月30日
    2
  • vs2019配置opencv什么版本_vs配置opencv

    vs2019配置opencv什么版本_vs配置opencv一、环境vs2019社区版、win1064位操作系统二、opencv配置步骤(共5步)1、下载OpenCV4.0.1,官网为opencv.org2、安装opencv,我的安装目录是D:\opencv-4.0.1-vc14_vc153、添加环境变量,在PATH中添加:D:\opencv-4.0.1-vc14_vc15\opencv\build\x64\vc15…

    2022年10月20日
    0

发表回复

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

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