c语言图书馆管理系统(功能众多)

本文介绍了一个使用C语言编写的图书馆管理系统,该系统实现了包括用户和管理员的登录、图书信息管理、借阅与归还等功能。系统采用图形界面,并支持动态展示和音乐播放。管理员可以进行图书信息录入、用户信息管理,用户可以注册、登录并借阅书籍。程序通过文件存储用户和图书数据,支持数据持久化。此外,系统还具备一定的安全性,如对管理员账号的特别保护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

信息时代的到来,人类逐渐走向信息化,图书馆保存这大量信息资源,需要一个信息库对图书信息进行保存,图书馆管理系统应此而生。

该图书馆管理系统使用vs2019编译器c语言进行编写,首先对可能会使用到的c语言知识进行学习,再开始对程序的编写。

程序编写中首先理清程序框架,以程序框图的方法画出整个程序各个功能的连接与关系。然后实现界面设计,最终补充程序的基础功能和高级功能,最后对程序进行debug和优化程序逻辑,最终对程序进行最终测试,优化程序,最终完成图书馆管理系统。

目前程序已实现众多功能,面向管理员:非明文登录,图书信息登录,图书信息修改,用户信息管理,浏览借阅信息,浏览用户信息。面向用户:用户的注册和登录,查看图书信息,浏览目前已借阅书籍,查看归还时间,借阅和归还书籍。

程序的亮点,目前有动态展示界面,以及保持界面位置恒定不变,对管理员账号进行了重点保护。

本程序可以放内置bgm,不过需要easyx的支持,且将文件名改为k(拓展名为MP3)并与程序放在同一目录。

也可以使用软件的欢迎窗口,同样是easyx的功能,文件名为t(默认格式jfif,若要使用其他格式图片,请修改代码中的拓展名)。

动态展示界面需要创建文件名为

1.txt(展示登录与注册动态界面)

用户.txt(展示用户操作动态界面)

管理员.txt(展示管理员操作动态界面)

并在里面写入你要展示的界面即可。

话不多说,下面展示代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include<graphics.h>//图形库头文件
#include<mmsystem.h>//多媒体设备接口文件
#include<Windows.h>//调用sleep函数
#include<time.h>
#pragma comment(lib,"winmm.lib")
#define MAX 80
#include <conio.h>
#pragma warning(disable:4996)


/
char null[20] = {""};
char adminlogin[20];//用于接受当前登录用户的用户名
struct joints* result_;


//以下是图形库内容
void PlayBGM()
{
	//1打开音乐
	mciSendString("open k.mp3", 0, 0, 0);
	//2播放音乐
	mciSendString("play k.mp3", 0, 0, 0);
	//3关闭音乐
//	Sleep(3000);
//mciSendString("close k.mp3", 0, 0, 0);
}

 void playbgmandpicture(void)
{
 initgraph(800, 517,SHOWCONSOLE);
IMAGE img;
loadimage(&img, "t.jfif");
putimage(0, 0, &img);
//setbkcolor(YELLOW);//设置背景色,考虑不使用暂时储存
//cleardevice();//清空画板和上面配套使用
PlayBGM();
}

struct admin
{
	char username[20];//用户账号名
	char pin[20];//用户密码
	char name[20];//用户借阅书的名字
	int   Num;//用户借书数量
	time_t start;//借书时间

};

struct joints
{
	struct admin data;
	struct joints* next;
};

struct joints* _list = NULL;

//制作表头
struct joints* createHeadadmin_()
{
	struct joints* headNode = (struct joints*)malloc(sizeof(struct joints));//动态内存申请
	headNode->next = NULL;
	return headNode;
}

//制作节点
struct joints* createNode_(struct admin data)
{
	struct joints* newNode = (struct joints*)malloc(sizeof(struct joints));
	newNode->data = data;
	newNode->next = NULL;
	return newNode;
}

//表头法插入
void insertNodeByHead_(struct joints* headNode, struct admin data)
{
	struct joints* newNode = createNode_(data);
	newNode->next = headNode->next;
	headNode->next = newNode;
}


//文件存储操作
void saveInfoTofile_(const char* filename, struct joints* headNode)
{
	FILE* fp = fopen(filename, "w");
	struct joints* pMove = headNode->next;
	while (pMove != NULL)
	{
		fprintf(fp, "%s\t%s\t%s\t%d\t%d\n", pMove->data.username, pMove->data.pin, pMove->data.name, pMove->data.Num,pMove->data.start);
		pMove = pMove->next;
	}
	fclose(fp);
}
//文件读操作
void readInfoFromFile_(const char* filename, struct joints* headNode)
{
	FILE* fp = fopen(filename, "r");
	if (fp == NULL)//如果文件不存在就创建一个文件
	{
		fp = fopen(filename, "w+");

	}
	struct admin tempData;
	while (fscanf(fp, "%s\t%s\t%s\t%d\t%d\n", tempData.username, tempData.pin, tempData.name, &tempData.Num,&tempData.start)  !=  EOF)//EOF是文件结束标记,当没有读到文件结束标记时进行链表插入
	{
	insertNodeByHead_(_list, tempData);
	}

	fclose(fp);

}

//查找用户名
struct joints* searchByusername(struct joints* headNode, char* temp)
{
	struct joints* posNode = headNode->next;
	while (posNode != NULL && strcmp(posNode->data.username, temp))
	{
		posNode = posNode->next;
	}
	return posNode;
}
//查找密码
struct joints* searchBypin(struct joints* headNode, char* temp)
{
	struct joints* posNode = headNode->next;
	while (posNode != NULL && strcmp(posNode->data.pin, temp))
	{
		posNode = posNode->next;
	}
	return posNode;
}

//查找已经借阅书籍
struct joints* searchByname(struct joints* headNode, char* temp)
{
	struct joints* posNode = headNode->next;
	while (posNode != NULL && strcmp(posNode->data.pin, temp))
	{
		posNode = posNode->next;
	}
	return posNode;
}

//指定删除用户
void shanchu_(struct joints* 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值