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

📄 last.cpp

📁 图书馆里系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		return ;
	}
	kbook=0;
    while(feof(fp)==0)
	{
		 fread(&bid[kbook],sizeof(struct BID),1,fp);
		kbook++;
	}
	kbook--;
  fclose(fp);
  
}


void openfilebook()
{
	FILE *fp;
	int i;
	if((fp=fopen("book.txt","rb"))==NULL)
	{
		printf("can't open file!\n");
		return ;
	}
	kbook=0;
    while(feof(fp)==0)
	{
	 fread(&bid[kbook],sizeof(struct BID),1,fp);
		kbook++;
	}
 
	for(i=0;i<kbook-1;i++)
		printf("book[%d]=%d   %s   %s   %s  %d    %s\n",i,bid[i].BNum,&bid[i].BookName,&bid[i].WriterName,&bid[i].PressName,bid[i].Pth,(bid[i].LeadNum==-1)?"在库可借":"已借出");
	fclose(fp);
}



void writebook()
{
	int i;
	 initailbook();
    for(i=0;i<SIZEbook;i++)
	{
		printf("请输入书名,作者,出版社,出版次数:\n");
		bid[i].LeadNum=-1;
		bid[i].BNum=kbook;
		scanf("%s%s%s%d", bid[i].BookName, bid[i].WriterName, bid[i].PressName,&bid[i].Pth);
		 
	}
	for(i=0;i<SIZEbook;i++)
		 printf("输入是:%d    %s   %s   %s  %d\n",bid[i].BNum,&bid[i].BookName,&bid[i].WriterName,&bid[i].PressName,bid[i].Pth  );


	savebook();
    
	openfilebook();

	getche();
}
 
void initialbook()
 {
	 char  choice;
	 printf("   书输入.\n");
status2:
	 writebook();
	 printf("++++++++++++++++++++++++++++++++++++++++++++++++++\n\n");
	 printf("           1.再输入!\n");
	printf("    	   0.退出!\n");
	printf("++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n");
   choice=getche();
	if(choice=='1')
		goto status2;
	else 
		getche();
}

//初始化借书证
 void savelend()
{
	FILE *fp;
	 int i;
	if((fp=fopen("lend.txt","w"))==NULL)
	{
		printf("can't open file!\n");
		return ;
	}
 
    for(i=0;i<klend+1;i++)
		if(fwrite(&lid[i],sizeof(struct LID),1,fp)!=1)
			printf("can't write!\n");
	for(i=0;i<klend+1;i++)
	   printf("借书证=%d   %s    %d\n",lid[i].LeadN,&lid[i].SName,lid[i].SNum);
    	fclose(fp);
}


void initiallendl()
{
	FILE *fp;
 
	if((fp=fopen("lend.txt","rb"))==NULL)
	{
		printf("can't open file!\n");
		return ;
	}
	klend=0;
    while(feof(fp)==0)
	{
	 fread(&lid[klend],sizeof(struct LID),1,fp); 
		klend++;
	}
	klend--;
	fclose(fp);
}

 


void writelend()
{
	int  j;
	initiallendl();
		printf("%d",klend);
		printf("请输入读者名字和学生证号。\n");
				 
		inilend.LeadN=klend+1;
		scanf("%s%d",inilend.SName, &inilend.SNum);
		for(j=0;j<7;j++)
			 inilend.sign[j]=-1;
		printf("借书证=%d     %s      %d\n",inilend.LeadN,&inilend.SName,inilend.SNum);
        lid[klend]=inilend;

	savelend();
    
 
	
}
 void initiallend()
 {
	 char  choice;
	 printf("  借书证输入.\n");
status2:
	 writelend();
	 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n");
	 cout<<"           1.再输入!"<<endl
		 <<"    	   0.退出!"<<endl;
	 printf("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
   choice=getche();
	if(choice=='1')
		goto status2;
	else 
		system("pause");
}




//借书处理过程。
  void openfilelendb()
{
	FILE *fp;
	int i;
	if((fp=fopen("lend.txt","rb"))==NULL)
	{
		printf("can't open file!\n");
		return ;
	}
	klendb=0;
    while(feof(fp)==0)
	{
		 fread(&lid[klendb],sizeof(struct LID),1,fp); 
		           
		klendb++;
	}
   klendb--;
	for(i=0;i<klendb;i++)
	printf("Lend[%-2d]=%-3d%-40s%-3d\n",i,lid[i].LeadN,&lid[i].SName,lid[i].SNum);
	fclose(fp);
}


void openfile1lendb()
{
	FILE *fp;
	int i;
	if((fp=fopen("book.txt","rb"))==NULL)
	{
		printf("can't open file!\n");
		return ;
	}
	kklendb=0;
    while(feof(fp)==0)
	{
		 fread(&bid[kklendb],sizeof(struct BID),1,fp) ;
		kklendb++;
	}
	kklendb--;
	for(i=0;i<kklendb;i++)
		 printf("book[%-2d]=%-3d   %-10s   %-10s   %-10s  %-3d    %-5s\n",i,bid[i].BNum,&bid[i].BookName,&bid[i].WriterName,&bid[i].PressName,bid[i].Pth,(bid[i].LeadNum==-1)?"在库可借":"已借出");
	        	     
	fclose(fp);
}



int lendbook(void)
/*借书处理程序,输入借书证号和书码,程序处理该借书证在否,
书已借满否,该书是否存在、借出否
。若以上条件满足,把该书加入借书证已借书数组,
并改书的LendNum为该借书证号码。
成功返回0,任意点失败返回-1*/
{
	int  lendnumber=-1,lendbook=-1,i,lidd=-1,bidd=-1, insertposition=-1;
 
	
	openfilelendb();
	cout<<"     请输入借书证号码!   "<<endl<<endl;
	scanf("%d",&lendnumber);//对借书证处理。
	FILE *fplend;
	
	if((fplend=fopen("lend.txt","a+"))==NULL)
	{
		printf("不能打开借书证文件!\n");
		return  -1;
	}
	for(i=0;i<klendb;i++)
	{
		if(fread(&lid[i],sizeof(struct LID),1,fplend)!=1)
		{
			printf("借书证文件读入错误!\n");
			fclose(fplend);
			return  -1;
		}
	}
	for(i=0;i<klendb;i++)
	{
		if(lid[i].LeadN==lendnumber)
		{  
			lidd=i; 
			break;
		}
	}
	if(i>=klendb)
	{  
		cout<<"		不能找到借书证!请确认输入。"<<endl<<endl;
		fclose(fplend);
		return  -1;
	}
	for(i=0;i<7;i++)
	{
		if(lid[lidd].sign[i]==-1)
		{  
			insertposition=i; break;
		}
	}
	if(i>=7)
	{
		cout<<"		书已借满,请先还书!  "<<endl<<endl;
		fclose(fplend);
		return  -1;
	}                      //借书证处理成功,可以进行下一步。
	openfile1lendb();
	cout<<"			请输入所借书的书号!"<<endl<<endl;//对书文件进行处理。
	scanf("%d",&lendbook);
	FILE *fpbook;
    if((fpbook=fopen("book.txt","a+"))==NULL)
	{
		printf("不能打开书文件!\n");
		fclose(fplend);
		return -1;
	}
	for(i=0;i<kklendb;i++)
	{
		if(fread(&bid[i],sizeof(struct BID),1,fpbook)!=1)
		{	printf("读记录错误,请使用书的备份文件!\n");
		     fclose(fplend);
		    fclose(fpbook);
		    return  -1;
		}
	}
    for(i=0;i<kklendb;i++)
	{
		if(bid[i].BNum==lendbook)
		{  
			bidd=i; break;
		}
	}
	if(i>=kklendb)
	{
		cout<<"		不能找到输入书号,请确认输入!"<<endl<<endl;
		fclose(fplend);
		fclose(fpbook);
		return  -1;
	}
	if(bid[bidd].LeadNum!=-1)
	{
		cout<<"			对不起,书已借出,操作失败。"<<endl<<endl;
		fclose(fplend);
		fclose(fpbook);
		return  -1;
	}
	fclose(fplend);
    fclose(fpbook);
	 
	bid[bidd].LeadNum=lid[lidd].LeadN;               //把借书证号赋给书。
	lid[lidd].sign[insertposition]=1;                //该借书证的标志数组
	lid[lidd].BookNum[insertposition]=bid[bidd];     //把书赋给借书证数组

	fplend=fopen("lend.txt","w");
	fpbook=fopen("book.txt","w");
	for(i=0;i<klendb;i++)
	{
		 if(fwrite(&lid[i],sizeof(struct LID),1,fplend)!=1)
		 {
			 printf("借书证不能写入!\n");
		 }
	}

	for(i=0;i<kklendb;i++)
	{
		if(fwrite(&bid[i],sizeof(struct BID),1,fpbook)!=1)
		{
			printf("书不能写入!\n");
		    fclose(fplend);
		    fclose(fpbook);
		     return  -1;
		}
	}
	fclose(fplend);
	fclose(fpbook);
	cout<<"<<<<<<<<<<<<<<<<<<<<*>>>>>>>>>>>>>>>>>>>>>"<<endl<<endl;
	cout<<"	   借书成功!"<<endl<<endl;
	cout<<"<<<<<<<<<<<<<<<<<<<<*>>>>>>>>>>>>>>>>>>>>>"<<endl<<endl;
	return  0;
}


//还书处理过程
void returnbook()
{
	int i=0,bookid,lendid,sizebook=0,booknum=-1,lendnum=-1,sizelend=0;
	cout<<"请输入书号..."<<endl<<endl;
	scanf("%d",&booknum);
	
	FILE *fpbook;
    if((fpbook=fopen("book.txt","r+"))==NULL)
	{
		printf("不能打开书文件!\n");
		fclose(fpbook);
		return  ;
	}
    
	while(feof(fpbook)==0)
	{
		 fread(&bid[sizebook],sizeof(struct BID),1,fpbook);
		sizebook++;
	}
    sizebook--;
	
	for(i=0;i<sizebook;i++)
	{
		if(bid[i].BNum==booknum)
		{ 
			bookid=i;
			break;
		}
	}
	if(i>=sizebook)
	{
		cout<<"不能找到书,请确认输入!"<<endl<<endl;
		fclose(fpbook);
		system("pause");
		return ;
	}
	lendnum=bid[i].LeadNum;
	if(lendnum==-1)
	{
		cout<<"本书在图书馆,哈哈,不可能借出了,所以输入错误!"<<endl<<endl
			<<"        请重新输入.    "<<endl<<endl;
	    fclose(fpbook);
		system("pause");
		return ;
	}
   FILE *fplend;
 
   if((fplend=fopen("lend.txt","rb"))==NULL)
	{
		printf("can't open file!\n");
		return ;
	}
	sizelend=0;
    while(feof(fplend)==0)
	{
	 fread(&lid[sizelend],sizeof(struct LID),1,fplend); 
		sizelend++;
	}
	sizelend--;
	for(i=0;i<sizelend;i++)
	{
         if(lid[i].LeadN==lendnum)
		 {
			 lendid=i;
			 printf("借书证=%d   %s   %d\n",lid[i].LeadN,&lid[i].SName,lid[i].SNum);
			 break;
		 }
	}
	if(i>=sizelend)
	{
		cout<<" 没有找到借这本书的借书证,哦,什么地方错了!请再考虑考虑."<<endl<<endl;
		fclose(fpbook);
		fclose(fplend);
		system("pause");
		return ;
	}
	
	for(i=0;i<7;i++)
	{
		if(lid[lendid].BookNum[i].BNum==booknum)
		{
			lid[lendid].sign[i]=-1;
			bid[bookid].LeadNum=-1;
			break;
		}
		if(lid[lendid].sign[i]!=-1)
			printf("%d   %s\n",lid[lendid].BookNum[i].BNum,&lid[lendid].BookNum[i].BookName); 
	}
	
	if(i>=7)
	{
		cout<<"这个借书证没借这本书,请查证!唉,这种错误我真没法子了。"<<endl<<endl;
		fclose(fpbook);
		fclose(fplend);
		system("pause");
		return ;
	}
    fclose(fpbook);
	fclose(fplend);
	
	if((fpbook=fopen("book.txt","w"))==NULL)
	{
		printf("不能打开书文件1!\n");
		fclose(fplend);
		return  ;
	}

	if((fplend=fopen("lend.txt","w"))==NULL)
	{
		printf("can't open file1!\n");
		return ;
	}
    
	for(i=0;i<sizebook;i++)
		fwrite(&bid[i],sizeof(struct BID),1,fpbook);
		
	for(i=0;i<sizelend;i++)
		fwrite(&lid[i],sizeof(struct LID),1,fplend);

	fclose(fpbook);
	fclose(fplend);
	printf("<<<<<<<<<<<<<<<<<=====*********=====>>>>>>>>>>>>>>>>>\n\n");
	cout<<"		 哈哈,还书成功!谢谢使用,拜拜."<<endl<<endl;
	printf("<<<<<<<<<<<<<<<<<=====*********=====>>>>>>>>>>>>>>>>>>\n\n");
	system("pause");
}
	

⌨️ 快捷键说明

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