Cómo escribir el historial de una biblioteca
# incluir & ltiomanip & gt
# incluir & ltstring& gt
# incluir & ltfstream & gt//Archivo de entrada/salida clase de flujo
Usando el espacio de nombres std
const int Maxr = 100; //Lectores máximos
const int Maxb = 100 //Libros máximos
const int max bor = 5; //Cada lector puede pedir prestados hasta cinco libros.
//clase de lector, describe la información del lector.
Lector de clases
{
Privado:
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 1: eliminado 0: no eliminado.
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 libro[I]= 0;
Devuelve 1;
}
}
Devuelve 0;
}
Disp nulo ( )//Leer información del lector.
{
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
}
};
//Lector biblioteca de clases para realizar el establecimiento de la información personal de los lectores.
Base de datos de categorías
{
Privado:
int top//puntero de registro del lector
Lectura del lector leído [Maxr]; //Registro del lector
Público:
RDatabase() //El constructor lee el archivo lector.txt en lectura[].
{
Lectores;
top =-1;
archivo fstream(" lector.txt ", IOs::in ) ;//Abrir un archivo de entrada
mientras (1)
{
archivo read((char *)&s,sizeof(s )) ;
Si (! archivo) se interrumpe
top++;
read[top]=
} p; >
file . close();//Cerrar lector.txt
}
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
Leer [I]. gettag()==0)
{
Regresar & amp a [I];
}
Devolver NULL
}
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()
{
selección de caracteres <; /p>
char rname[20];
int lectorid
lector * r;
mientras (select!='0')
p>{
cout & lt& lt" \ n \ n \ t \ tMantenimiento del lector\n\n\n\t\t 1 recién agregado\ n \ n \ t \ t 2 fue cambiado\n\n\t\t 3 fue eliminado\n\n\"<endl
CIN>>Select;
Cambiar (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"Ingrese el número del lector de tarjetas:";
CIN & gt ;& gtreaderid
r = query(readerid);
if (r==NULL)
{
cout & lt& lt "El lector no existe"
Pausa;
}
cout<<"Ingrese nuevo nombre:";
CIN> ;& gtrname
r-& gt ;set name(rname);
Pausa;
Caso "3":
cout & lt& lt"Ingrese el número del lector de tarjetas:"; p>
CIN & gt;& gtreaderid
r = query(readerid);
if (r= =NULL)
{
cout & lt& lt"El lector no existe"
Pausa;
}
r-& gt;del libro(); p>
Pausa;
Caso "4":
cout & lt& lt"Leer en el número de lector: ";
CIN>& gtreaderid
r = query(readerid);
if (r==NULL)
{
cout & lt& lt"El lector hace no existe"
Pausa;
}
r-& gt; disp();
Pausa;
Caso "5":
disp();
Romper
Caso " 6":
clear();
Pausa;
Valor predeterminado: cout & lt& lt"Error de entrada, vuelva a ingresar: ";Pausa
}
}
}
//Categoría del libro, realización de la descripción del libro, número del libro, título del libro, espera de préstamo y devolución.
Libros del aula
{
Privado:
int tag; //Eliminar marca 1: Eliminado 0: No eliminado.
int number; //Número de libro
char name[20]; //Título del libro
int onshelf// ¿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 del libro
int gettag(){ return tag;}//Obtener la etiqueta de eliminación
Void setname(char na[ ])// Establecer el título del libro.
{
strcpy(nombre, no aplicable);
}
void del book(){ tag = 1;}/ /Eliminar libro
Void addbook(int n, char *na)//Agregar libro.
{
etiqueta = 0;
no = n;
strcpy(nombre, no aplicable
<); p>on Shelf = 1;}
Int lendbook()//Operación de préstamo
{
if(on self = = 1)
{
en el estante = 0
Devuelve 1
}
Devuelve 0; ;
}
Retbook nulo()//operación de devolución de libro
{
en estante = 1;
}
Void disp()//Libros de salida
{
cout & lt& ltsetw(6)& lt;& ltNo& lt& ltsetw( 18) & lt; p>}
};
//La clase de biblioteca puede mantener, buscar y eliminar libros.
Base de datos tipo B
{
Privada:
int top//puntero de registro del libro
libro book [Maxb]; //Registro del libro
Público:
BDatabase()//Constructor, lea book.txt en book[].
{
Libro b;
arriba =-1;
archivo fstream(" libro.txt ", IOs::in );
mientras (1)
{
archivo leído((char *)&b,sizeof(b));
Si (!archivo) se rompe;
top++;
libro[top]= b;
}
archivo. close();
}
Anular clear()//Eliminar todo
{
top =-1;
p>}
Int addbook(int n, char *na)//Agregar libros.
{
libro * p = consulta(n);
if (NULL==p)
{
arriba++;
Libro [arriba].
addbook(n, na);
Devuelve 1;
}
Devuelve 0;
}
Libro *query(int bookid)//Buscar libros.
{
for(int I = 0;i<=topi++)
if(libro[i].getno()== bookid& ;& libro[ i].gettag()==0)
{
Devolver & reservar[i];
}
Devolver NULL
}
datos anulados del libro(); //Mantenimiento de la biblioteca
Visualización no válida()
{
for(int I = 0; i<=topi++)
if (libro[i].gettag()==0)
libro[i]. disp();
}
~BDatabase()//Destructor, escribe libro[] en el archivo book.txt.
{
fstream file("book.txt", IOs::out);
for(int I = 0; i<= topi++) p>
if(libro[i].
gettag()==0)
archivo . write((char *)& libro[i], tamaño de(libro[I]);
archivo . close() ;
}
};
void BDatabase::bookdata()
{
selección de caracteres <; /p>
char bname[40];
int bookid
libro* b;
while(select!='0') p>
{
cout & lt& lt" \ n \ n \ n \ t \ t \mantenimiento de biblioteca" < & ltendl & lt& ltendl
cout & lt& lt " \t\t1 se agregó recientemente\n \t\t2 se cambió\n\t\t3 se eliminó\n\t\t4 se buscó\n\t\t5 se muestra\n\t\t6 se eliminó por completo \n \t\t0 está desactivado" & ltendl
CIN> & gtSelect;
Switch (Select)
{
Caso "1 ":
cout & lt& lt"Ingrese el número del libro:"
CIN & gt;& gtbookid
cout & lt& lt" Ingrese el título del libro: "
CIN>>bname
addbook(bookid, bname);
Break;
Caso" 2":
cout & lt& lt"Ingrese el número de libro:"
CIN & gt; & gtbookid
b = Consulta (bookid);
if (b= =NULL)
{
cout & lt& lt"Este libro no existe"
Pausa;
}
cout & lt& lt"Ingrese nuevo título:"
CIN & gt;& gtbname
b-& gt;set name(bname );
Pausa;
Caso "3":
cout & lt& lt"Leer en ISBN:"
CIN & gt ;& gtbookid
b =query(bookid);
if (b==NULL)
{
cout & lt& lt "Este libro no existe"
Romper;
}
b-& gt;del libro();
Romper
Caso; "4":
cout & lt& lt"Leer número de libro:"
CIN & gt;& gtbookid
b =query(bookid); p>
if (b==NULL)
{
cout & lt& lt"Este libro no existe"
Pausa;
}
b-& gt; disp();
Descanso;
Caso "5":
disp ();
Romper;
Caso "6":
clear();
Romper;
Valor predeterminado: cout & lt& lt"Error de entrada, vuelva a ingresar:";
}
}
}
// La implementación de la función main() y la guía de la interfaz principal del programa.
void main()
{
selección de caracteres;
int bookid, lectorid
RDatabase ReaderDB
lector * r;
b base de datos BookDB
libro * b;
y (select!='0')
{
cout & lt& ltendl & lt& ltendl & lt& lt”\ t \ t \sistema de gestión de bibliotecas\ n \ n \ n”;
cout & lt& lt " \t\t\t1Préstamo de libros\n\n\t\T2Devolución de libros\n\n\t\T3Mantenimiento de la biblioteca\n\n\t\t\t4Mantenimiento del lector\n\n\n\ " & ltendl
CIN>& gtSelect;
Cambiar (seleccionar)
{
Caso "1":
cout & lt& lt"ID de lector prestado:";
CIN & gt;& gtreaderid
cout & lt& lt"ISBN:";
CIN>& gtbookid p>
r = lectordb . query(readerid); //Buscar por número
if (NULL==r)
{
cout & lt& lt"El lector no existe, el libro no se puede tomar prestado"< & ltendl
Pausa;
}
b = bookdb.query(bookid) ;
if (b==NULL)
{
cout & lt& lt"Este libro no existe, por lo que no puedes tomarlo prestado"< & ltendl
Descanso;
}
if(b-& gt;borrowbook()==0)
{ p>
cout & lt& lt"Este libro ha sido prestado, así que ya no puedes prestarlo más"< & ltendl
Rotura;
}
r-& gt;Préstamo(b-& gt;getno());
Descanso;
Caso "2":
cout<<"Regresar libro\nID de lector:";
CIN>&greaderid
cout<<"Número de libro:";
CIN>& gtbookid
r = lectordb . query(readerid);
if (r==NULL)
{
cout & lt& lt"El lector no existe, por lo que el libro no se puede devolver"< & ltendl
Break;
}
b = bookdb. query (bookid);
if ( b==NULL)
{
cout & lt& lt"El libro no existe y no se puede devolver"< & ltendl
Pausa;
}
b-& gt;retbook();
r-& gt;retbook(b-& gt;getno());
Pausa;
Caso "3":
bookdb.book data();
Pausa;
Caso "4 ":
reader db . datos del lector();
Interrupción;
Valor predeterminado: cout
& lt& lt"Error de entrada, vuelva a ingresar:"
}
}
}