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

📄 main3.c

📁 图书馆管理模板。包括图书管理
💻 C
📖 第 1 页 / 共 4 页
字号:
void returnbook()   //归还图书 
{
     struct card oldcard;
     struct reader one;
     int booknumber;
     FILE *fp,*fp1;
     fp=fopen("lendcard.txt","r+");
     if(fp==NULL)
       {
           printf("文件不存在导致打开失败!\n");      //文件不存在报错 
           getch();
           exit(0);
       } 
     else   //
       {
           printf("请输入所要归还的书的编号:\n");
           scanf("%d",&booknumber);
           while(!feof(fp))
              {   
                   fscanf(fp,"%d %s %d %d %d\n",&oldcard.one.cardnum,oldcard.one.readername,
                          &oldcard.one.classes,&oldcard.booknum,&oldcard.lenddate);
                   if(oldcard.booknum!=booknumber)
				    {
				      fp1=fopen("lendcard1.txt","a+");    
                      if(fp1==NULL)
				        { 
                          printf("该文件不存在!");
                          exit(0);
				         }
                       else
				         {   
					       fprintf(fp1,"%d %s %d %d %d\n",oldcard.one.cardnum,oldcard.one.readername,
                                oldcard.one.classes,oldcard.booknum,oldcard.lenddate);
					       fclose(fp1);
				         }
                     }
                   else
				    {
                         printf("该用户正在还书~~~\n");
                         printf("%d %s %d %d %d\n",oldcard.one.cardnum,oldcard.one.readername,
                                oldcard.one.classes,oldcard.booknum,oldcard.lenddate);
                    }
                }
              fp=fopen("lendcard.txt","w"); 
	          fclose(fp);
              fp=fopen("lendcard.txt","a+");       //相当于删除所查找的书目对应的借书卡信息 
              fp1=fopen("lendcard1.txt","r+");
              while(!feof(fp1)) 
			   {   
				  fscanf(fp1,"%d %s %d %d %d\n",&oldcard.one.cardnum,oldcard.one.readername,
                          &oldcard.one.classes,&oldcard.booknum,&oldcard.lenddate);
                  fprintf(fp,"%d %s %d %d %d\n",oldcard.one.cardnum,oldcard.one.readername,
                          oldcard.one.classes,oldcard.booknum,oldcard.lenddate);
			   }
			      fclose(fp);
                  fclose(fp1);
                 fp1=fopen("lendcard1.txt","w"); 
	          	 fclose(fp1);
        }  //else
}

void countbookin()   //统计在馆图书 
{  
     struct book books[100];
     struct book bookst;
     int record_len = sizeof(struct book);
     int counti,line,i;
     line=0;
     counti=0;
     FILE *fp;
     fp=fopen("book.txt","r+");
     if(fp==NULL)
       {
           printf("文件不存在导致打开失败!\n");
           getch();
           exit(0);
       } 
     else
         {  
             while(!feof(fp))
	              {
	                 fscanf(fp,"%d %s %s %s %d\n",&bookst.booknum,bookst.bookname,
                        bookst.bookcreat,bookst.writer,&bookst.lendture);
                     if(bookst.lendture!=0)         //统计书库中书的信息中的lendtrue,为1表示在馆 
                     counti++;
                   }
                  printf("在馆图书数目是 %d\n",counti);    
          }
     fclose(fp);
} 
//读者管理模块 
void addcard()                 //申请读者卡
{   
    int j; 
    j=0; 
    struct card lcard={0,"     ",0,0,0};
   	struct reader newcard={0,"     ",0};    //加入的新卡
	struct reader oldcard;                                 
    int record_len = sizeof(struct reader);  //一条记录的长度
    while(j!=-1)
      {
         FILE *fp,*fp1;                                     //打开文件
         fp=fopen("readcard.txt","a+");                    //a+以读写方式打开一个文件 
         printf("请输入卡号(输入0则停止操作):\n");
         scanf("%d",&newcard.cardnum);
         getchar();  
         if(newcard.cardnum==0)
             {
                     printf("退出新增操作!");
                      j=-1;
                      break;
             } 
         else
            {                            
                 while(!feof(fp))
                   {      
                         fscanf(fp,"%d %s %d\n",&oldcard.cardnum,oldcard.readername,&oldcard.classes);
				         if(oldcard.cardnum==newcard.cardnum)
 	                          {
       	                         printf("编号已存在!请重新输入卡的编号:\n");
					             scanf("%d",&newcard.cardnum);
					             fseek(fp,0,0);
                               }  
                    } 
               fseek(fp,0,0);
               fp1=fopen("lendcard.txt","a+"); 
               lcard.booknum=0;
               lcard.lenddate=0;                    
               printf("请输入新增的读者姓名:\n");
               scanf("%s",&newcard.readername);
               printf("请输入新增的读者的班级:\n");
               scanf("%d",&newcard.classes);       
               getchar();                       
               fprintf(fp,"%d %s %d\n",newcard.cardnum,newcard.readername,newcard.classes);
               fprintf(fp1,"%d %s %d %d %d\n",newcard.cardnum,newcard.readername,
                      newcard.classes,lcard.booknum,lcard.lenddate);
               fclose(fp1);
               fclose(fp);
             }  //else
       }//while
     
}

 void delcard()   //删除读者卡 
{  
	int  cardnumber;
    int i=0;
	struct card oldcard;
	struct reader one; //以前的卡的信息
    FILE *fp,*fp1,*fp2,*fp3;
    fp=fopen("readcard.txt","a+");    
    if(fp==NULL)
	  { 
        printf("该文件不存在:\n");
        exit(0);
      }
    else//
      {   
          printf("请输入要删除的卡号:\n");
          scanf("%d",&cardnumber);
          getchar();
           while(!feof(fp)) 
             {    
                fscanf(fp,"%d %s %d \n",&one.cardnum,one.readername,&one.classes);
				if(one.cardnum==cardnumber)
				  {
				       printf("%d %s %d\n",one.cardnum,one.readername,one.classes);
                            i=1;
                  }
	          }
	        if(i==0)
              {
                        printf("您所输入的卡号不存在~");
                        getchar();
                        exit(0);
              }
           fseek(fp,0,0);
           while(!feof(fp)) 
              {
                    fscanf(fp,"%d %s %d \n",&one.cardnum,one.readername,&one.classes);
				    if(one.cardnum!=cardnumber)
				      {
				         fp1=fopen("readcard1.txt","a+");    
                         if(fp1==NULL)
				            { 
                                printf("该文件不存在!");
                                exit(0);
				            }
                          else
				            {   
					            fprintf(fp1,"%d %s %d\n",one.cardnum,one.readername,one.classes);
					            fclose(fp1);
				            }
				        }
                      else
                           printf("%d %s %d\n",one.cardnum,one.readername,one.classes);
               }//while(!feof(fp))
		    fp=fopen("readcard.txt","w"); 
	        fclose(fp);
            fp=fopen("readcard.txt","a+");    
            fp1=fopen("readcard1.txt","r+");
            while(!feof(fp1)) 
			  {   
				fscanf(fp1,"%d %s %d\n",&one.cardnum,one.readername,&one.classes);
                fprintf(fp,"%d %s %d\n",one.cardnum,one.readername,one.classes);
			  }
			fclose(fp);
            fclose(fp1);
           fp1=fopen("readcard1.txt","w"); 
		   fclose(fp1);
       }//else
         
           fp3=fopen("lendcard.txt","r+");
           while(!feof(fp3))
            {   
                 fscanf(fp3,"%d %s %d %d %d\n",&oldcard.one.cardnum,oldcard.one.readername,
                          &oldcard.one.classes,&oldcard.booknum,&oldcard.lenddate);
                   if(oldcard.one.cardnum!=cardnumber)
				    {
                         fp2=fopen("lendcard1.txt","a+");    
                         if(fp1==NULL)
						    { 
                              printf("该文件不存在!");
                               exit(0);
						     }
                         else    
			                fprintf(fp2,"%d %s %d %d %d\n",oldcard.one.cardnum,oldcard.one.readername,
                               oldcard.one.classes,oldcard.booknum,oldcard.lenddate);
			             fclose(fp2);
                     }
            }
            fp3=fopen("lendcard.txt","w"); 
            fclose(fp3);
            fp3=fopen("lendcard.txt","a+");    
            fp2=fopen("lendcard1.txt","r+");
            while(!feof(fp2)) 
              {   
				  fscanf(fp2,"%d %s %d %d %d\n",&oldcard.one.cardnum,oldcard.one.readername,
                          &oldcard.one.classes,&oldcard.booknum,&oldcard.lenddate);
                  fprintf(fp3,"%d %s %d %d %d\n",oldcard.one.cardnum,oldcard.one.readername,
                          oldcard.one.classes,oldcard.booknum,oldcard.lenddate);
              }
              fclose(fp3);
              fclose(fp2);
              fp2=fopen("lendcard1.txt","w"); 
    	      fclose(fp2);
}

void modcard()               //修改读者卡 
{  
    char ch; 
	int  cardnumber;
	struct reader oldcard; //以前的卡的信息
    FILE *fp,*fp1;
    fp=fopen("readcard.txt","a+");    
    if(fp==NULL)
	 { 
         printf("该文件不存在:\n");
         exit(0);
     }
    else  //3
      {   
          printf("请输入要修改的卡号:\n");
          scanf("%d",&cardnumber);
          getchar();
          while(!feof(fp)) 
            {
                fscanf(fp,"%d %s %d \n",&oldcard.cardnum,oldcard.readername,&oldcard.classes);
				if(oldcard.cardnum!=cardnumber)
				  {
				      fp1=fopen("readcard1.txt","a+");    
                      if(fp1==NULL)
				        { 
                          printf("该文件不存在!");
                          exit(0);
				         }
                       else
				         {   
					       fprintf(fp1,"%d %s %d\n",oldcard.cardnum,oldcard.readername,oldcard.classes);
					       fclose(fp1);
				         }
				   }
                  else   //2
				    {
                        printf("%d %s %d\n",oldcard.cardnum,oldcard.readername,oldcard.classes);
                        fp1=fopen("readcard1.txt","a+");    
                         if(fp1==NULL)
						 { 
                              printf("该文件不存在!");
                               exit(0);
						 }
                         else   //1
						 {   
                              int m; 
                              printf("请选择所要修改的内容:\n 1->姓名\n2->班级\n3->全部\n");  
                              scanf("%d",&m);
                              if(m==1)
                                {  
                                  printf("请输入新名字:\n");
                                  scanf("%s",&oldcard.readername);
                                  getchar();

⌨️ 快捷键说明

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