# include & ltiomanip.h & gt
# include & ltstring.h & gt
# include & ltfstream.h & gt
const int Maxr = 100;//最大讀取器數量
const int Maxb = 100;//書籍的最大數量
const int max bor = 5;//每位讀者最多可以借閱5本書。
類讀取器//讀取器類
{
int標簽;//刪除標記1:已刪除,0:未刪除。
int號;//閱讀器編號
字符名稱[10];//讀者姓名
int bor book[max bor];//借書
公共:
Reader() {}
char * getname(){ return name;}//獲取名稱
int gettag(){ return tag;}//獲取刪除標記
int getno(){ return no;}//獲取閱讀器編號
Void setname(char na[]) //設置名稱。
{
strcpy(姓名,不適用);
}
void del book(){ tag = 1;}//設置刪除標誌
Void addreader(int n,char *na) //增加讀取器。
{
tag = 0;
no = n;
strcpy(姓名,不適用);
for(int I = 0;我& ltMaxbori++)
bor book[I]= 0;
}
Void borrowbook(int bookid) //借入操作
{
for(int I = 0;我& ltMaxbori++)
{
if (borbook[i]==0)
{
bor book[I]= bookid;
返回;
}
}
}
Int retbook(int bookid) //圖書返回操作
{
for(int I = 0;我& ltMaxbori++)
{
if (borbook[i]==bookid)
{
bor book[I]= 0;
返回1;
}
}
返回0;
}
Void disp() //輸出讀取器信息。
{
cout & lt& ltsetw(5)& lt;& lt否& lt& ltsetw(10)& lt;& lt名稱& lt& lt“借閱號:[”;
for(int I = 0;我& ltMaxbori++)
if (borbook[i]!=0)
cout & lt& ltbor book[I]& lt;& lt"|";
cout & lt& lt"]" & lt;& ltendl
}
};
class RDA base//讀者庫類
{
int top//讀取器記錄指針
閱讀器read[Maxr];//閱讀器記錄
公共:
RDatabase() //構造函數將reader.txt讀入read[]。
{
讀者s;
top =-1;
fstream文件(" reader.txt ",IOs::in);
while (1)
{
file . read((char *)& amp;s,sizeof(s));
如果(!文件)中斷;
top++;
read[top]= s;
}
file . close();
}
Void clear() //刪除所有閱讀器信息。
{
top =-1;
}
Int addreader (int n,char *na) //添加讀取器時,檢查它們是否存在。
{
reader * p = query(n);
if (p==NULL)
{
top++;
閱讀【頂部】。addreader(n,na);
返回1;
}
返回0;
}
Reader *query(int readerid) //按編號搜索。
{
for(int I = 0;我& lt= topi++)
如果(讀[我]。getno()= = readerid & amp;& amp讀[我]。gettag()==0)
返回& amp改為[I];
返回NULL
}
Void disp() //輸出所有讀取器信息。
{
for(int I = 0;我& lt= topi++)
讀[我]。disp();
}
void reader data();//讀者庫維護
~RDatabase() //析構函數,將read[]寫入reader.txt文件。
{
fstream文件(" reader.txt ",IOs::out);
for(int I = 0;我& lt= topi++)
如果(讀[我]。gettag()==0)
file . write((char *)& amp;read[i],sizeof(read[I]);
file . close();
}
};
void RDatabase::readerdata()
{
int choice = 1;
char rname[20];
int readerid
reader * r;
而(選擇!=0)
{
cout & lt& lt“閱讀器維護1:添加2:更改3:刪除4:查找5:顯示6:全部刪除0:退出= >”;
CIN & gt;& gt選擇;
開關(選擇)
{
案例1:
cout & lt& lt"輸入讀卡器號:";
CIN & gt;& gtreaderid
cout & lt& lt"輸入讀取器名稱:";
CIN & gt;& gtrname
addreader(readerid,rname);
打破;
案例二:
cout & lt& lt"輸入讀卡器號:";
CIN & gt;& gtreaderid
r = query(readerid);
if (r==NULL)
{
cout & lt& lt"讀者不存在"
打破;
}
cout & lt& lt”輸入新名稱:“;
CIN & gt;& gtrname
r-& gt;set name(rname);
打破;
案例三:
cout & lt& lt"輸入讀卡器號:";
CIN & gt;& gtreaderid
r = query(readerid);
if (r==NULL)
{
cout & lt& lt“讀者不存在。