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

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

之前完善了一个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;	
	}
}

希望以上的分享能够对初学者有所帮助,如果有需要完整源代码的可以移步:源代码下载
或者直接私信留下你的联系方式均可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/35532.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注