La Red de Conocimientos Pedagógicos - Conocimientos históricos - Diseño del curso de estructura de datos del sistema de gestión de bibliotecas en lenguaje C

Diseño del curso de estructura de datos del sistema de gestión de bibliotecas en lenguaje C

# incluir ltstdio.h gt

# incluir ltmath.h gt

# incluir ltstring.h gt

# incluir ltstdlib.h gt

Estructura lista_libros

{

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

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] /*Número de clasificación*/

struct books _ list * next/*Campo puntero de la lista enlazada*/

};

struct Books _ list * Create _ Books _ Doc();/*Crear una nueva lista enlazada */

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

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

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

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

void info _ change(struct books _ list * head); /*Modificar*/

void save(struct books _ list * head); al archivo*/

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

estructura Libros _ lista * Crear _ Libros _ Doc()

{

Libros de estructura _ list * head

head =(struct books _ list *)malloc(size of(struct books _ list));/*Asignar espacio para el nodo principal*/

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

Devolver encabezado;

}

/*Guardar datos en un archivo*/

void save(struct books_list * head)

{

Estructura de libros _ list * p; /p>

ARCHIVO *fp

p=head;

fp=fopen("data.txt", "w"); /*Escribiendo*/ Crear y abra el archivo data.txt

fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━ /

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*/

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

{

p = p- gt; siguiente;

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; autor, p - gt; editor, p- gt; pbtime, p- gt; classfy, p- gt;

}

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

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

}

/*Insertar*/

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 entradas repetidas*/

p = encabezado;

/*Atravesar hasta el nodo final, p apunta al nodo final*/

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

{

p = p- gt;

}

/*Abre un nuevo espacio, almacena datos y agrégalos al enlace. lista*/

mientras( bandera=='Y'||bandera=='y ')

{

s =(estructura libros _ lista * )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: "); p>

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

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

scanf(" s ", s- gt; autor

printf(" \nIngrese el editor del libro:

fflush(stdin);

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

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

fflush(stdin);

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

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

fflush(stdin);

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

printf("\nIngrese 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 /*p apunta al nodo de cola y se mueve hacia atrás*/

p>

s- gt; next = NULL

Printf ("━ ━ ━¡Agregado correctamente! ━━━━");

printf(" \ nContinue"); para agregar ? (S/N):);

fflush(stdin);

scanf("c ", bandera de amplificador); \ n ");

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

{ break}

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

{Continue;}

}

Guardar (encabezado) /*Guardar datos en; file */

Return;

}

/*Operación de consulta*/

void search _ book(struct books _ list * head )

{

Lista de libros de estructura * p;

Temperatura de carga[20];

p = head;

p>

if(head == NULL | | head- gt; Next==NULL) /*Determinar 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¡Encontrado un libro! \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("Fecha de publicación: s \t\n ", p- gt; Pb tiempo);

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

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

}

if (p->; next==NULL)

{

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

}

}

}

Devolver;

}

/*Operaciones de navegación*/

>

void Print_Book_Doc(estructura libros_lista*cabeza)

{

Estructura libros_lista*p;

if(cabeza = = NULL | ━━\ n \ n ");

Retorno;

}

p = encabezado;

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

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

printf("┣━━━╋━━━━━╋ ━━━ ━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n”);

/*El puntero se mueve desde el nodo principal a el nodo de cola y los libros se generan en secuencia Información*/

while(p->; next!=null)

{

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, pbtime, p- gt; classfy, p- gt; p>

}

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 Encuentra la bibliografía*/

Temperatura de carga[20];

p = head;

Printf("Por favor, introduzca el título del libro a modificar:") ;

scanf("s ", temp);

while(p->; next!=null)

{

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: "); ("s ", p- gt; autor);

printf(" \nIngrese el editor del libro: "); >scanf("s ", p- gt; Editor);

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

fflush(stdin);

scanf("s ", p- gt; Pb time

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

fflush(stdin);

scanf("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*/

anular eliminar documento(estructura libros _ lista * encabezado)

{

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

Temperatura de carga [20];

p>

int panduan/*Esta variable se utiliza para determinar si se ha encontrado la bibliografía*/

panduan = 0;

p = s =head;

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

scanf("s ", temp);

/*Atravesar hasta el nodo final*/

Y (p!=null)

{

if(strcmp(p- gt; bookname , temp)==0)

{

Pan Duan;

Descanso;

}

p = p- gt; siguiente;

}

if(panduan==1)

{

for(;s- gt ;siguiente!= p;)/*buscar el nodo A anterior elimina el nodo del número de tarjeta*/

{

s = s- gt

>}

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

Libre (p );

Printf ("\ n ━ ━¡Eliminación exitosa! ━━━\ 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);

}

si no(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;

}