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

📄 book.c

📁 用C语言写的图书信息管理程序 有浏览
💻 C
📖 第 1 页 / 共 2 页
字号:
					k++;
				else if(k==count-1)
				{
					system("cls");
					printf("\n\n\n\t\t\t这 是 最 后 一 本 书! 任 意 键 继 续");
					getchar();
					getchar();
				}
			if(t==2)
				if(k>0)
					k--;
				else if(k==0)
				{
					system("cls");
					printf("\n\n\n\t\t\t这 是 第 一 本 书! 任 意 键 继 续");
					getchar();
					getchar();
				}
		}
	}
	if (choice==3) return;
}

/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞图书排序函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void sequence()
{
	FILE *fp;
	struct book temp;
	int choice,i,j,k,l,t;
	if((fp=fopen("book.dat","rb")) == NULL)
	{
		system("cls");
		printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
		getchar();
		getchar();
		return ;
	}
	fseek(fp,0,2);
	j=ftell(fp)/sizeof(struct book);
	rewind(fp);
	if(j==0)
	{
		system("cls");
		printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
		getchar();
		getchar();
		return;
	}
	for(i=0;i<j;i++)
		fread(&bk[i],sizeof(struct book),1,fp);
	system("cls");
	printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 排 序 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n\n");
	printf("\t\t\t  ◇ 1 .按 图 书 编 号 排 序  ◇\n\n\n");
	printf("\t\t\t   ◇ 2 .按 价 格 排 序  ◇\n\n\n");
	printf("\t\t\t   ◇ 3 .返 回 主 界 面  ◇\n\n\n");
	printf("\n\n\n\n\n\n\n\t\t\t\t\t\t请输入 :");
	scanf("%d",&choice);
	if (choice==1)
	{
		for(k=0;k<j-1;k++)
			for(l=k+1;l<j;l++)
				if(bk[k].num>bk[l].num)
				{
					temp=bk[k];
					bk[k]=bk[l];
					bk[l]=temp;
				}
		i=0;
		while(t!=3)
		{
		system("cls");
		printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 排 序 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
		printf("\n        \t\t⊙共 有 %d 本 书⊙第 %d 本 书⊙\n",j,i+1);
		xingxi(i);
		printf("\n\n\t1.下一本");
		printf("\t2.上一本");
		printf("\t3.返回主界面\n");
		printf("\n\n\n\t 请 输 入:");
		scanf("%d",&t);
		if(t==1)
			if(i<j-1)
				i++;
			else if(i==j-1)
			{
				system("cls");
				printf("\n\n\n\t\t\t这 是 最 后 一 本 书! 任 意 键 继 续");
				getchar();
				getchar();
			}
		if(t==2)
			if(i>0)
				i--;
			else if(i==0)
			{
				system("cls");
				printf("\n\n\n\t\t\t这 是 第 一 本 书! 任 意 键 继 续");
				getchar();
				getchar();
			}
		}
	}
	if (choice==2)
	{
		for(k=0;k<j-1;k++)
			for(l=k+1;l<j;l++)
				if(bk[k].price>bk[l].price)
				{
					temp=bk[k];
					bk[k]=bk[l];
					bk[l]=temp;
				}
		i = 0;
		while(t!=3)
		{
		system("cls");
		printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 排 序 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
		printf("\n        \t\t⊙共 有 %d 本 书⊙第 %d 本 书⊙\n",j,i+1);
		xingxi(i);
		printf("\n\n\t1.下一本");
		printf("\t2.上一本");
		printf("\t3.返回主界面\n");
		printf("\n\n\n\t 请 输 入:");
		scanf("%d",&t);
		if(t==1)
			if(i<j-1)
				i++;
			else if(i==j-1)
			{
				system("cls");
				printf("\n\n\n\t\t\t这 是 最 后 一 本 书! 任 意 键 继 续");
				getchar();
				getchar();
			}
		if(t==2)
			if(i>0)
				i--;
			else if(i==0)
			{
				system("cls");
				printf("\n\n\n\t\t\t这 是 第 一 本 书! 任 意 键 继 续");
				getchar();
				getchar();
			}
		}
	}
	if (choice==3) return;
}

/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义图书修改/删除函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void del()							
{	
	FILE *fp; FILE *fp2;
	int i,j,k=0,l,bianhao;
	int choice,choice1;
	int ab[50];
	if((fp=fopen("book.dat","rb"))== NULL)
	{
		system("cls");
		printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
		getchar();
		getchar();
		return ;
	}
	fp=fopen("book.dat","rb");
	fseek(fp,0,2);
	i=ftell(fp)/sizeof(struct book);
	rewind(fp);
	do{
		system("cls");
		printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 修 改/删 除☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
		printf("请输入将要修改或删除的图书编号 :");
		scanf("%d",&bianhao);
		for (j=0;j<i;j++)
			fread(&bk[j],sizeof(struct book),1,fp);
		for (j=0;j<i;j++)
		{
			if (bianhao==bk[j].num)
				continue;
			ab[j]=bk[j].num;
		}
		for (j=0;j<i;j++)
			if (bk[j].num==bianhao)
			{
				k++;
				break;
			}
		if (k==0)
			{
				system("cls");
				printf("\n\n\t\t不存在的编号,请按任意键返回主界面!");
				getchar();getchar();return;
			}
		printf("\n\n");
		fclose(fp);
		xingxi(j);
		printf("\n\n  \t\t 1 . 修改   2 . 删除  3 . 返回主界面\t");
		scanf("%d",&choice);
		if (choice==1)
		{
			do
			{
				system("cls");
				printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 修 改/删 除☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
				printf("图书编号:");
				scanf("%d",&bk[j].num);
				for(l=0;l<i;l++)
				{
					if(bk[j].num==ab[l])
					{
						printf("\t输入的图书编号已有,请重新输入!");
						getchar();getchar();
						break;
					}
				}
			}while(bk[j].num==ab[l]);
			printf("书名:"); getchar();
			gets(bk[j].bname);
			printf("作者:");
			gets(bk[j].author);
			printf("分类号:");
			scanf("%d",&bk[j].clanum); getchar();
			printf("出版单位:");
			gets(bk[j].pubcom);
			printf("出版时间   年:");
			scanf("%d",&bk[j].bk_dt.year);
			printf("           月:");
			scanf("%d",&bk[j].bk_dt.month);
			printf("           日:");
			scanf("%d",&bk[j].bk_dt.day);
			printf("价格:");
			scanf("%d",&bk[j].price);
			fp=fopen("book.dat","wb");
			for(j=0;j<i;j++)
				fwrite(&bk[j],sizeof(struct book),1,fp);
			fclose(fp);
			printf("\n\n\n\t 图 书 信 息 已 修 改 成 功 !任 意 键 返 回 !");
			getchar();getchar();
		}
		if (choice==2)
		{	
			printf("\n\n\t\t 确 定 是 否 删 除 !  1 . 是\t 2 . 否 ");
			scanf("%d",&choice1);
			if (choice1==1)
			{	
				fp2=fopen("bookhs.txt","ab");
				fseek(fp2,0,2);
				fwrite(&bk[j],sizeof(struct book),1,fp2);
				fclose(fp2);
				fp=fopen("book.dat","wb");
				for(l=0;l<i;l++)
					if(l!=j)
						fwrite(&bk[l],sizeof(struct book),1,fp);	
				printf("\n\n\n\t 图 书 信 息 已 删 除 成 功 !任 意 键 返 回 !");
				getchar();
				getchar();
				fclose(fp);
			}
		}
		else return;
	}while (choice1==2);
}

/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义回收站功能函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void reclaim()						
{	
	FILE *fp; FILE *fp2;  FILE *fp3;
	int t=0,i=0,j=0,k,l;
	fp2=fopen("bookhs.txt","a+b");
	fseek(fp2,0,2);
	j=ftell(fp2)/sizeof(struct book);
	rewind(fp2);
	for(i=0;i<j;i++)
	{
		fread(&bk[i],sizeof(struct book),1,fp2);
	}
	i = 0;
	while(t!=5)
	{
		system("cls");
		printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 回 收 站 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
		if (j==0) 
		{
			printf("\n        \t\t⊙回收站当前有%d本图书⊙\n",j);
			printf("\n\n\n\n\t\t\t5.返回主界面");
		}
		else 
		{
			printf("\n        \t\t⊙回收站当前有%d本图书⊙第%d本书⊙\n",j,i+1);
			xingxi(i);
			printf("\n\n\t1.下一本");
			printf("\t2.上一本");
			printf("\t3.恢复当前图书\n\n");
			printf("\t4.全部清空");
			printf("\t\t5.返回主界面");
		}
		printf("\n\n\n\t\t\t\t\t\t 请 输 入:");
		scanf("%d",&t);
		if(t==1)
			if(i<j-1)
				i++;
			else if(i==j-1)
			{
				system("cls");
				printf("\n\n\n\t\t\t这 是 最 后 一 本 书! 任 意 键 继 续");
				getchar();
				getchar();
			}
		if(t==2)
			if(i>0)
				i--;
			else if(i==0)
			{
				system("cls");
				printf("\n\n\n\t\t\t这 是 第 一 本 书! 任 意 键 继 续");
				getchar();
				getchar();
			}
		if(t==3)
		{	
			printf("\n\t\t 确 定 是 否 恢 复 !  1 . 是\t 2 . 否 ");
			scanf("%d",&k);
			if(k==1)
			{
				fp=fopen("book.dat","ab");
				fseek(fp,0,2);
				fwrite(&bk[i],sizeof(struct book),1,fp);
				fclose(fp);
				fp2=fopen("bookhs.txt","wb");
				for(l=0;l<j;l++)
					if(l!=i)
						fwrite(&bk[l],sizeof(struct book),1,fp2);
				fclose(fp);
				printf("\t\t该图书信息已经恢复! 任意键退回主界面!");
				getchar();getchar();
				break;
			}
			else if(k==2) continue;
		}
		if(t==4)
		{
			fp3=fopen("bookhs.txt","wb");
			fclose(fp3);
			printf("\n\t\t回收站内容已经清空!");
			getchar();getchar();
			break;
		}
	}
	fclose(fp2);
}

void xingxi(int x)
{	
	printf("图书编号:%d\n",bk[x].num);
	printf("书名:");puts(bk[x].bname);
	printf("作者:");puts(bk[x].author);
	printf("分类号:%d\n",bk[x].clanum);
	printf("出版单位:");puts(bk[x].pubcom);
	printf("出版时间(年/月/日):%d/%d/%d\n",bk[x].bk_dt.year,bk[x].bk_dt.month,bk[x].bk_dt.day);
	printf("价格:%d\n",bk[x].price);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -