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