实验设备管理系统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)


相关推荐

  • 计算机网络面试题总结

    计算机网络面试题总结一OSI与TCP/IP各层的结构与功能,都有哪些协议五层协议的体系结构1应用层域名系统HTTP协议2运输层运输层主要使用以下两种协议UDP的主要特点TCP的主要特点3网络层4数据链路层5物理层总结一下二TCP三次握手和四次挥手(面试常客)为什么要三次握手为什么要传回SYN传了SYN,为啥还要传ACK为什么要四次挥手…

  • JavaScript 开发者年度调查报告

    JavaScript 开发者年度调查报告

  • 全网最详细ENSP安装教程,零基础网工小白必看![通俗易懂]

    全网最详细ENSP安装教程,零基础网工小白必看![通俗易懂]全网最详细ENSP安装教程,零基础网工小白必看!学习更多网络技术,扫码即可免费报名听课,更多资料加QQ群414605852材料准备在下载ENSP之前先安装这3个软件1.1.安装WinPcap1.2.安装Wireshark1.3.安装VirtualBoXENSP安装2.1.软件安装2.2.设备注册在注册设备之前,先保证没有任何设备在界面上然后点击菜单—>工具—>注册设

    2022年10月14日
  • android listview单击事件

    android listview单击事件今天我们来学习下listview单击事件,这在开发中是经常用的组件之一。1.新建一个项目,名为ListViewDemo。2.布置布局文件main.xmlandroid:orientation=”vertical”android:layout_width=”fill_parent”android:layout_height=”fill_parent”>

  • 二进制如何转十进制?_二进制转换为十进制的算法

    二进制如何转十进制?_二进制转换为十进制的算法1、计算机的数制介绍数制:计数的方法,指用一组固定的符号和统一的规则来表示数值的方法数位:指数字符号在一个数中所处的位置基数:指在某种进位计数制中,数位上所能使用的数字符号的个数位权:指在某种

  • BetterIntelliJ 2021.4.4 激活码_通用破解码

    BetterIntelliJ 2021.4.4 激活码_通用破解码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

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

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