📄 bookdata_.cpp
字号:
#include "bookData.h"
bool POPEDOM(int PopedomRequire);//权限验证函数
//类实现部分
//**********************************************************************************
//构造函数,初始化对象
bookData::bookData()
{
strcpy(ISBN,"\0");
strcpy(Title,"\0");
strcpy(Author,"\0");
strcpy(Publisher,"\0");
price = 0;
isNewBook = true;
Quantity_Lended = 0;
Quantity_On_Hand = 0;
}
//**********************************************************************************
//设置图书的所有属性
void bookData::set()
{
setTitle();
setISBN();
setAuthor();
setPub();
setDataAdded();
setQty_On_Hand();
// setQtyLend();
setPrice();
}
//**********************************************************************************
//有选择的更改图书的部分属性
void bookData::setForSelect()
{
for(;;)
{
cout<<setw(45)<<"a.更改书名:"<<endl<<setw(46)<<"b.更改ISBN号:"<<endl
<<setw(43)<<"c.更改作者"<<endl<<setw(47)<<"d.更改出版社:"<<endl
<<setw(47)<<"e.更改库存量:"<<endl //<<setw(50)<<"f.更改借出数量:"<<endl
<<setw(49)<<"f.更改书的价格:"<<endl<<setw(41)<<"g.退出:"<<endl;
char select;
select = getch();
switch(select)
{
case 'a': setTitle();break;
case 'b': setISBN();break;
case 'c': setAuthor();break;
case 'd': setPub();break;
case 'e': setQty_On_Hand();break;
// case 'f': setQtyLend();break;
case 'f': setPrice();break;
case 'g': return;
default: cout<<"输入有误!请重新输入:"<<endl;break;
}
}
}
//**********************************************************************************
//设置书名
void bookData::setTitle()
{
cout<<"请输入本书的书名:"<<endl;
cin>>Title;
// cout<<endl;
}
//**********************************************************************************
//设置ISBN号
void bookData::setISBN()
{
cout<<"请输入本书的ISBN号:"<<endl;
cin>>ISBN;
// cout<<endl;
}
//**********************************************************************************
//设置作者
void bookData::setAuthor()
{
cout<<"请输入本书的作者:"<<endl;
cin>>Author;
// cout<<endl;
}
//**********************************************************************************
//设置出版社
void bookData::setPub()
{
cout<<"请输入本书的出版社:"<<endl;
cin>>Publisher;
/// cout<<endl;
}
//**********************************************************************************
//设置进书日期
void bookData::setDataAdded()
{
Date_Added.set();
}
//**********************************************************************************
//设置图书类型
void bookData::setType()
{
if(Date_Added.getDates() > 360)
isNewBook = false;
else
isNewBook = true;
}
//**********************************************************************************
//设置超期罚款利率
void bookData::setInterestRate()
{
if(isNewBook)
InterestRate = 0.02;
else
InterestRate = 0.2;
}
//**********************************************************************************
//设置价格
void bookData::setPrice()
{
cout<<"请输入本书的价格:"<<endl;
cin>>price;
// cout<<endl;
}
//**********************************************************************************
//设置库存量
void bookData::setQty_On_Hand()
{
cout<<"请输入本书的库存量:"<<endl;
cin>>Quantity_On_Hand;
// cout<<endl;
}
//**********************************************************************************
//设置借出数量
void bookData::setQtyLend()
{
cout<<"请输入本书的借出数量:"<<endl;
cin>>Quantity_Lended;
}
//**********************************************************************************
//还书时的数量设置
void bookData::setQtyForCheck()
{
Quantity_On_Hand--;
Quantity_Lended++;
}
//**********************************************************************************
//借书时的数量设置
void bookData::setQtyForLend()
{
Quantity_On_Hand++;
Quantity_Lended--;
}
//**********************************************************************************
//将读者ID插入图书信息中,并检查该书是否还有库存,成功将返回TRUE,
//将setQtyLend()加1,setQty_On_Hand()减1;否则返回FALSE,
bool bookData::setForCheck(char readerID[])
{
if(Quantity_On_Hand ==0)
return false;
strcpy(ReaderID[Quantity_Lended],readerID);
setQtyForCheck();
return true;
}
//**********************************************************************************
//将读者ID从图书信息中删除,并将setQtyLend()加1,setQty_On_Hand()减1
void bookData::setForReturn(char readerID[])
{
for(int i=0;i < Quantity_Lended;i++)
if(strcmp(ReaderID[i],readerID) == 0)
{ //将读者ID从图书信息中删除
for(int k = i+1; k < Quantity_Lended;i++,k++)
strcpy(ReaderID[i],ReaderID[k]);
break;
}
setQtyForLend();
}
//**********************************************************************************
//得到类型
bool bookData::getType()
{
return isNewBook;
}
//**********************************************************************************
//得到书名
char *bookData::getTitle()
{
return Title;
}
//**********************************************************************************
//得到ISBN号
char *bookData::getISBN()
{
return ISBN;
}
//**********************************************************************************
//得到作者
char *bookData::getAuthor()
{
return Author;
}
//**********************************************************************************
//得到出版社
char *bookData::getPub()
{
return Publisher;
}
//**********************************************************************************
//得到进书日期
void bookData::getDateAdded()
{
cout<<Date_Added;
}
//**********************************************************************************
//得到借出数量
int bookData::getQtyLend()
{
return Quantity_Lended;
}
//**********************************************************************************
//得到库存量
int bookData::getQty_On_Hand()
{
return Quantity_On_Hand;
}
//**********************************************************************************
//得到价格
float bookData::getPrice()
{
return price;
}
//**********************************************************************************
//重载=
void bookData::operator = (const bookData & goal)
{
strcpy(Author,goal.Author);
strcpy(ISBN,goal.ISBN);
strcpy(Title,goal.Title);
strcpy(Publisher,goal.Publisher);
isNewBook = goal.isNewBook;
Date_Added = goal.Date_Added;
Quantity_On_Hand = goal.Quantity_On_Hand;
Quantity_Lended = goal.Quantity_Lended;
price = goal.price;
InterestRate = goal.InterestRate;
for(int k=0;k<goal.Quantity_Lended;k++)
strcpy(ReaderID[k],goal.ReaderID[k]);
return;
}
//**********************************************************************************
//重载>
bool bookData::operator > (const bookData & goal)
{
if(strcmp(ISBN,goal.ISBN) > 0)
return true;
else
return false;
}
//**********************************************************************************
//重载==
bool bookData::operator == (const char goal[])
{
if(strcmp(ISBN,goal) == 0)
return true;
else if(strcmp(Author,goal) == 0)
return true;
else if(strcmp(Publisher,goal) == 0)
return true;
else if(strcmp(Title,goal) == 0)
return true;
else
return false;
}
//**********************************************************************************
//重载输出流<<
ostream& operator<< ( ostream& os, bookData& goal )
{
os<<"图书ISBN号: "<<goal.ISBN<< " "<<"作者: "<<goal.Author<< " "
<<"书名: "<<goal.Title<< " "<<endl<< " "<<"出版社: "<<goal.Publisher;
os<< " "<<"进书日期: "<<goal.Date_Added<< " "<< "价格: "<<goal.price<< " ";
goal.setType();
if(goal.getType())
os<<"新书"<<" ";
else os<<"旧书"<<" ";
os<<endl<< " "<<"当前库存: "<<goal.Quantity_On_Hand<<"本 "<<"已借出: "<<goal.Quantity_Lended<<"本"<<" ";
if(goal.Quantity_On_Hand < 1)
os<<"此书书已全被借出!"<<" ";
else os<<"在馆可借"<<" ";
if(POPEDOM(2))//权限验证,通过返回TRUE,否则返回FALSE,此处级别要求为2
{
if(goal.Quantity_Lended > 0)
{
os<<endl<<"借书者ID号: "<<endl<<" ";
for(int k=0;k<goal.Quantity_Lended;k++)
os<<goal.ReaderID[k]<<" ";
}
}
return os;
}
//**********************************************************************************
//重载文件流<<
fstream& operator<< ( fstream & file, bookData & goal )
{
file.write((char*)&goal,sizeof(goal));
return file;
}
//**********************************************************************************
//重载文件流>>
bookData operator>> (fstream & file,bookData & goal )
{
file.read((char*)&goal,sizeof(goal));
return goal;
}
//**********************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -