C Diseñar un sistema sencillo de venta de libros.
# incluir ltiomanip gt
# incluir ltstring gt
# incluir ltfstream gt
usando el espacio de nombres std
consint Maxr = 100;
consint Maxb = 100;
consint Maxbor = 5
Lector de clases
{
Privado:
inttag
intno
charname[10];
intborbook[ max bor];
Público:
Lector(){}
char * getname(){ return nombre;}
int gettag(){ etiqueta de retorno;}
int getno(){ return no;}
voidsetname(char na[])
{
strcpy (nombre, no aplicable);
}
void del book(){ tag = 1;}
voidaddreader(int n, char *na)
{
etiqueta = 0;
no = n;
strcpy(nombre, no aplicable
no = n; p>
for(inti = 0; iltMaxbori)
bor libro[I]= 0;
}
voidborrowbook( int bookid)
{
for(inti = 0; iltMaxbori)
{
if (borbook[i]==0 ) p>
{
bor libro[I]= bookid;
Retorno;
}
}
}
int libro(int bookid)
{
for(inti = 0; iltMaxbori)
{
if(borbook[i]==bookid)
{
bor libro[I]= 0;
return 1 ;
}
}
return0
}
voiddisp()
{
cout lt ltsetw(5) lt; ltNo lt ltsetw(10) lt; ltNamelt "Número de préstamo: ["; p>
if(borbook[i]! =0)
cout lt ltbor libro[I] lt"|";
cout lt lt"]" ltendl
} p>
};
Base de datos de clasificación
{
Privado:
inttop
lector leído [Maxr];
>
Público:
Base de datos()
{
Lector;
arriba =-1;
fstreamfile("reader.txt", IOs::in);
while(1)
{
archivo leído((char *) amp; s, tamaño de (s));
Si (! archivo) se rompe
arriba
leer[top]= s; >
}
archivo .cerrar();
}
voidclear()
{
arriba =-1;
}
intaddreader(int n, char *na)
{
lector * p = consulta (n);
if(p==NULL)
{
arriba;
Leer [arriba]. addreader(n, na);
retorno 1;
}
retorno0
}
Lector * consulta(int lectorid)
{
for(int I = 0; i lt= topi)
if (leer[i].getno()= = lectorid amp; amp
Leer [I]. gettag()==0)
{
Devolver amp a [I];
}
returnNULL
}
voiddisp()
{
for(int I = 0;i lt= topi )
Leer [i]. disp();
}
voidreaderdata();
~ rdatabase()
{
fstreamfile ("reader.txt", IOs::out);
for(int i = 0; ilt=topi)
if (leer[i].
gettag()==0)
archivo . write((char *) amp; leer[i], tamaño de(leer[I]);
archivo . close();
}
};
voidRDatabase::readerdata()
{
charchoice
nombre de charr[20];
intreaderid
lector * r;
y (select!='0')
{
cout lt "* * * * *Bienvenido a la edición definitiva del sistema de gestión de ventas de libros* * * * *"< endl
CIN gt; p>
Interruptor (selección)
{
Caso "1":
cout lt lt"* * * * *Menú de operación* * * * *";
CIN gt; gtreaderid
cout lt "* * * * *Cajero* * * * *";
CIN gt ; gtrname
addreader(readerid, rname);
Pausa;
Caso "2":
cout lt lt "* * * * * Administrador* * * * *";
CIN gt; gtreaderid
r = query(readerid);
if(r==NULL )
{
cout lt "* * * * *Cliente* * * * *" < endl
Pausa;
} p>
cout lt lt"Ingrese nuevo nombre:";
CIN gt; gtrname
r- gt; p>Pausa;
Caso "3":
cout lt lt" Introduzca ISBN: ";
CIN gt; r = query(readerid);
if(r==NULL)
{
cout lt lt"Este libro no existe"
Romper;
}
r- gt; del libro();
Romper;
Caso " 4":
cout lt lt"Leer en ISBN":
CIN gt; gtreaderid
r = query(readerid);
if( r==NULL)
{
cout lt "Este libro no existe"
Pausa;
}
r- gt;disp();
Pausa;
Caso "5":
disp();
p>
Interrupción;
Caso "6":
clear();
Interrupción;
Predeterminado: cout lt lt"Error de entrada, vuelva a ingresar:";
}
}
}
Roll Roll
{
Privado:
en
ttag
intno
charname[20];
intonshelf
Público:
Libro(){}
char * getname(){ devolver nombre;}
int getno(){ devolver no;}
int gettag(){ devolver etiqueta;}
voidsetname(char na[])
{
strcpy(nombre, no aplicable);
}
void del libro(){ tag = 1;}
voidaddbook(int n, char *na)
{
tag = 0;
no = n;
strcpy(nombre, no aplicable);
en estante = 1;
}
intborrowbook()
{
if(en uno mismo = = 1)
{
en el estante = 0;
retorno 1;
}
retorno0
}
voidretbook()
{ p>
en el estante = 1;
}
voiddisp()
{
cout lt ltsetw(6) lt ltNolt ltsetw(18) lt; ltNamelt ltsetw(10)
lt lt(onshelf==1? "Agotado")< ltendl
}
};
base de datos clase b
{
Privado:
inttop
libro libro [Maxb] ;
Público:
bDatabase()
{
Librob
arriba =- 1; p>
fstreamfile("book.txt ",IOs::in);
mientras(1)
{
archivo leído((. char *) amp; b, sizeof(b));
Si (! archivo) se rompe
top;
}
archivo .close()
}
voidclear()
{
arriba =-1;
}
intaddbook(int n, char *na)
{
libro * p = consulta(n);
if(NULL==p)
{
arriba;
libro [arriba]. addbook(n, na);
return 1;
}
return0
}
Libro * Consulta(int bookid)
{
for(int I = 0; i lt= topi)
if (libro[i].
getno()== bookid amp; gettag()==0)
{
Devolver libro de amplificador[I];
}
returnNULL
}
voidbookdata();
voiddisp()
{
for(int I = 0; i lt= topi )
if (libro[i].gettag()==0)
libro[i]. disp();
}
~ bdatabase()
{
fstreamfile("book.txt ", IOs:: salida );
for(int I = 0; i lt= topi)
if (libro[i].
gettag()==0)
archivo . write((char *) & libro[i], tamañode(libro[I]);
archivo . close();
}
};
void db base de datos::datos del libro()
{
charchoice
p>nombre del carbón[40];
intbookid
libro* b;
mientras (select!='0')
{
cout lt lt"\n\n\n\t\tMantenimiento de libros" CIN gt select; Cambiar (seleccionar) { Caso "1": cout lt lt"Ingresar número de libro:" CIN gt ; gtbookid cout lt "Ingrese el nombre del libro:" CIN gt; gtbname addbook(bookid, bname); Break ; Caso "2": cout lt lt"Ingrese el número de libro:" CIN gtbookid b =consulta; (bookid); if(b==NULL) { cout lt lt"Este libro está agotado"< ltendl Pausa; } cout lt lt"Ingrese nuevo título:" CIN gtbname b- gt; ; establecer nombre(bname); Romper Caso "3": cout lt lt"Leer en ISBN:" CIN gt; gtbookid b =query(bookid); if(b==NULL) { cout lt lt"Este libro está agotado"< ltendl break; } b- gt;del book(); Pausa; Caso "4": cout lt lt"Leer en número de libro:" CIN gt gtbookid b =query(bookid); if(b==NULL) { cout lt lt"Este libro no existe" p> Romper; } b- gt; disp(); Romper; Caso "5" : disp(); Romper Caso "6": clear(); > Pausa; Valor predeterminado: cout lt lt"Error de entrada, vuelva a ingresar:"; } } } voidmain() { charchoice intbookid, lectorid RDatabaseReaderDB p> lector * r; BDatabaseBookDB< /p> Libro* b; Y (select!='0') { cout lt ltendl lt ltendl lt lt" libro Sistema de Gestión de Ventas\t\t\t\n\n"; CIN gt; gt selección; Switch (selección) { Caso "1": cout lt lt"número de libro:"; CIN gt; gtreaderid cout lt lt"número de libro: "; CIN gt; gtbookid r = lectordb. query(readerid); if(NULL==r) { cout lt lt"Este libro no existe, por lo que no puedes comprarlo"< ltendl Break; } b = bookdb . query(bookid); if(b==NULL) { cout lt lt"Este libro no existe, entonces No puedes comprar este libro"< ltendl break; } if(b- gt;borrowbook()==0) { cout lt lt"El libro se ha agotado y ya no puedes comprarlo"< ltendl Romper } r - gt; pedir prestado(b- gt; getno()); Romper Caso "2": cout lt lt"Comprar libro\ nnúmero de libro: "; CIN gt; gtreaderid cout lt"número de libro: "; CIN gtbookid; r = lectordb . query(readerid); if(r==NULL) { cout lt lt"Esto El libro no existe, por lo que no puedes comprar este libro" < ltendl break; } b = bookdb. query(bookid); if(b ==NULL) { cout lt lt"Este libro no existe, por lo que no puedes comprarlo" < ltendl Romper; } b- gt; ret libro(); r- retbook(b- gt; getno; ()); Pausa; Caso "3": bookdb.book data(); Pausa; p> Caso "4": reader db .reader data(); Pausa; Valor predeterminado: cout lt lt"Error de entrada , vuelva a ingresar:"; } } }