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

📄 bookmanagement.cpp

📁 实现图书的添加、删除、查询、借出以及归还等功能。
💻 CPP
字号:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
 

struct book
{char name[10],price[10],store,total,author[20];
 int num,condition;
}book[100];

struct card
{
 int num;
 char name[10],sex[4],cass[10];
}card[1000];

struct record
{
 int cardnum;
 char name[10];
}record[1000];
 

bookadd()
{
 system("cls");
 int i,n;
 printf("添加图书\n\n");
 FILE *fp;
 fp=fopen("book.txt","wb");
 printf("请输入要添加的数目: \n\n");
 scanf("%d",&n); 
 for(i=0;i<n;i++) 
 {
  printf("请输入第%d书的序号\n",i+1);
  scanf("%d",&book[i].num);                                                  

            

  printf("请输入书名\n"); 
  scanf("%s",&book[i].name); 
  printf("请输入书的作者\n"); 
  scanf("%s",&book[i].author);                         
  printf("请输入书的价格\n"); 
  scanf("%s",&book[i].price);
  printf("0 表示书已借出  1 表示书还未借出\n");
  printf("请设定书的状态\n");
  scanf("%d",&book[i].condition);
  fwrite(&book[i],sizeof(struct book),1,fp);
 }
 fclose(fp);
 printf("按任意键返回\n"); 
 getch();  
}  


searchbook()
{
 system("cls");
 printf("图书信息查询\n\n");
 FILE *fp;
 int i;
 char bookname[10];
 fp=fopen("book.txt","r");
 printf("请输入要查找的书名\n\n");
 scanf("%s",bookname);
 for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
 if(strcmp(bookname,book[i].name)==0)
 {
  
  printf("序号: %d\n",book[i].num );
  printf("书名: %s\n",book[i].name);
  printf("作者: %s\n",book[i].author);
  printf("价格: %s\n",book[i].price);
  if(book[i].condition==1)
  {printf("此书还未借出\n");}
  else {printf("该书已经借出\n");}
 }
 else {printf("该书不存在\n");}
 fclose(fp);
 printf("按任意键返回\n");
 getch();
}


bookdel()
{
 system("cls");
 int i,h;
 char bookname[10];
 printf("删除图书\n\n");
 printf("请输入你要删除的书名\n"); 
 scanf("%s",bookname); 
 FILE *fp,*fp1;
 fp=fopen("book.txt","r"); 
 fp1=fopen("books.txt","w");
 for(i=0; fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
 {
  if(strcmp(bookname,book[i].name)!=0)
   {
    fwrite(&book[i],sizeof(struct book),1,fp1);
   }
  }
 fclose(fp);
 fclose(fp1);
 printf("\n确定要删除该图书吗?\n请用数字键选择操作\n");
 printf("请用数字键选择操作\n");
 printf("1 确定  2 取消\n ");
 scanf("%d",&h);
 if(h==1)
 {
  fp=fopen("books.txt","r");
  fp1=fopen("book.txt","w");
  for(i=0; fread(&book[i],sizeof(struct book),1,fp1)!=0;i++)
  { 
   fwrite(&book[i],sizeof(struct book),1,fp);                                

          
  }                              
  fclose(fp);
  fclose(fp1);
  printf("\n删除成功\n"); 
 }        
 printf("按任意键返回\n"); 
 getch();                                                                    

}                                                                            

            

                                                                             

            

                                                                             

         
addcard()
{
 system("cls");
 printf("\n 申请新卡\n");
 int i=0;
 FILE *fp;
 fp=fopen("card.txt","a+");
 printf("请输入卡号\n"); 
 scanf("%d",&card[i].num); 
 printf("请输入学生姓名\n"); 
 scanf("%s",&card[i].name); 
 printf("请输入性别\n"); 
 scanf("%s",&card[i].sex);
 printf("请输入班级\n"); 
 scanf("%s",&card[i].cass);
 fwrite(&card[i],sizeof(struct card),1,fp);
 fclose(fp);
 printf("申请新卡成功\n"); 
 getch(); 
}                                                                            

            

                                                                             

    
delcard()
{
 system("cls");
 printf("\n 删除书卡\n\n"); 
 FILE *fp1,*fp2;
 int i,cardnum;
 printf("请输入要删除的卡号:\n");
 scanf("%d",&cardnum);
 fp1=fopen("card.txt","r");
 fp2=fopen("cards.txt","w");
 for(i=0;fread(&card[i],sizeof(struct card),1,fp1)!=0;i++)
 {
  if(card[i].num!=cardnum)
  {
   fwrite(&card[i],sizeof(struct card),1,fp2);
  } 
 } 
 fclose(fp1); 
 fclose(fp2);  
 fp1=fopen("card.txt","w"); 
 fp2=fopen("cards.txt","r"); 
 for(i=0;fread(&card[i],sizeof(struct card),1,fp2)!=0;i++) 
 { 
  fwrite(&card[i],sizeof(struct card),1,fp1); 
  
 } 
 fclose(fp1); 
 fclose(fp2);  
 fp2=fopen("cards.txt","w"); 
 fclose(fp2); 
 printf("\n\n删除成功!");
 printf("\n\n按任意键返回");
 getch();
 return;
}



bookcard()
{
 system("cls");
 printf("\n办理借书卡");
 printf("\n1 申请新卡\n2 删除书卡");                                         
 printf("\n请用数字键选择操作");
 switch (getch())
 {
  case '1' :  addcard();break;                                
  case '2' :  delcard();break;
 }
 printf("按任意键返回\n"); 
 getch();                                                                    

}



bookborrow()
{
 system("cls");
 printf("\n 借书\n\n"); 
 FILE *fp,*fp2; 
 int i,n; 
 int carnum; 
 printf("请你输入你的卡号\n"); 
 scanf("%d",&carnum); 
 fp=fopen("card.txt","r"); 
 for(i=0;fread(&card[i],sizeof(struct card),1,fp)!=0;i++) 
 { 
   if(card[i].num==carnum) 
   { 
    n=i; 
    fclose(fp); 
    printf("请输入要借阅书名\n"); 
    scanf("%s",&record[n].name); 
    fp=fopen("book.txt","r"); 
    for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) 
    { 
     if(strcmp(book[i].name,record[n].name)==0) 
     { 
      if(book[i].condition==0) {printf("对不起,此书已借出");                 

      fclose(fp);getch();return;} 
      else 
      fclose(fp); 
      fp=fopen("record.txt","a+"); 
      record[n].cardnum=carnum; 
      fwrite(&record[n],sizeof(struct  record),1,fp); 
      fclose(fp); 
      fp=fopen("book.txt","r"); 
      fp2=fopen("books.txt","w"); 
      for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) 
      { 
       if(strcmp(book[i].name,record[n].name)==0) 
       { 
        book[i].condition=0; 
        fwrite(&book[i],sizeof(struct book),1,fp2); 
        continue; 
       } 
       fwrite(&book[i],sizeof(struct book),1,fp2); 
      } 
      fclose(fp); 
      fclose(fp2); 
      fp=fopen("book.txt","w"); 
      fp2=fopen("books.txt","r"); 
      for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) 
      { 
       fwrite(&book[i],sizeof(struct book),1,fp); 
      } 
      fclose(fp); 
      fclose(fp2); 
      fopen("books.txt","w"); 
      fclose(fp2); 
      printf("借书成功,按任意键返回\n"); 
      getch(); 
      return; 
     } 
     else printf("该书不存在,任意键返回\n"); 
    } 
    fclose(fp); 
    getch(); 
    return; 
   } 
} 
printf("该卡不存在,按任意键返回\n"); 
fclose(fp); 
getch(); 
}



returnbook()
{
 system("cls");
 printf("\n 还书\n\n"); 
 FILE *fp,*fp2;
 int i,n,carnum;
 char name[10];
 printf("请你输入借书卡卡号\n"); 
 scanf("%d",&carnum);
 fp=fopen("card.txt","r");
 for(i=0;fread(&card[i],sizeof(struct card),1,fp)!=0;i++)
 {
  if(card[i].num==carnum)
  {
   n=i;
   fclose(fp);
   printf("请输入你要还的书的名字\n");
   scanf("%s",&name); 
   fp=fopen("record.txt","r");
   for(i=0;fread(&record[i],sizeof(struct record),1,fp)!=0;i++)
   { 
    if(strcmp(record[i].name,name)==0)
    {
     fclose(fp); 
     fp=fopen("record.txt","r");
     fp2=fopen("records.txt","w");
     for(i=0;fread(&record[i],sizeof(struct record),1,fp)!=0;i++) 
      { 
       if(strcmp(record[i].name,name)==0)
       {
        continue;
       }
       fwrite(&record[i],sizeof(struct record),1,fp2);
      }
      fclose(fp); 
      fclose(fp2); 
      fp=fopen("record.txt","w"); 
      fp2=fopen("record.txt","r"); 
      for(i=0;fread(&record[i],sizeof(struct record),1,fp2)!=0;i++) 
      {
       fwrite(&record[i],sizeof(struct record),1,fp);
      }  
      fclose(fp); 
      fclose(fp2);
      fopen("books.txt","w"); 
      fclose(fp2); 
     
     fp=fopen("book.txt","r"); 
     fp2=fopen("books.txt","w"); 
     for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
     {
      if(i==n)
      {
       book[i].condition=1;
       fwrite(&book[i],sizeof(struct book),1,fp2);
       continue;
      }
      fwrite(&book[i],sizeof(struct book),1,fp2);
     }
     fclose(fp); 
     fclose(fp2); 
     fp=fopen("book.txt","w"); 
      fp2=fopen("books.txt","r"); 
      for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) 
      { 
       fwrite(&book[i],sizeof(struct book),1,fp); 
      } 
      fclose(fp); 
      fclose(fp2); 
      fopen("bookstxt","w"); 
      fclose(fp2); 
      printf("还书完毕,按任意键返回\n"); 
      getch(); 
      return 1; 
      } 
     } 
     printf("你没借该书,按任意键返回\n"); 
     fclose(fp); 
     getch(); 
     return 0; 
    } 
   }   
   printf("该卡不存在\n"); /*出错提示*/ 
   fclose(fp); 
   getch(); 
  }

void main()
 {
  
   menu:
   printf("\t\t*******************图书管理系统*******************\n\n");
   printf("\t\t                 1  添加图书                      \n\n");
   printf("\t\t                 2  图书信息查询                  \n\n");
   printf("\t\t                 3  删除图书                      \n\n");
   printf("\t\t                 4  办理借书卡                    \n\n");
   printf("\t\t                 5  借书                          \n\n");
   printf("\t\t                 6  还书                          \n\n");
   printf("\t\t                 7  退出                          \n\n");
   printf("\t\t               请用数字键选择操作                   \n");
   switch(getchar())
  { 
   case '1' :  bookadd();break;
   case '2' :  searchbook();break;	
   case '3' :  bookdel();break;
   case '4' :  bookcard();break;
   case '5' :  bookborrow();break;
   case '6' :  returnbook();break;
   case '7' :  exit(0);break;
  }
system("cls"); 
goto menu;
}

⌨️ 快捷键说明

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