Lenguaje C para sistema de gestión de información bibliotecaria
¡La pregunta es la misma que la tuya!
# 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]; /*publisher*/
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 categoría*/
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);/*Insertar*/
void delete doc( struct books _ list * head, int num); /*Delete*/
void Print _ Book _ Doc(struct books _ list * head /*Browse*/
); void search _ book(struct books _ list * head); /*consulta*/
void info _ change(struct books _ list * head); void save(struct books _ list * head);/*Guardar datos en un archivo*/
/*Crear un nuevo nodo principal de lista vinculada*/
struct Books _ list * Crear _ Libros _ Doc()
{
Libros de estructura _ lista * cabeza
cabeza =(libros de estructura _ lista *)malloc(tamaño de( libros de estructura _ list));/*Asignar espacio para el nodo principal*/
head->;next = NULL/*El campo de puntero del nodo principal se inicializa y se establece en nulo*/
Devolver encabezado;
}
/*Guardar datos en un archivo*/
void save(struct books_list * head)
{
Libros de estructura _ lista * p;
FILE * fp
p = head
fp=fopen("data .txt; "," w+"); /*Cree y abra el archivo data.txt escribiendo */
fprintf(fp,"┏━━━┳━━━━━┳━━━━━ ┳ ━━━━━┳━━━━━━┳━━━┳━━━━┓\n”; /*Salir de la tabla a un archivo*/
Fprintf(fp,"┃ Número de registro┃Título del libro┃Autor┃Unidad editorial┃Tiempo de publicación┃Número de clasificación┃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->; next! =null)
{
p = p-& gt; siguiente
fprintf(fp,"┃%-6.6s┃%-10.10s┃ %-10.10s┃% -10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->loginnum,p->Título del libro,p->Autor,p-> ;Editor ,p->pbtime,p->classfy,p->price);
}
fprintf(fp,"┗━━━┻━━ ━ ━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n”); p>
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 un 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; next;
}
/*Abre un nuevo espacio, almacena datos y agrégalos al enlace. lista*/
mientras(flag=='Y'||flag=='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: "); >fflush(stdin);
scanf("%s ", s-& gt; autor);
printf(" \ nIngrese el editor del libro: "); p>
fflush (stdin);
scanf("%s ", s-& gt; editor);
printf("\nIngrese la hora de publicación del libro: ");
p>
fflush(stdin);
scanf("%s ",s-& gt;Pb time);
printf("\nPor favor ingrese el número de clasificación del libro :");
fflush(stdin);
scanf("%s ",s->classfy);
printf(" \ n Introduzca el precio del libro: ");
fflush(stdin
scanf("%f ", &s-& 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 retrocede
*/
s-& gt; next = NULL
Printf ("━ ━ ━¡Agregado correctamente!━━━━");
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*/
Regresar;
}
/*Operación de consulta*/
void search _ book (struct libros_lista*cabeza)
{
Libros de estructura_lista*p;
Temperatura de carga[20];
p= head;
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); /p>
/*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, temperatura)==0)
{< / p>
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 ("Editor: %s\t\n ", p-& gt; Editor) ;
Printf("Fecha de lanzamiento: %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)
{
printf("\n¡Consulta completada! \ n ");
}
}
}
Devolver;
}
/*Operación de navegación*/
void Print _ Book _ Doc(struct books _ list * head)
{
Estructura libros _ list * p;
if(head == NULL | | head-& gt; Next==NULL) /*determina si la base de datos está vacía*/
{
Printf ("\ n ━ ━¡No hay registro en el libro! ━━━\ n \ n ");
/p>
p = cabeza;
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");< / p>
printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━ ┫\n " );
/*El puntero se mueve desde el nodo principal al nodo final y la información del libro se genera en secuencia*/
while(p->; next!=null )
{
p = p-& gt; siguiente
printf("┃%-6.6s┃%-10.10s┃%-10.10s ┃%-10.10s ┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->loginnum,p->Título del libro,p->Autor,p->Editor,p - >pbtime,p->classfy,p->price);/*Tabla de salida de bucle*/
}
printf("┗━━━┻ ━━ ━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");
printf(" \ n " );
}
/*Operación de modificación*/
void info _ change(struct books _ list * head)
{
Libros de estructura _ list * p;
int pan Duan = 0; /*Esta variable se utiliza para determinar si se encuentra la bibliografía*/
Carga Temperatura [20];
p = head;
Printf("Ingrese el título del libro que desea modificar:
scanf("); %s ", temp);
mientras(p->; siguiente!=null)
{
p = p-& gt; siguiente;
if(strcmp(p-& gt; bookname, temp)==0)
{
printf("\nIngrese el número de tarjeta de inicio de sesión del libro: " );
fflush(stdin);
scanf("%s ", p-& gt; loginnum);
printf("\nPor favor ingrese Título del libro: ");
fflush(stdin);
scanf("%s ", p-& gt; título del libro);
printf( "\nIngrese el nombre del autor del libro:");
fflush(stdin);
scanf("%s ", p-& gt; autor); p>
printf("\nPor favor ingrese el editor del libro:");
fflush(stdin);
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",&p->precio);
printf("\n");
panduan = 1;
>
}
}
if(panduan==0)
{
Printf ("\ n ━ ━No Registro de 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->bookname,temp)==0)
{
Panduan++;
Descanso;
}
p = p-& gt; siguiente;
}
if(panduan==1)
{
for(;s->next!= p;)/*Buscar el nodo anterior y eliminar el nodo del número de tarjeta*/
{
s = s ->Next;
}
s->next = p->Next;/*Asignar la dirección del siguiente nodo al nodo anterior Campo de puntero*/
Gratis (p);
Printf ("\ n ━ ━¡Eliminar correctamente! ━━━\ n "
}
Else /*No se encontró la bibliografía correspondiente*/
{
Printf("La bibliografía que ingresó no existe, ¡confírmela e ingrésela!\ n" );
}
Regresar;
}
int main(void)
{
Libros de estructura _ list * head
selección de caracteres;
head = NULL
for(;;)/*Realizar entradas repetidas y selección* /
{
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("Por favor seleccione:");
fflush(stdin);
scanf("%c ", & elección de amplificador);
if(choice=='1 ')
{
if(head==NULL)
{
head = Crear _ Libros _ Doc();
}
insertar doc(head);
else if(choice=='2 ')
{
Print_Book_Doc (encabezado);
}
else if (choice=='3 ')
{
search_book(head);
}
else if(choice==' 4')
{
info_change(header);
}
si no(choice=='5') p>
{
eliminar documento(head);
}
si no(choice=='6 ')
{
printf(" \ n ");
Printf ("━ ━ ━ ━ ━ ━ ━Gracias por usar el sistema de gestión de bibliotecas━━n "); >
Pausa;
}
Otro
{
Printf ("━ ━ ━Error de entrada, vuelva a ingresar ! ━━━━");
Romper;
}
}
Devuelve 0;
}