Centro de gestión T0 del código fuente de gestión patrimonial
# include & ltiomanip & gt
# include & ltstring& gt
//Clase de flujo de archivos de entrada/salida
# include & ltfstream & gt
Usar espacio de nombres std
//Lectores máximos
const int Maxr = 100;
p>//Libros máximos
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 devolución;
}
//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 eliminar.
void delbook()
{
tag = 1;
}
//Aumentar lectores
void addreader(int n, char *na)
{
etiqueta = 0
no = n;
strcpy(nombre, no aplicable);
for(int I = 0; i<Maxbori++)
bor book[I]= 0;
}
//Operación de préstamo de libros
anular préstamo (int bookid)
{
for(int I = 0; i<Maxbori++)
{
if (borbook[i]==0)
{
bor libro[I]= bookid;
Devolución;
}
}
}
//Operación de devolución de libro
int devuelve libro(int bookid)
{
for(int I = 0;i<Maxbori++)
{
if(borbook[i ]==bookid)
{
bor libro[I]= 0;
Devolver 1;
}
}
Devuelve 0;
}
//Leer información del lector
void display()
{
cout<<setw(5)<<no<<setw(10)<<name<<"número de préstamo :[";
for(int I = 0;i& ltMaxbori++)
if(borbook[i]!=0)
cout & lt& ltbor libro[I]& lt;& lt"|";
cout & lt& lt" ]" & lt;& ltendl
}
};
//Biblioteca de clases de lectores para realizar el establecimiento de la información personal de los lectores.
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 (" lector.txt ", IOs::in);
mientras (1)
{
archivo .read((char *)&s,sizeof(s));
if (!file) interrupción;
top++;
p>
leer[top]= s;
}
//Cerrar lector.txt
cerrar();
}
//Eliminar toda la información del lector
Vacío clear()
{
top =-1;
}
//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<= topi++)
if (read[i].getno()== lectorid&&&
read[i].gettag()==0)
{
Return & amp cambió a [I];
}
Return NULL
}
//Salida de todo el lector Información
void display()
{
for(int I = 0;i<=topi++)
read[i]. disp();
}
//Mantenimiento de la biblioteca del lector
void Reader data();
//Destructor, escritura, lectura [] al archivo lector.txt.
~ rdatabase()
{
archivo fstream(" lector.txt ", IOs::out); int I = 0; i<=topi++)
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
}
}
}
//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)& lt ;& ltNo& lt& ltsetw(18)& lt;& ltname& lt& ltsetw(10)
& lt& lt(onshelf==1? "En el estante": "prestado")< & ltendl
}
};
//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 (! archivo) se rompe
top++; p>}
archivo . close();
}
//Eliminar todo
Vacío clear() p>
{
top =-1;
}
//Agregar libros
int addbook(int n, char * na)
{
libro * p = consulta(n);
if (NULL==p)
{ p>
arriba++;
Libro [arriba]. addbook(n, na);
Devuelve 1;
}
Devuelve 0;
}
//Buscar libros
Libro *query(int bookid)
{
for(int I = 0;i<=topi++)
if (libro[i].getno()== bookid& & libro[i].gettag()==0)
{
return& amp libro[I];
}
Devolver NULL
}
//Mantenimiento de la biblioteca
anular datos del libro(); p>
void display()
{
for(int I = 0; i<=topi++)
if (libro[i].gettag ()==0)
libro[i]. disp();
}
//Destructor, escribe libro[] en el archivo book.txt.
~ bdatabase()
{
archivo fstream(" libro.txt ", IOs::out
para ( int i = 0;i<=topi++)
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 & gt; & gtSelect; {
Caso "1":
cout & lt& lt"Ingrese el número de libro:"
CIN & gt;& gtbookid
cout & lt& lt"Ingrese el título del libro:"
CIN & gt;& gtbname p>
addbook(bookid, bname);
Break;
Caso "2":
cout & lt& lt"Ingrese el número de libro:"
CIN>& gtbookid
b =query(bookid);
if (b==NULL)
{
cout & lt& lt"Este libro no existe"
Pausa;
}
cout & lt& lt"Ingrese nuevo título: "
CIN>>bname
b->set name(bname);
Pausa;
Caso "3":
cout & lt& lt"Leer número de libro:"
CIN & gt; & gtbookid
b = consulta (bookid); b==NULL)
{
cout & lt& lt"Este libro no existe"
Pausa;
p>}
b-& gt;del libro();
Pausa;
Caso "4":
cout & lt& lt" Leer número de libro:"
CIN & gt;& gtbookid
b =query (bookid);
if (b== NULL)
{
cout & lt& lt"Este libro no existe"
Pausa;
}
b-> disp();
Pausa;
Caso "5":
disp();
Pausa;
Caso "6":
clear();
Break;
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>
//Buscar por número
r = lectordb(readerid);
if (NULL==r )
{ p>
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, así que no puedes pedirlo prestado" < & ltendl
break;
}
if(b-& gt;borrowbook()== 0)
{
cout & lt& lt"Este libro ha sido prestado, por lo que ya no puedes tomarlo prestado"< & ltendl
Pausa;
}
r-& gt;Préstamo(b-& gt;getno());
Descanso;
Caso " 2":
cout<<"Devolver libro\nID de lector:";
CIN>>readerid
cout <<"ISBN :";
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 . ;
if (b==NULL)
{
cout & lt& lt"El libro no existe, No se puede devolver"<& ltendl p>
Pausa;
}
b-& gt; ret libro();
r-& gt;retbook(b-& gt ;getno());
Romper;
Caso "3":
bookdb.book data();
Romper;
Caso "4":
lector db .datos del lector();
interrupción;
predeterminado.
Valor: cout & lt& lt"Error de entrada, vuelva a ingresar:"
}
}
}