图书借阅管理系统

这篇具有很好参考价值的文章主要介绍了图书借阅管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、系统概述

图书借阅管理系统由管理员系统和用户系统两个子系统构成。用户运行程序后可按程序说明进入子系统,输入“1”进入管理员系统,输入“2”进入用户系统。图书信息和读者信息均用文件存储。  

管理员系统:

  1. 新增图书:管理员可输入图书的类别、书号、书名、借出状态等信息。
  2. 更改图书信息:管理员输入要更改图书的书号后,即可对图书的各类信息进行修改。
  3. 删除图书:管理员输入要删除图书的书号,删除图书的各类信息。
  4. 查找图书: 管理员可以选择书名查找、类别查找、书号查找3种方式查找目标图书。
  5. 显示所有图书信息:此功能可查看文件中的所有图书,包括新增、更改的图书。
  6. 全删当前数据:对当前执行新增、更改操作产生的数据进行删除。
  7. 退出:退出系统。

用户系统:

  1. 借阅图书:用户输入想要借阅图书的书号借阅。
  2. 归还图书:归还已借图书。
  3. 查找所有图书:查看文件中包含的图书信息。
  4. 查找图书:用户可以选择书名查找、类别查找、书号查找3种方式查找目标图书。
  5. 显示我的信息:显示用户已借阅图书的书号和剩余图书借阅数量。
  6. 退出:退出系统。

2、系统功能实现效果(部分)

图书借阅管理系统

图书借阅管理系统

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>//控制输入输出 
struct book
{
	char sort[20],num[20],bookname[20];
	int lend;
	int nolend;
	struct book *next;
};
struct reader{
char xuehao[20],name[20];
int lended;
int maxlended;
char item[5][20];
struct reader *next;
};
void bookcharge();//图书管理系统函数 
void readcharge();//用户管理系统函数
void readbook(struct book *head);//从图书信息文件中获取信息
void readreader(struct reader *head);//从用户信息文件中获取信息 
//------------------------管理员系统 ----------------------- //int menu1();//图书管理系统菜单
int menu1();//管理员菜单 
void add(struct book *head);//新增图书 
void change(struct book *head);//更改图书信息
void shanchu(struct book *head); //删除图书
void find(struct book *head); //查找图书
void show(struct book *head); //显示所有图书信息
void deleteall(struct book *head);//全删当前数据
void free(struct book *head);//退出
//------------------------用户系统---------------------------// 
struct reader *insert(struct reader *head);//返回登录读者信息指针 
int menu2();//用户菜单 
void lendbook(struct book *head,struct reader *q);//借阅图书
void returnbook(struct book *head,struct reader *q);//归还图书
void output(struct reader *head);//显示我的信息 
void freeall(struct book *head,struct reader *q);//退出
//-------------------------主函数----------------------------//
 main()
 {
 	int x;
 	printf("欢迎进入图书馆系统,按1进入管理员系统,按2进入用户系统");
 	scanf("%d",&x);
 	if(x==1)
 	bookcharge();
 	if(x==2)
 	readcharge();
 }
 
 //---------------------管理员系统--------------------------//
void bookcharge()
{
	int x;
	struct book *headbook;
	headbook=(struct book *)malloc(sizeof(struct book));
	headbook->next=NULL;
	readbook(headbook);
	while(1)
	{
		getch;
		system("cls");//清屏
		switch(x=menu1())
		{
			case 1:add(headbook);
			break;
			case 2:change(headbook);
			break;
			case 3:shanchu(headbook);
			break;
			case 4:find(headbook);
			break;
			case 5:show(headbook);
			break;
			case 6:deleteall(headbook);
			break;
			case 0:free(headbook);
			break;
		}
	 } 
}

//--------------------用户系统---------------------------//
void readcharge()
{
	
	int x;
	struct book *headbook;
	headbook=(struct book *)malloc(sizeof(struct book));
	headbook->next=NULL;
	struct reader *headreader,*p;
	headreader=(struct reader *)malloc(sizeof (struct reader));
    headreader->next=NULL; 
    
    readbook(headbook);
    readreader(headreader);
    
    p=insert(headreader);
    
    while(1)
    {
    	getch();
    	system("cls");
    	switch(x=menu2())
    	{
    		case 1:lendbook(headbook,p); 
			break;
			case 2:returnbook(headbook,p);
			break;
			case 3:show(headbook);
			break;
			case 4:find(headbook);
			break;
			case 5:output(p);
			break;
			case 0:free(headbook);
			break;
		}
	}
}

void readbook(struct book *head)
{
	FILE *fp;
	 	if((fp=fopen("book.txt","r+"))==NULL)
	   {
		printf("文件读取失败\n");
		exit(0);
	    }
	struct book *p,*tail=head;
	while(!feof(fp))
	{
		p=(struct book *)malloc(sizeof(struct book));
		fscanf(fp,"%s %s %s %d %d",p->sort,p->num,p->bookname,&p->lend,&p->nolend);
		p->next=NULL;
		tail->next=p;
		tail=p;
	}
	fclose(fp);
}

void readreader(struct reader *head)
{
	 FILE *fp;
		if((fp=fopen("reader.txt","r+"))==NULL)
	  {
		printf("文件读取失败\n");
		exit(0);
   	 }	
		
		struct reader *p,*tail=head;
	    int i;
   
   	while(!feof(fp))
	{
		p=(struct reader*)malloc(sizeof(struct reader));
		fscanf(fp,"%s %s %d",p->xuehao,p->name,&p->lended);
		for(i=0;i<p->lended;i++)
			fscanf(fp,"%s",p->item[i]);
		fscanf(fp,"%d",&p->maxlended);
		p->next=NULL;
		tail->next=p;
		tail=p;
	}
	fclose(fp);
}

int menu1()
{
	int a;
	printf("===============图书维护系统===========\n");
	printf("1.新增图书\n");
	printf("2.更改图书信息\n");
	printf("3.删除图书\n");
	printf("4.查找图书\n");
	printf("5.显示所有图书信息\n");
	printf("6.全删当前数据\n");
	printf("0.退出\n");
	printf("===============请选择=================\n");
	scanf("%d",&a);
	return a;
}
//----------------------新增函数---------------------------------------// 
void add(struct book *head)
{
	FILE *fp;
	char ch;
	fp=fopen("boos.txt","ra+");
	struct book *p=head->next,*s;
	s=(struct book *)malloc(sizeof(struct book));
	while(p->next!=NULL)
	p=p->next;
	s->next=p->next;
	p->next=s;
	printf("新增图书信息,请输入:\n");
	printf("%-10s%-10s%-10s%-10s%-10s\n","图书类别","书号","书名","已借出数量 ","未借出数量");
	scanf("%s %s %s %d %d",s->sort,s->num,s->bookname,&s->lend,&s->nolend);
	fprintf(fp,"%s %s %s %d %d",s->sort,s->num,s->bookname,s->lend,s->nolend);
	fputc(ch,fp);
	fclose(fp);
	printf("===============添加成功===============\n"); 
	getch();   
}
//----------------------更改函数---------------------------------------// 
void change(struct book *head)
{
	
	char str[20];
	struct book *p=head->next,*p1;
	printf("输入你要修改的书号:\n");
	scanf("%s",str);
	printf("%10s%10s%10s\t%10s\t%10s\n","图书类别","书号","书名","已借出数量","未借出数量");
	while(p)
	{
		if(strcmp(str,p->num)==0)
		{
		  printf("%10s %10s %10s %10d %10d\n",p->sort,p->num,p->bookname,p->lend,p->nolend);
		  p1=p;
		}
		p=p->next; 
	} 
	printf("输入更改后的信息\n");
	printf("%10s%10s%10s\t%10s\t%10s\n","图书类别","书号","书名","已借出数量","未借出数量");
	scanf("%s %s %s %d %d",p1->sort,p1->num,p1->bookname,&p1->lend,&p1->nolend);
	printf("===============修改完毕================\n");
	getch();
}
// ----------------------删除函数-------------------------------------//
void shanchu(struct book *head)
{
	char a[20];
	struct book *p=head->next,*p1=head;
	printf("输入你要删除的书号:\n");
 	scanf("%s",a);
 	printf("%-10s%-10s%-10s%-10s%-10s\n","图书类别","书号","书名","已借出数量 ","未借出数量");
 	while(p)
 	{    
	    
	 	if(strcmp(p->num,a)==0)
	 	 {
		  printf("%-10s%-10s%-10s%-10d%-10d\n",p->sort,p->num,p->bookname,p->lend,p->nolend);
		  p1->next=p->next; 
		  free(p);
	 	 }
		  p1=p;
	 	 p=p->next;	 
	 }
	printf("============删除完毕===========\n"); 
	getch();
} 
//----------------------查找函数-----------------------------------------//
void find(struct book *head)
{
		int a,flag=0;
	char b[20];
	struct book *p=head->next;
	printf("选择查找方式:书名查找按1,类别查找按2,书号查找按3:\n");
	scanf("%d",&a);
	if(a==1)
	{
        printf("请输入你要查找的书名:\n");
		scanf("%s",b);
		while(p)
		{
			if(strcmp(p->bookname,b)==0)
			{
				printf("%-10s%-10s%-10s%-10s%-10s\n","图书类别","书号","书名","已借出数量 ","未借出数量");
				printf("%-10s%-10s%-10s%-10d%-10d\n",p->sort,p->num,p->bookname,p->lend,p->nolend);
				getch();
				flag=1;
			}
			p=p->next;
		}
		if(flag==0)
		printf("查无此书\n");
			printf("请按任意键继续…"); 
				getch();
	}
	else if(a==2)
	{
		printf("请输入你要查找的类别:\n");
		scanf("%s",b);
		while(p)
		{
			if(strcmp(p->sort,b)==0)
			{
				printf("%-10s%-10s%-10s%-10s%-10s\n","图书类别","书号","书名","已借出数量","未借出数量");
				printf("%-10s%-10s%-10s%-10d%-10d\n",p->sort,p->num,p->bookname,p->lend,p->nolend);
					printf("请按任意键继续…"); 
				getch();
				flag=1;
			}
			p=p->next; 
		}
		if(flag==0)
		printf("查无此类\n");
			printf("请按任意键继续…"); 
				getch();
	}
	else if(a==3)
	{
		printf("请输入你要查找的书号:\n");
		scanf("%s",b);
		while(p)
		{
			if(strcmp(p->num,b)==0)
			{
				printf("%-10s%-10s%-10s%-10s%-10s\n","图书类别","书号","书名","已借出数量 ","未借出数量");

				printf("%-10s%-10s%-10s%-10d%-10d\n",p->sort,p->num,p->bookname,p->lend,p->nolend);
	
				printf("请按任意键继续…"); 
				getch();
				flag=1;
			}
			p=p->next; 
		}
		if(flag==0)
		printf("查无此书\n");
	}
	else
	printf("输入错误\n");
}
//-----------------------显示所有图书信息-------------------------------//
void show(struct book *head)
{
	struct book *p=head->next;
	printf("%-10s%-10s%-10s%-10s%-10s\n","图书类别","书号","书名","已借出数量 ","未借出数量");
	while(p)
	{
		printf("%-10s%-10s%-10s%10d%10d\n",p->sort,p->num,p->bookname,p->lend,p->nolend);
		p=p->next;   
	}
	getch();
} 
//-----------------------全删当前函数----------------------------------// 
void deleteall(struct book *head)
{
	struct book *p=head;
	while(p)
	{
		head=head->next;
		free(p);
		p=head;
	}
	printf("=========已经全删==========\n");  
	getch();
}
//-----------------------退出-----------------------------------------//
 void free(struct book *head)
 {
 	struct book *p=head;
	while(p)
	{
		head=head->next;
		free(p);
		p=head;
	}
	printf("正在退出,按任意键继续\n"); 
	getch();
 }
 struct reader *insert(struct reader *head)
{
	char str[20];
	int flag=0;//判断学号是否存在的标记 
	struct reader *p=head->next;
	printf("用户请输入学号登录(104173101):");
	scanf("%s",str);
	while(p)
	{
		if(strcmp(p->xuehao,str)==0)
         {
		 flag=1;
		 break;
         }
        p=p->next;
	}	
	if(flag==1)
	 return p;
    else
	printf("学号输入错误");
}
int menu2()
{
	int b;
	printf("============图书维护系统==============\n");
	printf("1.借阅图书\n");
	printf("2.归还图书\n");
	printf("3.查看所有图书\n");
	printf("4.查找图书\n");
	printf("5.显示我的信息\n");
	printf("0.退出\n");
	printf("============请选择====================\n");
	scanf("%d",&b);
	return b;
}
//-----------------------借阅图书----------------------------------// 
void lendbook(struct book *head,struct reader *q)
{
    char s[20];
    int flag=0;
    struct book *p=head->next;
	printf("============书籍借阅系统============\n"); 
	printf("请输入你想要借阅的书号:");
	scanf("%s",s);
	while(p)
	{
		if(strcmp(p->num,s)==0)
		 {
 			flag=1;
 			break;
 		} 
	    p=p->next; 
	} 
	if(q->lended>q->maxlended)
	{
		printf("已达最大借书数量!\n");
		printf("====================================\n");
		return ;
	}
	if(flag==1)
	 {
 	   strcpy(q->item[q->lended],s);
 	   q->lended++;
 	   p->lend++;
 	   p->nolend--;
	   printf("借阅成功!\n");
	 }
	 else
	 printf("查无此书!\n");
	printf("====================================\n");
	getch();
}
//--------------------------------归还图书----------------------------// 
void returnbook(struct book *head,struct reader *q)
{
    char s[20];
    int flag=0,i,t;
    struct book *p=head->next;
	printf("============书籍归还系统============\n"); 
	printf("请输入你想要归还的书号:");
	scanf("%s",s);
	
	for(i=0;i<q->lended;i++)
		if(strcmp(q->item[i],s)==0)
		 {
 			flag=1;
 			t=i;
 			break;
 		} 			
	if(flag==1)
	 {
 	   memset(q->item[t],0,30);
 	   q->lended--;
 	   
 	   while(p)
 	   {
   	 	     if(strcmp(p->num,s)==0)
   	 	     {
     	 	   	p->lend--;
     	 	   	p->nolend++;
     	 	   }
     	 	   p=p->next;
   	   }
	   printf("归还成功!\n");
	 }
	 else
	 printf("书号输入错误!\n");
	
	printf("====================================\n");
}
//-------------------------显示我的信息----------------------// 
void output(struct reader *head)
{   int i;
    printf("%-10s%-10s%-10s%-10s\n","学号","姓名","已借出数量 ","最大借出数量");
	printf("%-10s%-10s%-10d%-10d\n",head->xuehao,head->name,head->lended,head->maxlended);
	printf("借书项目\n");
	for(i=0;i<head->lended;i++)
	  printf("%10s",head->item[i]);
}


 文章来源地址https://www.toymoban.com/news/detail-446801.html

 

到了这里,关于图书借阅管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云借阅图书管理系统的测试项目实践

    项目背景:通过学习到的 SSM(Spring + SpringMVC + MyBatis)框架知识来实现一个前后端分离的云借阅图书管理系统。 目标:完成系统搭建,用户和图书相关模块编写,在 SSM 框架整合的基础上实现系统功能。 时间:2022-11-30 到 2022-12-26。 项目成员: 项目经理:lyg 产品经理:cch 开

    2024年02月10日
    浏览(61)
  • 基于SSM框架的借阅图书管理系统

    目录 一、功能 二、开发环境 三、系统项目文件组织结构 四、数据库设计 1.用户表 2.图书表 3.借阅记录表 五、页面展示 1.登录页面 2.用户端 3.管理员端 六、源码 本系统后台使用SSM框架编写,前台页面使用当前主流的Bootstrap和jQuery框架编写。 借阅图书管理系统主要实现了两

    2024年02月09日
    浏览(62)
  • 云借阅图书管理系统[基于SSM框架的项目]

    SSM框架本学期也是刚进行完答辩,在云借阅图书管理系统的基础功能上 新增了一些功能 用来作为SSM框架的大作业进行的答辩。也是对 MyBatis框架、Spring框架、Spring MVC框架 的注解开发有了一定的理解。下面给大家展示效果图,有对这个项目感兴趣的可以到我的 下载资源 里下

    2024年02月05日
    浏览(113)
  • python+django在线借阅图书管理系统vue

    本论文是以构建图书借阅为目标,使用  django框架制作,由系统前台、读者和管理员三大部分组成。着重论述了系统设计分析,系统的实现(读者注册模块,读者登录,读者浏览图书模块,图书借阅模块,图书归还模块,管理员登录等)以及后台数据库管理。从网站设计到具

    2024年02月07日
    浏览(61)
  • 第七章:借阅管理【基于Servlet+JSP的图书管理系统】

    1.1 查询借书卡   借书卡在正常的 CRUD 操作的基础上,我们还需要注意一些特殊的情况。查询信息的时候。如果是管理员则可以查询所有的信息,如果是普通用户则只能查看自己的信息。这块的控制在登录的用户信息 然后就是在Dao中处理的时候需要考虑根据当前登录用户查

    2024年02月11日
    浏览(53)
  • 基于Java的图书借阅网站, java+springboot+vue开发的图书借阅管理系统 - 毕业设计 - 课程设计

    本程序实现图书的智能化、信息化和简单化;实现图书信息的增加、删除、修改、查找、借阅、还书、收藏的显示操作及实时数据库的提交和更改和对普通用户的增、删、改、查;提高图书管理员工作信息报送及反馈的工作效率,减轻管理员的劳动负担;提高信息的及时性和

    2024年04月28日
    浏览(74)
  • 基于VUE的图书借阅管理系统的设计与实现

    目录 一、摘要 二、技术描述 三、部分截图 四、获取方式         随着我国经济的高速发展,人们对图书的需求也愈发旺盛,而传统图书管理模式存在以下弊端:信息存储和分类操作不够高效,导致查找书籍困难;借还书流程繁琐,工作量大;图书统计和更新困难,无法

    2024年02月07日
    浏览(66)
  • 基于Java+SpringBoot+vue实现图书借阅管理系统

    🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 在Internet高速发展的今天,计算机的应用几乎完全覆盖我们生活的各个领域,互联网在经济,生活等方面有着举足轻重的地位,成为人们资源共享,信息快速传递的重要渠道。在中国

    2024年01月25日
    浏览(82)
  • 【计算机毕业设计】图书馆借阅管理系统

    一、系统截图(需要演示视频可以私聊)         摘  要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、

    2024年02月09日
    浏览(77)
  • 期末考试还缺项目吗?黑马的图书借阅管理系统很香

    提示:黑马程序员的云借阅管理系统, 后端ssm框架, 前端jQuery, layui,模板引擎为thymeleaf。 有需要的小伙伴可以三连, 我会私聊你发源码。 提示:视频观看地址 bibi视频项目展示 提示:管理员全部功能, 用户部分功能 登录分为管理员登录, 普通用户登录, 不同身份登录拥有的权限

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包