图书馆管理系统课程设计

本程序源代码与功能设计部分借阅网上一些资料完成的,自己本人修改了一些细节与功能

如果你也要做这个,欢迎学习与改正。

/*
		名称: 图书管理信息系统
		版本: 1.0.0
		日期:
		作者: I我Promise
		注解:本程序源代码与功能设计部分借阅网上一些资料完成的,自己本人修改了一些细节与功能
		      如果你也要做这个,欢迎学习与改正
*/
# include 
   
   
    
    
# include 
    
    
     
     
# include 
     
     
      
      

typedef struct book
{
	char name[10];			// 名字
	char num[10];			// 编号
	char writer[10];		// 作者
	int date;				// 出版日期
	char press[10];			// 出版社
	float prise;			// 价格
	char sort[10];			// 类别
	int inven;				// 库存
	int loan;				// 借出
}BK;

typedef struct student
{
	char name[10];		// 已借学生姓名
	char num[10];		// 已借学生学号
	int borr;			// 已借本数
}ST;

typedef struct borror
{
	char Snum[10];		// 已借图书学生学号
	char Bnum[10];		// 已借图书编号
}BS;

FILE *fp, *fpj, *fps;	// 定义全局文件指针,方便使用
int i, xuan;			// 定义两个常用的变量用于循环等

void Logan();
void Menu_filename();
int Menu_select();
void Add_Book();		//录入
void Show_Book();		//浏览
void Search_Book();		//查询
void AD_Book();			//修改与删除
void Borr_Book();		//借阅
void Retu_Book();		//归还
void BS_Book();			//借阅查询
int Contrast(char *, char *);			//对比

int main(void)
{
	Logan();
	Menu_filename();

	for (;;)
	{
		fp = fopen("book.txt", "rb+");
		fps = fopen("student.txt", "rb+");
		fpj = fopen("jieyue.txt", "rb+");

		switch (Menu_select())
		{
		case 1:
			printf("\n\t\t*^_^*图书信息添加*^_^*\n");
			Add_Book();
			break;
		case 2:
			printf("\n\t\t*^_^*图书信息浏览*^_^*\n");
			Show_Book();
			break;
		case 3:
			printf("\n\t\t*^_^*图书信息查询*^_^*\n");
			Search_Book();
			break;
		case 4:
			printf("\n\t\t*^_^*图书信息修改与删除*^_^*\n");
			AD_Book();
			break;
		case 5:
			printf("\n\t\t*^_^*图书借阅*^_^*\n");
			Borr_Book();
			break;
		case 6:
			printf("\n\t\t*^_^*图书归还查询*^_^*\n");
			Retu_Book();
			break;
		case 7:
			printf("\n\t\t*^_^*图书借阅查询*^_^*\n");
			BS_Book();
			break;
		case 0:
			printf("\n谢谢使用哦! \t\t\t\t See You Again !!\n");
			printf("\n\t\t");
			system("pause");
			exit(0);
		}

		fclose(fp);
		fclose(fpj);
		fclose(fps);
	}

	system("pause");

	return 0;
}

void Logan()
{
	printf("\n\n\n\t\t\t 图书馆信息管理系统\n\n");
	printf("\t\t 作者 :    I我Promise  \n\n");
	printf("\t\t 成员 :\n\n");
	printf("\t\t 时间1 :2016年12月20日 15:46:19  \n\n");
	printf("\t\t 时间2 :2016年12月22日 15:59:00  \n\n");
	printf("\t\t 时间3 :2016年12月26日 10:11:07  \n\n");
	printf("\t\t 时间4 :2016年12月27日 11:21:17  \n\n");
	printf("\t\t 时间5 :2016年12月27日 16:37:23  \n\n");
	printf("\t\t 身份 :在校大学生一枚 \n\n");
	system("pause");
}

void Menu_filename()		// 新建或查找 并用txt格式的文件储存,方便打开与转移
{
	system("cls");
	if ((fp = fopen("book.txt", "rb+")) == NULL)
	{
		printf("\t\t在程序同一目录下没有找到储存图书信息的book.txt文件!\n");
		printf("\t\t\t请选择 :\n\t\t\t1--手动导入(手动将文件复制到目录下)!\n\t\t\t2--创建此文件!(由系统创建) \n");
		printf("请输入序号 : ");
		scanf("%d", &xuan);
		switch (xuan)
		{
		case 2:
			if ((fp = fopen("book.txt", "wb+")) != NULL)
				printf("创建成功!!\n\n");
				break;
		case 1:
			printf("\t\t请把名为book.txt的文件复制到程序同一目录下\n\n");
		}
	}
	if ((fpj = fopen("jieyue.txt", "rb+")) == NULL)
	{
		printf("\t\t在程序同一目录下没有找到储存图书信息的jieyue.txt文件!\n");
		printf("\t\t\t请选择 :\n\t\t\t1--手动导入(手动将文件复制到目录下)!\n\t\t\t2--创建此文件!(由系统创建) \n");
		printf("请输入序号 : ");
		scanf("%d", &xuan);
		switch (xuan)
		{
		case 2:
			if ((fpj = fopen("jieyue.txt", "wb+")) != NULL)
				printf("创建成功\n\n");
			break;
		case 1:
			printf("\t\t请把名为jieyue.txt的文件复制到程序同一目录下\n\n");
		}
	}
	if ((fps = fopen("student.txt", "rb+")) == NULL)
	{
		printf("\t\t在程序同一目录下没有找到储存图书信息的student.txt文件!\n");
		printf("\t\t\t请选择 :\n\t\t\t1--手动导入(手动将文件复制到目录下)!\n\t\t\t2--创建此文件!(由系统创建) \n");
		printf("请输入序号 : ");
		scanf("%d", &xuan);
		switch (xuan)
		{
		case 2:
			if ((fps = fopen("student.txt", "wb+")) != NULL)
				printf("创建成功\n\n");
			break;
		case 1:
			printf("\t\t请把名为student.txt的文件复制到程序同一目录下\n\n");
		}
	}
}

int Menu_select(void)
{
	int a;

	do
	{
		system("cls");
		printf("\n\t\t◤▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔◥\n");
		printf("\t\t▏           图书馆信息管理系统               ▕\n");
		printf("\t\t◣▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁◢\n");
		printf("\n");
		printf("\t\t    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔   \n");
		printf("\t\t    ▏ 1.图书录入       2.图书浏览        ▕   \n");
		printf("\t\t    ▏ 3.图书查询       4.图书修改与删除  ▕   \n");
		printf("\t\t    ▏ 5.图书借阅       6.图书归还        ▕   \n");
		printf("\t\t    ▏ 7.已借图书查询   0.退出系统        ▕   \n");
		printf("\t\t    ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁   \n");
		printf("\t\t\n        请您选择(0 - 7) : ");
		scanf("%d", &a);
	} while (a < 0 || a > 7);
	
	system("cls");
	return (a);
}

void Add_Book(void)		//录入
{
	BK bo, boq;
	char sign = 'y';
	system("cls");

	while (sign != 'n' && sign != 'N')
	{
		fp = fopen("book.txt", "rb+");		// 在这个while中因为要多次输入,所以要重新打开与关闭
		fps = fopen("student.txt", "rb+");	// 不然下面的判断编号是否重复就不能判断
		fpj = fopen("jieyue.txt", "rb+");

		printf("\n\t--------------图书信息添加--------------\n\n");
		printf("请输入图书名(最多十个字符):");
		scanf("%s", bo.name);
		do						// 因为编号是我系统图书唯一的标识符,所以要检查下
		{
			i = 1;
			printf("请输入图书编号(最多十个字符):");
			scanf("%s", bo.num);
			fread(&boq, sizeof(BK), 1, fp);
			while (!feof(fp))
			{
				if (strcmp(boq.num, bo.num) == 0)
				{
					printf("\n该编号已存在请重新输入!\n\n");
					i = 0;
					break;
				}
				fread(&boq, sizeof(BK), 1, fp);
			}
			rewind(fp);
		} while (i == 0);

		printf("请输入图书作者(最多十个字符):");
		scanf("%s", bo.writer);
		printf("请输入图书出版日期(例如2001年5月3日出版则输入20010503):");
		scanf("%d", &bo.date);
		printf("请输入图书价格:");
		scanf("%f", &bo.prise);
		printf("请输入图书出版社(最多十个字符):");
		scanf("%s", bo.press);
		printf("请输入图书类别(最多十个字符):");
		scanf("%s", bo.sort);
		printf("请输入图书入库数:");
		scanf("%d", &bo.inven);
		bo.loan = 0;
		fseek(fp, 0, 2);
		fwrite(&bo, sizeof(BK), 1, fp);

		printf("\n 录入成功!您是否想继续添加 ( Y / N ) : ");
		scanf("\t%c", &sign);					// 缓存 回车符

		system("cls");

		fclose(fp);
		fclose(fpj);
		fclose(fps);
	}
}

void Show_Book(void)		//浏览
{
	//system("cls");

	BK bo;
	char sign = 'y';

	printf("\n\n\t书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
	fread(&bo, sizeof(BK), 1, fp);
	while (feof(fp) == 0)
	{
		printf("\n\t%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n", bo.name, bo.num, bo.writer, bo.prise, bo.press, bo.sort, bo.inven, bo.loan);
		fread(&bo, sizeof(BK), 1, fp);
	}
	printf("\n\n浏览图书完毕!谢谢使用 !\n\n");	
	system("pause");

	printf("\n\n\t您是否想修改记录 ( Y / N ) : ");
	scanf("\t%c", &sign);					//为什么要加 /t	因为/t 是用来缓存上一个回车符

	if (sign != 'n' && sign != 'N')
	{
		AD_Book();
	}

	system("pause");
}

void Search_Book(void)		//查询
{
	char key[10];
	int fan = 1;
	int bian = 1;			// 记录序号
	BK bo;
	system("cls");

	system("cls");
	printf("\t\n请选择查询方式:\n");
	printf("\t┌───────────────────────┐\n");
	printf("\t│ 1--按图书编号模糊查询  2--按图书名关键字查询 │\n");
	printf("\t│                                              │\n");
	printf("\t│ 3--按图书编号精确查询  4--按图书书名精确查询 │\n");
	printf("\t└───────────────────────┘\n");
	printf("请输入你要查询的方式\n");
	scanf("%d", &xuan);

	if (1 == xuan)
	{
		printf("\n请输入图书编号(例如: 164030242 可输入: 1642 !最多十个字符):");
		scanf("%s", key);

		printf("\n\t序号 书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
		fread(&bo, sizeof(BK), 1, fp);
		while (!feof(fp))
		{
			fan = Contrast(key, bo.num);		// 模糊查找函数
			if (1 == fan)
			{
				printf("\t%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n", bian, bo.name, bo.num, bo.writer, bo.prise, bo.press, bo.sort, bo.inven, bo.loan);
				bian++;
			}
			fread(&bo, sizeof(BK), 1, fp);
		}
	}
	else if (2 == xuan)
	{
		printf("\n请输入图书名关键字(例如: C Language 可输入: Cge ! 最多十个字符):");
		scanf("%s", key);
		printf("\n\t序号 书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
		fread(&bo, sizeof(BK), 1, fp);
		while (!feof(fp))
		{
			fan = Contrast(key, bo.name);
			if (1 == fan)
				printf("\t%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n", bian, bo.name, bo.num, bo.writer, bo.prise, bo.press, bo.sort, bo.inven, bo.loan);
			fread(&bo, sizeof(BK), 1, fp);
		}
	}
	else if (3 == xuan)
	{
		printf("\n请输入准确的图书编号(最多十个字符):");
		scanf("%s", key);
		printf("\n\t序号 书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
		while (!feof(fp))
		{
			if (strcmp(key, bo.num) == 0)
				printf("\t%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n", bian, bo.name, bo.num, bo.writer, bo.prise, bo.press, bo.sort, bo.inven, bo.loan);
			fread(&bo, sizeof(BK), 1, fp);
		}
	}

	else if (4 == xuan)
	{
		printf("\n请输入准确图书名(最多十个字符):");
		scanf("%s", key);
		printf("\n\t序号 书名      编号      作者      价格      出版社    类别      原始库存  借出\n");

		while (!feof(fp))
		{
			if (strcmp(key, bo.name) == 0)
				printf("\t%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n", bian, bo.name, bo.num, bo.writer, bo.prise, bo.press, bo.sort, bo.inven, bo.loan);
			fread(&bo, sizeof(BK), 1, fp);
		}
	}
	else
	{
		printf("\n输入错误!!! 回到主菜单重新选择...\n");
		system("pause");
		return;
	}

	printf("\n 查询图书完毕! 谢谢使用...");

	system("pause");
}

void AD_Book(void)			//修改与删除
{
	FILE *p;
	char num[10], cha[10], sign = 'y';
	int j = 0, x;
	BK bo, boq;
	BS bs;

	fp = fopen("book.txt", "rb+");		// 又在这里加这个是因为在 Show 函数中,我要调用这个函数
	fps = fopen("student.txt", "rb+");	// 所以我要你主函数一样 重新打开关闭
	fpj = fopen("jieyue.txt", "rb+");

	printf("\n删除修改图书只能通过图书编号来完成!\n是否显示所有图书来查询你要操作的图书编号(Y/N): ");
	scanf("\t%c", &sign);

	if (sign != 'N' && sign != 'n')
	{
		Show_Book();
		rewind(fp);
	}

	printf("\n请输入你要操作的图书的编号(如果输入错误的编号,将不做任何操作):");
	scanf("%s", cha);

	fread(&bs, sizeof(BS), 1, fpj);
	while (!feof(fpj))
	{
		if (strcmp(bs.Bnum, cha) == 0)fclose(fp);
		fclose(fpj);
		fclose(fps);
		{
			printf("\n这本书已有人借阅,不能删除哦!\n");
			system("pause");
			return;
		}
		fread(&bs, sizeof(BS), 1, fpj);
	}
	printf("\t┌─────────────┐\n");
	printf("\t│                          │\n");
	printf("\t│ 1--删除图书  2--修改图书 │\n");
	printf("\t│                          │\n");
	printf("\t│  0--取消操作 返回主菜单  │\n");
	printf("\t│                          │\n");
	printf("\t└─────────────┘\n");
	printf("请选择操作类型:");
	scanf("%d", &xuan);
	while (xuan != 1 && xuan != 2 && xuan != 0)
	{
		printf("您输入错误,请重新输入序号查询!\n");
		printf("请选择操作类型:");
		scanf("%d", &xuan);
	}

	fread(&bo, sizeof(BK), 1, fp);
	p = fopen("books1.txt", "wb+");

	while (!feof(fp))
	{
		j++;
		if (strcmp(bo.num, cha) == 0)
		{
			if (2 == xuan)
			{
				printf("\n\n1-书名    2-编号    3-作者    4-价格    5-出版社   6-类别    7-库存\n\n");
				printf("请选择要修改的项目:");
				scanf("%d", &x);
				
				if (1 == x)
				{
					printf("你要把 %s 修改为:", bo.name);
					scanf("%s", bo.name);
				}
				else if (2 == x)
				{
					do
					{
						i = 1;
						printf("你要把 %s 修改为 :", bo.num);
						scanf("%s", num);
						rewind(fp);

						fread(&boq,	sizeof(BK), 1, fp);
						while (!feof(fp))
						{
							if (strcmp(boq.num, num) == 0)		// 检查编号是否重复
							{
								printf("\n该编号已存,在请重新输入!\n\n");
								i = 0;
								break;
							}
							fread(&boq, sizeof(BK), 1, fp);
						}
					} while (i == 0);
					rewind(fp);
					for (i = 0; i < j; i++)
					{
						fread(&bo, sizeof(BK), 1, fp);
						strcpy(bo.num, num);
					}
				}
				else if (3 == x)
				{
					printf("你要把 %s 修改为 :", bo.writer);
					scanf("%s", bo.writer);
				}
				else if (4 == x)
				{
					printf("你要把 %s 修改为 :", bo.prise);
					scanf("%s", bo.prise);
				}
				else if (5 == x)
				{
					printf("你要把 %s 修改为 :", bo.press);
					scanf("%s", bo.press);
				}
				else if (6 == x)
				{
					printf("你要把 %s 修改为 :", bo.sort);
					scanf("%s", bo.sort);
				}
				else if (7 == x)
				{
					printf("你要把 %s 修改为 :", bo.inven);
					scanf("%s", bo.inven);
				}
				fwrite(&bo, sizeof(BK), 1, p);
			}
			else if (0 == xuan)
			{
				system("pause");
				return;
			}
		}
		else
			fwrite(&bo, sizeof(BK), 1, p);
		fread(&bo, sizeof(BK), 1, fp);
	}

	fclose(p);
	fclose(fp);
	p = fopen("books1.txt", "rb+");
	fp = fopen("book.txt", "wb+");

	fread(&bo, sizeof(BK), 1, p);
	while (!feof(p))				// 将刚修改的数据 books1 复制并覆盖到 book 中
	{
		fwrite(&bo, sizeof(BK), 1, fp);
		fread(&bo, sizeof(BK), 1, p);
	}

	fclose(fp);
	//fclose(fp);
	fclose(fpj);
	fclose(fps);

	printf("\n操作成功 *^_^*  回到主菜单\n");

	system("pause");
}

void Borr_Book(void)		//借阅
{
	FILE *p;
	BK bo;
	ST st;
	BS bs;
	int j = 0;
	char num[10], xnum[10];
	char sign = 'y';
	system("cls");
	
	printf("\n借阅图书只能通过图书编号来完成!\n是否显示所有图书来查询你要操作的图书编号(Y/N): ");
	scanf("\t%c", &sign);
	
	if (sign != 'N' && sign != 'n')
		Show_Book();

	printf("\n请输入你要借阅的图书的编号:");
	scanf("%s", num);

	fread(&bo, sizeof(BK), 1, fp);
	while (!feof(fp))
	{
		if (strcmp(num, bo.num) == 0)
		{
			j = 1;
			break;
		}
		fread(&bo, sizeof(BK), 1, fp);
	}
	if (j == 0)
	{
		printf("\n不好意思 ,书库没有该图书哦 *^_^*\n\n");
		system("pause");
		return;
	}
	printf("\n你需要借阅的图书是:\n");
	printf("\t书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
	printf("\t%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n", bo.name, bo.num, bo.writer, bo.prise, bo.press, bo.sort, bo.inven, bo.loan);

	if (bo.inven == bo.loan)
	{
		printf("\n该册图书已全部借出! 下次再来哦... *^_^*\n\n");
		system("pause");
		return;
	}

	printf("\n请输入你的学号:");
	scanf("%s", xnum);
	j = 0;
	fread(&bs, sizeof(BS), 1, fpj);
	while (!feof(fpj))
	{
		if ((strcmp(bs.Bnum, num) == 0) && (strcmp(bs.Snum, xnum) == 0))
		{
			j = 1;
			break;
		}
		fread(&bs, sizeof(BS), 1, fpj);
	}
	if (j == 1)
	{
		printf("\n你已经借阅过该书 ! 归还了才能再借哦 *^_^* !\n\n");
		system("pause");
		return;
	}

	j = 0;
	fread(&st, sizeof(ST), 1, fps);
	while (!feof(fps))
	{
		if (strcmp(xnum, st.num) == 0)
		{
			j = 1;
			break;
		}
		fread(&st, sizeof(ST), 1, fps);
	}
	if (j == 0)
	{
		printf("\n您是第一次借阅图书,为了方便管理请输入你的姓名:");
		scanf("%s", st.name);
		strcpy(st.num, xnum);
		st.borr = 1;
		fseek(fps, 0, 2);
		fwrite(&st, sizeof(ST), 1, fps);
	}
	else
	{
		if (st.borr == 5)		// 控制每个学生只能借五本书
		{
			printf("\n你已经借了5本书,不能再借 ! 请还了书才能借哦 !\n\n");
			system("pause");
			return;

			p = fopen("jie.txt", "wb+");
			rewind(fps);

			fread(&st, sizeof(ST), 1, fps);
			while (!feof(fps))
			{
				if (strcmp(xnum, st.num) == 0)
					st.borr++;
				fwrite(&st, sizeof(ST), 1, p);
				fread(&st, sizeof(ST), 1, fps);
			}
			fclose(p);
			fclose(fps);

			p = fopen("jie.txt", "rb+");
			fps = fopen("student.txt", "wb+");
			fread(&st, sizeof(ST), 1, p);
			while (!feof(p))
			{
				fwrite(&st, sizeof(ST), 1, fps);
				fread(&st, sizeof(ST), 1, p);
			}
		}
		strcpy(bs.Bnum, num);
		strcpy(bs.Snum, xnum);

		fseek(fpj, 0, 2);
		fwrite(&bs, sizeof(BS), 1, fpj);
		rewind(fp);

		p = fopen("jie.txt", "wb+");

		fread(&bo, sizeof(BK), 1, fp);
		while (!feof(fp))
		{
			if (strcmp(num, bo.num) == 0)
				bo.loan++;
			fwrite(&bo, sizeof(BK), 1, p);
			fread(&bo, sizeof(BK), 1, fp);
		}

		fclose(p);
		fclose(fp);
		p = fopen("jie.txt", "rb+");
		fp = fopen("book.txt", "wb+");

		fread(&bo, sizeof(BK), 1, p);
		while (!feof(p))
		{
			fwrite(&bo, sizeof(BK), 1, fp);
			fread(&bo, sizeof(BK), 1, p);
		}
		printf("\n\t*^_^*借阅成功!请借阅后爱护书籍哦 *^_^*\n\n");
		system("pause");
	}
}

void Retu_Book(void)		//归还
{
	FILE *p;
	BK bo;
	ST st;
	BS bs;
	int j = 0;
	char snum[10], bnum[10];
	i = 0;
	system("cls");

	printf("\n请输入你的学号:");
	scanf("%s", snum);

	printf("\n你借阅了以下图书 : \n");

	fread(&bs, sizeof(BS), 1, fpj);
	printf("\t书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
	
	while (!feof(fpj))
	{
		if (strcmp(bs.Snum, snum) == 0)
		{
			fread(&bo, sizeof(BK), 1, fp);
			while (!feof(fp))
			{
				if (strcmp(bs.Bnum, bo.num) == 0)
				{
					printf("\t%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n", bo.name, bo.num, bo.writer, bo.prise, bo.press, bo.sort, bo.inven, bo.loan);
					j = 1;
				}
				fread(&bo, sizeof(BK), 1, fp);
			}
		}
		fread(&bs, sizeof(BS), 1, fpj);
	}
	if (0 == j)
	{
		printf("\n *^_^* 你没有借阅任何图书! 要多借书学习哦 *^_^* \n\n");
		system("pause");
		return;
	}

	rewind(fp);
	rewind(fpj);

	printf("\n请输入你归还的图书的编号:");
	scanf("%s", bnum);

	p = fopen("jie.txt", "wb+");

	fread(&bs, sizeof(BS), 1, fpj);			//修改 jieyue.txt 里的数据
	while (!feof(fpj))
	{
		if ((strcmp(bs.Bnum, bnum) == 0) && (strcmp(bs.Snum, snum) == 0))
			i = 1;
		else
			fwrite(&bs, sizeof(BS), 1, p);
		fread(&bs, sizeof(BS), 1, fpj);
	}
	if (0 == i)
	{
		printf("\n你没有借过该图书 需要借阅后才能归还哦...");
		system("pause");
		return;
	}
	fclose(p);
	fclose(fpj);

	p = fopen("jie.txt", "rb+");
	fpj = fopen("jieyue.txt", "wb+");

	fread(&bs, sizeof(BS), 1, p);
	while (!feof(p))
	{
		fwrite(&bs, sizeof(BS), 1, fpj);
		fread(&bs, sizeof(BS), 1, p);
	}

	fclose(p);							//改变book.txt里的数据
	p = fopen("jie.txt", "wb+");

	fread(&bo, sizeof(BK), 1, fp);
	while (!feof(fp))
	{
		if (strcmp(bnum, bo.num) == 0)
			bo.loan--;
		fwrite(&bo, sizeof(BK), 1, p);
		fread(&bo, sizeof(BK), 1, fp);
	}

	fclose(p);
	fclose(fp);
	p = fopen("jie.txt", "rb+");
	fp = fopen("book.txt", "wb+");

	fread(&bo, sizeof(BK), 1, p);
	while (!feof(p))
	{
		fwrite(&bo, sizeof(BK), 1, fp);
		fread(&bo, sizeof(BK), 1, p);
	}
	fclose(p);//改变student.txt里的数
	p = fopen("jie.txt", "wb+");

	rewind(fps);

	fread(&st, sizeof(ST), 1, fps);
	while (!feof(fps))
	{
		if (strcmp(snum, st.num) == 0)
			st.borr--;
		fwrite(&st, sizeof(ST), 1, p);
		fread(&st, sizeof(ST), 1, fps);
	}

	fclose(p);
	fclose(fps);
	p = fopen("jie.txt", "rb+");
	fps = fopen("student.txt", "wb+");

	fread(&st, sizeof(ST), 1, p);
	while (!feof(p))
	{
		fwrite(&st, sizeof(ST), 1, fps);
		fread(&st, sizeof(ST), 1, p);
	}
	printf("\n归还成功 多来借书哦... *^_^*");
	system("pause");
}

void BS_Book(void)			//借阅查询
{
	char num[10];
	BK bo;
	BS bs;

	printf("\n请输入你的学号:");
	scanf("%s", num);
	printf("\n您借阅了以下图书:\n\n");

	printf("\t书名      编号      作者      价格      出版社    类别      原始库存  借出\n");
	
	fread(&bs, sizeof(BS), 1, fpj);
	while (!feof(fpj))
	{
		if (strcmp(bs.Snum, num) == 0)
		{
			fread(&bo, sizeof(BK),1, fp);
			while (!feof(fp))
			{
				if (strcmp(bs.Bnum, bo.num) == 0)
				{
					printf("\t%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n", bo.name, bo.num, bo.writer, bo.prise, bo.press, bo.sort, bo.inven, bo.loan);
				}
				fread(&bo, sizeof(BK), 1, fp);
			}
		}
		fread(&bs, sizeof(BS), 1, fpj);
	}
	printf("\n查询完毕... !\n\n");
	system("pause");

}

int Contrast(char *p, char *p1)			//对比
{
	int bao = 0, fan = 1;

	for (i = 0; i<(int)strlen(p1); i++)
	{
		if (p[0] == p1[i])
		{
			bao = i;
			break;
		}
	}
	if ((int)strlen(p)>(int)strlen(p1) - bao + 1)
		return 0;
	else
	for (i = 0; i<(int)strlen(p); i++)
	{
		if (p[i] != p1[bao + i])
			fan = 0;
	}
	return fan;

}
     
     
    
    
   
   

目 录 1 需求分析 2 2 数据库的概念设计 2 3 数据库的逻辑设计 3 4 数据库的物理设计 4 5 应用程序设计 6 6 编程实现 10 总结与体会 13 致 谢 14 参考文献 15 数据库原理及应用课程设计报告 1 需求分析 1.1 任务和要求 用户有以下需求:建立读者档案;建立图书档案,建立书目索引;完成日常图书检索、借、还工作,对读者档案、图书档案、借、还系统的访问,必需进行身份验证。 1.2系统总体功能设计 图书馆管理系统主要提供的功能包括图书入库、借出、归还以及对读者的信息管理 。 (1) 图书借阅: 借阅图书时应按图书馆的规则进行借阅,例如不超过5本,如果已有超时借阅的图书,则在归还前不允许再借阅等等。 (2) 图书归还: 对于图书遗失或超期归还的情况应根据图书馆的规则进行处罚。 (3) 新图书信息入库: 建立图书信息库,以便读者进行查询和借阅。 (4) 图书信息管理: 图书因使用过久或信息过时需做下架处理,或者在读者借阅书籍时发生遗失的情况下需做遗失处理,这些都需要修改数据库关于书籍的信息。 (5) 读者信息管理: 对读者应该提供能办证、修改、注销;访问时要进行身份验证,办证、修改、注销应记录操作员编号、操作日期、理由、审批记录等功能 (6) 图书信息查询: 一般读者在借阅书籍前都需查询图书馆关于所借书籍的大概信息:该图书是否在馆—是否已借出—在馆中的书架号;除查询书籍外读者还可查询关于自身的信息:是否有超期未还的图书,还可借阅书籍数目等。 1.3软硬件运行环境及开发工具 Visual Basic 6.0 SQL Server 2000 2 数据库的概念设计 E-R模型图:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值