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

📄 book.c

📁 用C语言写的图书信息管理程序 有浏览
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void menu();                /*菜单主介面函数*/
void input();				/*图书输入函数*/
void output();				/*图书浏览函数*/
void demand();				/*图书查询函数*/
void sequence();			/*图书排序函数*/
void del();				/*图书修改.删除函数*/
void reclaim();				/*回收站功能函数*/
void xingxi(int);			/*用于储存图书信息格式*/
int choice;
struct date
{
	int year;
	int month;
	int day;
};
struct book
{
	int num;
	char bname[20];
	char author[10];
	int clanum;
	char pubcom[15];
	struct date bk_dt;
	int price;
}bk[88];

void main()
{		
		do 
		{
			menu();								/*菜单主介面函数*/
			switch (choice)
			{
			case 1 : input();   break;			/*图书输入函数*/
			case 2 : output();   break;			/*图书浏览函数*/
			case 3 : demand();   break;			/*图书查询函数*/
			case 4 : sequence();   break;		/*图书排序函数*/
			case 5 : del();   break;			/*图书修改.删除函数*/
			case 6 : reclaim();   break;		/*回收站功能函数*/
			}
		}while(choice!=7);
		
	if (choice==7)
	{
		system("cls");
		printf("\n\n\n\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆谢 谢 使 用!!☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
		printf("\n\n\n\n\t\t制作人:李磊");
		printf("\n\n\n\n\t\tQQ: 254652303");
		getchar();getchar();
	}	

}

/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义菜单主介面函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void menu()									
{
	system("cls");
	printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 馆 系 统☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
	printf("\t\t\t\t1. 图书信息录入.\n\n");
	printf("\t\t\t\t2. 图书信息浏览.\n\n");
	printf("\t\t\t\t3. 图书信息查询.\n\n");
	printf("\t\t\t\t4. 图书信息排序.\n\n");
	printf("\t\t\t\t5. 图书信息修改 / 删除.\n\n");
	printf("\t\t\t\t6. 回收站.\n\n");
	printf("\t\t\t\t7. 退出.\n\n\n\n\n");
	printf("\t\t\t\t\t请输入:");
	scanf("%d",&choice);
	while (choice>7||choice<1)
	{
		printf("\t\t\t输入有误,请输入( 1 - 7 ):");
		scanf("%d",&choice);
	}
	
}

/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义图书输入函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void input()						
{		
		int i = 0,flag,j,k,flag1;
		FILE *fp;
		struct book temp;
		fp=fopen("book.dat","ab");
		fclose(fp);
		do	
		{
			fp=fopen("book.dat","rb");
			fseek(fp,0,2);
			j=ftell(fp)/sizeof(struct book);
			rewind(fp);
			for(k=0;k<j;k++)
				fread(&bk[k],sizeof(struct book),1,fp);
			fclose(fp);
			do
			{
				flag1 = 0;
				system("cls");
				printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 录 入☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
				printf("图书编号:");
				scanf("%d",&temp.num);
				for(k=0;k<j;k++)
				{
					if(bk[k].num==temp.num)
					{
						flag1 = 1;
						printf("\t输入的图书编号已有,请重新输入!");
						getchar();getchar();
						break;
					}
				}
			}while(flag1);
			printf("书名:");
			scanf("%s",temp.bname);
			printf("作者:");
			scanf("%s",temp.author);
			getchar();
			printf("分类号:");
			scanf("%d",&temp.clanum);
			printf("出版单位:");
			scanf("%s",temp.pubcom);
			getchar();
			do
			{
				printf("出版时间   年:");
				scanf("%d",&temp.bk_dt.year);
				if (temp.bk_dt.year<1000||temp.bk_dt.year>2005)
					printf("年份输入有误!");
			}while(temp.bk_dt.year<1000||temp.bk_dt.year>2005);
			do 
			{
				printf("           月:");
				scanf("%d",&temp.bk_dt.month);
				if (temp.bk_dt.month<1||temp.bk_dt.month>12)
					printf("月份输入有误!");
			}while(temp.bk_dt.month<1||temp.bk_dt.month>12);
			do
			{
				printf("           日:");
				scanf("%d",&temp.bk_dt.day);
				if (temp.bk_dt.day<1||temp.bk_dt.day>31)
					printf("日输入有误!");
			}while(temp.bk_dt.day<1||temp.bk_dt.day>31);
			printf("价格:");
			scanf("%d",&temp.price);
			fp = fopen("book.dat","ab");
			fwrite(&temp,sizeof(struct book),1,fp);
			fclose(fp);
			printf("是否继续输入下一条信息?\t1 . 继续\t2 . 返回");getchar();
			scanf("%d",&flag);
			i++;
		}while(i<88&&flag==1);
}

/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义图书浏览函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void output()							
{		
	FILE *fp;
	int t=0,i=0,j=0;
	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);
	if(j==0)
	{
		system("cls");
		printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
		getchar();
		getchar();
		return;
	}
	rewind(fp);
	for(i=0;i<j;i++)
	{
		fread(&bk[i],sizeof(struct book),1,fp);
	}
	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();
			}
	}
	fclose(fp);	
}

/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义图书查询函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void demand()							
{	
	FILE *fp;
	int choice,i,j,k,t,p,count=0,n=0;
	struct book ab[25];
	char xingming[20];
	char shuming[30];  
	if((fp=fopen("book.dat","rb"))== NULL)
	{
		system("cls");
		printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
		getchar();
		getchar();
		return ;
	}
	fseek(fp,0,2);
	i=ftell(fp)/sizeof(struct book);
	if(i==0)
	{
		system("cls");
		printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
		getchar();
		getchar();
		return;
	}
	rewind(fp);
	for(j = 0;j < i ;j++)
		fread(&bk[j],sizeof(struct book),1,fp);
	fclose(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)
	{	
		system("cls");
		printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 查 询 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n\n");
		printf("请输入  (注:只需输入作者姓名.) :");
		scanf("%s",xingming);
		for(j=0;j<i;j++)
		{
			p=strcmp(bk[j].author,xingming);
			if (p==0)
			{
				count++;
				ab[n++]=bk[j];
			}
		}
		if (count==0)
		{
			system("cls");
			printf("\n\n\n\n\n\n\t\t\t  没  有  相  关  图  书 !!");
			printf("\n\n按任意键返回主界面");
			getchar();getchar();
			return;
		}
		k = 0;
		while(t!=3)
		{
			system("cls");
			printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 查 询☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
			printf("\n        \t\t⊙共 有 %d 本 书⊙第 %d 本 书⊙\n",n,k+1);
			printf("图书编号:%d\n",ab[k].num);
			printf("书名:");puts(ab[k].bname);
			printf("作者:");puts(ab[k].author);
			printf("分类号:%d\n",ab[k].clanum);
			printf("出版单位:");puts(ab[k].pubcom);
			printf("出版时间(年/月/日):%d/%d/%d\n",ab[k].bk_dt.year,ab[k].bk_dt.month,ab[k].bk_dt.day);
			printf("价格:%d\n",ab[k].price);
			printf("\n\n\t1.下一本");
			printf("\t2.上一本");
			printf("\t3.返回主界面\n");
			printf("\n\n\n\t 请 输 入:");
			scanf("%d",&t);
			if(t==1)
				if(k<count-1)
					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();
				}
		}
	}
	else if (choice==2)
	{
		system("cls");
		printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 查 询 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n\n");
		printf("请输入  (注:输入书名.) :");
		scanf("%s",shuming);
		for(j=0;j<i;j++)
		{
			p=strcmp(bk[j].author,shuming);
			if (p==0)
			{
				count++;
				ab[n++]=bk[j];
			}
		}
		if (count==0)
		{
			system("cls");
			printf("\n\n\n\n\n\n\t\t\t  没  有  相  关  图  书 !!");
			printf("\n\n按任意键返回主界面");
			getchar();getchar();
			return;
		}
		k=0;
		while(t!=3)
		{
			system("cls");
			printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 查 询☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
			printf("\n        \t\t⊙共 有 %d 本 书⊙第 %d 本 书⊙\n",n,k+1);
			printf("图书编号:%d\n",ab[k].num);
			printf("书名:");puts(ab[k].bname);
			printf("作者:");puts(ab[k].author);
			printf("分类号:%d\n",ab[k].clanum);
			printf("出版单位:");puts(ab[k].pubcom);
			printf("出版时间(年/月/日):%d/%d/%d\n",ab[k].bk_dt.year,ab[k].bk_dt.month,ab[k].bk_dt.day);
			printf("价格:%d\n",ab[k].price);
			printf("\n\n\t1.下一本");
			printf("\t2.上一本");
			printf("\t3.返回主界面\n");
			printf("\n\n\n\t 请 输 入:");
			scanf("%d",&t);
			if(t==1)
				if(k<count-1)

⌨️ 快捷键说明

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