La Red de Conocimientos Pedagógicos - Conocimientos históricos - Lenguaje C para sistema de gestión de información bibliotecaria

Lenguaje C para sistema de gestión de información bibliotecaria

¡Lo escribí yo mismo!

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

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: "

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);

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')

{

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;

}