Sistema de gestión de idiomas de biblioteca
# incluir ltiomanip gt
# incluir lt string gt
//clase de flujo de archivos de entrada/salida
# incluir ltfstream gt
Usar espacio de nombres std
//Lectores máximos
const int Maxr = 100;
//Libros máximos p>
const int Maxb = 100;
//Cada lector puede pedir prestados hasta cinco libros.
const int max bor = 5;
//clase de lector, que describe la información del lector.
Lector de clases
{
Privado:
//Marca de eliminación 1: Eliminado 0: No eliminado.
int tag;
//Número de lector
int number;
//Nombre de lector
Carácter nombre[10];
//Préstamo de libro
int bor book[max bor];
Público:
Lector ( )
{
;
}
//Obtener el nombre
char *getname() p>
{
Devolver nombre;
}
//Obtener el indicador de eliminación
int gettag() p >
{
Etiqueta de retorno;
}
//Obtener el número de lector
int getno() p >
{
Devolver No;
}
//Establecer el nombre
nombre de colección vacío (char na[ ])
{
strcpy(nombre, no aplicable);
}
//Establecer indicador de eliminación 1: Eliminado 0: No borrar.
void delbook()
{
tag = 1;
}
//Aumentar lectores
void addreader(int n, char *na)
{
etiqueta = 0
no = n;
strcpy(nombre, no aplicable);
for(int I = 0; IltMaxbori)
bor book[I]= 0;
}
//Operación de préstamo de libros
anular préstamo (int bookid)
{
for(int I = 0; I ltMaxbori )
{
if (borbook [i] == 0)
{
bor book [i] = bookId; p>
Devolución;
}
}
}
//Operación de devolución de libro
int devuelve libro(int bookid)
{
for(int I = 0; IltMaxbori)
{
if (borbook[ i]==bookid)
{
bor libro[I]= 0
Devuelve 1
}
}
Devuelve 0;
}
//Leer información del lector
Visualización no válida ( )
{
cout lt ltsetw(5) lt; ltNolt ltsetw(10) lt; ltNamelt "Número de préstamo: ["; ltMaxbori)
if(borbook[i]!=0)
cout lt ltbor libro[I] lt"|";
cout lt lt; "]" lt; ltendl
}
};
// Biblioteca de clases de lector para realizar la información personal del lector Establecer.
Base de datos de categorías
{
Privado:
//Puntero de registro del lector
int top
//Registro del lector
Lector leído[Maxr];
Público:
//Constructor, convertir lector.txt Leer en leído[]
Base de datos()
{
Lectores;
top =-1;
//Abrir un archivo de entrada
archivo fstream("reader.txt", IOs::in);
mientras (1)
{
archivo .read((char *) amp;s,sizeof(s));
si (!file) interrumpido;
arriba;
leer[ arriba]= s;
}
//Cerrar lector.txt
cerrar();
}
//Eliminar toda la información del lector
Vacío clear()
{
top =-1;
p>}
//Busque existencia antes de agregar un lector.
int addreader(int n, char *na)
{
lector * p = consulta(n);
if ( p==NULL)
{
arriba;
Leer [arriba]. addreader(n, na);
Devuelve 1;
}
Devuelve 0;
}
//Buscar por número
Lector *query(int lectorid)
{
for(int I = 0; I lt= topi)
if (read[i].getno()== lectorid amp; amp
read[i].gettag()==0)
{
Regrese el amplificador a [I];
}
Regrese NULL
}
//Envíe toda la información del lector p>
void display()
{
for(int I = 0; i lt = topi )
Leer [i]. disp();
}
//Mantenimiento de la biblioteca del lector
void Reader data();
//Destructor, escritura, lectura [] al archivo lector.txt.
~ rdatabase()
{
archivo fstream("reader.txt", IOs::out);
para ( int I = 0; i lt = topi )
si (leer[i].
gettag()==0)
archivo . write((char *) amp; leer[i], tamaño de(leer[I]);
archivo . close();
}
};
void RDatabase::readerdata()
{
selección de caracteres;
char rname[20];
int lectorid
lector * r;
Y (select!='0') p>
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 \ " ltendl
CIN gt; gt select;
Cambiar (seleccionar) p>
{
Caso "1":
cout lt lt"Ingrese el número del lector de tarjetas:";
CIN gt gtreaderid p>
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; consulta(idlector);
if (r==NULL)
{
cout lt lt"El lector no existe"
Break;
}
cout lt lt" Ingrese el nuevo nombre: ";
CIN gtrname
r- gt; set name(rname);
Break;
Caso "3":
cout lt lt"Ingrese el número del lector de tarjetas:";
CIN gt; gtreaderid
r = consulta(readerid);
if (r==NULL)
{
cout lt lt" El lector no existe"
Pausa;
}
r- gt; del libro();
Pausa ;
Caso "4":
cout lt lt"Leer en número de lector:";
CIN gt; = consulta(readerid );
if (r==NULL)
{
cout lt lt"El lector no existe"
Romper;
p>
}
r- gt; disp();
Romper
Caso "5; ":
disp ();
Romper;
Caso "6":
clear();
Break;
Valor predeterminado: cout lt lt"Error de entrada, vuelva a ingresar:";Break;
}
}
}
// Libros, implemente la descripción del libro, el número del libro, el título del libro y el préstamo.
Privado:
//Marca de eliminación 1: Eliminado 0: No eliminado.
int tag;
//número de libro
int number;
//título del libro
char name[20];
//¿Quieres pedir prestado 1: Pedir prestado 2: Pedir prestado?
int onshelf
Público:
Libro(){}
//Obtener el nombre
char * getname(){ return name;}
//Obtener el número del libro
int getno(){ return no;}
//Obtener la eliminación flag
int gettag(){ return tag;}
//Establecer el título del libro
nombre de la colección vacía (char na[]) p>
{
strcpy(nombre, no aplicable);
}
//Eliminar libro
anular el libro (){ tag = 1 ;}
//Agregar libro
void addbook(int n, char *na)
{
etiqueta = 0;
no = n;
strcpy(nombre, no aplicable);
en el estante = 1; }
//Operación de préstamo de libros
int lendbook()
{
if(on self = = 1)
{
en el estante = 0
Devuelve 1;
}
Devuelve 0; p>}
//Operación de devolución de libro
void retbook()
{
en estante = 1;
} p>
//Libros de salida
Display no válido()
{
cout lt ltsetw(6) ltNo; lt ltsetw(18) lt; lt nombrelt ltsetw(10)
lt lt(onshelf==1? "En el estante": "prestado")< ltendl
} p>
};
//La clase de biblioteca puede mantener, buscar y eliminar libros.
Base de datos tipo B
{
Privada:
//Puntero de registro de libro
int top< / p>
//Registro del libro
libro libro[Maxb];
Público:
//Constructor, lee book.txt en el libro [ ]
bDatabase()
{
Libro b;
top =-1;
archivo fstream ("libro.txt", IOs::in);
mientras (1)
{
archivo leído((char *) amp ;b. ,sizeof(b));
Si (!file) se rompe;
top ;
libro[top]= b;
}
archivo . close();
}
//Eliminar todo
Vacío clear()
{
top =-1;
}
//Agregar libros
int addbook(int n, char *na )
{
libro * p = consulta(n);
if (NULL==p)
{
arriba;
Libro [arriba]. addbook(n, na);
Devuelve 1;
}
Devuelve 0;
}
//Buscar libros
Libro *Query(int bookid)
{
for(int I = 0; I lt= topi)
if (libro[i].getno()== bookid amp; ampbook[i].gettag()==0)
{
return ampbook[i ];
}
Devolver NULL
}
//Mantenimiento de la biblioteca
anular datos del libro();
Visualización no válida()
{
for(int I = 0; i lt= topi)
if (libro[ i] .gettag()==0)
libro[i]. disp();
}
//Destructor, escribe libro[] en el archivo book.txt.
~ bdatabase()
{
archivo fstream("book.txt", IOs::out);
para ( int i = 0; i lt = topi )
if (libro[i].
gettag()==0)
archivo . write((char *) & libro[i], tamañode(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 gt; gt select; {
Caso "1":
cout lt lt"Ingrese número de libro:"
p>CIN gt; gtbookid
cout lt "Ingrese el título del libro:"
CIN gtbname
addbook(bookid, bname);
Pausa;
Caso "2":
cout lt lt"Ingrese el número de libro:"
CIN gtbookid
p>
p>
b =query(bookid);
if (b==NULL)
{
cout lt lt" Este libro no existe "
Break;
}
cout lt lt"Ingrese el 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"
break;
}
b- gt;del libro() ;
Pausa;
Caso "4":
cout lt lt"Leer en número de libro:"
CIN gt;
b =query(bookid);
if (b==NULL)
{
cout lt lt"Este libro no no existe"
Romper;
}
b- gt; disp();
Romper;
Caso "5":
disp();
Romper
Caso "6":
clear(); /p>
Interrupción;
Valor predeterminado: cout lt lt"Error de entrada, vuelva a ingresar:";
}
} p>
}
//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 biblioteca\n\n\n";
cout lt lt" \t \ t\t1Préstamo de libros\n\n\t\T2Devolución de libros\n\n\t\T3Mantenimiento de biblioteca\n\n\t\t\t4Mantenimiento de lector\n\n\n\" ltendl p>
CIN gt; gt select;
Cambiar (seleccionar)
{
Caso "1":
cout lt lt"Número de lector prestado : ";
CIN gt; gtreaderid
cout lt lt"Número de libro: ";
CIN gt; gtbookid
// Buscar por número
r = lectordb query(readerid);
if (NULL==r)
{
cout lt. lt"El lector no existe, el libro no se puede tomar prestado" < ltendl
Break;
}
b = bookdb. /p>
if (b==NULL)
{
cout lt lt"Este libro no existe, por lo que no puedes tomarlo prestado"< ltendl
Romper;
}
if(b- gt;borrowbook()==0)
{
cout lt lt"Este libro ha sido prestado, por lo que ya no puedes tomarlo prestado"< ltendl
Break;
}
r- gt; b-gt;getno());
Pausa;
Caso "2":
cout lt lt" devolver libro\nnúmero de lector:" ;
CIN gt; gtreaderid
cout lt "número de libro:";
CIN gt; gtbookid
r = consulta lectordb. );
if (r==NULL)
{
cout lt lt"El lector no existe, por lo que el libro no se puede devolver" < ltendl p>
Romper;
}
b = bookdb .
if (b==NULL)
{
cout lt lt"El libro no existe y no se puede devolver"< ltendl
Rotura;
}
b- gt;ret book();
r- gt;retbook(b- gt;getno());
Pausa;
Caso "3":
bookdb . datos del libro();
Romper
Caso "4":
reader db .reader data();
Pausa;
Valor predeterminado: cout lt lt"Error de entrada, vuelva a ingresar:"; p>
}
}
}