设备信息管理系统(C语言)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

把过去摸鱼的那些自己写一遍
``

一、主要内容

设备信息管理系统
dev上浅浅运行过,基本上没有大问题。
(使用单链表实现数据统计、增加、修改)

二、具体代码

1.包含头文件

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>

2.定义结构体

代码如下:

typedef struct Node 		//定义结点的结构体
{
	long long ID;			//编号
	char Name[50];			//名称
	char Price[20];			//价格
	char Purchase_Date[10];	//采购日期
	char Use_Date[10];		//使用期限
	char State[20];			//状态
	
	struct Node*next; 		//next指针
}Node,*LinkList;

3.函数声明

//函数声明
LinkList Add(LinkList L);			//新建设备
void Fix(long long Find_ID);		//修改设备状态
void Census(LinkList L);			//设备分类统计
void Goodbye();						//退出程序

4.主界面设计

//主界面
void Welcome()
{
	printf("************************************************************\n");
	printf("**********        欢迎使用设备信息管理系统        **********\n");
	printf("**********        1.新增设备                      **********\n");
	printf("**********        2.设备的分类统计                **********\n");
	printf("**********        3.修改设备状态                  **********\n");
	printf("**********        0.退出系统                      **********\n");
	printf("************************************************************\n");
	printf("\n");
	printf("请输入您所需功能对应标号\n");
	
}			

5.所有代码

//设备信息管理系统设计
//信息:编号、名称、价格、采购日期、使用期限、状态(使用中、报废)
//功能:新增设备、对设备进行分类统计、修改设备状态
//完成时间:2022.04.26 晚20:54
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>

typedef struct Node 		//定义结点的结构体
{
	long long ID;			//编号
	char Name[50];			//名称
	char Price[20];			//价格
	char Purchase_Date[10];	//采购日期
	char Use_Date[10];		//使用期限
	char State[20];			//状态
	
	struct Node*next; 		//next指针
}Node,*LinkList;


//函数声明
LinkList Add(LinkList L);			//新建设备
void Fix(long long Find_ID);		//修改设备状态
void Census(LinkList L);			//设备分类统计
void Goodbye();						//退出程序



//主界面
void Welcome()
{
	printf("************************************************************\n");
	printf("**********        欢迎使用设备信息管理系统        **********\n");
	printf("**********        1.新增设备                      **********\n");
	printf("**********        2.设备的分类统计                **********\n");
	printf("**********        3.修改设备状态                  **********\n");
	printf("**********        0.退出系统                      **********\n");
	printf("************************************************************\n");
	printf("\n");
	printf("请输入您所需功能对应标号\n");
	
}			


//添加设备信息
LinkList Add(LinkList L)
{
	int n;	
		LinkList r=NULL;		//尾指针
		while(L->next != NULL)
		{
			L=L->next;
		}
		//L->next=NULL;			//节点初始化
		r=L;					//尾指针指向当前尾节点
		printf("您需要新增多少台设备的信息?");
		scanf("%d",&n);
		for(int i=0;i<n;i++)
		{
			LinkList p = (LinkList)malloc(sizeof(Node));
			printf("第%d台设备的编号:\n",i+1);
				scanf("%lld",&p->ID);
				printf("第%d台设备的名称:\n",i+1);
				scanf("%s",p->Name);
				printf("第%d台设备的价格:\n",i+1);
				scanf("%s",p->Price);
				printf("第%d台设备的采购日期:\n",i+1);
				scanf("%s",p->Purchase_Date);
				printf("第%d台设备的使用期限:\n",i+1);
				scanf("%s",p->Use_Date);
				printf("第%d台设备的状态(on/off):\n",i+1);
				scanf("%s",p->State);
			p->next=NULL;			//尾插后的节点next指向空
			r->next=p;				//倒数第二个节点的next指向新插入节点
			r=p;					//r指向当前新插入节点(链表尾部)	
		}
		return L;
}

	

//设备分类统计
void Census(LinkList L)
{
	LinkList p;
	int on_num = 0,off_num = 0;			//on_num:使用中设备数量  off_num:报废设备数量
	p = L->next;
	while(p!=NULL)						//通过指针移动 循环向后寻找
    {
		if(strlen(p->State)==2)			//如果当前设备状态为on,则状态State这个字符串长度为2
		{
			on_num++;					//使用中设备数量加一
		}
		else
		off_num++;						//否则报废设备数量加一
		p=p->next;						//p指针向后移动一个节点,直到寻找到尾节点为止
	}
	printf("当前正在使用中的设备有%d台,报废的设备有%d台。\n",on_num,off_num);
}


//修改设备状态
void Fix(LinkList L,long long Find_ID)
{
	LinkList p;
	p=L;
	int n;
	while(L->next != NULL)				//依靠指针 向后寻找
	{
		if(p->ID == Find_ID)			//如果所查找设备编号与某个节点中的ID吻合 则找到该设备
		{
			printf("当前设备编号:%lld\n设备名称:%s\n设备价格:%s\n",p->ID,p->Name,p->Price);			
			printf("采购日期:%s\n使用期限:%s\n设备状态:%s\n",p->Purchase_Date,p->Use_Date,p->State);
			printf("是否修改其状态?(yes: 1  no: 0)\n");
			scanf("%d",&n);
			if(n==1)					//修改设备状态
			{
				if(p->State[0]=='o' && p->State[1]=='n')
				{
					p->State[1]='f';					
					p->State[2]='f';
					p->State[3]='\0';	//末尾手动添加转义字符 空字符 保障输出时不出现乱码现象
				}
				else
				{
					p->State[1]='n';
					p->State[2]='\0';
				}	
			}
			printf("编号为%lld设备状态已成功更改!\n",p->ID);
			printf("当前设备编号:%lld\n设备名称:%s\n设备价格:%s\n",p->ID,p->Name,p->Price);			
			printf("采购日期:%s\n使用期限:%s\n设备状态:%s\n",p->Purchase_Date,p->Use_Date,p->State);
			break;
		}
		p=p->next;
		
	}
	
}

//退出程序
void Goodbye()
{
	system("cls");						//清屏
	printf("欢迎下次使用设备管理系统!\n");
	exit(0);//结束程序
}

int main()
{
	LinkList Head=(LinkList)malloc(sizeof(Node));   //创建链表头指针
	Head->next = NULL;								//初始化链表
	int n = 0;										//接收功能选项数字
	while(1)										//循环执行 直到
	{
		Welcome();									//显示菜单界面
		scanf("%d",&n);
		switch(n)
			{
				case 1:								//添加设备信息
					Add(Head);
					break;	
				case 2:								//分类统计设备
					Census(Head);				
					break;
				case 3:								//修改设备状态		
					printf(("请输入需修改状态的设备编号:\n"));
					long long F_ID;
					scanf("%lld",&F_ID);
					Fix(Head,F_ID);
					break;
				case 0:
					Goodbye();						//退出程序
					break;
			}
		printf("是否继续操作?(yes:1  no: 0)\n");
		scanf("%d",&n);
		if(n == 0)
			{
				Goodbye();							//退出程序
				break;	
			}	
		Sleep(1000);								//执行挂起一秒
		system("cls");								//清屏
	}				
				
	return 0;
}

三、 一些碎碎念

好多东西,只要一段时间不敲就都忘了。
小小链表,写了好几个小时。
以后要勤加练习,少摆烂。

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想了解实验室设备管理系统的C语言实现,是吗?那我可以为您提供一些思路和建议。 首先,实验室设备管理系统可以分为两大部分:设备管理和用户管理。对于设备管理,您可以考虑设计以下功能: 1. 添加设备:输入设备信息,包括设备名称、编号、型号、规格、购买日期、购买价格等信息,并将设备信息存储到文件中。 2. 删除设备:根据设备编号或名称删除设备信息,并将删除后的设备信息保存到文件中。 3. 修改设备信息:根据设备编号或名称修改设备信息,并将修改后的设备信息保存到文件中。 4. 查询设备信息:根据设备编号或名称查询设备信息,并在屏幕上显示设备的详细信息。 5. 统计设备信息:统计设备的数量、总价值、平均价值等信息,并在屏幕上显示统计结果。 对于用户管理,您可以考虑设计以下功能: 1. 添加用户:输入用户信息,包括姓名、编号、职务、联系方式等信息,并将用户信息存储到文件中。 2. 删除用户:根据用户编号或姓名删除用户信息,并将删除后的用户信息保存到文件中。 3. 修改用户信息:根据用户编号或姓名修改用户信息,并将修改后的用户信息保存到文件中。 4. 查询用户信息:根据用户编号或姓名查询用户信息,并在屏幕上显示用户的详细信息。 5. 统计用户信息:统计用户的数量、职务分布、联系方式等信息,并在屏幕上显示统计结果。 在实现这些功能时,您可以使用C语言的文件操作函数来读写设备和用户信息文件。同时,您还需要设计相应的数据结构来存储设备和用户信息,例如结构体。 希望这些思路和建议能给您带来帮助,如有需要也可以与我进一步沟通。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值