⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.c

📁 用C语言编写的控制台下进行的简单的图书馆管理程序,可实现借阅,归还,添加和删除图书功能
💻 C
字号:
/*主功能文件*/
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef struct booklist/*书的结构体*/
{
	char num[20];
	char name[20];
	char publish[20];
	int year;
	char author[20];
	int yeshu;
	int price;
	char person[20];
	int borrow;/*0为未借出,1为已借出*/
	struct booklist *next;
}book;
typedef struct memberlist/*会员结构体*/
{
	char num[20];
	char name[20];
	char sex[10];
	char phone[20];
	struct memberlist *next;
}member;
	
/*添加图书*/
void addbook()
{
	FILE *fp;
	book bookadd;
	int b;
	fp=fopen("booklist","rb");/*测试是否有此文件*/
	if(fp==NULL)
	   fp=fopen("booklist","wb");
	else
	{
       	fclose(fp);
		fp=fopen("booklist","ab");
	}
	printf("请输入新书书号:");
	scanf("%s",&bookadd.num);			
	printf("\n请输入新书名称:");
	scanf("%s",&bookadd.name);			
	printf("\n请输入新书出版社:");
	scanf("%s",&bookadd.publish);			
	printf("\n请输入新书出版年份:");
	scanf("%d",&bookadd.year);			
	printf("\n请输入新书作者:");
	scanf("%s",&bookadd.author);			
	printf("\n请输入新书页数");
	scanf("%d",&bookadd.yeshu);			
	printf("\n请输入新书价格:");
	scanf("%d",&bookadd.price);
	strcpy(bookadd.person,"");
	bookadd.borrow=0;
	bookadd.next=NULL;
	fwrite(&bookadd,sizeof(book),1,fp);
	fclose(fp);
	system("cls");
	printf("增加成功!");
	printf("1.继续增加.");
	printf("2.退出.");
	scanf("%d",&b);
	if(b==1)
	{
	    addbook();
	}
	else
		exit(0);
}
/*图书查询*/
void consultbook()
{
	FILE *fp;
	book bookadd;
	int b;
	char bookname[20],author[20],num[20];
	int flag=0;
	system("cls");
	fp=fopen("booklist","rb");
		if(fp==NULL)
	{
		system("cls");
		printf("Error!");
		fclose(fp);
		return;
	}

	printf("1.按图书名查找\n");
	printf("2.按图书编号查找\n");
	printf("3.按图书作者查找\n");
	scanf("%d",&b);  
    if(b==1)
	{
	printf("请输入要查询的书名:");
    scanf("%s",&bookname);
  	while(fread(&bookadd,sizeof(book),1,fp)!=(int)NULL)
	{
    if(strcmp(bookadd.name,bookname)==0)
       {
  		system("cls");
  	    flag=1;  	  
  	    break;
        }
     }
    }
    if(b==2)
     {
     	 printf("请输入要查询的图书编号:");
     	 scanf("%s",&num);
     	 	while(fread(&bookadd,sizeof(book),1,fp)!=(int)NULL)
	{
     	 if(strcmp(bookadd.num,num)==0)
     	 {
     	 	 system("cls");
     	 	 flag=1;
     	 	 break;
     	 }
    }
    }
    if(b==3)
     {
     	 printf("请输入要查询的图书作者:");
     	 scanf("%s",&author);
     	 	while(fread(&bookadd,sizeof(book),1,fp)!=(int)NULL)
	{
     	 if(strcmp(bookadd.author,author)==0)
     	 {
     	 	 system("cls");
     	 	 flag=1;
     	 	 break;    	 	 
     	 }	 
    }
    }
	if(flag==0)
	{
   	  system("cls");
	  printf("未找到此书\n");
	}

		printf("这本书的信息如下:\n");
  		printf("书号:%s\n",bookadd.num);
  		printf("书名:%s\n",bookadd.name);
  		printf("价格:%d\n",bookadd.price);
  		printf("出版社:%s\n",bookadd.publish);
  		printf("出版年份:%d\n",bookadd.year);
  		printf("作者:%s\n",bookadd.author);
  		printf("是否已借出:");
             if(bookadd.borrow==0)printf("否\n");
	       else
             if(bookadd.borrow==1)
		{
		  printf("是\n");
		  printf("借给了:%s\n",bookadd.person);
		}
	fclose(fp);
}
/*删除图书*/
void delbook()
{
	FILE *fp;
	book *head,*p,*q;
	char bookname[20];
	fp=fopen("booklist","rb");
	if(fp==NULL)
		{
			printf("Error!\n");
			fclose(fp);
			return;
		}
		head=q=p=(book*)malloc(sizeof(book));
		fread(p,sizeof(book),1,fp);
		while(!feof(fp))
		{
			q=p;
			p=(book*)malloc(sizeof(book));
			fread(p,sizeof(book),1,fp);
			q->next=p;
		}
		p->next=NULL;
		fclose(fp);
		system("cls");
		printf("请输入图书名\n");
		scanf("%s",bookname);
		p=head;
		while(p!=NULL)
		{
			if(strcmp(p->name,bookname)==0)
				{
					if(p==head)
					head=head->next;
				else
					q->next=p->next;
					break;
				}
					q=p;
					p=p->next;
		}
		if(p=NULL)printf("未找到此书");
		else
			printf("删除成功!");
		fp=fopen("booklist","wb");
		while(head!=NULL)
		{
			fwrite(head,sizeof(book),1,fp);
			head=head->next;
		}
		fclose(fp);
		system("cls");
}

/*借阅图书*/
void borrowbook()
{
	FILE *fp;
	book bookadd,*p1;
	member memberadd;
	char bookname[20],membername[20];
	int bflag=0,mflag=0,i=0;
	system("cls");
	printf("请输入会员姓名:");
	scanf("%s",&membername);
	if((fp=fopen("memberlist","rb"))==NULL)
		{
			printf("cann't open file!\n");		
		}
else
	while(fread(&memberadd,sizeof(member),1,fp)!=(int)NULL)
	{
	  if(strcmp(memberadd.name,membername)==0)
	    mflag=1;				
	}
	fclose(fp);
	if(mflag==0)
	{
	  printf("你不是会员,请返回注册\n");
	  return;
	}
	if((fp=fopen("booklist","rb"))==NULL)
	{
	  printf("cannot open file!\n");
	}						
	p1=&bookadd;
	while(fread(&bookadd,sizeof(book),1,fp)!=(int)NULL)
	{
	  if(strcmp(p1->person,membername)==0)
        {
	      i++;
	      p1=p1->next;
	      if(i==10)
	        {
	          printf("你已借阅了十本书,达到了上限,不能再借阅!\n");
		      break;
		    }
	    }
	}
	fclose(fp);
	printf("请输入要借阅的图书书名\n");
	scanf("%s",&bookname);
	system("cls");
	fp=fopen("booklist","rb+");
	if((fp=fopen("booklist","rb+"))==NULL)
	  {
	    printf("cann't open file!\n");
	  }
	while(fread(&bookadd,sizeof(book),1,fp)!=(int)NULL)
      {
	    if(strcmp(bookadd.name,bookname)==0)
	      {
	        if(bookadd.borrow!=0)
		  {
		    printf("此书已被借阅!\n");
		  }							
		    if(bookadd.borrow==0)
		     {
		       bookadd.borrow=1;
		       strcpy(bookadd.person,membername);
	           fseek(fp,-sizeof(book),1);
		       if(!fwrite(&bookadd,sizeof(book),1,fp))
		         {
		           printf("\nError\n");
		          }		       
		      printf("借阅成功!\n");
		      bflag=1;														  
	         }
          }
	if(bflag==0)
	{
	  system("cls");
	  printf("借阅失败!\n");
	}
	fclose(fp);
	}
}
/*还书*/
void returnbook()
{
	FILE *fp;
	book bookadd;
	char bookname[20],membername[20];
	member memberadd;
	int flag=0,mflag=0;
	system("cls");
	printf("请输入会员姓名:");
	scanf("%s",&membername);
	if((fp=fopen("memberlist","rb"))==NULL)
		{
			printf("cann't open file!\n");
		}
else
	while(fread(&memberadd,sizeof(member),1,fp)!=(int)NULL)
	{
	  if(strcmp(memberadd.name,membername)==0)
	    mflag=1;		
	}
	fclose(fp);
	if(mflag==0)
	{
	  printf("你不是会员,请返回注册\n");
	  return;
	}
	if((fp=fopen("booklist","rb+"))==NULL)
		{
			printf("cann't open file!\n");
			return;
		}
	printf("请输入要还的书名:");
	scanf("%s",&bookname);
	system("cls");
	while(fread(&bookadd,sizeof(book),1,fp)!=(int)NULL)
	  {
		if((strcmp(bookadd.name,bookname)==0)&&(strcmp(bookadd.person,membername)==0))
	      {
		   	bookadd.borrow=0;
			strcpy(bookadd.person,"");
			fseek(fp,-sizeof(book),1);
			fwrite(&bookadd,sizeof(book),1,fp);
			printf("\n还书成功!");
			flag=1;
			break;
		 }
	  }
		if(flag==0)
		{
		  printf("\n还书失败!");
		  fclose(fp);
		}
}
/*增加会员*/
void addmember()
{
	member memberadd;
	FILE *fp;
	fp=fopen("memberlist","rb");
	if(fp==NULL)
		fp=fopen("memberlist","wb");
		else
			{
				fclose(fp);
				fp=fopen("memberlist","ab");
			}
			system("cls");
			printf("请输入新会员姓名:");
			scanf("%s",&memberadd.name);
			printf("\n请输入新会员编号:");
			scanf("%s",&memberadd.num);
			printf("\n请输入新会员性别:");
			scanf("%s",&memberadd.sex);
			printf("\n请输入会员电话号码:");
			scanf("%s",&memberadd.phone);
			fwrite(&memberadd,sizeof(member),1,fp);
			fclose(fp);
			system("cls");
			printf("注册成功!");
}
/*查询会员*/
void consultmember()
{
	FILE *fp;
	member memberadd;
	char membername[20];
	int flag=0;
	system("cls");
	printf("请输入会员姓名:");
	scanf("%s",&membername);
	fp=fopen("memberlist","rb");
	if(fp==NULL)
		{
			system("cls");
			printf("Error!\n");
			fclose(fp);
			return;
		}
	        while(fread(&memberadd,sizeof(member),1,fp)!=(int)NULL)
		{
			if(strcmp(memberadd.name,membername)==0)
				{
					system("cls");
					printf("此会员资料为:\n");
					printf("编号:%s\n",memberadd.num);
					printf("姓名:%s\n",memberadd.name);
					printf("性别:%s\n",memberadd.sex);
					printf("电话号码:%s\n",memberadd.phone);
					flag=1;
					break;
				}
		}
		if(flag==0)
		{
			system("cls");
			printf("未找到此会员!\n");
		}
		fclose(fp);
}
/*删除会员*/
void delmember()
{
	FILE *fp;
	member *head,*p,*q;
	char membername[20];
	fp=fopen("memberlist","rb");
	if(fp==NULL)
		{
			printf("Error!\n");
			fclose(fp);
			return;
		}
		head=p=q=(member*)malloc(sizeof(member));
		fread(p,sizeof(member),1,fp);
		while(!feof(fp))
		{
			q=p;
			p=(member*)malloc(sizeof(member));
			fread(p,sizeof(member),1,fp);
			q->next=p;
		}
		p->next=NULL;
		fclose(fp);
		system("cls");
		printf("请输入要删除的会员姓名:");
		scanf("%s",&membername);
		p=head;
		while(p!=NULL)
		{
			if(strcmp(p->name,membername)==0)
				{
					if(p==head)
						head=head->next;
						else
							q->next=p->next;
							break;
				}
			q=p;
			p=p->next;
		}
		if(p==NULL)printf("未找到此会员");
		else
			printf("删除成功!");
			fp=fopen("memberlist","wb");
			while(head!=NULL)
			  {
				fwrite(head,sizeof(member),1,fp);
				head=head->next;
			  }
			fclose(fp);
			
}
/*借书信息*/
void borrowinof()
{
	FILE *fp;
	member memberadd;
	book bookadd;
	char membername[20];
	int bflag=0,mflag=0,i=0;
	system("cls");
	printf("请输入会员姓名:");
	scanf("%s",&membername);
	if((fp=fopen("memberlist","rb"))==NULL)
		{
			printf("cann't open file!\n");
			return;
		}
else
	while(fread(&memberadd,sizeof(member),1,fp)!=(int)NULL)
   	  {
		if(strcmp(memberadd.name,membername)==0)
	  	  {
			mflag=1;
			break;
		  }
	 }
		fclose(fp);
		if(mflag==0)
		  {
			printf("未到找此会员!\n");
			return;
		  }
			system("cls");
			if((fp=fopen("booklist","rb+"))==NULL)
			  {
				printf("cannot open file!\n");
				return;
			  }
            while(fread(&bookadd,sizeof(book),1,fp)!=(int)NULL)
		   	  {
				printf("%s 借阅了以下书:\n",membername);
				if(strcmp(bookadd.person,membername)==0)
				  {
					printf("书名:%s\n",bookadd.name);
				    printf("书的编号:%d\n",bookadd.num);
					printf("书的出版社:%s\n",bookadd.publish);
					printf("书的出版年份:%d\n",bookadd.year);
					printf("书的作者:%s\n",bookadd.author);
					printf("书的页数:%d\n",bookadd.yeshu);
					printf("书的价格:%d\n",bookadd.price);
					i++;
					 bflag=1;
				  }
				}
			if(bflag==0)
			  {				
				printf("无已借阅的书!\n");
			  }
		 else
		     {
				printf("一共借阅了 %d 本书",i);
			 }
	fclose(fp);
}
/*系统版本,开发人员介绍*/
void about()
{
}

									
							
	
						
					
		
			
							
															
					          
									
							
	
					
		
			  		 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -