2021-09-18

C语言大作业——————图书馆管理系统

学校要求的C语言大作业。贴上代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
int main();

//system("mode con cols=100 lines=100");
//显示框大小控制函数
//cols:长  lines:宽
void color(const unsigned short textColor)
{
    if(textColor>=0 && textColor<=15)
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), textColor);
    else
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
//输出颜色控制
 //以登录号更改在馆信息 

typedef struct node1
{
	char id[20];
	char name[20];
	char key[20];
	struct node1* next;
}node1;
typedef struct node2
{
	char name[30];
	char writer[30];
	char classify[30];
	char publisher[30];
	char time[30];
	char price[30];
	char existence[20];
	struct node2* next;
}node2;
 int welcome3_2(node1* head1,node2* head2);
 change2(node2* head,char classify)
{
	node2* head1=head;
	while(head!=NULL)
	{
		head=head->next;
		if(strcmp(head->classify,&classify)==0)
		{
			strcpy(head->existence,"已外借");
			break; 
			
		}
		
		 
	}
	FILE *f=fopen("adminsitor.txt","w");
	fprintf(f,"%s",head->existence);
	fclose(f); 
}

 //以作者名更改在馆信息 
change1(node2* head,char writer)
{
	node2* head1=head;
	while(head!=NULL)
	{
		head=head->next;
		if(strcmp(head->writer,&writer)==0)
		{
			strcpy(head->existence,"已外借");
			break; 
			
		}
		
		 
	}
	FILE *f=fopen("adminsitor.txt","w");
	fprintf(f,"%s",head->existence);
	fclose(f); 
}
 //以书名更改在馆信息 
change(node2* head,char name)
{
	node2* head1=head;
	while(head!=NULL)
	{
		head=head->next;
		if(strcmp(head->name,&name)==0)
		{
			strcpy(head->existence,"已外借");
			break; 
			
		}
		
		 
	}
	FILE *f=fopen("adminsitor.txt","w");
	fprintf(f,"%s",head->existence);
	fclose(f); 
}
//归还图书更改在馆信息 
change3(node2* head,char classify)
{
	node2* head1=head;
	while(head!=NULL)
	{
		head=head->next;
		if(strcmp(head->classify,&classify)==0)
		{
			strcpy(head->existence,"在馆");
			break; 
			
		}
		
		 
	}
	FILE *f=fopen("adminsitor.txt","w");
	fprintf(f,"%s",head->existence);
	fclose(f); 
}
 //创建借阅者头节点 
 node1* creathead1()
{
	 node1* head=(node1*)malloc(sizeof(node1));
	head->next=NULL;
	return head;
}


//返回主菜单函数 
int  returnm(char signal)
{
  if(signal=='e')return 1;
  else return 0;	
 } 

//输出全体借阅者信息 
 printfleninfo(node1 *head)
{
 node1 *head1=head;
  while(head1!=NULL)
  {
  	head1=head1->next;
 	printf("%s %s %s\n",head1->id,head1->name,head1->key);
  } 

}

//输出图书信息
  printfbookinfo(node2 *head)
{
 node2 *head1=head;
  while(head1!=NULL)
  {
  	head1=head1->next;
 	printf("%s %s %s %s %s %s %s\n",head1->name,head1->writer,head1->classify,head1->publisher,head1->time,head1->price,head1->existence);
  } 

}

 //创建管理员头节点
 node2* creathead2()
{
	 node2* head=(node2*)malloc(sizeof(node2));
	head->next=NULL;
	return head;
 } 
 
 
 //打印全体借阅者信息 



//读取文件操作
 *readfile1(node1 *head)
{

	FILE *fpr=fopen("lender infomation.txt","r");
    node1 lender;   
    node1* head1=head;

	if(fpr==NULL)//测试文件是否存在 
	{
	
		printf("文件不存在!\n");
		//return 0;
	 } 
	else 
    {
    	
	 	while(fscanf(fpr,"%s %s %s",&lender.id,&lender.name,&lender.key)!=EOF)
		 {
	        
			
			node1* newnode1=(node1*)malloc(sizeof(node1));
	 	    *newnode1=lender;	
	 	    newnode1->next =head1->next;
	 		head1->next=newnode1;
			
		 }
	 }
	
	
}

//读取图书文件 
int readfile2(node2 *head)
{

	FILE *fpr=fopen("adminisitor.txt","r");
    node2 lender;   
    node2*  head1=head;
	if(fpr==NULL)//测试文件是否存在 
	{
	
		printf("文件不存在!\n");
		//return 0;
	 } 
	else 
    {
    	
	 	while(fscanf(fpr,"%s %s %s %s %s %s %s",&lender.name,&lender.writer,&lender.classify,&lender.publisher,&lender.time,&lender.price,&lender.existence)!=EOF)
		 {
	        
			//printf("%s %s %s\n",lender.,lender.name,lender.key);
		
			node2* newnode1=(node2*)malloc(sizeof(node2));
	 	    *newnode1=lender;	
	 	    newnode1->next =head1->next;
	 		head1->next=newnode1;
	 	}
	 }
	
	
}


//更改图书在馆信息!!!

 
  
//按登录号借阅图书
borrow1(node2* head1)
{
	node2* head=head1;
	node2* head2=head1;
	node2* head3=head1;
	printf("请输入借阅图书登录号!\n");
	char classify[30];
	scanf("%s",&classify);
	system("cls");
	int i=0;
	while(head->next!=NULL)
	{
		i++;
		//printf("%d\n",strcmp(head->classify,id)+1);
		head=head->next;
		if(strcmp(head->classify,classify)==0)
		{
			
			printf("%s %s %s %s %s %s %s\n",head->name,head->writer,head->classify,head->publisher,head->time,head->price,head->existence);
	        strcpy(head->existence,"已外借");
	        int p=0;
        	FILE *f=fopen("adminisitor.txt","wt+");
			while(head3->next!=NULL)
        	{
        		p++; 
			head3=head3->next;
            if(p==i)
            {
            	fprintf(f,"%s %s %s %s %s %s %s\n",head3->name,head3->writer,head3->classify,head3->publisher,head3->time,head3->price,head->existence);
			}
	        else 
			fprintf(f,"%s %s %s %s %s %s %s\n",head3->name,head3->writer,head3->classify,head3->publisher,head3->time,head3->price,head3->existence);
			}
			fclose(f);
			printf("亲爱的同学,您已经成功借阅本图书!"); 
			printf("请选择对应操作序号!\n");
		    printf("1.继续借阅图书\n");
		    printf("2.返回主菜单\n");
		    printf("3.退出本系统\n");
	 	    int i;
		    scanf("%d",&i);
		    system("cls");
		    switch(i)
		  {
		  	case 1:borrow1(head2);break;
		  	case 2:main();break;
		  	case 3:exit(0);break;
		  	
		  }
		  
		  
	  } 
			
		   	
		}
		if(i==0)
		{
				printf("亲爱的同学,系统未查询到该书籍信息,请重新输入登录号以归还图书!\n");
				borrow1(head2);
			
		}
	//	printf("%s %s %s %s %s %s %s\n",head->name,head->writer,head->classify,head->publisher,head->time,head->price,head->existence);
	}
  

 //归还图书                 、
 returnb(node2* head)
 {
 	node2* head1=head;
 	node2* head2=head;
 	node2* head3=head;
    printf("请输入归还图书的登录号:\n");
    char classify[20];
    scanf("%s",&classify);
    system("cls");
    int i=0;
    while(head!=NULL)
    {
    	i++;
    	head=head->next;
    
    	if(strcmp(head->classify,classify)==0)
    	{
          printf("亲爱的同学,您已经成功归还图书,期待您的下次借阅!\n");
         // system("cls");
		  strcpy(head->existence,"在馆");
		   int p=0;
        	FILE *f=fopen("adminisitor.txt","wt+");
			while(head3->next!=NULL)
        	{
        		p++; 
			head3=head3->next;
            if(p==i)
            {
            	//printf("%s\n",head->existence);
            	fprintf(f,"%s %s %s %s %s %s %s\n",head3->name,head3->writer,head3->classify,head3->publisher,head3->time,head3->price,head->existence);
			}
	        else 
			fprintf(f,"%s %s %s %s %s %s %s\n",head3->name,head3->writer,head3->classify,head3->publisher,head3->time,head3->price,head3->existence);
			}
			fclose(f);
		printf("1.借阅图书\n");
		printf("2.返回主菜单\n");
		printf("3.退出本系统\n");
		 int i;
		  scanf("%d",&i);
		  system("cls");
		  switch(i)
		  {
		  	case 1:borrow1(head2);break;
		  	case 2:main();break;
		  	case 3:exit(0);break;
		  	
		  }
		}
		else if(head->next==NULL)
		{
			printf("亲爱的同学,系统未查询到该书籍信息,请重新输入登录号以归还图书!\n");
			returnb(head2); 
		}
		
	}
  } 
  //按书名借阅图书,逻辑先按书名查询出图书,然后显示出图书信息,再提示是否借阅,借阅之后将该节点的在馆信息更改为 已经外借,若查询到图书在馆信息为已外借,提示借阅者该图书已借出
borrow(node2* head)
{
	printf("请输入借阅图书的书名:\n");
	char name[20];
	scanf("%s",&name);
	system("cls");
	int i=0,o=0;
	node2* head1=head;
	node2* head2=head; 
	node2* head3=head;
	while(head1!=NULL)
	{
	   i++;
		head1=head1->next;
		if(strcmp(head1->name,name)==0)
		{
			o++;
			printf("%s %s %s %s %s %s %s\n",head1->name,head1->writer,head1->classify,head1->publisher,head1->time,head1->price,head1->existence);
		    
		}
	  else if(head1->next==NULL&&i==0)
	  {
	  	printf("亲爱的同学,系统未查询到该书籍信息\n");
	  	borrow(head2); 
	  	
	  }
	  if(head1->next==NULL)
	  {
	  	break;
	  }
	}
    if(i>1)
	{
		printf("亲爱的同学,系统查询到本书目多次重复,请输入对应操作序号\n");
		printf("1.按登录号借阅图书\n");
		printf("2.返回主菜单\n");
		printf("3.退出本系统\n");
		int choice=0;
		scanf("%d",&choice);
		system("cls");
		switch(choice){
			case 1:borrow1(head2);break;
			case 2:main();break;
			case 3:exit(0);break;
		}
		 
	//
		
		
	 }
	 if(o==1)
	 {
	 	printf("亲爱的同学,您已成功借阅本图书!");
	 	strcpy(head1->existence,"已外借");
	 	int p=0;
        	FILE *f=fopen("adminisitor.txt","wt+");
			while(head3->next!=NULL)
        	{
        		p++; 
			head3=head3->next;
            if(p==i)
            {
            //	printf("%s\n",head->existence);
            	fprintf(f,"%s %s %s %s %s %s %s\n",head3->name,head3->writer,head3->classify,head3->publisher,head3->time,head3->price,head1->existence);
			}
	        else 
			fprintf(f,"%s %s %s %s %s %s %s\n",head3->name,head3->writer,head3->classify,head3->publisher,head3->time,head3->price,head3->existence);
			}
			fclose(f);
	 	printf("请选择对应操作序号!\n");
		 printf("1.继续借阅图书\n");
		 printf("2.返回主菜单\n");
		 printf("3.退出本系统");
		  int i;
		  scanf("%d",&i);
		  switch(i)
		  {
		  	case 1:borrow(head2);break;
		  	case 2:main();break;
		  	case 3:exit(0);break;
		  	
		  }
	 	
		  
	  } 
 }
 
 //按作者名查询信息 
 borrow2(node2* head)
 {

	printf("请输入借阅图书的作者:\n");
	char name[20];
	scanf("%s",&name);
	system("cls");
	int i=0,o=0;
	node2* head1=head;
	node2* head2=head; 
	node2* head3=head;
	while(head1!=NULL)
	{
		i++;
		head1=head1->next;
		if(strcmp(head1->writer,name)==0)
		{
		o++;
			printf("%s %s %s %s %s %s %s\n",head1->name,head1->writer,head1->classify,head1->publisher,head1->time,head1->price,head1->existence);
		    printf("亲爱的同学,您已成功借阅本图书!\n");
	        strcpy(head1->existence,"已外借");
	        int p=0;
        	FILE *f=fopen("adminisitor.txt","wt+");
			while(head3->next!=NULL)
        	{
        		p++; 
        		head3=head3->next;
        		//	printf("%s\n",head->existence);
			
            if(p==i)
            {
            	
                printf("%s\n",head->writer);
            	fprintf(f,"%s %s %s %s %s %s %s\n",head3->name,head3->writer,head3->classify,head3->publisher,head3->time,head3->price,head1->existence);
			}
	        else 
			fprintf(f,"%s %s %s %s %s %s %s\n",head3->name,head3->writer,head3->classify,head3->publisher,head3->time,head3->price,head3->existence);
			}
			fclose(f);
	 	    printf("请选择对应操作序号!\n");
		    printf("1.继续借阅图书\n");
		    printf("2.返回主菜单\n");
		    printf("3.退出本系统\n");
	 	    int c;
		  scanf("%d",&c);
		  system("cls");
		  switch(c)
		  {
		  	case 1:borrow2(head2);break;
		  	case 2:main();break;
		  	case 3:exit(0);break;
		  	
		  }
		}
	  if(head1->next==NULL&&o==0)
	  {
	  	printf("亲爱的同学,系统未查询到该书籍信息\n");
        borrow2(head2); 
	  	
	  }
	}
    if(o>1)
	{
		printf("亲爱的同学,系统查询到本书目多次重复,请输入对应操作序号\n");
		printf("1.按登录号借阅图书\n");
	     printf("2.返回主菜单\n");
		 printf("3.退出本系统\n");
	 	  int i;
		  scanf("%d",&i);
		  system("cls");
		  switch(i)
		  {
		  	case 1:borrow1(head2);break;
		  	case 2:main();break;
		  	case 3:exit(0);break;
		  	
		  }
	//
		
		
	 } 
 }
 	


 

//菜单一级界面
welcome1()
{
    color(4); printf("欢迎进入贵州大学图书管理系统!\n");
	color(7); printf("请选择您需要的服务:\n");
	color(7); printf("1.借阅者登录\n");
	color(7); printf("2.管理员登录\n"); 
	printf("3.退出本系统\n");
  
 } 
  //菜单三级界面,借阅者服务 
 welcome3_1(node1* head,node2* head1, char id[])
 {
  
 	printf("%s同学,欢迎进入贵州大学图书馆网上服务!\n请输入数字以选择以下服务\n",head->name);
 	printf("1.借阅图书————————按书名借阅\n");
 	printf("2.借阅图书————按图书登录号借阅\n");
 	printf("4.借阅图书———— 按图书作者名借阅\n");
 	printf("3.归还图书—————按图书登录号归还\n");
 	
 	int choice;
 	scanf("%d",&choice);
    system("cls");
    switch(choice)
    {
    	case 1:borrow(head1);//借阅图书按书名借阅 borrow();
		case 2:borrow1(head1);//按作者名查询
		case 3:borrow2(head1);//借阅图书按图书登录号借阅                 
		case 4:returnb(head1);//归还图书                 returnb(); 
	}
  }
 //菜单二级界面,借阅者登录。 
int welcome1_1(node1* head1,node2* head)
 {
 	node1* head3=head1;
 	node2* head4=head;
 	char id[20];
	char key[20];
 	printf("请输入借阅者身份证号以及密码,空格以隔开\n");
 	scanf("%s %s",&id,&key);
 	system("cls");
 	int i=0;
 	while(head1!=NULL)
 	{
 		head1=head1->next;
 	
 	    	if(strcmp(head1->id,id)==0&&strcmp(head1->key,key)==0)
 		{
 			i=1;
 	     	welcome3_1(head1,head,id); 
		 }
		 if(head1->next==NULL&&i==0)
		 {
		 	printf("登录失败!\n输入1以返回一级菜单!\n");
		 	int n;
		 	scanf("%d",&n);
			if(n==1) 
		    return 1;
		 }
		  
	 }
	 
 }
 //增加书目函数
 addbookinfo(node2* head)
 {
 	printf("请输入图书书名 作者 登录号 出版社 出版日期 在馆信息,用空格隔开\n");
 
 	node2 head1;
    scanf("%s %s %s %s %s %s %s",&head1.name,&head1.writer,&head1.classify,&head1.publisher,&head1.time,&head1.price,&head1.existence);
 	node2* head3=(node2*)malloc(sizeof(node2));      
 	*head3=head1;
	head3->next=head->next;
 	head->next=head3;
 FILE *f=fopen("adminisitor.txt","wt+");
 while(head->next!=NULL)
 	{
 		head=head->next;
 		fprintf(f,"%s %s %s %s %s %s %s\n",head->name,head->writer,head->classify,head->publisher,head->time,head->price,head->existence);
 		
	 }
	 fclose(f);
	 printf("图书已添加!\n"); 
	
	 printf("1.返回主菜单\n");  
	 printf("2.退出本系统\n");
	 int i=0;
	 scanf("%d",&i);
	 
	 switch(i)
	 {
	 case 1:main();break;
	 case 2: exit(0);
	  } 
	  
 	
 	
  } 
  
  //删除图书信息 
void  deleteinfo(node2* head2){
     printf("请输入图书登录号以删除图书信息\n");
     node2* head=head2;
     node2* head3=head2;

     char classify[30];
     scanf("%s",&classify);
     while(head2->next!=NULL)
     {
     	head=head2;
     	head2=head2->next;
		if(strcmp(head2->classify,classify)==0)
		{head->next=head2->next;
		printf("%s %s %s %s %s %s %s\n\n",head2->name,head2->writer,head2->classify,head2->publisher,head2->time,head2->price,head2->existence);
	}
		
	 }
	 FILE *f=fopen("adminisitor.txt","wt+");
	 while(head3->next!=NULL)
	 {
	 	head3=head3->next;
	 	fprintf(f,"%s %s %s %s %s %s %s\n",head3->name,head3->writer,head3->classify,head3->publisher,head3->time,head3->price,head3->existence);
		  
	 }
	 fclose(f);
	 printf("您已经删除该图书信息!\n");
	  printf("1.返回主菜单\n");  
	 printf("2.退出本系统\n");
	 int i=0;
	 scanf("%d",&i);
	 
	 switch(i)
	 {
	 case 1:main();break;
	 case 2: exit(0);
	  } 
	  
}
//修改图书类别名 
modifyinfo(node2* head2)
{
	node2* head=head2;
	char a[30];
	printf("请输入修改图书类别名!\n");
	scanf("%s",&a);
	int i=0,p=0;
	while(head2->next!=NULL)
	{
		i++;
		head2=head2->next;
		if(strcmp(head2->classify,a)==0)
		{
			printf("请输入修改图书类别号为:\n");
			scanf("%s",&a);
			strcpy(head2->classify,a);
			break;
			
		}
	 } 
	 system("cls");
	FILE *f=fopen("adminisitor.txt","wt+");
	while(head->next!=NULL)
	{
		p++;
		head=head->next;
		if(p==i)
		{
			fprintf(f,"%s %s %s %s %s %s %s\n",head->name,head->writer,head->classify,head->publisher,head->time,head->price,head2->existence);
		}
		else 
		fprintf(f,"%s %s %s %s %s %s %s\n",head->name,head->writer,head->classify,head->publisher,head->time,head->price,head->existence);
	
		
	}
	fclose(f);
	printf("您已成功修改图书登录号\n");
	 printf("1.返回主菜单\n");  
	 printf("2.退出本系统\n");
	 scanf("%d",&i);
	 
	 switch(i)
	 {
	 case 1:main();break;
	 case 2: exit(0);
	  } 
}
//增加借阅者信息 
addlenderinfo(node1* head)
{
    node1* head1=head;
    node1* head2=head;
	node1 lender; 
	printf("请输入借阅者信息\n");
	scanf("%s %s %s",&lender.id,&lender.name,&lender.key);
	node1* n=(node1*)malloc(sizeof(node1));
	*n=lender;
	n->next=head1->next;
	head1->next=n;
	FILE *p=fopen("lender infomation.txt","wt+");
	while(head2->next!=NULL)
	{
		head2=head2->next;
 		fprintf(p,"%s %s %s\n",head2->id,head2->name,head2->key);
	}
	fclose(p);
	system("cls");
	printf("您已添加借阅者信息\n");
	 printf("1.返回主菜单\n");  
	 printf("2.退出本系统\n");
	 int i=0;
	 scanf("%d",&i);
	 
	 switch(i)
	 {
	 case 1:main();break;
	 case 2: exit(0);
	  } 
}

//菜单三级界面,管理员界面 
int welcome3_2(node1* head1,node2* head2)
{
	printf("尊敬的管理员,欢迎进入贵州大学图书馆网上管理系统!\n请输入数字以选择一下管理项目\n");
	printf("1.增加书目\n");
	printf("2.删除书目\n");
	printf("3.修改书目类别名\n");
	printf("4.添加借阅学生信息\n");
	printf("5.返回上一级操作\n");
	int choice;
	scanf("%d",&choice);
	system("cls");
	switch(choice)
	{
		case 1:addbookinfo(head2);//增加书目函数
		case 2:deleteinfo(head2);//删除图书
		case 3:modifyinfo(head2);//修改图书类别名
		case 4:addlenderinfo(head1);//添加借阅学生信息
		case 5:main();//返回主菜单 
		
	}
 } 

 
 //管理员密钥验证 

//主函数 
int main()
{
	system("mode con cols=300 lines=140");
	int i=0;
  node1* head1=creathead1();
  node2* head2=creathead2();
  readfile2(head2); 
  readfile1(head1);
  L:
  welcome1(); 
  int choice=0;
  scanf("%d",&choice);
system("cls");
   	switch(choice)
   	{
   		case 1:
		   i=welcome1_1(head1,head2);
		   if(i!=0)
		   {
		   	system("cls");
   			goto L;
			}		
			break;
   		case 2:printf("请输入管理员登录密钥\n");
 	           int key;
 	           scanf("%d",&key);
  	           system("cls");
 	           if(key==666666)
 	           {
 	       	     welcome3_2(head1,head2);
	           }
		   	   else
			   {
		     	printf("输入管理员密钥错误,输入1返回主菜单!\n");
		   	    scanf("%d",&i);
		  	    system("cls");
		   	    goto L;
				   }
		   
		   case 3:exit(0);
		   break;  
	   }
}


两个相关的文件
adminisitor
《人生》 路遥 ewifsda 人民出版社 1982.02 50元 在馆
《数据结构》 严为民 sdffsd 人民出版社 1982.02 50元 在馆
《教父》 马里奥普佐 ewiqro 人民出版社 1982.02 50元 在馆
《数据结构》 陈越 fjasdwweoi 人民出版社 1982.02 50元 在馆
《挪威的森林》 村上春树 fdsakl 人民出版社 1982.02 50元 在馆
《穆斯林的葬礼》 霍达 itncf 人民出版社 1982.02 50元 在馆
《平凡的世界》 路遥 hdfjf 人民出版社 1982.02 50元 在馆
lender infomation
52212320000122201X 法外狂徒张三 wsfsdaunique123
52212317823213434 疾风剑豪托儿亚索 fskajfhjksr2313
12312231324324143 艾欧尼亚奈奈肠缩 fjsdkahfsfjkf89
24498321505438557 诺克萨斯小学生之手 JFKDASHH55
24498321505438557 诺克萨斯小学生之手 JFKDASHH55

把这两个文件以ANSI编码格式保存,分别命名为adminisitor 和 lender infomation,放到桌面上就可以运行程序了
在这里插入图片描述
在这里插入图片描述
借阅者信息例子:24498321505438557 诺克萨斯小学生之手 JFKDASHH55,第一个数据是id,最后一个是密码。
在这里插入图片描述
管理员密码是666666;
分别有以下功能:

借阅者端:

在这里插入图片描述

管理员端:

在这里插入图片描述
涉及到的操作就是单链表的增删查改,然后加了个登录(遍历加判断)小装一下,没有看网上的教程自己动手写的,代码写得有点难以维护(小声),很多地方可以函数互相调用节省代码量,由于我是先从增删查改函数开始写不是从主函数开始写的,很冗余,仅仅作为参考看看就行了啊,别太认真,下次一定从主函数开始架构。(老师的目的就是让我么们体验一下写程序的感觉,顺便预习一下数据结构的链表,我感觉效果达到了啊哈哈哈。)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅得不谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值