📄 last.cpp
字号:
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 + -