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

📄 main.c

📁 C做的图书管理系统 C做的图书管理系统
💻 C
字号:
#include "TypeDef.h"
#include "Function.h"
#include <stdio.h>
#include <stdlib.h>

//*****主菜单************************************
char MainMenu()
{
	char choice;
	system("cls");
	printf("\n\t\t图书管理系统\n");
	printf("=========================\n");
	printf("\t1.系统维护\n");
	printf("\t2.读者管理\n");
	printf("\t3.图书管理\n");
	printf("\t4.图书利通\n");
	printf("\t0.退出系统\n");
	printf("=========================\n");
	printf("请选择0—4:");
	while(1)
	{
		choice = getchar();
		if(choice == 10) //判断接收的是否为回车符
		{
			choice = getchar();
		}
		if( choice < '0' || choice > '4' )
		{
			printf("\n\t输入错误,重选0—4:");
		}
		else
		{
			break;
		}
	}
	return choice ;
}
//***********************************************

//*****系统维护菜单******************************
char XtwhMenu()
{
	char choice;
	system("cls");
	printf("\n\t\t系统维护菜单\n");
	printf("=========================\n");
	printf("\t1.查看图书主索引文件\n");
	printf("\t2.查看书号索引文件\n");
	printf("\t3.查看书名索引链头文件\n");
	printf("\t4.查看作者索引链头文件\n");
	printf("\t5.查看出版社索引链头文件\n");
	printf("\t6.查看借还书文件\n");
	printf("\t0.返回主菜单\n");
	printf("=========================\n");
	printf("请选择0—6:");
	while(1)
	{
		choice = getchar();
		if(choice == 10) //判断接收的是否为回车符
		{
			choice = getchar();
		}
		if( choice < '0' || choice > '6' )
		{
			printf("\n\t输入错误,重选0—6:");
		}
		else
		{
			break;
		}
	}
	return choice;
}
//***********************************************

//*****系统维护菜单处理程序**********************
void Xtwh(BookDbFile *bf, BnoIdxFile *bif, BnameIdxFile *bnif, BauthorIdxFile *baif, BpressIdxFile* bpif, BborrowFile *bbf)
{
	int i;
	char choice;
	while(1)
	{
		switch(XtwhMenu())
		{
			case '1':
				system("cls");
				printf("记录号 书号 书名       指针1 作者     指针2 出版社     指针3 分类 藏书量 借出数\n");
				for(i = 1; i <= bf->len; i++)
				{
					printf("%-6d %-4s %-10s %-5d %-8s %-5d %-10s %-5d %-4s %-6d %d\n",
						i,
						bf->BookDbase[i].bno, 
						bf->BookDbase[i].bname, 
						bf->BookDbase[i].namenext,
						bf->BookDbase[i].author,
						bf->BookDbase[i].authnext,
						bf->BookDbase[i].press,
						bf->BookDbase[i].prenext,
						bf->BookDbase[i].sortno,
						bf->BookDbase[i].storenum,
						bf->BookDbase[i].borrownum);
				}
				printf("\n按任意键返回...");
				choice = getchar();
				if(choice == 10) //判断接收的是否为回车符
				{
					choice = getchar();
				}
				break;

			case '2':
				system("cls");
				printf("书号 记录号\n");
				for(i = 0; i < bif->len; i++)
				{
					printf("%-4s %d\n", bif->BnoIdx[i].bno, bif->BnoIdx[i].RecNo);
				}
				printf("\n按任意键返回...");
				choice = getchar();
				if(choice == 10) //判断接收的是否为回车符
				{
					choice = getchar();
				}
				break;

			case '3':
				system("cls");
				printf("书名       链头地址 长度\n");
				for(i = 0; i < bnif->len; i++)
				{
					printf("%-10s %-8d %-2d\n",
						bnif->BnameIdx[i].bname,
						bnif->BnameIdx[i].head,
						bnif->BnameIdx[i].RecNum);
				}
				printf("\n按任意键返回...");
				choice = getchar();
				if(choice == 10) //判断接收的是否为回车符
				{
					choice = getchar();
				}
				break;

			case '4':
				system("cls");
				printf("作者     链头地址 长度\n");
				for(i = 0; i < baif->len; i++)
				{
					printf("%-8s %-8d %-2d\n",
						baif->BauthorIdx[i].author,
						baif->BauthorIdx[i].head,
						baif->BauthorIdx[i].RecNum);
				}
				printf("\n按任意键返回...");
				choice = getchar();
				if(choice == 10) //判断接收的是否为回车符
				{
					choice = getchar();
				}
				break;

			case '5':
				system("cls");
				printf("出版社     链头地址 长度\n");
				for(i = 0; i < bpif->len; i++)
				{
					printf("%-10s %-8d %-2d\n",
						bpif->BpressIdx[i].press,
						bpif->BpressIdx[i].head,
						bpif->BpressIdx[i].RecNum);
				}
				printf("\n按任意键返回...");
				choice = getchar();
				if(choice == 10) //判断接收的是否为回车符
				{
					choice = getchar();
				}
				break;

			case '6':
				system("cls");
				printf("读者号 书号 借书日期 还书日期\n");
				for(i = 0; i < bbf->len; i++)
				{
					printf("%-6s %-4s %-8s %-8s\n",
						bbf->Bbook[i].rno,
						bbf->Bbook[i].bno,
						bbf->Bbook[i].date1,
						bbf->Bbook[i].date2);
				}
				printf("\n按任意键返回...");
				choice = getchar();
				if(choice == 10) //判断接收的是否为回车符
				{
					choice = getchar();
				}
				break;

			case '0':
				return;
				break;		
		}
	}
}
//***********************************************

//*****读者管理菜单******************************
char DzglMenu()
{
	char choice;
	system("cls");
	printf("\n\t\t读者管理菜单\n");
	printf("=========================\n");
	printf("\t1.查看所有读者\n");
	printf("\t2.添加读者信息\n");
	printf("\t0.返回主菜单\n");
	printf("=========================\n");
	printf("请选择0—2:");
	while(1)
	{
		choice = getchar();
		if(choice == 10) //判断接收的是否为回车符
		{
			choice = getchar();
		}
		if( choice < '0' || choice > '2' )
		{
			printf("\n\t输入错误,重选0—2:");
		}
		else
		{
			break;
		}
	}
	return choice;
}
//***********************************************

//*****读者管理菜单处理程序**********************
void Dzgl(ReaderFile *rf)
{
	int i = 0;
	char choice = '\0';

	while(1)
	{
		switch(DzglMenu())
		{
			case '1':
				system("cls");
				printf("读者号 读者姓名 可借书数 已借书目\n");
				for(i = 0; i < rf->len; ++i)
				{
					printf("%-6s %-8s %-8d %-8d\n",
						rf->ReadRec[i].rno,
						rf->ReadRec[i].name,
						rf->ReadRec[i].bn1,
						rf->ReadRec[i].bn2);
				}
				printf("\n按任意键返回...");
				choice = getchar();
				if(choice == 10) //判断接收的是否为回车符
				{
					choice = getchar();
				}
				break;
			case '2':
				system("cls");
				AddReader(rf);
				break;
			case '0':
				return;
		}
	}
}
//***********************************************

//*****图书管理菜单******************************
char TsglMenu()
{
	char choice;
	system("cls");
	printf("\n\t\t图书管理菜单\n");
	printf("=========================\n");
	printf("\t1.查看所有图书\n");
	printf("\t2.添加图书信息\n");
	printf("\t3.查找图书\n");
	printf("\t0.返回主菜单\n");
	printf("=========================\n");
	printf("请选择0—3:");
	while(1)
	{
		choice = getchar();
		if(choice == 10) //判断接收的是否为回车符
		{
			choice = getchar();
		}
		if( choice < '0' || choice > '3' )
		{
			printf("\n\t输入错误,重选0—3:");
		}
		else
		{
			break;
		}
	}
	return choice;
}
//***********************************************

//*****图书管理菜单处理程序**********************
void Tsgl(BookDbFile *bf, BnoIdxFile *bif, BnameIdxFile *bnif, BauthorIdxFile *baif, BpressIdxFile* bpif)
{
	int i = 0;
	char choice = '\0';
	while(1)
	{
		switch(TsglMenu())
		{
			case '1':
				system("cls");
				printf("记录号 书号 书名       作者     出版社     分类 藏书量 借出数\n");
				for(i = 1; i <= bf->len; i++)
				{
					printf("%-6d %-4s %-10s %-8s %-10s %-4s %-6d %d\n",
						i,
						bf->BookDbase[i].bno, 
						bf->BookDbase[i].bname, 
						bf->BookDbase[i].author,
						bf->BookDbase[i].press,
						bf->BookDbase[i].sortno,
						bf->BookDbase[i].storenum,
						bf->BookDbase[i].borrownum);
				}
				printf("\n按任意键返回...");
				choice = getchar();
				if(choice == 10) //判断接收的是否为回车符
				{
					choice = getchar();
				}
				break;
			case '2':
				AddDbRec(bf, bif, bnif, baif, bpif);
				break;
			case '3':
				SearchBook(bf, bif, bnif, baif, bpif);
				break;
			case '0':
				return;
		}
	}
	return choice;
}
//***********************************************


//*****图书利通菜单******************************
char TsltMenu()
{
	char choice;
	system("cls");
	printf("\n\t\t图书利通菜单\n");
	printf("=========================\n");
	printf("\t1.借出图书\n");
	printf("\t2.归还图书\n");
	printf("\t0.返回主菜单\n");
	printf("=========================\n");
	printf("请选择0—2:");
	while(1)
	{
		choice = getchar();
		if(choice == 10) //判断接收的是否为回车符
		{
			choice = getchar();
		}
		if( choice < '0' || choice > '2' )
		{
			printf("\n\t输入错误,重选0—2:");
		}
		else
		{
			break;
		}
	}
	return choice;
}
//***********************************************

//*****图书利通菜单处理程序**********************
void Tslt(BookDbFile *bf, BnoIdxFile *bif, ReaderFile *rf, BborrowFile *bbf)
{
	while(1)
	{
		switch(TsltMenu())
		{
			case '1':
				BorrowBook(bf, bif, rf, bbf);
				break;
			case '2':
				BackBook(bf, bif, rf, bbf);
				break;
			case '0':
				return;
		}
	}
}
//***********************************************

int main()
{
	BookDbFile bdf;
	BnoIdxFile bif;
	BnameIdxFile bnif;
	BauthorIdxFile baif;
	BpressIdxFile bpif;
	ReaderFile rf;
	BborrowFile bbf;

	ReadFile(&bdf, &bif, &bnif, &baif, &bpif, &rf, &bbf); //读入数据库文件
	while(1)
	{
		switch(MainMenu())
		{
			case '1':
				Xtwh(&bdf, &bif, &bnif, &baif, &bpif, &bbf);
				break;
			case '2': 
				Dzgl(&rf);
				break;
			case '3': 
				Tsgl(&bdf, &bif, &bnif, &baif, &bpif);
				break;
			case '4':
				Tslt(&bdf, &bif ,&rf, &bbf);
				break;
			case '0': 
				WriteFile(&bdf, &bif, &bnif, &baif, &bpif, &rf, &bbf);
				system("cls");
				printf("再见...\n");
				system("pause");
				exit(0);
				break;
		}
	}
}

⌨️ 快捷键说明

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