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

📄 readerinfo_.cpp

📁 图书管理系统
💻 CPP
字号:
#include "readerInfo.h"

bool POPEDOM(int PopedomRequire);//权限验证函数
//类实现部分
//**********************************************************************************
//构造函数,初始化对象
readerInfo::readerInfo()
{
	strcpy(ID,"\0");
	strcpy(name,"\0");
	strcpy(sex,"\0");
	strcpy(type,"\0");
	strcpy(phone,"\0");
	strcpy(address,"\0");
	newBook_On_Hand = 0;			
	oldBook_On_Hand = 0;
	dept = 0;
	newBookCount = 1;
	oldBookCount = 6;
}
//**********************************************************************************
//设置一个全新的读者信息
void readerInfo::set()
{	
	setID();			//有好多是不适合在这儿用的,有的以后还要加上去
	setName();
	setSex();
	setType();
	setDept();					//可能要拿掉或更改							
//	setBookCount();		//可能要拿掉或更改
	setPhone();
	setAddress();
}
//**********************************************************************************
//有选择的更改读者信息
void readerInfo::setForSelect()
{
	for(;;)
	{
		cout<<setw(48)<<"a.更改读者名:"<<endl<<setw(45)<<"b.更改ID号:"<<endl
			<<setw(44)<<"c.更改性别"<<endl<<setw(46)<<"d.更改类型:"<<endl	
			<<setw(46)<<"e.更改欠款:"<<endl<<setw(50)<<setw(50)<<"f.更改电话号码:"
			<<endl<<setw(46)<<"g.更改地址:"<<endl<<setw(42)<<"h.退出:"<<endl;			
		char select;
		select = getch();
		switch(select)
		{
		case 'a':	setName();break;
		case 'b':	setID();break;
		case 'c':	setSex();break;
		case 'd':	setType();break;	//更改了类型就更改了借书的权限
		case 'e':	setDept();break;
		case 'f':	setPhone();break;
		case 'g':	setAddress();break;
		case 'h':   return;
		default:	cout<<"输入有误!请重新输入:"<<endl;break;
		}		
	}

}
//**********************************************************************************
//将图书ISBN号插入读者信息中,并将根据图书类型
//判断在读者newBookCount或oldBookCount上加1;
void readerInfo::setForCheck(char BOOKISBN[],bool ISNEWBOOK)
{
	strcpy(BookISBN[newBook_On_Hand+oldBook_On_Hand],BOOKISBN);

	if(ISNEWBOOK)
		newBook_On_Hand++;				//目前手上所借新书数
	else oldBook_On_Hand++;				//目前手上所借旧书数
}
//**********************************************************************************
//将图书ISBN号从读者信息中删除,
//并将根据图书类型判断在读者newBookCount或oldBookCount上减1;
void readerInfo::setForReturn(char BOOKISBN[],bool ISNEWBOOK)
{
	for(int i=0;i < newBook_On_Hand+oldBook_On_Hand;i++)
		if(strcmp(BookISBN[i],BOOKISBN) == 0)
		{						//将图书ISBN号从读者信息中删除
			for(int k = i+1; k < newBook_On_Hand+oldBook_On_Hand;i++,k++)
				strcpy(BookISBN[i],BookISBN[k]);
			break;
		}

	if(ISNEWBOOK)
		newBook_On_Hand--;				//目前手上所借新书数
	else oldBook_On_Hand--;				//目前手上所借旧书数
}
//**********************************************************************************
//把dept置0
void readerInfo::setForRequital()
{
	dept = 0;
}
//**********************************************************************************
//设置读者ID号
void readerInfo::setID()
{
	cout<<"请输入读者ID:"<<endl;
	cin>>ID;
//	cout<<endl;	
}
//**********************************************************************************
//设置读者姓名 	
void readerInfo::setName()
{
	cout<<"请输入读者姓名:"<<endl;
	cin>>name;
//	cout<<endl;	
}
//**********************************************************************************
//设置读者性别
void readerInfo::setSex()
{
	cout<<"请输入读者性别:(男 女)"<<endl;
//	cin.ignore();					
	cin>>sex;
//	cout<<endl;	
}
//**********************************************************************************
//设置读者类型:本科生 研究生 教师
void readerInfo::setType()
{
	cout<<"请输入读者类型:(本科生 研究生 教师)"<<endl;	
	cin>>type;
	setNewBookCount();				//更改了类型就更改了借书的权限
	setOldBookCount();
}	
//**********************************************************************************
//设置目前手上所借新书数
void readerInfo::setNewBookCount()
{
	if(strcmp(type,"本科生") ==0)
		newBookCount = 1;
	if(strcmp(type,"研究生") ==0)
		newBookCount = 2;
	if(strcmp(type,"教师") ==0)
		newBookCount = 3;
}
//**********************************************************************************
//设置目前手上所借新书数
void readerInfo::setOldBookCount()
{
	if(strcmp(type,"本科生") ==0)
		oldBookCount = 6;
	if(strcmp(type,"研究生") ==0)
		oldBookCount = 6;
	if(strcmp(type,"教师") ==0)
		oldBookCount = 8;
}
//**********************************************************************************
//设置电话号码
void readerInfo::setPhone()
{
	cout<<"请输入读者电话:"<<endl;
	cin>>phone;
//	cout<<endl;	
}
//**********************************************************************************
//设置地址
void readerInfo::setAddress()
{
	cout<<"请输入读者的地址:"<<endl;
	cin>>address;
//	cout<<endl;	
}
//**********************************************************************************
//设置欠款	
void readerInfo::setDept()			
{
	cout<<"请输入读者欠款:"<<endl;
	cin>>dept;
//	cout<<endl;	
}				
//**********************************************************************************
//重载=
void readerInfo::operator = (const readerInfo &goal)
{
	strcpy(name,goal.name);	
	strcpy(ID,goal.ID);
	strcpy(sex,goal.sex);
	strcpy(type,goal.type);
	strcpy(phone,goal.phone);
	dept = goal.dept;
	strcpy(address,goal.address);
	newBook_On_Hand = goal.newBook_On_Hand;
	oldBook_On_Hand = goal.oldBook_On_Hand;
	newBookCount = goal.newBookCount;
	oldBookCount = goal.oldBookCount;
//	bookCount = goal.bookCount;
	for(int k=0;k < newBook_On_Hand+oldBook_On_Hand;k++)
		strcpy(BookISBN[k],goal.BookISBN[k]);
}
//**********************************************************************************
//重载>
bool readerInfo::operator > (const readerInfo &goal)
{
	if(strcmp(ID,goal.ID) > 0)
		return true;
	else 
		return false;
}
//**********************************************************************************
//重载==
bool readerInfo::operator == (const char goal[])
{
	if(strcmp(ID,goal) == 0)
		return true;
	else if(strcmp(name,goal) == 0)
		return true;
	else if(strcmp(phone,goal) == 0)
		return true;
	else if(strcmp(address,goal) == 0)
		return true;
	else 
		return false;

}
//**********************************************************************************
//重载输出流<<	
ostream& operator<< ( ostream& os, readerInfo& goal )
{
	os<<"读者ID:  "<<goal.ID<< "    "<<"姓名:   "<<goal.name<< "    "
	  <<"性别:   "<<goal.sex<< "    "<< "类型:   "<<goal.type<<endl<< "      "
	  << "已借新书:   "<<goal.newBook_On_Hand<< "    "<<"已借旧书:  "<<goal.oldBook_On_Hand<< "    "
	  << "欠款:   "<<goal.dept<< "元"<< "    "<< "电话:   "<<goal.phone<<endl<< "      "
	  <<"地址:   "<<goal.address;

	if(POPEDOM(1))//权限验证,通过返回TRUE,否则返回FALSE,此处级别要求为1
	{
		if(goal.newBook_On_Hand+goal.oldBook_On_Hand>0)
		{
			os<<endl<< "      "<<"已借图书的ISBN号: "<<endl<< "      ";
			for(int k=0;k<goal.newBook_On_Hand+goal.oldBook_On_Hand;k++)
				 os<<goal.BookISBN[k]<<"   ";
		}
	}
	return os;
}
//**********************************************************************************	
//重载文件流<<
fstream& operator<< ( fstream & file, readerInfo & goal )
{
	file.write((char*)&goal,sizeof(goal));

	return file;
}
//**********************************************************************************	
//重载文件流>>
readerInfo operator>> (fstream & file, readerInfo & goal )
{
	file.read((char*)&goal,sizeof(goal));

	return goal;
}
//**********************************************************************************	

⌨️ 快捷键说明

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