# incluir & ltiomanip.h & gt
# incluir & ltstring.h & gt
# incluir & ltfstream. h & gt
const int Maxr = 100; //Número máximo de lectores
const int Maxb = 100; //Número máximo de libros
const int; max bor = 5; //Cada lector puede pedir prestados hasta 5 libros.
Lector de clase //Clase de lector
{
int tag; //Eliminar marca 1: eliminado, 0: no eliminado.
int number; //Número de lector
Nombre del personaje [10]; //Nombre del lector
int bor book[max bor];
Público:
Reader() {}
char * getname(){ return name;}//Obtener el nombre
int gettag(){ return tag;}//Obtener la etiqueta de eliminación
int getno(){ return no;}//Obtener el número de lector
Void setname(char na[ ] ) //Establece el nombre.
{
strcpy(nombre, no aplicable);
}
void del book(){ tag = 1;}/ /Establecer indicador de eliminación
Void addreader(int n, char *na) //Agregar lector.
{
etiqueta = 0;
no = n;
strcpy(nombre, no aplicable); p>for(int I = 0; i<Maxbori++)
bor book[I]= 0;
}
Libro de préstamo vacío(int bookid) / /borrow operación
{
for(int I = 0;i<Maxbori++)
{
if (borbook[i] ==0)
{
bor libro[I]= bookid;
Retorno;
}
} p>
}
Int retbook(int bookid) //Operación de devolución de libro
{
for(int I = 0; i<Maxbori++) p>
{
if (borbook[i]==bookid)
{
bor book[I]= 0;
Devuelve 1;
}
}
Devuelve 0;
}
Disp nulo ( ) //Información del lector de salida.
{
cout & lt& ltsetw(5)& lt;& ltNo& lt& ltsetw(10)& lt;& ltName& lt& lt"Número de préstamo:["
;for(int I = 0; i& ltMaxbori++)
if (borbook[i]!=0)
cout & lt& ltbor book[I] & lt;& lt "|";
cout & lt& lt"]" & lt;& ltendl
}
};
clase RDA base //Clase de biblioteca de lector
{
int top//Puntero de registro de lector
Lectura de lector[Maxr] // Registro de lector
Público:
RDatabase() //El constructor lee lector.txt en lectura[].
{
Lectores;
top =-1;
archivo fstream(" lector.txt ", IOs::in ) ;
mientras (1)
{
archivo leído((char *)&s,sizeof(s));
if(!archivo)interrumpir;
top++;
leer[top]= s;
}
archivo cerrar. ();
}
Void clear() //Eliminar toda la información del lector.
{
top =-1;
}
Int addreader (int n, char *na) //Agregar verificación de lectura para ver si existen.
{
lector * p = consulta(n);
if (p==NULL)
{
arriba++;
Leer [arriba]. addreader(n, na);
Devuelve 1;
}
Devuelve 0;
}
Lector *query(int lectorid) //Buscar por número.
{
for(int I = 0;i<=topi++)
if (read[i].getno()= = lectorid& & amp lecturas [I]. gettag()==0)
Return & amp se cambia a [I];
Return NULL
} p>
Void disp() //Muestra toda la información del lector.
{
for(int I = 0; i<= topi++)
Leer [i]. disp();
}
anular datos del lector(); //Mantenimiento de la biblioteca del lector
~RDatabase() //Destructor, leer[ ]Escribir en el archivo lector.txt.
{
fstream file("reader.txt", IOs::out);
for(int I = 0; i<= topi++) p>
si(leer[i].
gettag()==0)
archivo . write((char *)& leer[i], tamaño de(leer[I]);
archivo . close() ;
}
};
void RDatabase::readerdata()
{
int elección = 1 ;
char rname[20];
int lectorid
lector * r;
mientras (select!=0)
p>{
cout & lt& lt"Mantenimiento del lector 1:Agregar 2:Cambiar 3:Eliminar 4:Buscar 5:Mostrar 6:Eliminar todo 0:Salir =>";
p>CIN>& gtselect;
Interruptor (seleccionar)
{
Caso 1:
cout & lt& lt "Ingrese el número del lector de tarjetas:";
CIN & gt;& gtreaderid
cout & lt& lt"Ingrese el nombre del lector:";
CIN & gt;& gtrname
addreader(readerid, rname);
Break;
Caso 2:
cout & lt& lt"Entrar número de lector de tarjetas:";
CIN & gt;& gtreaderid
r = query(readerid);
if (r== NULL)
{
cout & lt& lt"El lector no existe"
Pausa;
}
cout<<"Ingrese nuevo name:"
CIN>>rname
r->set name(rname);
Break ;
Caso tres:
cout & lt& lt"Ingrese el número del lector de tarjetas:";
CIN & gt;& gtreaderid
r = query(readerid);
if (r==NULL)
{
cout & lt& lt"El lector no existe.