Sistema de gestión de información de libros escritos en lenguaje C

En a verá:

#include

#include

#include

#include//input/output Clase de flujo de archivos

usandonamespacestd

constit maxr = 100; //La mayoría de los lectores

constit maxb = 100; //La mayoría de los libros

constitmaxbor = 5 ; //Cada lector puede pedir prestados hasta cinco libros.

//Clase de lector, describe la información del lector.

Lector de clases

{

Privado:

inttag//Eliminar etiqueta 1: Eliminado 0: No eliminado.

intno//Número de lector

charname[10]; //Nombre del lector

intborbook[max bor] //Préstamo de libro

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

Voidsetname(charna[])//Establecer el nombre .

{

strcpy(nombre, no aplicable);

}

void del book(){ tag = 1;}/ /Establecer indicador de eliminación 1: eliminado 0: no eliminado.

voida lector(intn, char * na)//Agregar lector.

{

etiqueta = 0;

no = n;

strcpy(nombre, no aplicable

<); p>for(inti = 0;ibor book[I]= 0;

}

Voidborrowbook(intbookid)//operación de préstamo

{

for(inti = 0;i{

if(borbook[i]==0)

{

bor libro[I]= bookid;

Regresar;

}

}

}

introducción Libro(intbookid)//libro Operación de retorno

{

for(inti = 0;i{

if(borbook[i]==bookid)

{

bor libro[I]= 0

retorno 1

}

}

retorno0<; /p>

}

Voiddisp()//Leer información del lector

{

Salida estándar

para (inti. = 0; iif(borbook[i]!=0)

Estándar fuera

Estándar fuera

}

}; p>

//Biblioteca de clases de lectores para realizar el establecimiento de la información personal de los lectores

Base de datos de clasificación

{

Privada:

inttop//Puntero de registro del lector

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

Público:

RDatabase()// El constructor lee el lector .txt en lectura[].

{

Lector;

top =-1;

fstreamfile("reader.txt ", IOs::in); //Abrir un archivo de entrada

while(1)

{

file .

Si (!file) se interrumpe;

Arriba;

read[top]= s;

}

file . close();//Cerrar lector.txt

}

Voidclear()//Eliminar toda la información del lector.

{

top =-1;

}

Intaddreader(intn, char*na)//Al agregar un lector, comprobar si existen.

{

lector * p = consulta(n);

if(p==NULL)

{

Arriba;

Leer [Arriba]. addreader(n, na);

return 1;

}

return0

}

Lector* query(intreaderid)//Buscar por número.

{

for(inti = 0;i

if (read[i].getno()= = lectorid&&

Leer [I]. gettag()==0)

{

Regresar y amp cambiado a [I];

}

returnNULL

}

Voiddisp()//Envía toda la información del lector

{

for(. inti = 0; i

Leer[i].

}

voidreaderdata(); //Mantenimiento de la biblioteca del lector

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

{

fstreamfile("reader.txt ", IOs::out. );

para (inti = 0; i

si (leer[i].

gettag()==0)

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

archivo . close() ;

}

};

voidRDatabase::readerdata()

{

charchoice

nombre charr[20];

intreaderid

lector * r;

mientras (select!='0')

{

Salida estándar

CIN>>Select;

Interruptor (seleccionar)

{

Caso " 1":

Stdout

CIN>>readerid

Stdout

CIN> & gtrname

addreader(readerid , rname);

Pausa;

Caso "2":

Stdout

CIN>& gtreaderid

r = consulta(readerid);

if(r==NULL)

{

Stdout

Romper;

}

Stdout

CIN>>rname

r-& gt;set name(rname);

Break;

Caso "3":

Stdout

CIN & gt;& gtreaderid

r = query(readerid);

if(r==NULL)

{

Estándar fuera

Romper;

}

r-& gt; del libro();

Pausa;

Caso "4":

Salida estándar

CIN & gt; & gtreaderid

r = query(readerid);

if(r ==NULL)

{

Stdout

Interrupción;

}

r-& gt; disp();

Interrupción;

Caso " 5":

disp();

Romper;

Caso "6":

clear();

Pausa;

Valor predeterminado: cout

}

}

}

//El La categoría del libro implementa la descripción del libro, el número del libro, el título del libro, el préstamo, la devolución, etc.

Roll Roll

{

Privado:

inttag//Eliminar etiqueta 1: Eliminado 0: No eliminado.

intno//Número de libro

charname[20]; //Título del libro

intonshelf//¿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 de libro

int gettag(){ return tag;}//Obtener la etiqueta de eliminación

Voidsetname(charna[]) //Establece el nombre del libro.

{

strcpy(nombre, no aplicable);

}

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

Voidaddbook(intn, char*na)//Agregar libro.

{

etiqueta = 0;

no = n;

strcpy(nombre, no aplicable

<); p>on Shelf = 1;

}

Intborrowbook()//operación de préstamo de libros

{

if(on self = = 1)

{

en estante = 0;

devuelve 1;

}

devuelve0

}

Voidretbook()//Operación de devolución de libro

{

en estantería = 1;

}

Voiddisp()//Libros de salida

{

Salida estándar

}

}; p>

// Clase de biblioteca, puede mantener, buscar y eliminar libros.

base de datos clase b

{

Privado:

inttop//puntero de registro de libro

libro libro[ Maxb]; //Registro del libro

Público:

BDatabase()//Constructor, lea book.txt en libro[].

{

Librob

top =-1

fstreamfile("libro.txt ", IOs::in);

while(1)

{

archivo read((char *)& amp; b, sizeof(b)); >si (! archivo) interrumpido;

arriba;

libro[top]= b;

}

archivo cerrar(. );

}

Voidclear()//Eliminar todo

{

top =-1;

}

Intaddbook(intn, char*na)//Agregar libro.

{

libro * p = consulta(n);

if(NULL==p)

{

Arriba;

Libro[Arriba]. addbook(n, na);

return 1;

}

return0

}

Libro* query(intbookid)//Buscar libros.

{

for(inti = 0;i

if(libro[i].getno()===idlibro&&libro[i] ].gettag( )==0)

{

return&book[I];

}

returnNULL

}

voidbookdata(); //Mantenimiento de la biblioteca

voiddisp()

{

for(inti = 0; i

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

libro[i].

}

p>

~BDatabase() //Destructor, escribe libro[] en el archivo book.txt.

{

fstreamfile("libro.txt ", IOs::out);

for(inti = 0; i

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

archivo .write((char *)&libro[i],sizeof(libro[I]);

archivo . close();

}

};

void db base de datos::datos del libro()

{< / p>

charchoice

nombre del char[40];

intbookid

libro* b;

Y (¡elige! = '0')

{

Salida estándar

Salida estándar

CIN>& gtSelect;

Conmutador (seleccionar)

{

Caso "1":

Salida estándar

CIN>>bookid

Stdout

CIN>>bname

addbook(bookid, bname);

Break;

Caso "2":

Stdout

CIN>>bookid

b = consulta(bookid);

if (b==NULL)

{

Estándar fuera

Rotura;

}

Estándar fuera

CIN>& gtbname

b->set name(bname);

Descanso;

Caso "3":

Stdout

CIN> & gtbookid

b =query(bookid);

if(b==NULL )

{

Stdout

romper;

}

b-& gt; del libro( );

Romper;

Caso "4" :

Stdout

CIN>>bookid

b =query(bookid);

if(b==NULL)

{

Stdout

Romper;

}

b-& gt;disp();

Pausa;

Caso "5":

disp();

Pausa;

Caso "6":

clear();

Interrupción;

Valor predeterminado: cout

}

}

}

//Implementación de la función Main() y guía de la interfaz principal del programa.

voidmain()

{

charchoice

intbookid, lectorid

RDatabaseReaderDB

lector * r;

BDatabaseBookDB

libro * b;

mientras (select!='0')

{

Salida estándar

Salida estándar

CIN>>Select;

Interruptor (seleccionar)

{

Caso "1":

Stdout

CIN>>readerid

Stdout

CIN>& gtbookid

r = lectordb . query(readerid); //Buscar por número

if(NULL==r)

{

Salida estándar

Romper;

}

b = bookdb .

if( b==NULL)

{

Salida estándar

Pausa;

}

if(b- & gt;borrowbook()==0)

{

Stdout

Descanso;

}

r-& gt;Préstamo(b-& gt ;getno());

Pausa;

Caso "2":

Stdout

CIN>>readerid

Stdout

CIN>>bookid

r = lectordb

if(r==NULL)

. {

Salida estándar

Pausa;

}

b = bookdb . if(b==NULL)

{

Salida estándar

Interrupción;

}

b- & gt;retbook();

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

Pausa;

Caso " 3":

bookdb . datos del libro();

Pausa;

Caso "4":

reader db . datos del lector ();

Pausa;

Valor predeterminado: cout

}

}

}