#include
#include
#include
#include//input/output Clase de flujo de archivos
usandonamespacestd
constit maxr = 100; //La mayoría de los lectores
constit maxb = 100; //La mayoría de los libros
constitmaxbor = 5 ; //Cada lector puede pedir prestados hasta cinco libros.
//Clase de lector, describe la información del lector.
Lector de clases
{
Privado:
inttag//Eliminar etiqueta 1: Eliminado 0: No eliminado.
intno//Número de lector
charname[10]; //Nombre del lector
intborbook[max bor] //Préstamo de libro
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
Voidsetname(charna[])//Establecer el nombre .
{
strcpy(nombre, no aplicable);
}
void del book(){ tag = 1;}/ /Establecer indicador de eliminación 1: eliminado 0: no eliminado.
voida lector(intn, char * na)//Agregar lector.
{
etiqueta = 0;
no = n;
strcpy(nombre, no aplicable
<); p>for(inti = 0;ibor book[I]= 0;}
Voidborrowbook(intbookid)//operación de préstamo
{
for(inti = 0;i{
if(borbook[i]==0)
{
bor libro[I]= bookid;
Regresar;
}
}
}
introducción Libro(intbookid)//libro Operación de retorno
{
for(inti = 0;i{
if(borbook[i]==bookid)
{
bor libro[I]= 0
retorno 1
}
}
retorno0<; /p>
}
Voiddisp()//Leer información del lector
{
Salida estándar
para (inti. = 0; iif(borbook[i]!=0)
Estándar fuera
Estándar fuera
}
}; p>
//Biblioteca de clases de lectores para realizar el establecimiento de la información personal de los lectores
Base de datos de clasificación
{
Privada:
inttop//Puntero de registro del lector
lector leído[Maxr]; //Registro del lector
Público:
RDatabase()// El constructor lee el lector .txt en lectura[].
{
Lector;
top =-1;
fstreamfile("reader.txt ", IOs::in); //Abrir un archivo de entrada
while(1)
{
file .
Si (!file) se interrumpe;
Arriba;
read[top]= s;
}
file . close();//Cerrar lector.txt
}
Voidclear()//Eliminar toda la información del lector.
{
top =-1;
}
Intaddreader(intn, char*na)//Al agregar un lector, comprobar si existen.
{
lector * p = consulta(n);
if(p==NULL)
{
Arriba;
Leer [Arriba]. addreader(n, na);
return 1;
}
return0
}
Lector* query(intreaderid)//Buscar por número.
{
for(inti = 0;i
if (read[i].getno()= = lectorid&&
Leer [I]. gettag()==0)
{
Regresar y amp cambiado a [I];
} p>
returnNULL
}
Voiddisp()//Envía toda la información del lector
{
for(. inti = 0; i
Leer[i].
}
voidreaderdata(); //Mantenimiento de la biblioteca del lector
~RDatabase()//Destructor , escriba read[] en el archivo lector.txt
{
fstreamfile("reader.txt ", IOs::out. );
para (inti = 0; i
si (leer[i].
gettag()==0)
archivo . write((char *)& leer[i], tamaño de(leer[I]);
archivo . close() ;
}
};
voidRDatabase::readerdata()
{
charchoice
nombre charr[20];
intreaderid
lector * r;
mientras (select!='0')
{
Salida estándar
CIN>>Select;
Interruptor (seleccionar)
{
Caso " 1":
Stdout
CIN>>readerid
Stdout
CIN> & gtrname
addreader(readerid , rname);
Pausa;
Caso "2":
Stdout
CIN>& gtreaderid
r = consulta(readerid);
if(r==NULL)
{
Stdout
Romper;
}
Stdout
CIN>>rname
r-& gt;set name(rname);
Break;
Caso "3":
Stdout
CIN & gt;& gtreaderid
r = query(readerid);
if(r==NULL)
{
Estándar fuera
Romper;
}
r-& gt; del libro();
Pausa;
Caso "4":
Salida estándar
CIN & gt; & gtreaderid
r = query(readerid);
if(r ==NULL)
{
Stdout
Interrupción;
}
r-& gt; disp();
Interrupción;
Caso " 5":
disp();
Romper;
Caso "6":
clear();
Pausa;
Valor predeterminado: cout
}
}
}
//El La categoría del libro implementa la descripción del libro, el número del libro, el título del libro, el préstamo, la devolución, etc.
Roll Roll
{
Privado:
inttag//Eliminar etiqueta 1: Eliminado 0: No eliminado.
intno//Número de libro
charname[20]; //Título del libro
intonshelf//¿Quieres pedir prestado 1: Pedir prestado 2: Pedir prestado?
Público:
Libro(){}
char * getname(){ return name;}//Obtener el nombre
int getno(){ return no;}//Obtener el número de libro
int gettag(){ return tag;}//Obtener la etiqueta de eliminación
Voidsetname(charna[]) //Establece el nombre del libro.
{
strcpy(nombre, no aplicable);
}
void del book(){ tag = 1;}/ /Eliminar libro
Voidaddbook(intn, char*na)//Agregar libro.
{
etiqueta = 0;
no = n;
strcpy(nombre, no aplicable
<); p>on Shelf = 1;}
Intborrowbook()//operación de préstamo de libros
{
if(on self = = 1)
{
en estante = 0;
devuelve 1;
}
devuelve0
}
Voidretbook()//Operación de devolución de libro
{
en estantería = 1;
}
Voiddisp()//Libros de salida
{
Salida estándar
}
}; p> p>
// Clase de biblioteca, puede mantener, buscar y eliminar libros.
base de datos clase b
{
Privado:
inttop//puntero de registro de libro
libro libro[ Maxb]; //Registro del libro
Público:
BDatabase()//Constructor, lea book.txt en libro[].
{
Librob
top =-1
fstreamfile("libro.txt ", IOs::in);
while(1)
{
archivo read((char *)& amp; b, sizeof(b)); >si (! archivo) interrumpido;
arriba;
libro[top]= b;
}
archivo cerrar(. );
}
Voidclear()//Eliminar todo
{
top =-1;
}
Intaddbook(intn, char*na)//Agregar libro.
{
libro * p = consulta(n);
if(NULL==p)
{
Arriba;
Libro[Arriba]. addbook(n, na);
return 1;
}
return0
}
Libro* query(intbookid)//Buscar libros.
{
for(inti = 0;i
if(libro[i].getno()===idlibro&&libro[i] ].gettag( )==0)
{
return&book[I];
}
returnNULL p>
}
voidbookdata(); //Mantenimiento de la biblioteca
voiddisp()
{
for(inti = 0; i
if (libro[i].gettag()==0)
libro[i].
}
p>~BDatabase() //Destructor, escribe libro[] en el archivo book.txt.
{
fstreamfile("libro.txt ", IOs::out);
for(inti = 0; i
); if (libro[i].gettag()==0)
archivo .write((char *)&libro[i],sizeof(libro[I]);
archivo . close();
}
};
void db base de datos::datos del libro()
{< / p>
charchoice
nombre del char[40];
intbookid
libro* b;
Y (¡elige! = '0')
{
Salida estándar
Salida estándar
CIN>& gtSelect;
Conmutador (seleccionar)
{
Caso "1":
Salida estándar
CIN>>bookid
Stdout
CIN>>bname
addbook(bookid, bname);
Break;
Caso "2":
Stdout
CIN>>bookid
b = consulta(bookid);
if (b==NULL)
{
Estándar fuera
Rotura;
}
Estándar fuera
CIN>& gtbname
b->set name(bname);
Descanso;
Caso "3":
Stdout
CIN> & gtbookid
b =query(bookid);
if(b==NULL )
{
Stdout
romper;
}
b-& gt; del libro( );
Romper;
Caso "4" :
Stdout
CIN>>bookid
b =query(bookid);
if(b==NULL)
{
Stdout
Romper;
}
b-& gt;disp();
Pausa;
Caso "5":
disp();
Pausa;
Caso "6":
clear();
Interrupción;
Valor predeterminado: cout
}
}
}
//Implementación de la función Main() y guía de la interfaz principal del programa.
voidmain()
{
charchoice
intbookid, lectorid
RDatabaseReaderDB
lector * r;
BDatabaseBookDB
libro * b;
mientras (select!='0')
{ p>
Salida estándar
Salida estándar
CIN>>Select;
Interruptor (seleccionar)
{
Caso "1":
Stdout
CIN>>readerid
Stdout
CIN>& gtbookid
r = lectordb . query(readerid); //Buscar por número
if(NULL==r)
{
Salida estándar
Romper;
}
b = bookdb .
if( b==NULL)
Salida estándar
Pausa;
}
if(b- & gt;borrowbook()==0)
{
Stdout
Descanso;
}
r-& gt;Préstamo(b-& gt ;getno());
Pausa;
Caso "2":
Stdout
CIN>>readerid
Stdout
CIN>>bookid
r = lectordb
if(r==NULL)
. {
Salida estándar
Pausa;
} p>
b = bookdb . if(b==NULL)
{
Salida estándar
Interrupción;
}
b- & gt;retbook();
r-& gt;retbook(b-& gt;getno( ));
Pausa;
Caso " 3":
bookdb . datos del libro();
Pausa;
Caso "4":
reader db . datos del lector ();
Pausa;
Valor predeterminado: cout
}
}
}