📄 mainclass.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 + -