?? search.c
字號:
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
int BnameFind(LHFile1 lhf1,char key[])//按書名查詢算法;
{
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[])//按作者查詢算法;
{
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 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;
}
void ShowRec(BookDbaseFile df,int i)
{
printf("書號(4) 書 名(20) 作者名(8) 出版社(10) 分類號(3)\n");
printf("=============================================================\n");
printf("%-6s%10s",df.BookDbase[i].bno,df.BookDbase[i].bname);
printf("%16s%10s",df.BookDbase[i].author,df.BookDbase[i].press);
printf("%12s\n",df.BookDbase[i].sortno);
printf("=============================================================\n");
}
void SearchBook(BookDbaseFile df,BnoIdxFile bif,LHFile1 f1,LHFile2 f2,LHFile3 f3)
{
char sh[8],sm[20],zz[8],cbs[10];
int i,j,k,choose=1;
while(choose>=1 && choose<=5)
{
printf("圖書查詢子系統\n");
printf("--------------------------------\n");
printf("1.按書號查詢 2.按書名查詢\n");
printf("3.按作者查詢 4.按出版社查詢\n");
printf("5.退出\n");
printf("---------------------------------\n");
printf("請用戶選擇:_ \n");
scanf("%d",&choose);
switch(choose)
{
case 1:
printf("請輸入書號:\n");
scanf("%s",sh);
k=BinSearch(bif,sh);
if(k==0)
{
printf("沒有要查找的圖書,請檢查是否輸入有錯\n");
break;
}
ShowRec(df,k);
break;
case 2:
printf("請輸入書名:\n");
scanf("%s",sm);
k=BnameFind(f1,sm);
if(k==0)
{
printf("沒有要查找的圖書,請檢查是否輸入有錯\n");
break;
}
for(i=k;i;i=df.BookDbase[i].namenext)
ShowRec(df,i);
break;
case 3:
printf("請輸入作者名:\n");
scanf("%s",zz);
k=BauthFind(f2,zz);
if(k==0)
{
printf("沒有要查找的圖書,請檢查是否輸入有錯\n");
break;
}
for(i=k;i;i=df.BookDbase[i].authnext)
ShowRec(df,i);
break;
case 4:
printf("請輸入出版社:\n");
scanf("%s",cbs);
k=BnameFind(f3,cbs);
if(k==0)
{
printf("沒有要查找的圖書,請檢查是否輸入有錯\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 + -