图书借阅管理系统

1、系统概述

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

管理员系统:

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

用户系统:

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

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

e340949b1f6546e6b5c00fd566bd262b.png

c35f3b9acf374242a593f317ab1f35eb.png

#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]);
}


 

 

  • 19
    点赞
  • 149
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
2.2 主要功能说明: 一.欢迎界面:改界面主要是作为本系统的封面,程序运行后该界面会出 现在屏幕中间,操作者可以点击该界面即可计入下一个窗体。 二.入口:本系统中权限的设置主要是靠入口,选择不同的登录身份进入 系统后将会得到不一样的执行权限。若选择退出系统,则将会退出整个软件。 三. 读者登陆界面:该窗体主要是给一般读者登陆系统执行图书的查询和借阅功能的,当读者输入的编号和密码正确后即可进入系统,当用户输入用户名和密码出现错误后,系统会提示用户重新输入。当用户三次输入均出现错误时,系统会自动关闭。 四.管理员登陆界面:该窗体主要是提供给系统管理员进入系统进行操作的,其中用法和读者登陆界面一样,不同的是进入系统后具有的操作权限不同。管理员具有全部权限。 五.图书管理:(1)图书信息录入界面:此界面主要用于首次录入图书信 息,因此该界面应该具有输入图书所有信息的元素, 如图书编号,书名,书号,作者…. (2)图书信息修改界面:此界面主要是用于已经存在馆里的图书的信息的修改,因此该界面应该有查找和修改的功能,所以除了具有图书信息录入界面的元素外,还应该有上一条,下一条,查询等元素。 六.读者管理:(1)读者注册界面:此界面主要是用于录入新读者的信息, 因此此界面应该具有读者的所有信息,另外应该还具 有赋予读者一个进入系统的密码的元素。 (2)读者信息修改:此界面主要用于对已经注册过本系统 的读者的信息的修改,包括密码等等元素。 七.图书服务:(1)图书查询界面:此界面主要是用于查询,借阅,预 约图书,查询时可按图书的书名,作者,出版社来 查询,查询到的图书用表格显示,并且可以显示图书 的借阅情况。 (2)借书还书界面:该界面主要是用于读者的借书和还 书的情况,并且读者可以归还图书。 八.数据安全:(1)数据备份界面:该界面主要用于对本系统的重要数 据进行备份,以便不小心失去数据后可以恢复数据 提高系统的安全性。 (2)数据恢复界面:该界面是和数据备份界面配合使用的,当需要恢复已经备份的数据时,即可使用该窗体。 九.系统管理:(1)帮助和相关界面:该界面主要是向使用本系统的读者或者管理员提供相应的提示和帮助,同时显示一些关于本系统的相关信息。 (2)密码设置界面:该界面主要是用于管理员的注册和密码修改,注册界面可以注册新的管理员,密码修改界面可以对已经存在的管理员的信息的修改。 (3)退出本系统界面:该界面主要是用来安全退出整个软件,包括退出了vfp软件 (4)恢复vfp系统界面:该界面主要是用来退出当前运行的图书管理系统,恢复到vfp系统继续进行操作。
Java GUI图书借阅系统是一个用Java编程语言开发的图书借阅管理系统,用于管理图书馆的图书借阅流程。这个系统的界面使用GUI(图形用户界面)来提供用户友好的操作界面,方便图书管理员和读者进行借阅操作。 该图书借阅系统包含了以下功能: 1. 用户登录:管理员可以输入用户名和密码登录到系统,读者可以使用自己的借阅卡号进行登录。 2. 图书查询:管理员和读者都可以使用系统提供的搜索功能查找所需的图书,通过图书名称、作者或ISBN等信息进行检索。 3. 图书借阅:读者可以选择所需的图书,点击借阅按钮进行借阅操作。系统将检查图书是否可借、读者是否有借阅资格等条件,如果条件满足则借阅成功。 4. 图书归还:读者归还图书时,可以在系统中查找并选择要归还的图书,点击归还按钮进行归还操作。 5. 图书续借:读者还可以在借阅期满之前进行图书续借操作,延长图书的借阅期限。 6. 借阅记录管理:管理员可以查看和管理所有的借阅记录,包括借阅日期、归还日期等信息。 7. 读者信息管理:管理员可以管理读者的信息,包括添加新的读者、修改读者信息、发放借阅卡等操作。 8. 图书信息管理:管理员可以管理图书的信息,包括添加新的图书、修改图书信息、删除图书等操作。 总而言之,Java GUI图书借阅系统提供了一个方便快捷的方式来管理图书借阅流程。通过用户友好的界面和丰富的功能,图书管理员能够更高效地管理图书馆借阅流程,读者也能够方便地查询借阅图书、借阅、归还和续借图书等操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值