Diseño de un sistema de gestión de bibliotecas utilizando estructuras de datos

# incluir & ltstdio.h & gt

# incluir & ltstring.h & gt

# incluir & ltconio.h & gt

# incluir & ltstdlib. h & gt

#define N sizeof (libro de estructura)

# define PT " %-5d % 10s % 6s % 6s % 8s % 3d \ n ", p-& gt num, p-> nombre, p-& gt; donde, p-& gt; autor, p-& gt; pub, p-& gt;

{

int num/* ISBN */

Nombre del personaje [10] /*título*/

char donde [ 10];/*en la biblioteca*/

char Author[15];/*author*/

char pub[20];/*press*/

int count; /*Cantidad*/

libro de estructuras * siguiente

};

/*Módulo de salida*/

Impresión no válida (libro de estructura*p0)

{

Libro de estructura* p;

p = P0-& gt; p>Printf ("\ n \ n \ t \ tTabla de información del libro");

printf (" \ n \ nISBN-Título del libro-Biblioteca-Autor-Cantidad-publicación\ n ");

Y (p!=null)

{

printf(PT);

p = p-& gt; p>

}

getch();

}

/*Módulo de entrada*/

libro de estructuras *create( )

{

estructura libro *head, *p1, *p2

int I = 0;

head = p2 =( struct book *)malloc(N);

head->;next = NULL

printf("\n\n\t\tIngrese la información del libro");

printf(" \ n \ t-");

mientras(1)

{ p 1 =(libro de estructuras *)malloc (N);

printf("\nIngrese el ISBN (ISBN termina en 0):");

scanf("%d ",&p 1->; num );

si(p 1->;núm! =0)

{

printf(" \ n \ nEl número de libros en la biblioteca donde se encuentra el título del libro y el editor del autor\ n ");

scanf( "%s%s%s%s%d",p1->nombre,p1->donde,p1->autor,p1->bar&p1->recuento

p2); ->; siguiente = p 1;

p2 = p 1;

i++; p>Descanso;

}

p2->; siguiente = NULL

Libre(p 1);

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

Printf("\n\t\t%d libro ha sido ingresado", I);

getch();

Encabezado de retorno;

}

/*Módulo de búsqueda*/

Búsqueda no válida

(Libro de estructura *p0)

{

Nombre del personaje[10];

int flag = 1;

Libro de estructura* p ;

p = P0-& gt;Next;

Printf("Ingrese el título del libro que está buscando:\ n ");

scanf("%s ", nombre);

for(p = P0; p; p = p-& gt; siguiente)

if(strcmp(p-& gt ; nombre, nombre)==0)

{

printf("\n\nTítulo del libro ISBN-Biblioteca-Autor-Cantidad-de-publicación\n") ;

printf(PT);

bandera = 0;

Romper;

}

if( bandera)printf( "\nNo hay información sobre este libro\n");

getch();

}

/*Eliminar módulo* /

void del(libro de estructura *p0)

{

Nombre del personaje[10];

int flag = 1;

Estructura libro * p;

p = p0

Printf("Ingrese el título que desea eliminar: \ n "); , nombre);

Y (p!=null)

{

if(strcmp(p-& gt; nombre, nombre)==0)

{

P0->;next = p->Next;/*Después de que el nodo sucesor esté conectado al nodo predecesor*/

Libre( p);

printf("\tEste libro ha sido eliminado.");

flag = 0;

Pausa;

}

P0 = p;

p = p-& gt;Siguiente;

}

if(bandera)printf(" \ n \ tNo hay información sobre este libro.);

getch()

}

/*Agregar módulo*/

Inserción vacía (libro de estructuras*p0)

{

Libro de estructuras* p;

p = (libro de estructuras *)malloc(N);

while(1)

{

printf("\nIngrese el número del libro que desea agregar (el número del libro es 0, salida): ");

scanf("%d", &p->num);

if (p->num! =0)

{

If (P0-> siguiente!= NULL & amp& ampP0->;siguiente-> num = = p-> Num) /*Duplicar números encontrados*/

{

p = p-& gt; Siguiente

Gratis (p); \tEste libro ya existe");

}

Otro

{ printf("\n\nEn la biblioteca El número de libros y la editorial del autor donde se encuentra el título \ n ");

scanf("%s%s%s%s%d ", p-& gt; Nombre, p-& gt; donde p->autor , p->bar&p->count)

p->siguiente = p0->siguiente;

P0->siguiente = p;

printf ("\tInsertar correctamente.

);

}

}

Otro

Descanso;

}

getch();

}

/*Modificar módulo*/

Modificación no válida (libro de estructura*p0)

{

Nombre del personaje[10];

int flag = 1;

int selección;

Libro de estructura * p;

p = P0-& gt; Next;

Printf("Ingrese el título del libro que desea modificar: \ n "); , nombre );

Y (p!= NULL & amp& ampflag==1)

{

if(strcmp(p-& gt; nombre, nombre) ==0)

{

printf("\n\tPor favor seleccione el elemento a modificar:");

Printf("\n \t 1. Modificar el número del libro\n");

Printf("\n\t 2. Modificar la biblioteca donde se encuentra el libro\n");

Printf ("\n\t 3. Modificar el autor del libro\n");

Printf("\n\t 4. Modificar el editor del libro\n");

Printf ("\n\t 5 .Modificar inventario de libros\n ");

scanf("%d", & select);

Cambiar(seleccionar)

{

Caso 1:{ printf("\nIngrese un nuevo ISBN:");

scanf("%d ", p->num);

}

Caso 2:{ printf("\nIngrese una nueva biblioteca:");

scanf("%s", p-& gt ; donde) ;Pausa;

}

Caso 3:{ printf("\nPor favor ingrese el autor del nuevo libro:");

scanf( "%s ", p ->Autor);Pausa;

}

Caso 4:{ printf("\nIngrese el nuevo editor del libro:");

scanf ("%s",p->pub);Break;

}

Caso 5:{ printf("\nIngrese un nuevo inventario de libros:" );

}

p>

scanf("%d ", p-> contar

}

}

printf(" \ n \tEl elemento se ha modificado correctamente. \ n \Información del nuevo libro: ");

printf(" \ n \nISBN-Título del libro-Biblioteca-Autor-Cantidad-de publicación\ n ");

printf (PT );

flag = 0;

}

P0 = p;

p = P0-> >

}

if(flag)printf("\n\tNo hay información sobre este libro.

);

getch();

}

/*Leer archivo*/

estructura libro *read_file()

{

int I = 0;

struct book *p, *p1, * head = NULL

FILE * fp

if((fp=fopen("library.txt "," Rb ")== NULL)

{ printf(" \ n \ n \ n \ n \ t * * * * * *El archivo de biblioteca no existe, ¡créelo! **********");

getch();

Devuelve NULL

}

head =(struct book *)malloc(N);

p 1 =head;

head->; next = NULL

printf("\nInformación del libro existente:");

printf("\n\nTítulo del libro ISBN-Biblioteca-Autor-Cantidad-de-publicación\n");

Y (!feof(fp))

{

p =(struct book *)malloc(N);/*Abrir espacio para almacenar la información obtenida* /

while(fscanf(fp, " %d%s%s%s%s%d ", &p->num, p->nombre, p-> donde, p- >autor,p ->bar&p->contando)!=EOF)

{

printf(PT);

i++; /p>

p 1->; siguiente = p;

p 1 = p

}

p 1->;

fclose(FP);

Printf("\n ***tipo de %d información del libro", I);

p>

printf("\n\n\npuede leer correctamente la información del archivo. Presione cualquier tecla para ingresar al menú principal.

");

getch();

Regresar (cabeza);

}

/*Guardar archivo*/

Guardado no válido (libro de estructura * encabezado)

{

ARCHIVO * fp

Libro de estructura * p;

fp =fopen("library.txt", "WB"); /*Abrir archivo binario en modo de solo escritura*/

If(fp==NULL) /*No se puede abrir el archivo*/

{

printf(" \ n = = = = = & gt; ¡No se puede abrir el archivo! \n "); >

Regresar;

}

Otro

for(p = head-& gt; next; p!= NULLp = p-& gt; siguiente )

fprintf(fp, " %d %s %s %s %s %d\n ", p-& gt; num, p-> nombre, p-& gt; donde, p - >Autor, p->pub,p->count);

fclose(FP);

printf("\n\t¡El archivo se guardó correctamente! \ n ");

}

void main()

{

estructura libro * head = NULL

int elección = 1;

head = leer _ archivo();

if(head==NULL)

{

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

getch();

head = creat();

}

Hacer

{

system("cls");

printf(" \ t \ t-Bienvenido-\ n ");

printf(" \ n \ n \ tBienvenido, bibliotecario. \ n ");

printf(" \ n \ n \ n \ n " );

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

Printf("\n\t 1. Consultar información del libro\ n "); "\n\t 2. Modificar la información del libro\ n ");

Printf("\n\t 3. Agregar información del libro\n");

Printf("\n\t 4. Eliminar información del libro\n");

Printf("\n\t 5. Mostrar todo Información del libro\ n ");

Printf("\n\t 0. Salir del sistema\ n ");

scanf("%d ", & amp select);

Cambiar (seleccionar)

{

Caso 1: Buscar (cabeza);

Caso 2: Modificar (cabeza)

Caso 3: Insertar (cabeza);

Caso 4: Del (cabeza); ) ;Pausa;

Caso 0: system("cls");

printf("\n\n\n\n\t¡Gracias por usar, adiós!\n\ n ");

Romper;

}

}mientras(select!=0);

Guardar(head);

}