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

📄 图书借阅管理系统.cpp

📁 这是一个C++编写的图书馆的管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				return 1;
			}
		cout<<"输入性别:(男:m,女:f)"<<endl;   //男m,女f
		cin>>p->sex;
		cout<<"输入会员类型:(1:本科生;2:研究生;3:教师;4:管理员;)"<<endl;
		cin>>p->style;
		if(p->style==1) max=MAX1;
		else if(p->style==2) max=MAX2;
		else if(p->style==3) max=MAX3;
		else if(p->style==4) max=MAX4;
		for(int i=0;i<=max;i++)
			p->t[i].num=0;
		p->max=0;                   //借阅数目,初始为0
		p->yes=0;                   //0表示没有借书
		p->next=NULL;
		L->next=p;
		q=p;
		++k;
		cout<<endl;
	}
	else
	{
		q=L;
		while(q->next!=NULL)
			q=q->next;
		p->num=1;
		p->next=NULL;
	}
	while(p->num!=0)                   //以会员学号作为判断链表是否结束
	{
		p=(Member *)malloc(sizeof(Member));
		if(!p) exit(1);
		cout<<"编号:"<<endl;
		cin>>p->num;
		if(p->num==0)                  //退出"增加会员"
		{
			cout<<"              共计"<<k<<"名会员入会!"<<endl;
			break;
		}
		cout<<"输入姓名:"<<endl;
		cin>>p->name;
		for(s=L->next;s!=NULL;s=s->next)
			if(s->num==p->num)
			{
				cout<<"同一会员不能重复注册!"<<endl;
				return 1;
			}
		cout<<"输入性别:(男:m,女:f)"<<endl;      //男m,女f
		cin>>p->sex;
		for(int i=0;i<MAX;i++)
			p->t[i].num=0;
		cout<<"输入会员类型:(1:本科生;2:研究生;3:教师;4:管理员;)"<<endl;
		cin>>p->style;
		if(p->style==1) max=MAX1;
		else if(p->style==2) max=MAX2;
		else if(p->style==3) max=MAX3;
		else if(p->style==4) max=MAX4;
		for(i=0;i<=max;i++)
			p->t[i].num=0;
		p->max=0;                      //借阅数目,初始为0
		p->yes=0;                      //0表示没有借书
		p->next=NULL;
		q->next=p;
		q=p;
		++k;
		cout<<endl;
	}
	return 1;
}



//查询会员
int Search_MemberName(MemberList &L)            //按姓名查询
{
	Member *p;
	p=L->next;
	char n[20];
	int flag=0;
	cout<<"输入要查询的会员姓名:";
	cin>>n;
	for(;p!=NULL;p=p->next)
	{
		if(strcmp(p->name,n)==0)
		{
			if(flag==0)
				cout<<endl<<"姓名         编号        性别         类型        是否借书"<<endl;
			cout<<p->name<<"  "<<setw(11)<<p->num;
			if(p->sex=='m')
				cout<<setw(13)<<"男"<<"      ";
			else if(p->sex=='f')
				cout<<setw(13)<<"女"<<"      ";
			if(p->style==1) 
				cout<<setw(10)<<"本科生"<<" ";
			else if(p->style==2)
				cout<<setw(10)<<"研究生"<<" ";
			else if(p->style==3)
				cout<<setw(10)<<"教师"<<" ";
			else if(p->style==4)
				cout<<setw(10)<<"管理员"<<" ";
			if(p->yes==1)
				cout<<setw(10)<<"是"<<endl;
			else
				cout<<setw(10)<<"否"<<endl;
			flag=1;
			continue;
		}
	}
	if(p==NULL&&flag==0)
		cout<<"没有相关信息!"<<endl;
	return 1;
}
int Search_MemberNum(MemberList &L)             //按编号查询
{
	Member *p;
	p=L->next;
	long n;
	int flag=0;
	cout<<"输入要查询的会员编号:";
	cin>>n;
	for(;p!=NULL;p=p->next)
	{
		if(p->num==n)
		{
			if(flag==0)
				cout<<endl<<"姓名         编号        性别         类型        是否借书"<<endl;			cout<<p->name<<"  "<<setw(11)<<p->num;
			if(p->sex=='m')
				cout<<setw(13)<<"男"<<"      ";
			else if(p->sex=='f')
				cout<<setw(13)<<"女"<<"      ";
			if(p->style==1) 
				cout<<setw(10)<<"本科生"<<" ";
			else if(p->style==2)
				cout<<setw(10)<<"研究生"<<" ";
			else if(p->style==3)
				cout<<setw(10)<<"教师"<<" ";
			else if(p->style==4)
				cout<<setw(10)<<"管理员"<<" ";
			if(p->yes==1)
				cout<<setw(10)<<"是"<<endl;
			else
				cout<<setw(10)<<"否"<<endl;
			flag=1;
			continue;
		}
	}
	if(p==NULL&&flag==0)
		cout<<"没有相关信息!"<<endl;
	return 1;
}
int Search_MemberSex(MemberList &L)      //按性别查询
{
	Member *p;
	p=L->next;
	int flag=0;
	char n;
	cout<<"输入要查询的会员性别:(男:m,女:f)";
	cin>>n;
	for(;p!=NULL;p=p->next)
	{
		if(p->sex==n)
		{
			if(flag==0)
				cout<<endl<<"姓名         编号        性别         类型        是否借书"<<endl;
			cout<<p->name<<"  "<<setw(11)<<p->num;
			if(p->sex=='m')
				cout<<setw(13)<<"男"<<"      ";
			else if(p->sex=='f')
				cout<<setw(13)<<"女"<<"      ";
			if(p->style==1) 
				cout<<setw(10)<<"本科生"<<" ";
			else if(p->style==2)
				cout<<setw(10)<<"研究生"<<" ";
			else if(p->style==3)
				cout<<setw(10)<<"教师"<<" ";
			else if(p->style==4)
				cout<<setw(10)<<"管理员"<<" ";
			if(p->yes==1)
				cout<<setw(10)<<"是"<<endl;
			else
				cout<<setw(10)<<"否"<<endl;
			flag=1;
			continue;
		}
	}
	if(p==NULL&&flag==0)
		cout<<"没有相关信息!"<<endl;
	return 1;
}
int Search_AllM(MemberList &L)         //查询所有会员信息
{
	Member *p;
	int i=0,flag=0;
	p=L->next;
	for(;p!=NULL;p=p->next)
	{
		if(flag==0)
			cout<<endl<<"姓名         编号        性别         类型        是否借书"<<endl;
		cout<<p->name<<"  "<<setw(11)<<p->num;
		if(p->sex=='m')
			cout<<setw(13)<<"男"<<"      ";
		else if(p->sex=='f')
			cout<<setw(13)<<"女"<<"      ";
		if(p->style==1) 
			cout<<setw(10)<<"本科生"<<" ";
		else if(p->style==2)
			cout<<setw(10)<<"研究生"<<" ";
		else if(p->style==3)
			cout<<setw(10)<<"教师"<<" ";
		else if(p->style==4)
			cout<<setw(10)<<"管理员"<<" ";
		if(p->yes==1)
			cout<<setw(10)<<"是"<<endl;
		else
			cout<<setw(10)<<"否"<<endl;
		flag=1;
		i++;
	}
	cout<<"                                               共计"<<i<<"个会员。"<<endl;
	return 1;
}
int MemberSearch(MemberList &L)
{
	int m;
	while(m!=0)
	{
		cout<<endl<<"                              会员查询"<<endl<<endl;
		cout<<"              ******************************************"<<endl;
		cout<<"              *                                        *"<<endl;
		cout<<"              *  1. 按姓名查询          2. 按编号查询  *"<<endl;
		cout<<"              *                                        *"<<endl;
		cout<<"              *  3. 按性别查询          0. 退出        *"<<endl;
		cout<<"              *                                        *"<<endl;
		cout<<"              *  4. 查询所有会员信息                   *"<<endl;
		cout<<"              *                                        *"<<endl;
		cout<<"              ******************************************"<<endl;
		cout<<"                             请选择(0--4):";
		cin>>m;
		switch(m)
		{
			case 1:system("cls"); Search_MemberName(L); break;        //按姓名查询 
			case 2:system("cls"); Search_MemberNum(L); break;         //按编号查询
			case 3:system("cls"); Search_MemberSex(L); break;         //按性别查询
			case 4:system("cls"); Search_AllM(L);break;               //查询所有会员信息
			case 0:system("cls"); break;                              //退出
		}
	}
	return 1;
}




//删除会员
int MemberDel(MemberList &L)                       //以会员编号作为主键进行删除
{
	Member *p;
	long n;
	int flag=0;
	p=L;
	cout<<"输入要删除的会员的编号:"<<endl;
	cin>>n;
	for(;p!=NULL;p=p->next)
	{
		if(p->next!=NULL&&p->next->num==n)
		{
			if(p->next->yes==1)
			{
				cout<<"当前会员借了书,不能删除!"<<endl;
				return 1;
			}
			p->next=p->next->next;            //删除语句
			cout<<"                              成功删除!"<<endl;
			flag=1;                           //成功删除标记
			break;
		}
	}
	if(p==NULL&&flag==0)
		cout<<"                               删除不成功!"<<endl;           //已经被删除或没有这个会员
	return 1;
}




//借书信息
int BorrowInfo(MemberList &L)
{
	Member *p;
	int j,flag=0,max,k=0;
	long n;
	cout<<"当前会员名单:"<<endl;
	Search_AllM(L);
	cout<<"输入要查询的会员编号:"<<endl;
	cin>>n;
	for(p=L;p!=NULL;p=p->next)
	{
		if(p->num==n&&p->yes==1)
		{
			if(p->style==1) max=MAX1;
			else if(p->style==2) max=MAX2;
			else if(p->style==3) max=MAX3;
			else if(p->style==4) max=MAX4;
			cout<<"                    借书详细情况"<<endl<<endl;
			for(j=1;j<=max;j++)
			{
				if(p->t[j].num!=0)
				{
					k++;
					if(flag==0)
						cout<<"本数"<<setw(15)<<"编号"<<setw(15)<<"借书时间"<<setw(15)<<"到期时间"<<endl;
					printf("  %d\t\t%d\t  ",k,p->t[j].num);
					printf("%d-%d-%d      ",p->t[j].time.year,p->t[j].time.month,p->t[j].time.day);
					printf("%d-%d-%d\n",p->t[j].borrowtime.year,p->t[j].borrowtime.month,p->t[j].borrowtime.day);
					flag=1;
				}
			}
		}
		else if(p->num==n&&p->yes==0)
			cout<<"                    无借书记录!"<<endl;
	}
	return 1;
}



//到期书催还
int LimitTimeInfo(BookList &H,MemberList &L)
{
	struct Time limittime;
	Book *p;
	Member *q;
	int flag=0;
	time_t timer=time(0);//调用time()函数获取当前时间
	struct tm *ptrtime=localtime(&timer);//调用localtime()函数将获得的系统时间转化为指向struct tm的指针指向的结构体
	limittime.year=1900+ptrtime->tm_year;
	limittime.month=1+ptrtime->tm_mon;
	limittime.day=ptrtime->tm_mday;
	for(p=H->next;p!=NULL;p=p->next)
	{
		if(p->yes==0)
		{
			for(q=L->next;q!=NULL;q=q->next)
			if(p->membernum==q->num) break;
			for(int i=1;i<=q->max;i++)
				if(q->t[i].num==p->num) break;
			if(flag==0)
				cout<<"书号      "<<setw(10)<<"借书人编号     "<<setw(10)<<"到期信息"<<endl;
			flag=1;
			if(limittime.year>q->t[i].borrowtime.year)
			{
				cout<<p->num<<"          "<<p->membernum<<"            ";
				cout<<"已经超期,尽快还书!"<<endl;
			}
			else if(limittime.year==q->t[i].borrowtime.year)
			{
				if(limittime.month>q->t[i].borrowtime.month)
				{
					cout<<p->num<<"          "<<p->membernum<<"            ";
					cout<<"已经超期,尽快还书!"<<endl;
				}
				else if(limittime.month==q->t[i].borrowtime.month)
				{
					if(limittime.day>q->t[i].borrowtime.day)
					{
						cout<<p->num<<"          "<<p->membernum<<"            ";
						cout<<"已经超期,尽快还书!"<<endl;
					}
				}	
			}
		}
	}
	return 1;
}



Book *H;               //图书链表
Member *L;             //会员链表



//主函数
void main()
{
	FILE *fpb1,*fpb2,*fpm1,*fpm2;                           //文件指针
	Book *p1,*p2,*s1;
	Member *q1,*q2,*s2;
	H=Init_B();
	L=Init_M();
	fpb1=fopen("book.txt","rb");               //读方式打开图书文件
	if(fpb1!=NULL)
	{
		p1=(Book *)malloc(sizeof(Book));
		if(!p1) exit(1);
		p1->next=NULL;
		while(fread(p1,sizeof(Book),1,fpb1)==1)
		{
			if(H->next==NULL)
			{
				H->next=p1;
				s1=p1;
			}
			else
			{
				s1->next=p1;
				s1=p1;
			}
			p1=(Book *)malloc(sizeof(Book));
			if(!p1) exit(1);
			p1->next=NULL;
		}
	}
	fpm1=fopen("member.txt","rb");             //读方式打开会员文件
	if(fpm1!=NULL)                             
	{
		q1=(Member *)malloc(sizeof(Member));
		if(!q1) exit(1);
		q1->next=NULL;
		while(fread(q1,sizeof(Member),1,fpm1)==1)
		{
			if(L->next==NULL)
			{
				L->next=q1;
				s2=q1;
			}
			else
			{
				s2->next=q1;
				s2=q1;
			}
			q1=(Member *)malloc(sizeof(Member));
			if(!q1) exit(1);
			q1->next=NULL;
		}
	}
	int m,n;
	while(m!=0)
	{
		cout<<endl<<"                           图书借阅管理系统"<<endl<<endl;
		cout<<"              ******************************************"<<endl;
		cout<<"              *                                        *"<<endl;
		cout<<"              *  1. 图书管理              2. 会员管理  *"<<endl;
		cout<<"              *                                        *"<<endl;
		cout<<"              *  0. 退出系统                           *"<<endl;
		cout<<"              *                                        *"<<endl;
		cout<<"              ******************************************"<<endl;
		cout<<"                             请选择(0--2):";
		cin>>m;
		if(m==1)
		{
			system("cls");                                         //清屏
			cout<<endl<<"                               图书管理"<<endl<<endl;
			cout<<"              ******************************************"<<endl;
			cout<<"              *                                        *"<<endl;
			cout<<"              *  1. 增加图书              2. 查询图书  *"<<endl;
			cout<<"              *                                        *"<<endl;
			cout<<"              *  3. 删除图书              4. 图书借阅  *"<<endl;
			cout<<"              *                                        *"<<endl;
			cout<<"              *  5. 还书                  0. 退出      *"<<endl;
			cout<<"              *                                        *"<<endl;
			cout<<"              ******************************************"<<endl;
			cout<<"                         请选择(0--5):";
			cin>>n;
			switch(n)
			{
				case 1:system("cls"); BookAdd(H); break;           //增加图书
				case 2:system("cls"); BookSearch(H); break;        //查询图书
				case 3:system("cls"); BookDel(H); break;           //删除图书
				case 4:system("cls"); BookBorrow(H,L); break;      //图书借阅
				case 5:system("cls"); BookReturn(H,L); break;      //还书
				case 0:system("cls"); break;                       //退出图书管理,返回上一层菜单
			}
		}
		else if(m==2)
		{
			system("cls");                                         //清屏
			cout<<endl<<"                               会员管理"<<endl<<endl;
			cout<<"              ******************************************"<<endl;
			cout<<"              *                                        *"<<endl;
			cout<<"              *  1. 增加会员              2. 查询会员  *"<<endl;
			cout<<"              *                                        *"<<endl;
			cout<<"              *  3. 删除会员              4. 借书信息  *"<<endl;
			cout<<"              *                                        *"<<endl;
			cout<<"              *  5. 到期书催还            0. 退出      *"<<endl;
			cout<<"              *                                        *"<<endl;
			cout<<"              ******************************************"<<endl;
			cout<<"                         请选择(0--5):";
			cin>>n;
			switch(n)
			{
				case 1:system("cls"); MemberAdd(L); break;          //增加会员
				case 2:system("cls"); MemberSearch(L); break;       //查询会员
				case 3:system("cls"); MemberDel(L); break;          //删除会员
				case 4:system("cls"); BorrowInfo(L); break;         //借书信息
				case 5:system("cls"); LimitTimeInfo(H,L); break;    //到期书催还
				case 0:system("cls"); break;                        //退出会员管理,返回上一层菜单
			}
		}
		else if(m==0)
		{	
			cout<<endl<<"                         感谢您使用本系统,再见!"<<endl;
			fpb2=fopen("book.txt","wb");
			for(p2=H->next;p2!=NULL;p2=p2->next)
				fwrite(p2,sizeof(Book),1,fpb2);
			fclose(fpb2);
			fpm2=fopen("member.txt","wb");
			for(q2=L->next;q2!=NULL;q2=q2->next)
				fwrite(q2,sizeof(Member),1,fpm2);
			fclose(fpm2);
			exit(0);
		}
	}
} 

⌨️ 快捷键说明

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