Diseño del curso de estructura de datos del sistema de gestión de bibliotecas en lenguaje C
# 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*/ p>
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 = 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 = 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)
{ p>
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>
} 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)
{ p >
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;
}