Diseño de sistema de gestión de información de libros.
# incluir ltiomanip gt
# incluir lt string gt
# incluir ltfstream gt//clase de flujo de archivos de entrada/salida
Usar espacio de nombres std
const int Maxr = 100; // La mayor cantidad de lectores
const int Maxb = 100; // La mayor cantidad de libros
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; IltMaxbori)bor book[I]= 0;
}
Libro de préstamo vacío(int bookid)// Préstamo operación
{
for(int I = 0; iltMaxbori)
{
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; IltMaxbori ) p>
{
if(borbook[i]==bookid)
{
bor book[I]= 0;
Devuelve 1;
}
}
Devuelve 0;
}
Visualización nula ( )//Leer información del lector.
{
cout lt ltsetw(5) lt; ltNolt ltsetw(10) lt; ltNamelt"Número de préstamo: ["; = 0; i ltMaxbori)
if(borbook[i]!=0)
cout lt ltbor libro[I] lt"|";
p>
cout lt"]" lt; ltendl
}
};
//Biblioteca de clases de lector para realizar el establecimiento del lector. información personal.
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("reader.txt", IOs::in ) ; //Abrir un archivo de entrada
mientras (1)
{
archivo read((char *) amp; s, sizeof(s) . ;
Si (! archivo) se interrumpe
arriba
read[top]=
}
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 lt= topi)
if (read[i].getno()= = lectorid amp; amp
Leer [I]. gettag()==0)
{
Regresar amplificador a [I];
}
Devolver NULL
}
Void disp() //Muestra toda la información del lector.
{
for(int I = 0; i lt= 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; ilt=topi)< / p>
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 gtreadrid 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;
}
}
}
// Categoría de libro, que implementa la descripción del libro, el número del libro, el título del libro, el préstamo, la devolución, etc.
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; ltNolt ltsetw(18) lt; 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:
int top//puntero de registro del libro
libro book [Maxb]; //Registro del libro
Público:
BDatabase()//Constructor, lea book.txt en book[].
{
libro b;
top =-1;
archivo fstream("libro.txt", IOs::in );
mientras (1)
{
archivo read((char *) amp; b, sizeof(b));
si (! archivo) se rompe;
arriba;
libro[top]= b;
}
archivo. close();
}
Anular clear()//Eliminar todo
{
top =-1;
}
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 lt= topi)
if (libro[i].getno()== bookid amp; amp book[I].gettag()==0)
{
Volver amp book[I];
}
Volver NULL
}
datos del libro anulado(); //Mantenimiento de la biblioteca
Visualización nula()
{
for(int I = 0; i lt = 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; ilt=topi)< / p>
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á deshabilitado" ltendl
CIN gt; gt select;
Interruptor (seleccionar)
{
Caso "1":
cout lt lt"Ingrese el número del libro:"
CIN gt; gtbookid
cout lt lt"Ingrese el título del libro:"
CIN gt; gtbname
addbook(bookid, bname);
Break;
Caso "2":
cout lt lt " Ingrese el número del libro: "
CIN gt; gtbookid
b = consulta (bookid);
if (b==NULL)
{
cout lt lt"Este libro no existe"
Pausa;
}
cout lt lt"Entrar un nuevo título: "
CIN gt; gtbname
b- gt; set name(bname);
Break;
Caso "3" :
cout lt lt"Leer número de libro:"
CIN gt; gtbookid
b = Consulta (bookid); p>if (b==NULL)
{
cout lt "Este libro no existe"
Break;
} p>
b- gt;del libro();
Pausa;
Caso "4":
cout lt lt"Leer en número de libro: "
CIN gt; gtbookid
b = consulta (bookid);
if (b==NULL)
{ p>
cout lt lt"Este libro no existe"
break;
}
b- disp();
Pausa;
Caso "5":
disp();
Pausa;
Caso " 6":
clear();
Pausa;
Valor predeterminado: cout lt lt"Error de entrada, vuelva a ingresar:";
}
}
}
//Implementación de la función main() y guiado 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
r = lectordb . query(readerid); //Buscar por número
if (NULL==r)
{
cout lt lt" El lector no existe. y el libro no se puede tomar prestado" < ltendl
Break;
}
b = bookdb. query(bookid);
if (b==NULL)
{
cout lt "Este libro no existe, por lo que no puedes tomarlo prestado" < ltendl
Break
>}
if(b- gt;borrowbook()==0)
{
cout lt lt"Este libro ha sido prestado. para que no puedas volver a tomarlo prestado" ));
Pausa;
Caso "2":
cout lt lt" devolver libro\nreader número: ";
CIN gt; gtreaderid
cout lt "número de libro:";
CIN gt; gtbookid
r = lectordb.query(readerid);
if (r==NULL)
{
cout lt lt"El lector no existe, por lo que el libro no puede ser devuelto"< ltendl
Break;
}
b = bookdb . query(bookid);
if (b== NULL)
{
cout lt lt"El libro no existe y no se puede devolver" < ltendl
Rotura;
}
b- gt; ret libro();
r- gt; retbook(b- gt; getno());
Romper; >
Caso "3":
datos bookdb.book();
Pausa;
Caso "4":
lector db .reader data();
Pausa;
Valor predeterminado: cout lt lt"Error de entrada, vuelva a ingresar:";
}< / p>
}
}