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

📄 mainclass.cpp

📁 用MFC写的图书信息管理系统
💻 CPP
字号:
#include "stdafx.h"
#include"mainclass.h"

char *Reader::getname()
{
	return name;
}//获取读者名

int* Reader::getborbook()
{
	return borbook;
}
int Reader::gettag()
{
	return tag;
}//获取删除标记

int Reader::getno()
{
	return no;
}//获取读者号

void Reader::setname (char na[])//设置读者名
{
		strcpy (name,na);
}

void Reader::delreader()
{
	tag=1;
}//设置删除标记1

void Reader::addreader (int n,char *na)//增增读者
{
		tag=0;
		no=n;
		strcpy(name,na);
		for (int i=0;i<Maxbor;i++)
			borbook[i]=0;
}

BOOL Reader::ishasbook()
{
	BOOL  hasbook=false;
	for(int i=0;i<Maxbor;i++)
	{
		if(borbook[i]!=0)
		{
			hasbook=true;
			break;
		}
	}
	return hasbook;
}

int Reader::borrowbook(int bookid)//借书操作
{
		int k=0;
		for(int i=0;i<Maxbor;i++)
		{
			if (borbook[i]==0)
			{
				borbook[i]=bookid;
				k++;
				break;
			}
		}
		return k;

}

int Reader::retbook(int bookid)//还书操作
{
		for(int i=0;i<Maxbor;i++)
		{
			if(borbook[i]==bookid)
			{
				borbook[i]=0;
				return 1;
			}
		}
		return 0;
}






//图书类
char *Book::getname() 
{
	return name ;
}//

int Book::getno() 
{
	return no;
}//
	
int Book::gettag()
{
	return tag;
}//

int Book::getonshelf()
{
	return onshelf;
}

void Book::setname(char na[])//
{
	strcpy(name,na);
}

void Book::delbook()
{
	tag=1;
}//删除图书

void Book::addbook(int n,char *na)// 加书操作
{
		tag=0;
		no=n;
		strcpy(name,na);
		onshelf=1;
}

int Book::borrowbook()//借书操作
{
	if (onshelf==1)
	{
		onshelf=0;
		return 1;
	}
	return 0;
}


void Book::retbook()//还书操作
{
		onshelf=1;
}



//读者信息库
RDatabase::RDatabase()
{
		top=0;
		fstream file;
		file.open("reader.txt",ios::in|ios::binary);//从磁盘的reader.txt文件中读取读者信息
		while(1)
		{
			if(file.read((char *)&read[top],sizeof(read[top])))
				top++;
			else
				break;
		}
		file.close();
}

int RDatabase::gettop()
{
	return top;
}


BOOL RDatabase::noreader()
{
	BOOL noread=TRUE;
	for(int i=0;i<top;i++)
	{
		if(read[i].gettag()==0)
		{
			noread=FALSE;
			break;
		}
	}
	return noread;
}
Reader *RDatabase::getreader(int index)
{
	if(read[index].gettag()==0)
		return read+index;
	return NULL;
}

int RDatabase::addreader(int n,char *na)//添加读者
{
		Reader *p=query(n);
		if(p==NULL)
		{
			read[top].addreader(n,na);
			top++;
			return 1;
		}
		return 0;
}


Reader * RDatabase::query (int readerid)
{
		for(int i=0;i<top;i++)
		if(read[i].getno()==readerid&&read[i].gettag()==0)
		{
			return &read[i];				
		}
		return NULL;
}


RDatabase::~RDatabase()//将读者信息写入reader.txt
{
	    fstream file;
		file.open("reader.txt",ios::out|ios::binary);
		TRACE("top:%d\n",top);
		for(int i=0;i<top;i++)
			file.write((char *)&read[i],sizeof(read[i]));
		file.close();

}


//图书库管理类

BDatabase::BDatabase()//构造函数
{
		top=0;
		fstream file;
		file.open("book.txt",ios::in|ios::binary);
		while(1)
		{
			if(file.read((char*)&book[top],sizeof(book[top])))
				top++;
			else
				break;
		}
		file.close();
}

int BDatabase::addbook(int n,char *na)// 添加图书,加前先查找
{
		Book *p=query(n);
		if (p==NULL)
		{
			book[top].addbook(n,na);
			top++;
			return 1;
		}
		return 0;
}

int BDatabase::gettop()
{
	return top;
}

Book *BDatabase::getbook(int index)
{
	if(book[index].gettag()==0)
		return book+index;
	return NULL;
}

BOOL BDatabase::nobook()
{
	BOOL nobook=TRUE;
	for(int i=0;i<top;i++)
	{
		if(book[i].gettag()==0)
		{
			nobook=FALSE;
			break;
		}
	}
	return nobook;
}


Book * BDatabase::query(int bookid)//查找图书
{
	for(int i=0;i<top;i++)
		if (book[i].getno()==bookid&&book[i].gettag()==0)
			return &book[i];
	return NULL;
}


BDatabase::~BDatabase()//析构函数,将book[i]写入文件
{
	fstream file("book.txt",ios::out|ios::binary);
	for (int i=0;i<top;i++)
		file.write((char *)&book[i],sizeof(book[i]));
	file.close();
}




⌨️ 快捷键说明

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