📄 search.c
字号:
/*2.建立关于书号,书名,
(1)书号查询算法。*/
int BinSearch(BnoIdxFile bif,char key[])
{
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;
}//BinSearch
/*(2)按书名查询算法:*/
int BnameFind(LHFile1 lhf1,char key[])
{
int i,k=0;
for(i=1;i<=lhf1.len;i++)
{
if(strcmp(key,lhf1.LHFrec1[i].bname)==0)
{k=lhf1.LHfrec1[i].lhead;break;
}
}
return k;
}
/*(3)按作者查询算法:*/
int BauthFind(LHFile2 lhf2,char key[])
{ 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;
}
/*(4)按出版社查询算法*/
int BnameFind(LHFile3 lhf3,char key[])
{ 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;
}
/*(5)输出一条图书住数据库记录:*/
void ShowRec(BookDbaseFile df,int i)
{
printf("BookNumber BookName AuthorName PressName SortNumber\n");
printf("=========================================================\n");
printf("%-6s%20s",df.BookDbase[i].bno,df.BookDbase[i].bname);
printf("%8s%10s",df.BookDbase[i].author,df.BookDbase[i].press);
printf("%-6s\n",df.BookDbase[i].sortno);
printf("=========================================\n");
}
/*(6)图书查询控制程序:*/
void SearchBook(BookDbaseFile df,BnoIdxFile bif,LHFile1 f1,LHFile2 f2,LHFile3 f3)
{ char sh[4],sm[20],zz[8],cbs[10];
int i,j,k,choose=1;
while(choose>=1&&choose<=5)
{ printf("ChildBookSearchSystem\n");
printf("-------------------------\n");
printf("1.BookNumber 2.BookName\n");
printf("3.Author 4.Press\n");
printf("5.Exit\n");
printf("-------------------------\n");
printf("Please choose:\n");
scanf("%d",&choose);
switch(choose)
{
case 1:
printf("Input BookNumber:\n");scanf("%s",sh);
k=BinSearch(bif,sh);
if(k==0){
printf("There is no book that you searched,please check the input\n");
break;
}
ShowRec(df,k);
break;
case 2:
printf("Input BookNumber:\n");scanf("%s",sm);
k=BnameFind(f1,sm);
if(k==0){
printf("There is no book that you searched,please check the input\n");
break;
}
for(i=k;i;i=df.BookDbase[i].namenext)
ShowRec(df,i);
break;
case 3:
printf("Input AuthorName:\n");scanf("%s",zz);
k=BauthFind(f2,zz);
if(k==0){
printf("There is no book that you searched,please check the input\n");
break;
}
for(i=k;i;i=df.BookDbase[i].authnext)
ShowRec(df,i);
break;
case 4:
printf("Input PressName:\n");scanf("%s",cbs);
k=BnameFind(f3,cbs);
if(k==0){
printf("There is no book that you searched,please check the input\n");
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 + -