Colección de citas famosas - Slogan de motivación - c sistema de gestión de libros

c sistema de gestión de libros

#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

lector de clases

{

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 el nombre< / p>

{

strcpy(name, na);

}

void delbook(){ tag=1}//Establecer etiqueta de eliminación; 1: Eliminado 0: No eliminado

void addreader(int n, char *na)//Agregar lector

{

tag=0 < /p; >

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; ilt; Maxbor; i )

{

si (borbook[i]==0)

{

borbook [i]=bookid;

return;

}}}

int retbook(int bookid)//Devolver operación de libro

{

for(int i=0;ilt;Maxbor;i)

{

if(borbook[i]==bookid)

{

borbook[i]=0

devuelve 1;

}}

devuelve 0; >

}

void disp()//Leer información del lector

{

cout lt; setw(5) lt; setw(10) lt; lt; namelt; lt; "Número de préstamo: [";

for (int i=0; ilt; Maxbor; i )

if( borbook[ i]!=0)

cout lt;lt; borbook[i] lt;lt; "|";

cout lt;lt; "]"lt;lt ;endl ;

}

};

//Biblioteca de clases de lector para crear información personal de los lectores

clase RDatabase

p >

{

privado:

int top; //Puntero de registro del lector

Lector leído[Maxr] //Registro del lector

public:

RDatabase() //Constructor, lee lector.txt en lectura[]

{

Lector s;

top=-1;

fstream file("reader.txt", ios::in //Abrir un archivo de entrada

while (1)

{

file.read((char *)amp; s, sizeof(s));

if (!file)break

arriba;

leer[top]=s

}

file.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

{

Reader *p=query(n); /p>

if (p==NULL)

{

arriba;

leer[arriba].addreader(n, na); /p>

devuelve 1;

}

devuelve 0;

}

Lector *query(int id de lector) / /Buscar por número

{

for (int i=0; ilt; =top; i)

if (read[i].getno() ==readerid amp;

read[i].gettag()==0)

{

return amp; >

}

return NULL;

}

void disp() // Muestra toda la información del lector

{

para (int i=0; ilt; =t

op; i )

read[i].disp();

}

void Readerdata(); //Mantenimiento de la biblioteca del lector

~RDatabase() //Destructor, escribe read[] en el archivo lector.txt

{

fstream file("reader.txt", ios:: out);

for (int i=0; ilt; =top; i )

if (read[i].gettag()==0)

archivo .write((char *)amp; leer[i], tamaño de(leer[i]));

file.close()

}

};

void RDatabase::readerdata()

{

elección de caracteres;

nombre de caracteres[20] ;

int lectorid;

Lector *r;

while (choice!='0')

{

cout lt;lt;"\n\n\t\t\tMantenimiento del lector\n\n\n\t\t 1 Agregar\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; elección;

cambiar (elección)

{

caso '1':

cout lt; lt; "Ingrese el ID del lector:";

cin gt; /p>

cin gt;

addreader (readerid, rname); /p>

break;

case '2':

p>

cout lt; "Ingrese el ID del lector:"; p> cin gt; id de lector;

r=query(id de lector);

if (r==NULL)

{

cout lt;lt; "El lector no existe"lt;lt;endl;

break;

}

cout lt; Ingrese un nuevo nombre:";

cin gt; gt; rname;

r -gt; setname(rname);

break;

caso '3':

cout lt;

" Introduzca el ID del lector: ";

cin gt; gt;

r=query(readerid); /p>

{

cout lt; lt; "Este lector no existe" lt;

break; / p>

r-gt; delbook();

break;

case '4':

cout lt; Número de lector: ";

cin gt; gt; lectorid;

r=query(readerid);

if (r==NULL)

{

cout lt; lt; "Este lector no existe" lt;

break; >

r-gt; disp();

romper;

caso '5':

disp(); > romper ;

caso '6':

clear();

romper

predeterminado: coutlt;lt;"Entrada; error, vuelva a ingresar: ";break;

}

}

}

//Clase de libro, para realizar el descripción de los libros, número de libro, título, préstamo, devolución, etc.

clase Libro

{

privado:

int tag ;/ /Eliminar marca 1: Eliminado 0: No eliminado

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 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 nombre del libro

{

strcpy(name, na);

}

void delbook(){ tag=1;}//Eliminar libro

void addbook(int n, char *na)//Agregar libro

{

etiqueta=0

no=n;

strcpy(nombre, na

en el estante); =1;

}

int lendbook()//Operación de préstamo

{

if (onshelf==1)

{

onshelf=0;

>

devolver 1;

}

devolver 0;

}

void retbook()//Devolver operación de libro

{

onshelf=1;

}

void disp()//Libros de salida

{

cout lt; setw(6) lt; no lt; setw(18) lt; lt; (onshelf==1? "en el estante": "prestado") lt; endl; clase de biblioteca, que implementa el mantenimiento, búsqueda, eliminación, etc. de libros

clase BDatabase

{

privada:

int top; //Puntero de registro del libro

Libro libro[Maxb]; //Registro del libro

público:

BDatabase()//Constructor, convertir libro. txt Leer en libro[]

{

Libro b;

top=-1

archivo fstream("book.txt; ",ios::in);

while (1)

{

file.read((char *)&b,sizeof(b) );

if (!file) break

arriba

libro[top]=b

}

file.close();

}

void clear()//Eliminar todo

{

top= -1

}

int addbook(int n, char *na)//Agregar libro

{

Libro *p =consulta (n);

if (NULL==p)

{

arriba ;

libro[top].addbook (n , na);

devuelve 1

}

devuelve 0

}

Reservar *consulta; (int bookid)//Buscar libros

{

for (int i=0; ilt; =top; i)

if (book[ i ].getno()==bookid amp;book[i].gettag()==0)

{

return amp;book[i];

p >

}

return NULL;

}

void bookdata(); //Mantenimiento de la biblioteca de libros

void disp ( )

{

for (int i=0; ilt; =top; i )

if (libro[i

].gettag()==0)

book[i].disp();

}

~BDatabase()//Destructor, Escribir libro [] al archivo book.txt

{

fstream file("book.txt", ios::out);

for ( int i= 0; ilt; = arriba; i )

if (libro[i].gettag()==0)

file.write((char *)amp; libro[i ], tamaño de (libro[i]));

archivo.close();

}

}; ::bookdata()

{

elección de caracteres;

nombre b de char[40];

int bookid;

Libro *b;

while (elección!='0')

{

cout lt "\n\ n\n \t\t\tMantenimiento de libros"lt;lt;endllt;lt;endl;

coutlt;lt;"\t\t1 Nuevo\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)

{

case '1':

cout lt; "Ingrese el número de libro: "lt; lt; endl;

cin gt;

cout lt; "Ingrese el título del libro: "lt; cout lt; p>

cin gt; bnombre;

addbook(bookid, bnombre); ':

cout lt;lt; "Ingrese el número del libro: "lt;lt;endl;

cin gt;gt;

b= query(bookid);

if (b==NULL)

{

cout lt; "El libro no existe" lt; endl;

break;

}

cout lt; "Ingrese un nuevo título de libro: "lt; p> cin gt; bnombre;

b-gt; setnombre(bnombre);

caso '3':

corte

lt;lt;" Leer el número del libro: "lt;lt;endl;

cin gt;gt; bookid;

b=query(bookid);

if (b==NULL)

{

cout lt; "Este libro no existe" lt;

}

b-gt; delbook();

descanso

caso '4':

cout lt;lt; "Lee el número del libro: "lt;lt;endl;

cin gt;gt; bookid;

b=query(bookid);

if (b==NULL)

{

cout lt; "El libro no existe" lt; p> romper;

}

b-gt; disp();

romper

caso '5':

p>

disp();

romper;

caso '6':

borrar();

p>

predeterminado: coutlt;lt;"Error de entrada, vuelva a ingresar:";

}

}

}

//implementación de la función main(), guía de la interfaz principal del programa

void main()

{

char elección;

int bookid, lectorid

RDatabase ReaderDB

Reader *r

BDatabase BookDB; p> Libro *b;

while(choice!='0')

{

cout lt;lt;endllt;lt;endllt;lt; "\t\t\ t Sistema de gestión de biblioteca\n\n\n";

cout lt;lt;"\t\t\t1 Pedir prestado libros\n\n\t\t\t2 Volver libros\n\n\ t\t\t3 Mantenimiento de libros\n\n\t\t\t4 Mantenimiento de lectores\n\n\t\t\t0 Dejar "lt;lt;endl;

cin gt;gt; elección ;

cambiar (elección)

{

caso '1':

cout lt;lt; " Número de lector prestado: ";

cin gt;gt;readerid;

cout lt;lt;" Número de libro: ";

cin gt;gt ;bookid;

cout lt;lt;" p>

r=Leer

rDB.query(readerid); //Buscar por número

if (NULL==r)

{

cout lt;lt;" no existe Los lectores no pueden 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; libro de préstamo()==0)

{

cout lt; lt; "El libro ha sido prestado y no se puede tomar prestado"lt; endl;

break

}

r-gt; (b -gt; getno());

break;

case '2':

coutlt; : ";

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 Los lectores no pueden devolver libros" lt; lt; endl;

break;

}

b=BookDB.query(bookid);

if (b==NULL)

{

cout lt; "El libro no existe y no se puede devolver" lt; p>

romper;

}

b-gt; retbook();

r-gt(b-gt; getno(); );

ruptura;

caso '3':

BookDB.bookdata(); p> case '4':

ReaderDB.readerdata();

break;

default: coutlt; :";

}

}

}