Buscando el código del sistema de la biblioteca pequeña (estructura de datos C)

Este programa es solo de referencia

# include ltstdio.h gt

# include ltmath.h gt

# include ltstring.h gt

# include ltstdlib.h gt

Estructura books_list

{

char autor[20] /*nombre del autor*/

< p; >char nombre del libro[20];/*Título*/

char editor[20];/*Editor*/

char Pb hora[15];/*Fecha de publicación */

char loginnum[10]; /*Número de inicio de sesión*/

Precio flotante; /*Precio*/

char classfy[10];/ *Categoría número*/

estructura libros _ lista * siguiente/*Campo puntero de lista enlazada*/

};

estructura Libros _ lista * Crear _ Libros _ Doc();/*Crear una nueva lista enlazada*/

void insert doc(struct books _ list * head);/*Insert*/

void delete doc(struct books _ list * head, int num);/*Eliminar*/

void Print _ Book _ Doc(struct books _ list * head /*Browse*/

void search); _ book(struct books _ list * head); /*consulta*/

void info _ change(struct books _ list * head); (struct books _ list * head);/*Guardar datos en un archivo*/

/*Crear un nuevo nodo principal de lista vinculada*/

struct Books _ list * Create _ Books _ Doc()

{

Libros de estructura _ lista * cabeza

cabeza =(libros de estructura _ lista *)malloc(tamaño de(libros de estructura _ lista ));/*Asignar espacio para el nodo principal*/

head->;next = NULL/*El campo de puntero del nodo principal se inicializa y se establece en nulo*/

Regresar header ;

}

/*Guardar datos en un archivo*/

void save(struct books_list * head)

{

Estructura books_list * p;

ARCHIVO * fp

p =head;

fp=fopen("data.txt " , " w "); /*Crea y abre el archivo data.txt escribiendo */

fprintf(fp, "┏━━━┳━━━━━┳━━━━━┳━━ / Libro título┃Autor

┃Unidad de publicación┃Tiempo de publicación┃Número de categoría┃Precio\n);

fprintf(fp, "┣━━━╋━━━━━╋━━━━━╋━━━━━╋ ━━━━━━╋━━━╋━━━━┫\n”);

/*El puntero se mueve desde el nodo principal al nodo final y la información del libro se genera en secuencia */

while(p->; siguiente! = vacío)

{

p = p- gt;

fprintf(fp, "┃ -6.6s┃-10.10s┃-10.10s┃-10.10s┃-12.12s┃-6.6s┃.2f ┃\n", p-gt; loginnum, p- gt; título del libro, p- gt; p- gt; editor, p- gt; pbtime, p- gt; classfy, p- gt;

}

fprintf(fp, "┗━━━ ┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n”);

fclose(FP );

Printf("Los datos del libro se han guardado en el archivo data.txt\n ");

}

/ *Insert*/

void insert doc(struct books _ list * head)

{

/*Defina la variable de puntero de estructura S para que apunte a la primera dirección p del nuevo nodo abierto como variable intermedia */

struct books_list *s, * p;

char flag = ' Y/*Definir bandera para facilitar la selección del usuario de repetidos input*/

p = Head;

/*Atravesar hasta el nodo de cola, p apunta al nodo de cola*/

while(p->; siguiente! = vacío)

{

p = p- gt;

}

/*Abrir un nuevo espacio, almacenar datos y agregarlos a la lista vinculada*/

while(flag=='Y'||flag=='y ')

{

s =(struct books _ list *)malloc(size of (struct books _ list));

printf(" \ nIngrese el número de registro del libro:

fflush; (stdin);

scanf( "s ", s- gt; loginnum

printf(" \nIngrese el título del libro:

fflush(stdin);

scanf("s ", s- gt; título del libro);

printf(" \nIngrese el nombre del autor del libro: ");

fflush(stdin);

scanf("s ", s- gt; autor);

printf("\nIngrese el editor del libro: " );

fflush(stdin);

scanf("s", s- gt; editor);

printf(" \nIngrese la publicación del libro. tiempo: ");

fflush (stdin);

scanf("s",s- gt;Pb tiempo);

printf("\nPor favor ingrese el número de clasificación del libro: ");

fflush(stdin);

scanf("s ",s- gt; classfy);

printf( "\n

Introduzca el precio del libro: ");

fflush(stdin);

scanf("f ", amps- gt; precio);

printf( " \n ");

p->; next = s;/*Agregar el nodo recién agregado a la lista vinculada*/

p = s; el nodo de cola y retroceder */

s- gt; next = NULL

Printf ("━ ━ ━¡Agregado exitosamente!━━━━"); p> printf("\n¿Continuar agregando? (S/N):);

fflush(stdin);

scanf("c ", amp flag);

printf(" \ n ");

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

{ break}

else if(flag=='Y'||flag=='y ')

{Continue;}

}

Guardar (encabezado) ;/*Guardar datos en el archivo*/

Volver;

}

/*Operación de consulta*/

anular búsqueda _ libro (struct books _ list * head)

{

Libros de estructura _ list * p;

Temperatura de carga[20];

p = head;

if(head == NULL | | head- gt; Next==NULL) /*determina si la base de datos está vacía*/

{

Printf ("━ ━ ━¡La biblioteca está vacía! ━━━\ n "

}

Otros

{

);

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

fflush(stdin);

scanf("s ", temp);

/*El puntero se mueve desde el nodo principal al nodo final para buscar información bibliográfica*/

while(p->; next!=null)

{

p = p- gt; siguiente

if(strcmp(p- gt; nombre del libro, temp)==0)

{

printf("\n¡Un libro encontrado!\n");

printf("\n");

Printf("Número de inicio de sesión: s\t\n ", p- gt; loginnum);

Printf ("Título: s\t\n ", p- gt; título del libro);

Printf ("Nombre del autor: s \t\n ", p- gt; Autor);

Printf ("Editorial: s\t\n ", p- gt; Editor);

Printf(" Lanzamiento fecha: s\t\n ", p- gt; Pb hora);

Printf("Número de clasificación: s\t\n ", p- gt; classfy);

Printf ("precio: .2f\t\n ", p- gt; precio

}

if (p->; next==NULL) p>

{

printf("\n¡Consulta completada! \ n ");

}

}

}

Devolver;

}

/*Operación de exploración*/

void Print _ Book _ Doc(struct books _ list * head)

{

Estructura libros _ list * p;

if(head == NULL | | head- gt; Next==NULL) /*Determinar si la base de datos está vacía*/

{

Printf ( " \ n ━ ━¡No hay registro en el libro! ━━━\ n \ n ");

Regresar

}

p = encabezado

printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━ ┓\n") ;

Printf("┃Número de registro┃Título del libro┃Autor┃Unidad de publicación┃Tiempo de publicación┃Número de categoría┃Precio┃n");

printf("┣━━━╋ ━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n”); comienza desde el principio El nodo se mueve al nodo de cola y genera información del libro en secuencia*/

while(p->; next! = vacío)

{

p = p- gt; siguiente;

printf("┃-6.6s┃-10.10s┃-10.10s┃-10.10s┃-12.12s┃-6.6s┃.2f ┃\n ", p-gt; loginnum, p- gt; título del libro, p- gt; autor, p- gt; editor, p- gt; pbtime, p- gt; classfy, p- gt; precio); /* salida en bucle table */

}

printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━ ┻━━━ ┻━━━━┛\n");

printf(" \ n ");

}

/*Operación de modificación* /

void info _ change(estructura libros _ lista * cabeza)

{

estructura libros _ lista * p;

int pan Duan = 0 ;/*Esta variable se utiliza para determinar si se encuentra el directorio de literatura*/

Temperatura de carga[20];

p = head;

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

scanf("s ", temp

while(p->; next! = vacío); )

{

p = p- gt; siguiente;

if(strcmp(p- gt; nombre del libro, temp)==0)

{

printf(" \nIngrese el número de tarjeta de inicio de sesión del libro: "

fflush(stdin

scanf("s); ", p- gt; loginnum);

printf("\nIngrese el título del libro: ");

fflush(stdin);

scanf( "s",p- gt; título del libro);

printf(" \ nIngrese el nombre del autor del libro: "); >

scanf("s ", p- gt; autor);

printf(" \nIngrese el editor del libro: "); /p>

scanf ("s ", p- gt; fuera

Editor);

printf(" \ nIngrese la hora de publicación del libro: ");

fflush(stdin); - gt; Pb time);

printf(" \ nIngrese el número de clasificación del libro: "

fflush(stdin); s ", p- gt; classfy);

printf(" \nIngrese el precio del libro: ");

fflush(stdin);

scanf ("f", ampp->;precio);

printf("\n");

panduan = 1;

}

}

if(panduan==0)

{

Printf ("\ n ━ ━¡No hay registro en el libro! ━━━\ n \ n ");

}

Regresar;

}

/*Eliminar operación*/

void eliminar doc(struct books _ list * head)

{

struct books_list *s, * p /*s es una variable intermedia, p es un puntero*/

Temperatura de carga[20];

int panduan/*Esta variable se utiliza para determinar si se ha encontrado el directorio de literatura*/

panduan = 0;

p = s = header;

printf("[Ingrese el título del libro que desea eliminar]:);

scanf("s ", temp

/*Atravesar hasta el nodo final*/

Y (p! = vacío)

{

if(strcmp). (p- gt; nombre del libro, temp )==0)

{

Panduan;

Pausa;

}

p = p - gt; siguiente

}

if(panduan==1)

{

para (; s- gt; ¡Siguiente! = p;)/*Buscar el nodo anterior y eliminar el nodo del número de tarjeta*/

{

s = s- gt;Siguiente;

}

s- gt; next = p- gt; /*Asigna la dirección del siguiente nodo al campo de puntero del nodo anterior*/

Free(p);

Printf ("\ n ━ ━¡Eliminar correctamente! ━━━\ n ");

}

Else /*No se encontró ningún libro correspondiente*/

{

Printf( "La bibliografía que ingresaste no existe, ¡confirma e ingresa! \n "

}

Regresar

}

int main(void)

{

Libros de estructura _ list * head

selección de caracteres;

head = NULL

for(;;)/*Realizar entradas y selecciones repetidas*/

{

printf(“┏━┓━━━━━━━━━━━ ━ ━━━━━━━┏━┓\n”);

printf(“┃┃\n sistema de gestión de bibliotecas socat”).

printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); [1]Entrada de información del libro┃\n ");

printf("┃┃\n");

Printf(" ┃ ●[2] Exploración de información del libro┃\n ");

printf("┃┃\n");

Printf(" ┃ ●[3] Consulta de información del libro┃\n ");

printf("┃┃\n");

Printf(" ┃ ●[4] Modificación de información del libro┃\n ");

printf("┃┃\n"

Printf(" ┃ ●[5]Eliminar información del libro┃\n ");

printf("┃┃\n"); Printf(" ┃ ●[6]Salir del sistema┃\n ");

printf("┗━━━━━━━━━━━━━━━━━━━━━━ ━ ┛\n");

Printf("Seleccione: ");

fflush(stdin);

scanf("c ", selección de amplificador ) ;

if(choice=='1 ')

{

if(head==NULL)

{

head = Crear _ Libros _ Doc();

}

insertar doc(head)

}

else if(elección=='2 ')

{

Print_Book_Doc(encabezado);

}

else if(elección =='3 ')

{

search_book(head);

}

else if(choice=='4 ' )

{

info_change(encabezado);

}

else if(choice=='5 ')

{

eliminar documento(head);

}

else if(choice=='6 ')

{

printf(" \ n ");

Printf ("━ ━ ━ ━ ━ ━ ━Gracias por usar el sistema de gestión de bibliotecas━━n "); p >Pausa;

}

Otro

{

Printf ("━ ━ ━Error de entrada, ¡vuelve a ingresar! ━━━━");

Romper;

}

}

Devuelve 0;

}