Sistema de gestión de bibliotecas de emergencia C
#include lt;iostreamgt;
#include lt;iomanipgt;
#include lt;stringgt;
#include lt; fstreamgt; //Clase de flujo de archivos de entrada/salida
usando el espacio de nombres std;
const int Maxr=100; //Lectores máximos
const int Maxb= 100 ; //La mayor cantidad de libros
const int Maxbor=5; //Cada lector puede pedir prestados hasta cinco libros
//Clase de lector, que describe la información del lector
class Reader
{
privado:
int tag; //Eliminar etiqueta 1: eliminado 0: no eliminado
int no; //Número de lector
char name[10]; //Nombre de lector
int borbook[Maxbor]; //Libro prestado
public:
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[]) //Establecer nombre
{
strcpy(name, na);
}
void delbook(){ tag=1 }//Establecer marca de eliminación 1: Eliminado 0: No eliminado
void addreader(int n, char *na)//Agregar lector
{
tag=0
no=n;
strcpy(nombre, na);
for(int i=0; ilt; Maxbor; i)
borbook[i] ]=0;
}
void lendbook(int bookid)//Operación de préstamo
{
for (int i=0 ; ]=idbook;
return
}
}
}
int retbook(int bookid) //Operación de devolución de libro
{
for(int i=0; ilt; Maxbor; i)
{
if( borbook[i]==bookid)
{
borbook[i]=0
return 1
} p>
}
return 0;
}
void disp()//leer información del lector
{ p>
cout lt;setw(5)
) lt; lt; no lt; setw(10) lt; lt; nombre: ["; /p>
if(borbook[i]!=0)
cout lt; borbook[i] lt; lt; "]"lt;lt;endl;
}
};
//Biblioteca de clases de lector para crear información personal de los lectores.
p>clase RDatabase
{
privado:
int top; //Puntero de registro del lector
Lector leído[Maxr] ];//Registro del lector
public:
RDatabase() //Constructor, lea el archivo lector.txt en read[]
{ p>
Reader s;
top=-1;
fstream file("reader.txt", ios::in); //Abrir un archivo de entrada
p >mientras (1)
{
archivo.read((char *)amp;s, tamaño de(s)); !archivo)romper;
arriba;
leer[arriba]=s;
}
archivo.close(); /Cerrar lector.txt
}
void clear()//Eliminar toda la información del lector
{
top=-1 ;
}
int addreader(int n, char *na)//Al agregar un lector, primero verifique si existe
{
Lector *p=query(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; ilt; =top; i)
if (read[i].getno()==readerid amp; amp;
read[i].gettag()==0)
{
return amp; leer[i];
}
return NULL
}
void disp() // Genera toda la información del lector
{
for (int i=0; ilt; =top; i)
read[i].disp(); /p >
}
void Readerdata(); //Mantenimiento de la biblioteca del lector
~RDatabase() //Destructor, escribe read[] en el archivo Reader.txt
{
fstrea
m file("reader.txt",ios::out);
for (int i=0;ilt;=top;i)
if (leer[i]. gettag()==0)
file.write((char *)&read[i], sizeof(read[i]));
file.close() ; /p>
}
};
void RDatabase::readerdata()
{
elección de carácter ; p>
char rname[20];
int lectorid;
Lector *r;
mientras (elección!='0')
p>
{
cout lt;lt;"\n\n\t\t\tMantenimiento del lector\n\n\n\t\t 1 Nuevo\n\n \t\t 2 Cambiar\n\n\t\t 3 Eliminar\n\n\t\t 4 Buscar\n\n\t\t 5 Mostrar\n\n\t\t 6 Eliminar todo\n\ n\t\ t 0 salir "lt; lt; endl;
cin gt; gt; elección;
cambiar (elección)
{
caso '1':
cout lt; lt; "Ingrese el ID del lector:";
cin gt;
cout lt; "Ingrese el nombre del lector:";
cin gt; rname;
addreader (readerid, rname); >break p>
case '2':
cout lt; "Ingrese el ID del lector:"
cin gt; p> r=query(readerid);
if (r==NULL)
{
cout lt;lt; "El lector no existe" lt;lt ;endl;
break;
}
cout lt;lt; "Ingrese un nuevo nombre:"; gt; gt; rname;
r-gt; setname(rname);
caso '3':
cout lt ;lt; "Ingrese el ID del lector:";
cin gt;
r=query(readerid); == NULL)
{
cout lt; "El lector no existe" lt;
}
r-gt; delbook();
romper;
caso '4':
cout lt; lt; " Leer el ID del lector: ";
cin gt; lectorid;
r=query(readerid); NULO)
{
<p>cout lt; lt; "Este lector no existe" lt; lt;
break;
}
r-gt; )
romper;
caso '5':
disp(); case '6':
clear();
break;
default: coutlt;lt;"Error de entrada, vuelva a ingresar:";break ;
}
}
}
//Clase de libro, implementa la descripción del libro, el número del libro, el título del libro, y prestándolo, devuélvelo y espera
clase Libro
{
privado:
int tag/; /Eliminar etiqueta 1: Eliminado 0: Recuperado
int no; //Número de libro
char name[20] //Título del libro
int onshelf; //Si volver a colocar en el estante 1: Volver a colocar en el estante 2: Prestado
public:
Book(){}
char *getname() { return nombre; }//Obtener el nombre p>
int getno(){ return no }//Obtener el número del libro
int gettag(){ return etiqueta }//Obtener el etiqueta de eliminación
void setname( char na[])//Establecer el nombre del libro
{
strcpy(name, na
<); p>}void delbook(){ tag=1;}//Eliminar libro
void addbook(int n, char *na)//Agregar libro
{
tag=0
no=n;
strcpy(nombre,na
onshelf=1;
}
int lendbook()//Operación del libro de préstamo
{
if (onshelf==1)
{
onshelf= 0;
devuelve 1;
}
devuelve 0; }
void retbook()/ /Operación de devolución de libro
{
onshelf=1
}
void disp()//Libro de salida
{
cout lt;lt; setw(6) lt;lt; no lt;lt; nombre lt;lt; setw(10)
lt;lt;(onshelf==1? "en el estante":"prestado") lt;lt;endl
}
};
//Clase de biblioteca de libros, implementa el mantenimiento de libros, búsqueda, eliminación, etc.
clase BDatabase
{ p>
privado:
int top; //Puntero de registro del libro
Libro del libro[Maxb] //Registro del libro
público:
int top; p>
BDatabase()//Constructor, lee book.txt en book[]
{
Libro b
top=-1
p>archivo fstream("libro.txt", ios::in);
mientras (1)
{
archivo .read( (char *)amp; b, tamaño de(b));
if (!file) break
top;
}
file.close();
}
void clear()//Eliminar todo
p >{
top=-1;
}
int addbook(int n, char *na)//Agregar libro
{
Libro *p=query(n);
if (NULL==p)
{
arriba
libro[arriba].addbook(n, na);
return 1
}
return 0; p>
}
Libro *query(int bookid)//Buscar libros
{
for (int i=0; ilt; = top ;i)
if (libro[i].getno()==bookid amp;libro[i].gettag()==0)
{ p>
return & book[i];
}
return NULL
}
void bookdata() ;//Libro mantenimiento de biblioteca
void disp()
{
for (int i=0; ilt; =top; i)
if (libro[i].gettag()==0)
libro[i].disp();
}
~BDatabase ()// Destructor, escribe libro[] en el archivo book.txt
{
archivo fstream("book.txt", ios::out
for); (int i=0; ilt; =top; i)
if (book[i].gettag()==0)
file((char *)amp. ; libro[i], tamaño de(libro[i]));
archivo.close()
}
}; p>void BDatabase::bookdata()
{
char elección;
char bname[40]
int bookid;
Reservar *b;
mientras (elección!='0')
{
cout lt;lt;"\n \n\n\t\t\tMantenimiento de libros"lt;lt;endllt;lt;endl;
coutlt;lt;"\t\t1 Agregar\n \t\t2 Cambiar\n\t\t3 Eliminar\n\t\t4 Buscar\n\t\t5 Mostrar\n\t \ t6 Eliminar todo\n\t\t0 Salir "lt; lt; endl;
cin gt; gt; elección;
cambiar (elección)
{
caso '1':
cout lt; "Ingrese el número de libro: "lt;
cin gt;
cout lt; "Ingrese el título del libro: "lt; endl;
cin gt; );
break;
case '2':
cout lt; "Ingrese el número de libro: "lt; >
cin gt; id de libro;
b=query(id de libro); >
cout lt;
}
cout lt; ; "Ingrese un nuevo título del libro: "lt; lt; endl;
cin gt; bname; p>break;
caso '3':
cout lt;lt;" leer número de libro: "lt;lt;endl;
cin gt; gt; id de libro;
b=query(id de libro);
if (b==NULL)
{
cout lt; lt; "El libro no existe" lt; endl;
break;
}
delbook(); >
p>
break;
caso '4':
cout lt; "Leer número de libro: "lt; >
cin gt; id de libro;
b=query(id de libro); >
cout lt; "El libro no existe" lt; endl; disp();
romper;
caso '5':
disp();
romper; p>case ' 6':
clear();
break;
default: coutlt;lt; "Error de entrada, vuelva a ingresar:"
}
}
}
//Implementación de la función Main(), guía de la interfaz principal del programa p>
void main()
{
elección de caracteres;
int bookid,readeri
d;
RDatabase ReaderDB
Lector *r
BDatabase BookDB
Libro *b; > while(choice!='0')
{
cout lt;lt;endllt;lt;endllt;lt;"\t\t\t Sistema de gestión de bibliotecas\n \n\n";
cout lt;lt;"\t\t\t1 Pedir prestado libros\n\n\t\t\t2 Devolver libros\n\n\t\t\t3 Libros Mantenimiento\n\n\t\t\t4 Mantenimiento del lector\n\n\t\t\t0 Salir "lt;lt;endl;
cin gt;gt; elección;
cambiar (elección)
{
caso '1':
cout lt; "Número de prestatario: "; >cin gt; lectorid;
cout lt; "Número de libro: "; .query(readerid);//Buscar por número
if (NULL==r)
{
cout lt;lt;" no existe Esto el lector no puede pedir prestados libros "lt;lt; endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout lt; "El libro no existe y no se puede tomar prestado" lt; >
romper;
}
if (b-gt;borrowbook()==0)
{
cout lt ;lt; "El libro ha sido prestado y no puede ser prestado"lt;lt; endl; ( b-gt; getno());
break;
case '2':
coutlt;lt; "Devolver el libro\n Número de lector :" ;
cin gt; gt; lectorid;
cout lt; lt; "Número de libro: ";
cin gt; gt; bookid;
r=ReaderDB.query(readerid);
if (r==NULL)
{
cout lt;lt;" no existe Este lector no puede devolver el libro" lt; lt; endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout lt; "El libro no existe y no se puede devolver" lt;
romper;
}
b-gt; ());
romper;
caso '3':
p>
BookDB.bookdata();
romper;
caso '4':
ReaderDB.readerdata(); p>break;
default: coutlt;lt; "Error de entrada, vuelva a ingresar:"; > }
También soy estudiante y también escribí un sistema de gestión usando VB y una base de datos.