📄 search.cpp
字号:
# include <iostream.h>
# include <string>
# include <math.h>
# include <stdio.h>
# include <malloc.h>
//书号查询
int BinSearch(BnoIdxFile &bif,char key[5])
{
int low,high,mid;
low=1;
high=bif.len;
while(low<=high)
{
mid=(low+high)/2;
if(strcmp(key,bif.BnoIdx[mid].bno)==0)
return bif.BnoIdx[mid].RecNo;
else if(strcmp(key,bif.BnoIdx[mid].bno)<0)
high=mid-1;
else
low=mid+1;
}
return 0;
}
//书名查询
int BnameFind(LHFile1 &lhf1,char key[21])
{
int i,k=0;
for(i=1;i<=lhf1.len1;i++)
{
if(strcmp(key,lhf1.LHFrec1[i].bname)==0)
{
k=lhf1.LHFrec1[i].lhead;break;
}
}
return k;
}
//作者查询
int BauthFind(LHFile2 &lhf2,char key[9])
{
int i,k=0;
for(i=1;i<=lhf2.len2;i++)
{
if(strcmp(key,lhf2.LHFrec2[i].author)==0)
{
k=lhf2.LHFrec2[i].lhead;break;
}
}
return k;
}
//出版社查询
int BpressFind(LHFile3 &lhf3,char key[11])
{
int i,k=0;
for(i=1;i<=lhf3.len3;i++)
{
if(strcmp(key,lhf3.LHFrec3[i].press)==0)
{
k=lhf3.LHFrec3[i].lhead;break;
}
}
return k;
}
//输出一条图书主数据记录
void ShowRec(BookDbaseFile &df,int i)
{
cout<<"书号 书名 作者 出版社 分类号"<<endl;
cout<<"================================================="<<endl;
cout<<df.BookDbase[i].bno<<" "<<df.BookDbase[i].bname<<" ";
cout<<df.BookDbase[i].author<<" "<<df.BookDbase[i].press<<" "<<df.BookDbase[i].storenum<<endl;
cout<<"================================================="<<endl;
}
//图书查询控制程序
void SearchBook(BookDbaseFile &df,BnoIdxFile &bif,LHFile1 &f1,LHFile2 &f2,LHFile3 &f3)
{
char sh[21],sm[5],zz[9],cbs[11];
int i,k,choose=1;
while(choose>=1 && choose<=5)
{
cout<<"图书查询字系统"<<endl;
cout<<"--------------"<<endl;
cout<<"1.书号 2.书名"<<endl;
cout<<"3.作者 4.出版社"<<endl;
cout<<"5.退出"<<endl;
cout<<"--------------"<<endl;
cout<<"请用户选择:"<<endl;
cin>>choose;
switch(choose)
{
case 1:
cout<<"输入书号:";
cin>>sh;
k=BinSearch(bif,sh);
if(k==0)
{
cout<<"没有找到要查的书,请检查是否输入有错?"<<endl;
break;
}
ShowRec(df,k);
break;
case 2:
cout<<"输入书名:";
cin>>sm;
k=BnameFind(f1,sm);
if(k==0)
{
cout<<"没有要查找的图书,请检查是否输入有错?"<<endl;
break;
}
for(i=k;i;i=df.BookDbase[i].namenext)
ShowRec(df,i);
break;
case 3:
cout<<"输入作者名:";
cin>>zz;
k=BauthFind(f2,zz);
if(k==0)
{
cout<<"没有要查找的图书,请检查是否输入有错?"<<endl;
break;
}
for(i=k;i;i=df.BookDbase[i].authnext)
ShowRec(df,i);
break;
case 4:
cout<<"输入出版社:";
cin>>cbs;
k=BpressFind(f3,cbs);
if(k==0)
{
cout<<"没有要查找的图书,请检查是否输入有错?"<<endl;
break;
}
for(i=k;i;i=df.BookDbase[i].prenext)
ShowRec(df,i);
break;
case 5:
return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -