⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search.c

📁 很有用的一个图书管理系统方面的源代码!不用改错直接运用
💻 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 + -