La Red de Conocimientos Pedagógicos - Conocimientos históricos - Sistema de gestión de libros de biblioteca (lenguaje C)

Sistema de gestión de libros de biblioteca (lenguaje C)

Sistema completo de gestión de bibliotecas en lenguaje C

# include & ltstdlib.h & gt

# include & ltstdio.h & gt

# include & ltconio.h & gt

#Contiene "graphics.h"

#Contiene "math.h"

#Definición m 1

Datos de estructura

{ int año;

int mes;

int día

};

Lectura de estructura Nodo del dispositivo

{

Número de carácter [20];

Estructurar datos hermano

Estructurar los datos nuevamente;

};

Nodo del libro de estructura

{

título char[15];

escritor char[15];

int currentnum

int totalnum

char brief[30];

lector de nodo lector de estructura[20];

} ;

Estructura TreeNode

{

int n;

estructura TreeNode * prt

int clave[2 * m];

struct book node * rec[2 * m];

struct TreeNode * link[2 * m+1];

};

struct book node * input node();

struct TreeNode * MB search(struct TreeNode * BTH, int x, int *k, int * flag);

struct TreeNode * mbinsert(struct TreeNode * BTH);

struct TreeNode * MB del(struct TreeNode * BTH);

void nodo de salida (struct TreeNode * BTH);

préstamo nulo(struct TreeNode * BTH);

retorno nulo(struct TreeNode * BTH);

menú char( void);

struct TreeNode * MB search(struct TreeNode * BTH, int x, int *k, int *flag)

{

struct TreeNode * p, * q

p = bth* bandera = 0; q = p;

Y ((p! = NULL)&&(*flag==0))

{

* k = 1; q = p;

mientras(( * k <q->n)&&(pregunta->clave[*k-1]<x))*k = *k+1;

Si (q->clave[*k-1 ]==x)*flag=1;

else if((*k===q->n)&&(Q ->key[* k-1]<x)){ p = q->enlace[*k];p->PRT = q;}

else { p = q->enlace[*k-1];

p->; PRT = q; * k = * k-1 }

}

Retorno (q);

}

struct TreeNode * mbinsert(struct TreeNode * BTH)

{

int flag, j, k, t

int y, x, z;

Estructura TreeNode *p, *q, *u, *s;

struct BookNode *r, *l;

clr SCR();

p>

printf(" \ n \ tIngrese el libro que desea insertar: "

scanf("%d ", & ampx

);

q= mbsearch(bth,x,&k&flag);

if(flag==1)

{

printf(" \ n \ t Ya existen %d libros de este tipo ¿Quieres agregar otro? (y/n)\n ", (q-& gt; rec[k-1])-& gt; total num);

z = getch();

if(z=='y'||z=='Y ')

{

(Q ->rec[k-1])->núm total++;(Q->rec[k-1])->núm actual++;

printf(" \ n \ t Ahora hay un total de %d libros de este tipo, ", (q->rec[k-1])->total num);

printf("\n\tActualmente en el biblioteca Hay %d en ella.

, (q-& gt; rec[k-1])-& gt; num actual);

}

Retorno (BTH);

}

r = nodo de entrada (BTH);

if(bth==NULL)

{

BTH = p =(struct TreeNode *)malloc(tamaño de(struct TreeNode));

p->;n = 1;p->;key[0]= x;p->;rec[0]= r; p->; prt = NULL

for(j = 1; j & lt= 2 * m+1; j++)p-& gt;

Retorno (p);

}

p = NULLt = 0;

mientras(t==0)

{

if(k = = q-& gt; n){ y = x; l = r; u = p;}

Otro

{

y = q->key[q->n-1];l = q->rec[q->n-1];u = q-> ->n];

for(j =(q->n)-1;j>= k+1;j-)

{

q->key[j]= q->key[j-1];q->rec[j]= q->rec[j-1]; q->enlace[j];

}

q->;key[k]= x;q-> ;rec[k]= r;q->; enlace[k+1]= p;

if (p!= NULL)p->PRT = q;

}

si (q- >n<2*m)

{

q->n = (q->n) +1;

t = 1;

q->clave[(q->n)-1]=y;q->rec[(q-& gt;n)-1]=l;q->enlace[q->n] =u;

if (u!= NULL) u->prt = q;

}

Otros

{

p =(struct TreeNode *)malloc(sizeof(struct TreeNode)).

p->n = m q->n = m p->prt = q->prt

x = q->clave [m]; -& gt; Sugerencia [m];

for(j = 1; j & lt= m-1; j++)

{

p-> ; clave[j-1]=q->clave[m+j]; rec[j-1]=q->rec[m+j]; q->enlace[m+j];

if (q->;enlace[m+j]!= NULL)(q-& gt;enlace[m+ j])-& gt; = p;

}

p->; enlace[m-1]=q->enlace[2 * m];

p->; enlace[m]= u;

p->;clave[m-1]= y;

p->;rec[m- 1]= l;

if (u!= NULL)u-& gt; PRT = p;

for(j = m+2; j & lt= 2 * m +1; j++)

{

q->; enlace[j-1]= NULL; enlace[j-1]= NULL;

}

if (q->;prt==NULL)

{

s =(struct TreeNode *)malloc(sizeof(struct TreeNode )).

s-& gt;key[0]= x; s->rec[0]= r;

s->enlace[0]= s- >enlace[1]=p;

s->n=1;s->prt=NULLq->;PRT=s;p->;PRT=s ;

for(j = 3; j & lt= 2 * m+1; j++)s-& gt; enlace[j-1]= NULL;

BTH = s ;t = 1;

}

Otro

{

q = q-& gt;prtk = 1;

Y ((k & lt= q->n)&& amp(pregunta->clave[k-1]<x))k = k+1;

k = k-1;

}

}

}

Retorno (BTH);

}

Árbol de estructura nodo *mbdel (nodo de árbol de estructura *bth)

{

int flag, j, k, t;

int x, y;

Estructura TreeNode *u, *s, *p, *q;

struct BookNode *r, *l;

clr SCR();

printf(" \ n \ tIngrese el libro que desea eliminar: ");

scanf("%d ", & ampx); bth,x,&k&flag);

if(flag==0){ printf("\n\t¡El libro no existe!\n "); return (BTH);}

p = q-& gt; enlace[k];

if (p!=null)

{

mientras(p-> ;enlace[0]!= NULL)p = p->enlace[0];

q->;clave[k-1] =p->clave[0];

q->; rec[k-1]=p->rec[0];

k = 1; q = p; p>for(j = k; j & lt= q->; n-1; j++)

{

q->;clave[j-1]=q- >tecla[j];

q->;rec[j-1]=q->sugerencia[j];

}

q-> n = q->n-1;

Y ((q! = BTH)&(Q->n<m))

{

p = q->prtj = 1;

mientras(p->enlace[ j-1]!= q)j=j+1

if ((j<= p->n)&&(( p->link[j])->n>m))

{

s = p->link[j];

y = s->key[0];

l = s->rec[0];

u = s->link[0] ];

for(k = 1; k & lt= s-& gt; n-1; k++)

{

s-> clave[k-1]= s->clave[k];

s-& gt;rec[k-1]=s->rec[k];

s-& gt;enlace[k-1]= s-& gt;enlace[k] ;

}

s-&

gt;enlace[s->n-1]=s->enlace[s->n];

s->enlace[s->n]= NULL ;

s-& gt;n = s-& gt;n-1;q->;n = q-& gt;n+1;

q->; >n-1]=p->tecla[j-1]

q->rec[q->n-1]= p->rec[ j-1];

q->;Enlace[q->n]= u;

p->;clave[j-1]= y;

p-> p>

p->; rec[j-1]= l;

if (u!= NULL)u-& gt;

else if((j>1);&((p->;link[j-2])->n>m))

{

s = p -> enlace [j-2];

q->; n = q-> n]= q->Enlace[q->n-1];

for(k = q->n-1; k & gt=1;k -)

{

q->;clave[k]= q-& gt;clave[k-1];

q->rec[k]= q-> ;rec[k-1]

q->enlace[k]= q->enlace[k-1] ;

}

q- >;clave[0]= p-& gt;clave[j-2];

q->;rec[ 0]= p-& gt;sugerencia[j-2];

u = s->enlace[s->n];

q->; enlace[0]= u;

if (u!= NULL )u-> PRT = q;

p->; clave[j-2]= s- >clave[s->n-1];

p ->rec[j-2]=s->rec[s->n-1];

s->link[s->n]= NULL;

s->n = s->n-1;

}

Otro

{

if(j = = p-& gt; n+1)

{ q = p ->enlace[j-2];s = p->enlace[j-1];j=j-1 ;}

else s = p->link[j ];

q->;key[q->;n]= p->key[j-1 ];

q->;rec[q-> ;n]= p-& gt;rec[j-1];

t = q-& gt;n+ 1;

for(k = 1;k & lt = s-& gt;n;k++)

{ q->;clave[t+k-1]= s -& gt;tecla[k-1];

q->;rec[t+k-1]= s->rec[k-1];

u = s->enlace[k-1];

q->;enlace[t+k-1]= u;

if (u! = NULL)u->PRT = q;

}

u = s->enlace[s->n];q->;enlace[ t+s ->n]= u;

si (u!= NULL)u->prt = q;

q->n = 2 * m ;

Gratis

tarifa;

for(k = j;k & lt= p->;n-1;k++)

{

p->;key[ k-1]=p->clave[k];

p->; rec[k-1]=p->rec[k];

p->; enlace[k]= p->enlace[k+1];

}

p->;n = p->n-1;s = q ;q = p;

}

}

if((q = = BTH)&&(Q->n==0 ))

{gratis(BTH); BTH = s; BTH = NULL

if(s-& gt; n = = 0){ BTH = NULL }

}

printf("\n\t¡Este libro ha sido eliminado!");

Devolver (BTH);

}

struct BookNode *InputNode()

{

struct book nodo * p;

int I;

p = (struct BookNode *)malloc(sizeof(struct BookNode));

clr SCR();

fflush(stdin);

printf("\n \tTítulo de entrada:");

Get(p->Título);

printf("\n\tEscritor de entrada:");

Obtener (p-& gt; escritor);

printf("\n\tIngrese el monto actual del libro:");

scanf("%d",&p-> número actual);

printf("\n\tIngrese el monto total del libro:");

scanf("%d ",&p->;número total);

fflush(stdin);

printf("\n\tIngrese una breve descripción del libro: ");

get(p->short);

for(i = 0;i<20;i++)

(p->lector[i]).

num[0]= '\0';

Retorno (p);

}

nodo de salida nulo (struct TreeNode * BTH)

{

estructura TreeNode * q;

estructura libro nodo * p;

int k;

int x;

int flag;

clr SCR();

printf("\n\tIngrese el libro que desea buscar:");

scanf("%d ", &x);

q=mbsearch(bth,x,&k&flag);

if(flag==1 )

{

p = q-& gt; rec[k-1];

printf("\n\tTítulo: %s ", p ->Título );

printf("\n\tEscritor: %s ", p->Escritor);

printf("\n\tCantidadActual: % d ", p-& gt; número actual);

printf("\n\tMontoTotal: %d ", p-& gt; número total);

printf(" \ n \ tbreve introducción: % s \ n ", p-& gt; breve);

}

else printf(" \ n \ t¡Este libro no existe!" );

}

préstamo nulo(struct TreeNode *bth)

{

struct TreeNode * q;

struct book node * p

Nodo lector de estructura * r;

int i, k, x, flag, t

clr SCR() ;

printf(" \ n \ tIngrese el libro que desea pedir prestado: ");

scanf("%d ", & ampx); x,&k&flag);

if(flag==1)

{

p = q- >rec[k-1];

printf("\n\t¿Quieres este libro? (s/n)");

printf("\n\tTítulo: %s ", p-& gt; título);

printf("\n\tEscritor: %s ", p-& gt; escritor);

printf("\n\tCurrentAmount: %d ", p-& gt; número actual);

printf(" \n\tMontoTotal: %d ", p-& gt; número total);

printf(" \ n \ tbreve introducción:% s ", p-& gt; breve);

t = getch();

if(t=='y'||t=='Y ')

{

si ( (p->numero actual)== 0)printf("\n\tLo sentimos, todo este libro ha sido retirado...");

Otro

{

clr SCR();

for(I = 0;i<20;i++)if((p->lector[i])

. num[0]= = ' \ 0 ')break;

printf(" \ n \ tIngrese su número de certificado: "); p->reader[i]).num);

printf("\n\tPor favor ingrese los datos prestados:");

printf("\n \tAño:" );

scanf("%d ", & amp((p->lector[I]). bro. año);

printf(" \ t mes: ") ;

scanf("%d ", & amp((p->lector[I]). bro. mes);

printf(" \ tDay: ");

scanf("%d ", & amp((p->reader[I]). bro. day);

printf(" \ n \tIngrese los datos de devolución: ");

printf(" \ n \tAño:");

scanf("%d ",& amp((p->; lector[I]).volver .año);

printf(" \ t mes:");

scanf("%d ", & amp((p->; lector[I]).back .mes));

printf("\tDía:");

scanf("%d ",& amp((p->; lector[I]).back .day));

p->;current num-;

printf("\n\tHas tomado prestado este libro.

);}

}

}

else printf(" \ n \ t¡Este libro no existe!");

}

reciclaje de vacíos (struct TreeNode *bth)

{

struct TreeNode * q;

struct book node * p;< / p>

int i, k, x, bandera, t, j;

int año, mes, día, d

Salario variable

< p; >Temperatura de carga[20];

clr SCR();

printf("\n\tPor favor, introduzca el libro que desea reembolsar:");

scanf("%d ", &x);

q=mbsearch(bth,x,&k&flag);

if(flag==1 )

{

p = q->rec[k-1];

printf("\n\tQuieres pagar este libro (s/n)");

printf("\n\tTítulo: %s ", p-& gt; título);

printf("\n\ tEscritor: %s ", p-& gt ; escritor);

printf("\n\tCurrentAmount: %d ", p-& gt; número actual);

printf ("\n\tTotalAmount: %d " ,p->numero total);

printf("\n\tbreve introducción:% s",p->short);

printf("\n\tbrief introducción:% s",p->short);

p>

t = getch();

if(t=='y'||t= ='Y ')

{

if ((p->currentnum)>=(p->;cantidad total))

printf(" \n\tQuieres proporcionar más libros\n");

Otros

{

clr SCR();

printf ("\n\tPor favor ingrese su número de certificado:");

p>

scanf("%s ", temp);

j = 0;

for(I = 0;i<20;i++)

{

if (!(strcmp(temp, (p-& gt;lector[i])). num)){ j = 1; break;}

}

if(j = = 0){ printf(" \ n \ tNo tomaste prestado este libro.") ; Return; }

printf("\n\tHoy es:");

printf("\n\tAño:");

scanf (" %d",&año);

printf("\t mes:");

scanf("%d",&mes);

printf( "\tDía:");

scanf("%d", & día);

d = 0;

if(año<(p-> lector[i]).back.year)d = 1

if(año<=(p->reader[i]).& mes<(p->reader[i]).back.month )d = 1

if(año<=(p->lector[i]).

&&mes<=(p->lector[i]), back.month&&day<(p->lector[I]).back.day)d=1;

If (d==0)

{

clr SCR();

Salario = (año-(p-& gt;lector[i] ).back.year)*365+ (mes-(p-& gt; lector[I]). atrás. mes)* 3(día-(p-& gt; lector[I]). atrás. día) ;

printf (" \ n \ tTomaste prestado este libro en %d-%d-%d ", (p-& gt; lector[i]).bro.año, ( p->lector[I])bro.mes, (p->reader[I]).bro.day);

printf("\n\tdebe estar en %d- %d-%d "Pagar dentro de, (p-& gt; lector[i]).año atrás, (p->lector[i]).año atrás, (p->lector[i] ]

printf). (" \ n \ tHoy es %d-%d-%d ", año, mes, día

printf( "\n\n\tAsí que has salido del día de pago") ;

printf("\n\tTienes que pagar %2.1f yuanes.", 0.1*pay);

}

(p->; lector[i]). num[0]= '\0';

p->;num actual++;

printf("\n\tHas devuelto este libro.");

}

}

}

else printf(" \ n \ t¿Quieres devolver un libro que no existe? ");

}

Donghua()

{ int Graphdriver = VGA

int Graphmode = VGAHI

int i, j;

registerbgidriver(EGA VGA _ driver);

iniciar gráfico(& controlador gráfico & modo gráfico, "";

clr SCR();

for(I = 0;i<=150;i+=5)

{ establecer color(I);

fondo de texto(rojo);

settextstyle(0, 0, 2);

outtextxy(100, i+140, "Sistema de gestión de biblioteca");

Retraso(1000000);

clr SCR();

}

setcolor(rojo);

outtextxy(50, 200, "Cargando"); p>Retraso (10000000000);

outtextxy(50, 200, "Cargando.

");

Retraso(10000000000);

outtextxy(50, 200, "Cargando..");

Retraso(10000000000);

outtextxy(50, 200, "Cargando...");

Retraso (10000000000);

outtextxy(50, 200, "Cargando...") ; Cargando...");

Retraso(10000000000);

outtextxy(50, 200, "Cargando...");

Tiempo de retraso (10000000000);

outtextxy(50, 200, "Cargando...");

Retraso(10000000000);

outtextxy(50, 200, "Cargando...");

Retraso (10000000000);

outtextxy(50, 200, "Cargando...");

Retraso (10000000000);

outtextxy(50, 200, "Cargando...");

Retraso (10000000000);

outtextxy(50, 200, "Cargando...");

Retraso (10000000000);

outtextxy (50, 200, "Cargando...");

outtextxy( 50, 200, "Cargando...");

outtextxy(50, 200, "Cargando...");

p>

Retraso(10000000000);

for(I = 0;i<=10;i++)

Retraso(10000000000);

clr SCR();

}

Menú de caracteres (no válido)

{

clr SCR();

Ventana (1, 1, 80, 25); p>

modo de texto (mono);

fondo de texto (negro);

color del texto (5);

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *****Bienvenido a la gestión de la biblioteca sistema* * * * *);

printf(" \ n \t * * * * * * * * * * * * * * * * * * * * * * * *);

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n \ t *1. Añadir un libro*);

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *2. Eliminar un libro* ";

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *3. Buscar un libro*);

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *4.

Pedir prestado libros*";

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *5.

"Devuelve el libro*";

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf(" \ n \ t * 0 . salir * ");

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\tPor favor seleccione:");

Devolver getch();

}

Donghua Oriental

{ int graphdriver = VGA

int graphmode = VGAHI

int i, j;

char c;

registerbgidriver(EGA VGA_driver);

init graph(& controlador gráfico & modo gráfico, "";

/* * * * * * * * * * * * *Shi Fu Fang Bo Dong Hua? *******************/

printf:{ establecer color(ROJO);

settextstyle(3,0,5);

outtextxy(100,30,"Fang Bo Donghua?");

outtextxy(150,80,"Sí " );

outtextxy(300, 80, "No");

c = getch();

if(c=='Y'| | c=='y ')

{Donghua();

menú();

}

Otros

p>

if(c=='N'||c=='n ')

menu();

Otros

{setcolor (verde);

settextstyle(3, 0, 8);

outtextxy(200, 240, "¡Error!"); ;

clr SCR();

ir a printf

}

}

/*** * ************************************/

}

void main()

{

char c, t;

int x

int k, bandera, p =; 1 ;

estructura TreeNode * bth = NULL

Bofang Donghua();

mientras(1)

{

c = menú();

parche(c);

getch();

Cambiar(c)

{

caso ' 1 ':BTH = mbinsert(BTH);

Pausa;

Caso ' 2 ':BTH = MB del(BTH);

Pausa;

p>

Pausa;

Caso "3": nodo de salida (BTH);

Pausa;

Caso "4": Préstamo (BTH);

Pausa;

Caso '5': devolución(BTH);

Pausa ;

Caso '0': clrscr( );

printf(" \ n \ t¿Quieres regresar? (s/n)");

t = getch();

if(t = = '

Y ' | t = = ' Y ')salir(0);

Romper;

def ult:romper;

}

printf(" \ n \ tPresione cualquier tecla para ingresar al menú principal...");

getch();

}

}