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

📄 bookdata_.cpp

📁 图书管理系统
💻 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 + -