Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo crear un sistema de gestión de bibliotecas utilizando lenguaje C

Cómo crear un sistema de gestión de bibliotecas utilizando lenguaje C

Escribí esto yo mismo.

Las notas son muy claras

Si tienes alguna duda, pregúntame.

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

/p>

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-> >Título del libro, p->Autor,p->Editor,p->pbtime,p->classfy,p->Precio);

}

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)

{

/* Definir la variable de puntero de estructura S para apuntar a la primera dirección p del nuevo nodo abierto como una variable intermedia */

struct books_list *s, * p;

char flag = ' Y/* Definir la bandera para facilitar al usuario la elección de entradas repetidas*/

p = head;

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

mientras (p->;Siguiente!=null)

{

p = p->Siguiente;

}

/*Abre un nuevo espacio, almacena datos y agrégalos a la lista enlazada*/

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

{

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

printf("\nIngrese el número de registro del libro:");< / p>

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(" \ n Por favor ingrese 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); /p>

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",&s->price);

printf("\n");

p->next = s;/*Agregar nuevo Se agrega el nodo a la lista enlazada*/

p = s /*p apunta al nodo de cola y se mueve hacia atrás*/

s-& gt; p>pri

ntf ("━ ━ ━¡Agregado exitosamente!━━━━");

printf(" \ n¿Continuar agregando? (Y/N):);

fflush(stdin );

scanf("%c ", & bandera);

printf(" \ n ");

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

{ break}

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

{ Continuar;}

}

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

Volver;

}

/*Operación de consulta*/

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

{

Estructura books_list * p;

Temperatura de carga [20];

p = cabeza

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

{

Printf ("━ ━ ━¡La base de datos está vacía!━━━\ n ");

}

Otro

{

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

mientras(p->; siguiente!=null)

{

p = p-& gt; siguiente;

if (strcmp( p->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->loginnum);

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

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

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

p>

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

Printf("Fecha de publicación: %s\t\n ",p- & gt; Pb time

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

Printf ("precio: %. 2f\t\n ", p-> 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 "); ;

printf("┏━━━┳

━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n”); Número de registro ┃ título del libro ┃ autor ┃ unidad editorial ┃ hora de publicación ┃ número de clasificación ┃ precio ┃n”

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

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

while(p->; next!=null)

{

p = p-& gt;

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->Precio);/*Tabla de salida de bucle* /

}

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

printf(" \ n ");

}

/*Operación de modificación*/< / p>

void info _ change(struct books _ list * head)

{

estructura libros _ list * 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 = p-& gt; siguiente

if(strcmp(p-& gt;nombre del libro, temperatura) ==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:

);

fflush(stdin);

p>

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

printf("\nPor favor ingrese el libro editor:");

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

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

fflush(stdin);

scanf("%f ", &p->; precio

printf( " \ n ");

panduan = 1;

}

}

si(panduan==

0)

{

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

}

Regresar;

}

/*Eliminar operación*/

anular eliminar documento(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 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-> nombre del libro, temp)==0)

{

Panduan++;

Pausa;

}

p = p-& gt;Siguiente;

}

if(panduan==1)

{

for(;s->next!= 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*/

Free(p);

Printf ("\ n ━ ━¡Eliminación exitosa!━━━\ n ");

}

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

{

Printf("La bibliografía que ingresó no existe, ¡confírmela e ingrese! \ n ");

}

Regresar; >

}

int main(void)

{

Libros de estructura _ lista * encabezado

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("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;

}