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

📄 课程设计2.c

📁 用c语言编写的一个小型图书馆管理系统,实现会员管理
💻 C
📖 第 1 页 / 共 2 页
字号:
					printf("*******************************************************************************\n");
                    printf("会员号:");
                    for(i=0;i<8;i++)
					{printf("%d",p0->num[i]);}
                    printf("\n");
                    printf("会员姓名: %s\n会员性别: %s\n联系电话: %s\n已借的书本数目: %d\n",p0->name,p0->sex,p0->tel,p0->n);
                    printf("\n");
					sign=1;
					p0=p0->next;
				 }
				 else p0=p0->next;
			  }
			  if(sign==0) printf("没有个会员的信息.\n");
			  break;
	  case 2: printf("请输入会员编号:");
		      c=getchar();
			  i=0;
		      while((c=getchar())!='\n')
		      {
				  b[i]=c-48;
				  i++;
			  }
              p0=head;
			  while(p0!=NULL)
			  {
				 for(j=0;j<8;j++)
				 {
					 if(p0->num[j]==b[j])
					 {
						 sign2=1;
						 continue;
					 }
					 else
					 {
						 sign2=0;
						 break;
					 }
				 }
				 if(sign2==1)
                 {  
					 printf("*******************************************************************************\n");
                     printf("会员号:");
                     for(i=0;i<8;i++)
					 {printf("%d",p0->num[i]);}
                     printf("\n");
                     printf("会员姓名: %s\n会员性别: %s\n联系电话: %s\n已借的书本数目: %d\n",p0->name,p0->sex,p0->tel,p0->n);
                     printf("\n");
					 break;
				 }
				 else p0=p0->next;
			  }
			  if(p0==NULL) printf("没有这个会员的信息.\n");
			  break;
	  default: m=0;break;
	 }
	}
}
//借书
int Borrow()
{   
	char a[30],b[30],c;
    Book *p0=NULL,*head=NULL;
	reader *p2=NULL,*p3=NULL;
	head=read();
    printf("请输入要借的书的书号:");
	scanf("%s",a);
	p0=head->next;
	while(p0!=NULL)
	{
	  if((strcmp(a,p0->num))==0)
      {
		  if(p0->imformation>0)
		  {  
			 printf("图书在馆,可以借出,是否确定借出?'y'or'n'\n");
             c=getchar();
			 scanf("%c",&c);
			 if(c=='y')
			 {   
				 printf("请再次输入你的用户名:");
				 scanf("%s",b);
				 p3=(reader *)malloc(LEN3);
			     strcpy(p3->name,b);
			 	 if(p0->a->next2==NULL)
				 {
					 p0->a->next2=p3;
					 p3->next2=NULL;
				 }
				 else
				 {
				  for(p2=p0->a;p2->next2!=NULL;p2=p2->next2);
                  p2->next2=p3;
				  p3->next2=NULL;
				 }
				 --p0->imformation;
				 save(head);
				 printf("操作完成,可以带走图书。\n");
				 return 1;
				 break;
			 }
			 else 
			 {
				 return 0;
			     break;
			 }
		  }
		  else printf("很抱歉,该图书不在馆.\n");return 0;break;
	  }
	  else p0=p0->next;
	}
	if(p0==NULL)
	{
		printf("很抱歉,没有这本书。\n");
	    return 0;
	}
    else return 2;
} 
	
//还书
int Return()
{
	Book *p0=NULL,*head=NULL;
	reader *p2=NULL,*p3=NULL;
	char c[20],b[30];
    head=read();
    printf("请输入要还的书的书号:");
	scanf("%s",&c);
	p0=head->next;
	while(p0!=NULL)
	{
	  if((strcmp(c,p0->num))==0)
      {
		  printf("请输入你的用户名:");
		  scanf("%s",&b);
          if(p0->a->next2==NULL) {printf("你没有借这本书!\n");break;}
		  else
		  {
			  p3=p0->a;
			  p2=p3->next2;
			  while(p2!=NULL)
			  {   
				  if(strcmp(p2->name,b)==0)
				  {
					  if(p2->next2==NULL)  {p3->next2=NULL;free(p2);break;}
					  else
					  {
						  p3->next2=p2->next2;
						  free(p2);
						  break;
					  }
				  }
				  else
				  {
					  p3=p2; 
					  p2=p2->next2;
				  }
			  }
			  if(p2==NULL) printf("你没有借这本书!\n");
		  }
		  ++p0->imformation;
		  save(head);
		  printf("书已归馆,操作完成。\n");
		  return 1;
		  break;
	  }
	  else p0=p0->next;
	}
	if(p0==NULL) 
	{
		printf("没有这本书。\n");
        return 0;
	}
	else return 2;
}



//增加会员
void Addmember()
{
   FILE *fp;
   char a[30],b[30];
   int p,i=0,j=0,k=1;
   int *nu;
   Member *addmember=NULL;
   nu=(int *)calloc(8,sizeof(int));
   fp=fopen("会员信息.txt","rb");/*读方式打开文件*/
   if(fp==NULL)
      fp=fopen("会员信息.txt","wb"); /*写方式打开文件*/
   else
   {
      fclose(fp);
      fp=fopen("会员信息.txt","ab");/*追加方式打开文件*/
   }
   addmember=(Member *)malloc(LEN2);
   printf("输入会员信息:\n");
   printf("会员姓名:  ");  scanf("%s",addmember->name);   
   printf("会员性别:  ");  scanf("%s",addmember->sex);   
   printf("联系电话:  ");  scanf("%s",addmember->tel);   
   addmember->n=0;
   while(k==1)
   {
    printf("会员密码: "); 
    while((a[i]=getch())!=13)         //不带显示输入密码
	{
		if(a[i]==8)
		{
			if(i>0)
			{
				printf("\b \b");
				i--;
			}
		}
		else
		{
		 i++;
		 printf("*");
		}
	}
     a[i]='\0';
	 printf("\n");
     printf("确认密码: "); 
     while((b[j]=getch())!=13)
	 {
		if(b[j]==8)
		{
			if(j>0)
			{
				printf("\b \b");
				j--;
			}
		}
		else
		{
		 j++;
		 printf("*");
		}
	 }
     b[j]='\0';
     if(strcmp(a,b)==0) 
	 {
		 strcpy(addmember->code,a);
		 printf("\n创建成功!你的会员号是:");
         nu=getnum();
         for(p=0;p<8;p++)
		 {
			 addmember->num[p]=nu[p];
		     printf("%d",nu[p]);
		 }
		 k=0;
	     break;
	 }
     else 
	 {
		 printf("密码输入有误!\n");
		 i=0;j=0;
		 continue;
	 }
   }
   fwrite(addmember,LEN2,1,fp);/*块写*/
   fclose(fp); /*关闭文件*/
  
}



//读取会员信息 
Member *read2()
{
 FILE *fp;
 Member *p=NULL,*p1=NULL,*head=NULL;
 if((fp=fopen("会员信息.txt","rb"))==NULL)  printf("不能打开文件或文件不存在\n");
 head=(Member *)malloc(LEN2);
 p1=head;
 while(fread(p1,LEN2,1,fp))    /*逐个结点读取*/
 {
    p=p1;
    p1=(Member *)malloc(LEN2);
	p->next=p1;
 }
 p->next=NULL;
 free(p1);
 fclose(fp);
 if(head->next!=NULL) return(head);
 else 
 {
	  return 0;
	  printf("文件为空!");
 }
}
	 
	 
//删除会员 
void Delmember()
{
   FILE *fp;
   Member *head=NULL,*p=NULL,*q=NULL;
   char membername[30];
   head=read2();
   printf("输入要删除的会员姓名: ");
   scanf("%s",membername);              /*输入会员名*/
   q=head;
   p=head->next;
   while(p!=NULL)/*按名字查找要删除的会员*/
   {
      if(strcmp(p->name,membername)==0)
      {
         q->next=p->next;
		 break;
	  }
      q=p;  /*指针后移*/
      p=p->next;
   }
   fp=fopen("会员信息.txt","wb");/*删除后从链表的头开始重新保存*/
   while(head!=NULL)
   {
      fwrite(head,LEN2,1,fp);/*块写*/
      head=head->next;
   }
   fclose(fp);
}


//打印会员信息
void print2(Member *head)
{
 Member *p;
 int i;
 p=head->next;
 while(p!=NULL)
 {
  printf("*******************************************************************************\n");
  printf("会员号:");
  for(i=0;i<8;i++)
  {printf("%d",p->num[i]);}
  printf("\n");
  printf("会员姓名: %s\n会员性别: %s\n联系电话: %s\n已借的书本数目: %d\n",p->name,p->sex,p->tel,p->n);
  p=p->next;    //p后移一个结点 
  printf("\n");
 }
}  


//储存会员信息
void save2(Member *head)
{
 FILE *fp;
 Member *p;
 p=head;
  if((fp=fopen("会员信息.txt","wb"))==NULL)
  {
   printf("cannot open the file\n");
   return;
  }
 while(p)
 {
	 fwrite(p,LEN2,1,fp);/*逐个结点写文件*/ 
	 p=p->next;
 }
 fclose(fp);  /*关闭文件*/
}



//会员操作
void operate()
{
    int m,i=0,k=1;
	char a[30],b[20];
	char c;
	int sign=1;
    Member *p=NULL,*p1=NULL,*head=NULL,*p0=NULL;
    printf("                         欢迎你使用我们的图书管理系统!\n");
	while(sign==1)
	{
		head=read2();
		printf("               请输入你的会员姓名:");
		scanf("%s",a);
	    printf("\n");
	    printf("               请入你的会员密码:");
		while((b[i]=getch())!=13)            //不带显示输入密码
		{
			if(b[i]==8)
			{
				if(i>0)
				{
					printf("\b \b");
					i--;
				}
			}
			else
			{
				i++;
		        printf("*");
			}
		}
		b[i]='\0';
	    printf("\n");
	    p0=head;
		while((p0!=NULL))
		{
			if((strcmp(p0->name,a)==0)&&(strcmp(p0->code,b)==0)&&(p0->n<10))
			{
				printf("验证成功。请选择操作。\n");
				while(k==1)
				{
					printf("1.查询书目  2.借书  3.还书  4.修改密码  5.退出\n");
					scanf("%d",&m);
					switch(m)
					{
					case 1: system("CLS");Bookconsult();break; 
					case 2: 
						if((Borrow())==1)
						{
							++p0->n;
							save2(head);
							break;
						}
						else break;
					case 3: 
						if((Return())==1)
						{
							--p0->n;
							save2(head);
							break;
						}
						else break;
					case 4:
						resetcode();
						break;
					default: k=0;break;
					}
				}
				printf("操作完成,谢谢你对我们的支持!\n");break;
			}
			else p0=p0->next;
		}
	   if(p0==NULL) printf("对不起,你输入的用户名不存在或密码不正确。是否继续?'y'or'n'\n");
	   else printf("是否要继续?'y'or'n'\n");
       printf("输入:");
	   c=getchar();
	   scanf("%c",&c);
	   if(c=='y') {sign=1;k=1;i=0;}
	   else sign=0;
	}
}

		
	
                   
//非会员操作
void operate2()
{
	char a;
	printf("由于你现在还不是会员,所以你必须先注册成为会员才能继续操作。\n");
	printf("是否要注册为会员? 'y'or'n'\n你的选择是:");
    a=getchar();
	scanf("%c",&a);
	if(a=='y')
	{
		Addmember();
		printf("\n");
		printf("                  ****注册成功!现在你可以开始操作了。****");
        operate();
	}
	else printf("+++++++++++++++++++++++++++欢迎你再次使用我们的系统!++++++++++++++++++++++++++++\n");
}  


//修改会员密码
void resetcode()
{
    Member *head=NULL,*p0=NULL;
	char a[30],b[20],c[20],d[20],e[20];
	int i=0,j=0,k=0,m=0,sign=1,n=1;
	head=read2();
	printf("               请输入你的会员姓名:");
	scanf("%s",a);
	printf("\n");
	printf("               请入你的会员密码:");
	while((b[i]=getch())!=13)            //不带显示输入密码
	{
		if(b[i]==8)
		{
			if(i>0)
			{
				printf("\b \b");
				i--;
			}
		}
		else
		{
			i++;
		    printf("*");
		}
	}
	b[i]='\0';
	printf("\n");
	p0=head;
	while((p0!=NULL)&&(sign==1))
	{
		if((strcmp(p0->name,a)==0)&&(strcmp(p0->code,b)==0))
		{
			while((sign==1)&&(n<=3))
			{
				printf("验证密码,输入旧会员密码: "); 
				while((c[j]=getch())!=13)               //不带显示输入密码
				{
					if(c[j]==8)
					{
						if(j>0)
						{
							printf("\b \b");
							j--;
						}
					}
					else
					{
						j++;
						printf("*");
					}
				}
				c[j]='\0';
				printf("\n");
				printf("确认密码: "); 
				while((d[k]=getch())!=13)
				{
					if(d[k]==8)
					{
						if(k>0)
						{
							printf("\b \b");
							k--;
						}
					}
					else
					{
						k++;
						printf("*");
					}
				}
				d[k]='\0';
				printf("\n");
				if(strcmp(c,d)==0) 
				{
					printf("输入新密码:");
					while((e[m]=getch())!=13)               
					{
						if(e[m]==8)
						{
							if(m>0)
							{
								printf("\b \b");
								m--;
							}
						}
						else
						{
							m++;
							printf("*");
						}
					}
					e[m]='\0';
					printf("\n");
					strcpy(p0->code,e);
					print2(head);
					save2(head);
					printf("                   修改成功!\n");
					sign=0;
					break;
				}
				else 
				{
					printf("密码输入有误!\n");
					j=0;k=0;
					++n;
					continue;
				}
			}
		}
		else p0=p0->next;
	}
	if(p0==NULL) printf("你所输入的用户名不存在或者密码错误!\n");
}
	
	
//借书信息
void imformation()
{
	printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    printf("※             欢迎你使用我们的图书管理系统!以下是本系统的有关说明:           ※\n");	
	printf("※    本系统主要功能是进行图书的有关管理,其中分为管理员操作和学生操作。在管理※\n");
	printf("※员操作中,你可以进行图书信息的创建、插入、删除、查询;以及对会员信息的创建、※\n");
	printf("※插入、删除、查询。在学生操作中,分为会员操作和非会员操作。学生必须是会员才能※\n");
	printf("※进行有关图书的操作。会员对图书的操作主要有图书信息的查询、借书、还书和密码修※\n");
	printf("※改。在操作中主要是以阿拉伯数字来选择相应的菜单功能,在选择时以'y'表示 '是'  ※\n");
	printf("※以'n'表示'不是'。在你操作的时候就会有相应的操作提示。                       ※\n");
	printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
}
	

//主函数
main()
{
	int n,k=1;
	char a;
	printf("********************************************************************************\n");
	printf("\n\n");
    printf("                          欢迎进入我们的图书管理系统!                           \n");
	printf("\n\n");
	printf("********************************************************************************\n");
	while(k==1)
	{
	 printf("       请选择你的操作: 1.管理员操作  2.学生操作  3.系统信息  4.退出系统\n");
	 printf("********************************************************************************\n");
 	 printf("              你的选择是:");
	 scanf("%d",&n);
	 system("CLS");
	 switch(n)
	 {
	  case 1: manager();break;
	  case 2: printf("你是否为会员? 'y'or'n'\n");
		      a=getchar();
			  scanf("%c",&a);
			  printf("\n");
			  if(a=='y') operate();
			  else operate2();
			  k=0;
			  break;
	  case 3: imformation();break;
	  default: printf("+++++++++++++++++++++++++++欢迎你再次使用我们的系统!++++++++++++++++++++++++++++\n");k=0;break;
	 }
	}
	
}

⌨️ 快捷键说明

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