# 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 "); p>
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*/ p>
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)
{ p>
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() p >
{
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 p>
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*/ p>
{
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 " ); p>
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);
}