📄 search.c
字号:
//#include "Struct.c"
//--------------------------------输出一条图书主数据库记录//
void ShowRec(BookRecType *lhead)
{
printf("以下为要查询书的详细信息\n");
printf("书号: %s\n",lhead->bno);
printf("书名: %s\n",lhead->bname );
printf("作者: %s\n",lhead->author);
printf("出版社: %s\n",lhead->press);
printf("此书馆藏: %d本\n",lhead->storenum+1);
printf("此书可借本数: %d本\n",lhead->canborrownum+1);
printf(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<\n"); //还差其他记录
}
//----------------------------书号查询算法(二分法)//
void BinSearch(int j)
{
int choice,m,u,v,w;
char k[10];
do
{
j = i-1;
system("cls");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>书号查询菜单<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf(" 1 - 按书号查找\n");
printf(" 2 - 退出!\n");
printf("\n请输入选择:");
scanf("%d",&choice);
if(choice==1)
{
printf("请输入要查询的书号:");
scanf("%s",k);
if ((u=strcmp(k,IdxFile.BnoIdx[0].bno)) ==0 )
ShowRec( IdxFile.BnoIdx[0].lhead );
else if ( (u=strcmp(k,IdxFile.BnoIdx[i-1].bno)) == 0)
ShowRec(IdxFile.BnoIdx[i-1].lhead);
else
{
for ( w = 0; w < i ; w++ )
{
m = j/2;
if ( (u=strcmp(k,IdxFile.BnoIdx[m].bno)) ==0)
{
ShowRec(IdxFile.BnoIdx[m].lhead);
break;
}
else if ( u < IdxFile.BnoIdx[m].bno[0] )
j = m;
else
j = i + m -1;
}
}
if ( w == i )
{
printf("该书不存在!\n");
}
}
else
break;
printf("是否继续进行书号查询操作?1.是2.否\n");
scanf("%d",&v);
}while(v==1);
}
//-----------------------------书名查询算法//
void BnameFind ()
{
int choice,m,n,v,w,y;
BookRecType *p;
char u[8];
do
{
system("cls");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>书名查询菜单<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf(" 1 - 按书名查找\n");
printf(" 2 - 退出!\n");
printf("\n请输入选择:");
scanf("%d",&choice);
if(choice==1)
{
printf("请输入要查询的书名:");
scanf("%s",u);
for (m=0;m<i;m++)
{
n = strcmp(u,File1.LHFrec1[m].bname);
if(!n)
break;
}
if (m==i)
{
printf("该书不存在!\n");
goto Exit;
}
}
else
break;
p = File1.LHFrec1[m].lhead;
for (y=0;y<File1.LHFrec1[m].RecNum;y++)
{
if ( p->storenum == -1 )
continue;
ShowRec(p);
p = p->namenext;
}
Exit:
printf("是否继续进行书名查询操作?1.是2.否\n");
scanf("%d",&v);
}while(v==1);
}
//------------------------------作者查询算法//
void BauthFind ()
{
int choice,m,n,v,w,y;
BookRecType *p;
char u[8];
do
{
system("cls");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>作者查询菜单<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf(" 1 - 按作者查找\n");
printf(" 2 - 退出!\n");
printf("\n请输入选择:");
scanf("%d",&choice);
if(choice==1)
{
printf("请输入要查询的作者:");
scanf("%s",u);
for (m=0;m<i;m++)
{
n = strcmp(u,File2.LHFrec2[m].author);
if(!n)
break;
}
if (m==i)
{
printf("该作者不存在!\n");
goto Exit;
}
}
else
break;
p = File2.LHFrec2[m].lhead;
for (y=0;y<File2.LHFrec2[m].RecNum;y++)
{
if ( p->storenum == -1 )
continue;
ShowRec(p);
p = p->authnext;
}
Exit:
printf("是否继续进行作者查询操作?1.是2.否\n");
scanf("%d",&v);
}while(v==1);
}
void PressFind ()
{
int choice,m,n,v,w,y;
BookRecType *p;
char u[8];
do
{
system("cls");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>出版社查询菜单<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf(" 1 - 按出版社查找\n");
printf(" 2 - 退出!\n");
printf("\n请输入选择:");
scanf("%d",&choice);
if(choice==1)
{
printf("请输入要查询的出版社:");
scanf("%s",u);
for (m=0;m<i;m++)
{
n = strcmp(u,File3.LHFrec3[m].press);
if(!n)
break;
}
if (m==i)
{
printf("该出版社不存在!\n");
goto Exit;
}
}
else
break;
p = File3.LHFrec3[m].lhead;
for (y=0;y<File3.LHFrec3[m].RecNum;y++)
{
if ( p->storenum == -1 )
continue;
ShowRec(p);
p = p->prenext;
}
Exit:
printf("是否继续进行出版社查询操作?1.是2.否\n");
scanf("%d",&v);
}while(v==1);
}
//-------------------------------图书查询控制程序//
void SearchBook()
{
int choice,m;
do
{
system("cls");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>查询图书菜单<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf(" 1 - 按书号查找\n");
printf(" 2 - 按书名查找\n");
printf(" 3 - 按作者名查找\n");
printf(" 4 - 按出版社查找\n");
printf(" 5 - 退出!\n");
printf("\n请输入选择:");
scanf("%d",&choice);
if(choice!=5)
{
switch(choice)
{
case(1):
BinSearch(i-1);
break;
case(2):
BnameFind ();
break;
case(3):
BauthFind ();
break;
case(4):
PressFind ();
break;
default:
printf("无效选择,请重新输入!\n");
getch();
break;
}
}
else
break;
printf("是否继续进行查询操作?1.是2.否\n");
scanf("%d",&m);
}while(m==1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -