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

📄 librarymanagementsystem.txt

📁 实现图书管理基本功能
💻 TXT
字号:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include<graphics.h>
#include <math.h>
#include<time.h>

typedef struct BookList/**//*书的结构体*/
{
   char num[20];
   char name[20];
   int price;
   char person[20];
   int yes;/**//*判断书是否存在或者已经借出,1存在,0借出*/
   struct BookList *next;
}Book;

typedef struct MemberList
{
   char name[20];
   char sex[6];
   int age;
   struct MemberList *next;
}Member; 
char save[4096];/**//*保存文本区域空间*/

char c[4096];/**//*清屏专用空间*/
int i,j;/**//*常用变量*/

/**//*//函数声明部分    */

void BookAdd();
void BookConsult();
void BookDel();
void BookBorrow();
void BookReturn(); 
void MemberAdd(); 
void MemberConsult();
void MemberDel(); 
void MemberBook(); 

/**//*12. bookfunction.c源程序*/

/**//*添加图书*/


void BookAdd()
{
   FILE *fp;
   Book consultbook;
   fp=fopen("book.txt","rb");/**//*读方式打开文件*/
   if(fp==NULL)
      fp=fopen("book.txt","wb"); /**//*写方式打开文件*/
   else/**//*如果有书就添加*/
   {
      fclose(fp);
      fp=fopen("book.txt","ab");/**//*追加方式打开文件*/
   }
   clrscr();
   printf("\nIntput new book num: ");/**//*逐个输入新图书的资料*/
   gets(consultbook.num);
   
   printf("\nInput new book name: ");
   gets(consultbook.name);
  
   printf("\nPlease input new book's price: ");
   scanf("%d%*c",&consultbook.price);
   strcpy(consultbook.person,"");
   consultbook.yes=1;/**//*表示书存在未借出*/
   consultbook.next=NULL;
   fwrite(&consultbook,sizeof(Book),1,fp);
   fclose(fp); /**//*关闭文件*/
   clrscr();
}

/**//*图书查询*/
void BookConsult()
{
   FILE *fp;
   Book consultbook;
   char bookname[20];
   int flag=0,i=0;
   clrscr();
   
   printf("\nInput the book name: ");
   gets(bookname); /**//*输入要查询的图书名*/
   fp=fopen("book.txt","rb");
   if(fp==NULL)/**//*没找到文件*/
   {
      clrscr();
      
      printf("\nError!");
      fclose(fp);
      return;
   }
   else
      while(!feof(fp))/**//*查询图书资料*/
      {
     fread(&consultbook,sizeof(Book),1,fp);
     if(strcmp(consultbook.name,bookname)==0)/**//*如果查找到*/
     {
        clrscr();
        
        printf("\nThis book %s information as follow:",consultbook.name);
        
        printf("\nThis book num is %s",consultbook.num);
        
        printf("\nThis book's price is %d",consultbook.price);
       
        printf("\nThis book's  is borrowed by %s",consultbook.person);
        
        printf("\nThis book's state is %d",consultbook.yes);
        i++;
        flag=1; /**//*查找数据标志*/
     }
      }
   if(flag==0)
   {
      clrscr();
      
      printf("\nNo found this book");
   }
   fclose(fp);
   printf( "\n\n\n\n\n\PRESS ANY KEY...\n");
   getch();
   clrscr();
}


/**//*删除图书资料*/
void BookDel()
{
   FILE *fp;
   Book *head,*p,*q;
   char bookname[20];
   fp=fopen("book.txt","rb");/**//*读方式打开文件*/
   if(fp==NULL)/**//*没找到文件*/
   {
      
      printf("\nError!");
      fclose(fp);
      return;
   }
   head=p=q=(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);
   clrscr();
   printf("\nInput the book name: ");
   gets(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;
   }
   fp=fopen("book.txt","wb");/**//*删除后从链表的头开始重新保存*/
   while(head!=NULL)
   {
      fwrite(head,sizeof(Book),1,fp);
      head=head->next;
   }
   fclose(fp);
   clrscr();
}

 /**//*借书*/
void BookBorrow()
{
   FILE *fp;
   Book consultbook;
   Member  consultmember;
   char bookname[20],membername[20];
   int flag=0,mflag=0;
   clrscr();
   
   printf("\nInput the mermber name: ");
   gets(membername); /**//*输入会员名*/
   if((fp=fopen("member.txt","rb"))==NULL)/**//*没找到文件*/
   {
      
      printf("\nCannot open file !");
      return;
   }
   else
      while(!feof(fp))/**//*查询会员资料*/
      {
     fread(&consultmember,sizeof(Member),1,fp);
     if(strcmp(consultmember.name,membername)==0)
     {
        mflag=1; /**//*是会员标志*/
        break;
     }
      }
   fclose(fp);
   if(mflag==0)
   {
      
      printf("\nYou not is a member,please register!");/**//*不是会员不能借书*/
      return;
   }
 
   printf("\nInput the book name: ");
   gets(bookname); 
   clrscr();
   if((fp=fopen("book.txt","rb+"))==NULL)
   {
     
      printf("\nCannot open file !");
      return;
   }
   while(!feof(fp))/**//*查询图书资料*/
   {
      fread(&consultbook,sizeof(Book),1,fp);
      if(strcmp(consultbook.name,bookname)==0)
      {
     if(consultbook.yes==0)/**//*图书已经借出的判断*/
     {
        
        printf("\nThis book has borrowed !");
        break;
     }
     else
     {
        consultbook.yes=0; /**//*作借出标志*/
        strcpy(consultbook.person,membername);/**//*登记借书会员*/
        fseek(fp,-1L*sizeof(Book),1);/**//*从当前位置前移一条记录指针*/
        fwrite(&consultbook,sizeof(Book),1,fp);/**//*写记录*/
        
        printf("\nBorrowed successful!");
        flag=1;/**//*借出书标志*/
        break;
     }
      }
   }
   if(flag!=1)
   {
      clrscr();
      
      printf("\nBorrowed fail! ");/**//*借书失败*/
   }
   fclose(fp);
   printf( "\n\n\n\n\n\PRESS ANY KEY...\n");
   getch();
   clrscr();
}

/**//*还书*/
void BookReturn()
{
   FILE *fp;
   Book consultbook;
   char bookname[20];
   int flag=0;
   clrscr();
   if((fp=fopen("book.txt","rb+"))==NULL)
   {
      
      printf("\ncannot open file !");
      return;
   }
   printf("\nInput the book name: ");
   gets(bookname); 
   clrscr();
   while(!feof(fp))/**//*查询图书资料*/
   {
      fread(&consultbook,sizeof(Book),1,fp);
      if(strcmp(consultbook.name,bookname)==0)
      {
     if(consultbook.yes==0)/**//*图书已经借出的判断*/
     {
        consultbook.yes=1;/**//*作图书未借书标志,表示已还书*/
        strcpy(consultbook.person,"");
        fseek(fp,-1L*sizeof(Book),1);
        fwrite(&consultbook,sizeof(Book),1,fp);
        
        printf("\nReturn book succ!");
        flag=1;
        break;
     }
      }
   }
   if(flag!=1)
      printf("\nReturn fail! ");
   fclose(fp);
   printf( "\n\n\n\n\n\PRESS ANY KEY...\n");
   getch();
   clrscr();
}

/**//*会员注册*/
void MemberAdd()
{
   FILE *fp;
   Member consultmember;
   fp=fopen("member.txt","rb");
   if(fp==NULL)/**//*如果没会员就新建*/
      fp=fopen("member.txt","wb");
   else/**//*如果有会员就添加*/
   {
      fclose(fp);
      fp=fopen("member.txt","ab");/**//*追加方式打开*/
   }
   clrscr();
   
   printf("\nIntput new member name: ");/**//*逐个输入会员的资料*/
   gets(consultmember.name);
  
   printf("\nInput member sex: ");
   gets(consultmember.sex);
  
   printf("\nPlease input member age: ");
   scanf("%d%*c",&consultmember.age);
   fwrite(&consultmember,sizeof(Member),1,fp);/**//*写入记录*/
   fclose(fp);
   clrscr();
}

/**//*查询会员*/
void MemberConsult()
{
   FILE *fp;
   Member consultmember;
   char membername[20];
   int flag=0;
   clrscr();
   
   printf("\nInput the member name: ");/**//*输入要查询的会员名*/
   gets(membername);
   fp=fopen("member.txt","rb");
   if(fp==NULL)
   {
      clrscr();
      
      printf("\nError!");
      fclose(fp);
      return;
   }
   while(!feof(fp))/**//*查询会员资料*/
   {
      fread(&consultmember,sizeof(Member),1,fp);
      if(strcmp(consultmember.name,membername)==0)/**//*比较*/
      {
     clrscr();
     
     printf("\nThis member %s information as follow:",consultmember.name);
     
     printf("\nThis member'sex  is %s",consultmember.sex);
     
     printf("\nThis member 's age is %d",consultmember.age);
     flag=1;
     break;
      }
   }
   if(flag==0)
   {
      clrscr();
      
      printf("\nNo found this member!");
   }
   fclose(fp);
   printf( "\n\n\n\n\n\PRESS ANY KEY...\n");
   getch();
   clrscr();
}

/**//*删除会员资料*/
void MemberDel()
{
   FILE *fp;
   Member *head,*p,*q;
   char membername[20];
   fp=fopen("member.txt","rb");
   if(fp==NULL)/**//*没找到文件*/
   {
      
      printf("\nError!");
      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);
   clrscr();
   printf("\nInput the member name: ");/**//*输入会员名*/
   gets(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;
   }
   fp=fopen("member.txt","wb");/**//*删除后重新保存*/
   while(head!=NULL)
   {
      fwrite(head,sizeof(Member),1,fp);
      head=head->next;
   }
   fclose(fp);
   clrscr();
}

/**//*查询会员所借的图书*/
void MemberBook()
{
   FILE *fp;
   Book consultbook;
   Member  consultmember;
   char bookname[20],membername[20];
   int flag=0,mflag=0,i=0;
   clrscr();
   
   printf("\nInput the mermber name: ");/**//*输入会员名*/
   gets(membername);
   if((fp=fopen("member.txt","rb"))==NULL)/**//*没找到文件*/
   {
      
      printf("\nCannot open file !");
      return;
   }
   else
      while(!feof(fp))/**//*查询会员资料,确认会员*/
      {
     fread(&consultmember,sizeof(Member),1,fp);
     if(strcmp(consultmember.name,membername)==0)
     {
        mflag=1;
        break;
     }
      }
   fclose(fp);
   if(mflag==0)
   {
      
      printf("\nNot the member!");
      return;
   }
   clrscr();
   if((fp=fopen("book.txt","rb+"))==NULL)/**//*没找到文件*/
   {
      
      printf("\nCannot open file !");
      return;
   }
   while(!feof(fp))/**//*查询图书资料*/
   {
      fread(&consultbook,sizeof(Book),1,fp);
      
      printf("\nThis member %s has borrowed book  as follow:",membername);
      
      printf("********************************************");
      if(strcmp(consultbook.person,membername)==0)/**//*借阅人比较*/
      {
     
     printf("\nBook name is %s",consultbook.name);
    
     printf("\nThis book num is %s",consultbook.num);
     
     printf("\nThis book's price is %d",consultbook.price);
     printf("\n ");
     i++;
     flag=1;
      }
   }
   if(flag!=1)
   {
      clrscr();
      
      printf("\nno Borrow book! ");
   }
   else
   {
     
      printf("\n******total is %d*********",i);/**//*显示总数*/
   }
   fclose(fp);
   printf( "\n\n\n\n\n\PRESS ANY KEY...\n");
   getch();
   clrscr();
}


main(void)
{char ch;
  
 textbackground(WHITE);                /*  背景颜色         */
 textcolor(RED);                   /*  文字颜色         */
 clrscr();
   
   printf("\n\n\n\n\n\t\t********************************************\n"
          "\t\t**          BOOKS MANAGEMENT SYSTEM           **\n"
          "\t\t**          design by Zhou Jiefei     **\n" 
          "\t\t********************************************\n"
          
          "\n\n\n\n\n\PRESS ANY KEY...\n");
   getch();
   clrscr();
   while(1){                           /*使循环永远为真,为后面break跳出时继续运行菜单而不会结束*/
    
   printf("\n\n\n\n\n\t\t\t                           \n"
           "\t\t\t**                                **\n"
           "\t\t\t**     0 --EXIT                   **\n"
           "\t\t\t**     1 --ADD BOOKS              **\n"
           "\t\t\t**     2 --CONSULT BOOKS          **\n"
           "\t\t\t**     3 --DELETE BOOKS           **\n"
           "\t\t\t**     4 --BORROW                 **\n"
           "\t\t\t**     5 --RETURN                 **\n"
           "\t\t\t**     6 --ADD MEMBERS            **\n"
           "\t\t\t**     7 --CONSULT MEMBERS        **\n"
           "\t\t\t**     8 --DELETE MEMBERS         **\n"
           "\t\t\t**     9 --BORROWED BOOKS         **\n"
           

         );
           
           
    
   printf("\n\nPlease input your choice(0-9):");  
   ch=getch();
   switch(ch)
   {  
      case '1':BookAdd();break;
      case '2':BookConsult();break;
      case '3':BookDel();break;
      case '4':BookBorrow();break;
      case '5':BookReturn();break;
      case '6':MemberAdd();break;
      case '7':MemberConsult();break;
      case '8':MemberDel();break;
      case '9':MemberBook();break;
      case '0': exit(0);
   }}
   

}

⌨️ 快捷键说明

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