c语言实现图书借阅管理系统

效果演示:点击此处跳转
之前完善了一个c语言的图书借阅管理系统的课设,把课设的400来行代码完善到现在1000多行,然后里面的功能都已完善,有相应的人机交互友好提示,也能增强了代码的健壮性。下面我将简单介绍一下这个系统:
该系统采用读者、书籍、借阅三个结构体来存放相关信息借阅结构体连接了读者与书籍双方的关系。然后这里的所有界面均在控制台展示:
下面是首页面:
在这里插入图片描述
进入图书管理:在这里插入图片描述
对于涉及到对图书修改的如增加图书、删除图书则需要输入密码验证:
在这里插入图片描述
查询图书界面:
在这里插入图片描述
因为篇幅有限,这一模块不一一展示了,下面展示会员管理:
同样对于要修改的如增加删除操作需要密码验证
在这里插入图片描述
在这里插入图片描述
下面是修改密码的界面:
在这里插入图片描述
大概展示就到这里,因为代码有1000多行,篇幅有限,所以下面我把一些主要函数的代码贴出来:
主函数:

int main()  /*主函数*/
{
	int n,s,x;  //s用来接收主菜单的值   n来接收管理员模式的值  x来接受客户模式的值
	do
	{
	    system("cls");
		s = mainmenu();
		switch(s)
		{
			case 1 :do
					{
						system("cls");
						n = guanli();
						switch(n)
						{
							case 1:system("cls");zjts();getch();break;/*插入*/    
							case 2:system("cls");chashu();break;/*查看*/            
							case 3:system("cls");scts();break;/*删除*/ 
							case 4:system("cls");jieshu();break;  /*借阅*/ 
							case 5:system("cls");huanshu();break;/*还书*/
						}
					}while(n!=6);break; 
			case 2 : do
					{
						system("cls");
						x = huiyuan();
						switch(x)
						{
							case 1:system("cls");zjhy();getch();break;//增加会员 
							case 2:system("cls");charen();break;//查询会员 
							case 3:system("cls");schy();break;//删除会员
							case 4:system("cls");jsxx();getch();break;//借书信息 
						}
					}while(x!=5);break;
			case 3 :system("cls");xiugaimima();break; 
		}
	}while(s!=4);
	system("cls");
	printf("\n\n\n\n\n\n                            \t\t谢谢使用!!!\n");
    getch();//等待用户 输入 一个字符  然后继续执行下面语句
	return 0;
}

主菜单函数:

int mainmenu()   //主菜单
 {   
	int x;     
	printf("\n\n\n\n\t\t      欢迎光临图书借阅管理系统     \n\n\n");    
	printf("\t\t      1.图书管理          \n");   
	printf("\t\t      2.会员管理           \n");
	printf("\t\t      3.修改密码           \n");   
	printf("\t\t      4.退出系统           \n");   
    printf("\n\t\t请输入您的选择:");   
	scanf("%d",&x);   
	return x; 
}

密码验证与修改密码函数:

int mimayanzheng()  //密码验证
{ 
    char mm[20];   //用来存放输入的密码
	printf("\t\t     请输入密码:"); 
	scanf("%s",&mm);
	if(!strcmp(mm,MIMA))  //比较输入的密码 是否 与原密码相同
		return 1;
	else
		return 0;
}

int xiugaimima()   //修改密码
{
	char mima_temp[20];//用来存放用户输入的密码
	char new_mima[20];   //存放第一次新密码
	char new_mima1[20];  //存放第二次新密码
	printf("请输入原始密码:\n");
	scanf("%s",&mima_temp);
	if(!strcmp(mima_temp,MIMA))  //比较原始密码 与 用户输入的密码
	{
		printf("请输入新密码:\n");
		scanf("%s",&new_mima);
		printf("请再输一次:\n");
		scanf("%s",&new_mima1);
		if(!strcmp(new_mima1,new_mima)) //比较 两次修改后输入的密码
		{
			strcpy(MIMA,new_mima); //将 新密码 拷贝给 原始密码
			printf("密码修改成功,请牢记,按任意键返回。。。\n");
			getch();
			return 0;
		}
		else
		{
			printf("错误!两次输入的密码不一致,按任意键返回。。。\n");
			getch();
			return 1;
		}
	}
	else
	{
		printf("原始密码错误,按任意键返回。。。\n");
		getch();
	}
}

增加图书:

void zjts()  //增加图书 
{   
    int n,t,count=1;
    t=mimayanzheng();
	if(t==0) 
	{
		printf("密码错误,按任意键返回原菜单!!!");  
		return;
	} 
	system("cls");      
	printf("\t\t        录入图书信息       \n");     
	printf("\n\n\t\t请输入您要录入的数量:");  
	scanf("%d",&n);   
	for(I=A;I<n+A;I++)   
	{  
			printf("\n\n\n\t\t请输入第%d本书的编号:",count);     
			scanf("%d",&bk[I].num);     
			printf("\t\t请输入第%d本书的名称:",count);     
			scanf("%s",bk[I].name);     
			printf("\t\t请输入第%d本书的出版社:",count);     
			scanf("%s",bk[I].publish);     
			printf("\t\t请输入第%d本书的出版时间(年月日无分隔如:20010201):",count);     
			scanf("%d",&bk[I].time);     
			printf("\t\t该书是否已经被借阅,已被借阅输入'1',未被借阅输入'0':");     
			scanf("%d",&bk[I].jie);  
			count++; 
	}  A=I;     
		printf("\t\t        信息录入完成       \n");      
		printf("\n\n\t\t       按任意键继续...\n"); 

删除图书:

void scts()  //删除图书
{
	int x,t;
	t=mimayanzheng();
	if(t==0) 
	{
		printf("密码错误,按任意键返回原菜单!!!");
		getch();  
		return;
	}	
	do
	{
		system("cls");
    		printf("\n\n\n\n              删除图书信息          \n\n\n");
    		printf("            1.按书号删除                 \n");
    		printf("            2.按书名删除                 \n");
    		printf("            3.返回主菜单                 \n");
		printf("\t\t请输入您的选项:");
		scanf("%d",&x);
		switch(x)
		{
			case 1:system("cls");scts_num();getch();break;
			case 2:system("cls");scts_name();getch();break;
		}
	}while(x!=3);
}
void scts_num()   //按 书号删除
{
	int i,j,num,k=0;//i循环下标变量    //num存放输入的书号     //k标记是否存在该书   
	char c[2];//用来表示   是否删除图书
	printf("请输入您想要删除的书的书号(输入”0”退出):\n");
	while(1)
	{
		scanf("%d",&num);
		if(num == 0)   break;
		for(i=0;i<I;i++)
		{
			if(num == bk[i].num)
			{
				k++;
				printf("该书的信息为:\n");
				printf("\t编号    图书名称     出版社        出版时间     状态\n");
				printf("\t%-7d %-8s %-12s   %d ",bk[i].num,bk[i].name,bk[i].publish,bk[i].time);
				if(bk[i].jie == 1)  
				    printf("已被借阅\n");
				else  printf("可以借阅\n");	
				printf("\t是否要删除此书('y' or 'n'):\n");
				scanf("%s",&c); 
				if(!strcmp(c,"y"))
				{
					for(j=i;j<=I-1;j++)
					    bk[j-1]=bk[j];
					--I;
					--A;
					printf("\t删除成功!任意键返回。。。\n");
					break;
				}
				else
				{
					printf("用户取消操作,任意键返回。。。");
					break;
				}
			}
		}
		if(k == 0)
			printf("未找到该书,请重新输入(输入“0”退出):\n");
		else break;
	}
}

查找图书:

void chashu_num()  //管理员————按书号查看
{
	int i,k=0; //i是局部变量一定记住, ,k用来标记书的借阅状态。
	int num;
	printf("请输入需要查看的书号:\n");
	scanf("%d",&num);                              
	for(i=0;i<I;i++)
	{
		if(num==bk[i].num)
		{		 
			   printf("\t编号    图书名称     出版社        出版时间     状态\n");
			   printf("\t%-7d %-8s %-12s   %d ",bk[i].num,bk[i].name,bk[i].publish,bk[i].time);
			if(bk[i].jie == 1)
				printf("\t\t已借阅\n");
			else   printf("\t\t未借阅\n");
			k++;
			printf("\t按任意键返回。。。\n");
		}
	}
	if(k == 0)
		printf("该书不存在,任意键返回。。。\n");
}

借阅:

void jieshu_num()
{
	int i,im,num,km=0,k=0;
	char n[2];  //用来表示 是否借阅
	char namem[20];  //用来存放会员名
	printf("请输入你的会员名字:");
	scanf("%s",&namem);
	for(im=0;im<IM;im++)
	{
		if(!strcmp(namem,mm[im].namep))
		{		 
			printf("\t编号    会员名称   \n");
			printf("\t%-7d    %-8s         ",mm[im].nump,mm[im].namep);
			printf("请确认您的信息并按任意键继续。。。。\n");
			km++;
			getch();
			break;
		}
	}
	if(km==0)
		{
			printf("不存在该会员,或会员名输错!请正确输入名称!\n");
			printf("按任意键返回。。。\n");
			getch();
			return;
		}
	printf("\n请输入书的书号:\n");
	while(1)
	{
		scanf("%d",&num);
		for(i=0;i<I;i++)
		{
			if((num == bk[i].num)&&(bk[i].jie == 0)) //比较输入书号与已有书号相等时 且 未借阅  时 执行 if语句
			{
				k++;
				printf("\t编号    图书名称     出版社        出版时间     状态\n");
				printf("\t%-7d %-8s %-12s   %d ",bk[i].num,bk[i].name,bk[i].publish,bk[i].time);
				printf("可以借阅\n");
				printf("您是否需要借阅此书:'y' or 'n' \n");
				scanf("%s",&n);
				if(!strcmp(n,"y"))
				{
					if(mm[im].chance<10)
					{
					    bk[i].jie = 1;
					    printf("借阅成功,按任意键返回。。。\n");
					    mm[im].js[mm[im].chance].num=bk[i].num;
					    strcpy(mm[im].js[mm[im].chance].name,bk[i].name);
					    mm[im].chance++;
					}
                    else   printf("您的借阅机会已经使用完!!!按任意键返回。。。");
                    getch();
					break; 
				}
				else 
				{
					if(!strcmp(n,"n"))   printf("借阅取消,按任意键返回。。。\n");
					else   printf("输入有错,按任意键返回。。。\n");
					getch();  
					break;
				}
			}
		}
		if(k == 0)
		{
				printf("不存在该书,或该书已经借出!请正确输入图书名称!\n");
				printf("按任意键返回。。。\n");
				getch();
				break;
		}
		else break;	
	}
}

希望以上的分享能够对初学者有所帮助,如果有需要完整源代码的可以v我(备注来源):ES-Lad

  • 21
    点赞
  • 176
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
根据提供的引用内容,我无法直接提供C语言简单图书借阅管理系统的代码。但是,我可以为您提供一个简单的示例,以帮助您理解如何设计和实现这样一个系统。 下面是一个简单的C语言图书借阅管理系统的代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BOOKS 100 typedef struct { char title[100]; char author[100]; int year; int available; } Book; Book library[MAX_BOOKS]; int numBooks = 0; void addBook() { if (numBooks >= MAX_BOOKS) { printf("图书馆已满,无法添加新书。\n"); return; } Book newBook; printf("请输入书名:"); scanf("%s", newBook.title); printf("请输入作者:"); scanf("%s", newBook.author); printf("请输入出版年份:"); scanf("%d", &newBook.year); newBook.available = 1; library[numBooks] = newBook; numBooks++; printf("成功添加新书。\n"); } void borrowBook() { char title[100]; printf("请输入要借阅的书名:"); scanf("%s", title); int found = 0; for (int i = 0; i < numBooks; i++) { if (strcmp(library[i].title, title) == 0) { if (library[i].available) { library[i].available = 0; printf("成功借阅《%s》。\n", library[i].title); } else { printf("《%s》已被借出。\n", library[i].title); } found = 1; break; } } if (!found) { printf("未找到《%s》。\n", title); } } void returnBook() { char title[100]; printf("请输入要归还的书名:"); scanf("%s", title); int found = 0; for (int i = 0; i < numBooks; i++) { if (strcmp(library[i].title, title) == 0) { if (!library[i].available) { library[i].available = 1; printf("成功归还《%s》。\n", library[i].title); } else { printf("《%s》未被借出。\n", library[i].title); } found = 1; break; } } if (!found) { printf("未找到《%s》。\n", title); } } void displayBooks() { printf("图书馆中的书籍:\n"); for (int i = 0; i < numBooks; i++) { printf("书名:%s\n", library[i].title); printf("作者:%s\n", library[i].author); printf("出版年份:%d\n", library[i].year); printf("状态:%s\n", library[i].available ? "可借阅" : "已借出"); printf("\n"); } } int main() { int choice; do { printf("图书借阅管理系统\n"); printf("1. 添加书籍\n"); printf("2. 借阅书籍\n"); printf("3. 归还书籍\n"); printf("4. 显示所有书籍\n"); printf("0. 退出\n"); printf("请选择操作:"); scanf("%d", &choice); switch (choice) { case 1: addBook(); break; case 2: borrowBook(); break; case 3: returnBook(); break; case 4: displayBooks(); break; case 0: printf("感谢使用图书借阅管理系统,再见!\n"); break; default: printf("无效的选择,请重新输入。\n"); break; } printf("\n"); } while (choice != 0); return 0; } ``` 这个示例代码实现了一个简单的图书借阅管理系统,包括添加书籍、借阅书籍、归还书籍和显示所有书籍的功能。您可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值