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

Los comentarios son muy claros

Avíseme si hay algo que no está claro

#include

#include

#include

#include

#include

estructura lista de libros

{

estructura lista de libros

{

estructura lista de libros

Sistema de gestión de bibliotecas en lenguaje C.

h>

struct books_list

{

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

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

char editor[20]; /*organización editorial*/

char pbtime[15] /* tiempo de publicación*/

;

char loginnum[10]; /* Número de inicio de sesión*/

precio flotante; /* Precio*/

char classfy[ 10] /* número de clase*/

struct books_list * next; /* Campo puntero de la tabla vinculada*/

};

struct books_list * Create_Books_Doc() /* Nueva tabla vinculada*/

void InsertDoc (struct books_list * head);/* Insert***

void DeleteDoc(struct books_list * head, int num);/* Delete***

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);/* Guardar datos en un archivo**

/*Crear un nuevo enlace lista encabezado Nodo**

struct books_list * Create_Books_Doc()

{

struct books_list * head;

head=(struct books_list *) malloc(sizeof(struct books_list)); /* Asignar espacio para el nodo principal**

head-> next=NULL /* El campo del puntero del nodo principal se inicializa en nulo*

return head;

}

/* Guardar datos en un archivo*/

void save(struct books_list * head)

{

struct books_list *p;

ARCHIVO *fp;< > /* El puntero se mueve desde el nodo principal, atraviesa hasta el nodo final y genera información del libro en secuencia*

while(p->siguiente! = NULL)

{

p=p->siguiente;

fprintf(fp,"┃%-6.6s┃%-10.10s┃%- 10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->loginnum,p->nombre del libro,p->autor,p->editor,p->pbtime ,p->classfy,p->precio);

fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10.10s┃%- archivo txt\n");< /

p>

}

/*Insertar**

void InsertDoc(struct books_list *head)

{

/* Defina la variable de puntero de estructura s para que apunte a la primera dirección p del nuevo nodo que se está abriendo como una variable intermedia *

struct books_list *s, *p;

char flag=' Y'; /*Defina la bandera, el usuario puede elegir ingresarla repetidamente*/

p=head;

/*Atravesar hasta el nodo de cola, p apunta a la cola nodo*/

while(p->siguiente!= NULL )

{

p=p->siguiente;

}

/*Abrir nuevo espacio, almacenar datos, agregar a la lista vinculada*/

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

{

s=(struct books_ list *)malloc(sizeof(struct books_list));

printf("\n Ingrese el número de inicio de sesión del libro: ");

fflush(stdin);

scanf("%s",s->loginnum);

printf("/n Introduzca el título del libro: ") ;

fflush( stdin);

scanf("%s",s->bookname);

printf("\n Introduzca el nombre del autor del libro :");

fflush(stdin);

scanf("%s",s->autor);

printf("\n Por favor ingrese el editor del libro: ");

fflush(stdin);

scanf("%s",s->editor);

printf("/ n Introduzca la hora de publicación del libro: ");

fflush(stdin);

scanf("%s",s->pbtime);

printf ("\n Introduzca 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->price);

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

s->next=NULL;

printf(" ¡━━━━ se ha agregado correctamente! ━━━━");

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

fflush(stdin);

scanf("%c",&flag);

printf("\n");

if(f

lag=='N'||flag=='n')

{break;}

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

{break; }

Esta es la primera vez que agrego un archivo nuevo.

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

{continue;}

}

guardar(cabeza) ; /*Guardar datos en el archivo**

return;

}

//// Operación de consulta**

void search_book (struct books_list *head)

{

struct books_list * p;

char temp[20];

p=head;

if(head==NULL || head->next==NULL) /* Determinar si la base de datos está vacía*/

{

printf( " ━━━━ ¡La biblioteca está vacía! ━━━━\n");

}

else

{

printf ( "Ingrese el título del libro que está buscando: ");

fflush(stdin);

scanf("%s",temp);

/* Mueve el puntero del nodo principal al nodo final para buscar información bibliográfica*

while(p->next!= NULL)

{

p=p->siguiente;

if(strcmp(p->nombre del libro,temp)==0)

{

printf(" \n libro encontrado! \n");

printf("\n");

printf("Número de inicio de sesión: %s\t\n",p->loginnum );

printf("Título del libro: %s\t\n",p->nombre del libro);

printf("Nombre del autor:

printf ("Nombre del autor: %s\t\n",p->nombre del libro)==0)

{

{

s\t\n ",p ->autor);

printf("Editor: printf("Editor: %s\t\n",p->editor);

printf("Publicación fecha: % s\t\n",p->pbtime);

printf("Número de clasificación: %s\t\n",p->pbtime);

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

printf("Precio: %.2f\t\n",p->precio);

}

if(p->next===NULL)

{

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

p>

}

}

}

}

regresar;

}

/* Operación de exploración*/

void Print_Book_Doc(struct books_list * head)

{

struct bo

oks_list * p;

if(head==NULL || head->next==NULL) /* Determinar si la base de datos está vacía*/

{

printf("\n ━━━━ ¡No hay registro en el libro! while(p->next!= NULL)

{

p=p->next;

printf("̈%-6.6s̈%-10.10s̈%-10.10s̈%-10.10s̈%-12.12s̈%-6.6s̈%.2f ̈",p->loginnum,p->nombre del libro,p- > autor,p->publisher,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)

{

struct books_list * p;

int panduan=0 /*Esta variable se utiliza para determinar si se encuentra el título del libro

char temp[ 20];

p=head;

printf("Ingrese el título del libro que desea modificar.:");

scanf("% s",temp);

while(p->siguiente!= NULL)

{

p=p->siguiente;

if(strcmp(p->bookname,temp)==0)

{

printf("/n Introduzca el número de tarjeta de inicio de sesión del libro:") ;

fflush(stdin);

scanf("%s",p->loginnum);

printf("/n Introduzca el nombre del libro: ");

fflush(stdin);

scanf("%s",p->bookname);

printf("\n Por favor, introduzca el nombre del autor del libro: ");

fflush(stdin);

scanf("%s",p->autor);;

printf(" %s", p->autor).

printf("/n Introduzca el editor del libro:");

fflush(stdin);

scanf ("%s ",p->editor);

printf("/n Introduzca la fecha de publicación del libro:");

fflush( stdin);

scanf( "%s",p->pbtime);

printf("/n Introduzca la clasificación del libro

número: ");

fflush(stdin);

scanf("%s",p->classfy);

printf("/n Por favor introduzca el precio del libro: ");

fflush(stdin);

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

printf("\ n");

panduan=1;

}

}

if(panduan==0)

{

printf("\n ━━━━ ¡No hay registro en el libro! ━━━━\n\n");

}

return ;

}

/* Operación de eliminación***

void DeleteDoc(struct books_list * head)

{

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

char temp[20];

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

panduan=0;

p=s=head;

printf ( " [ Ingrese el nombre del libro que desea eliminar]: ");

scanf("%s",temp);

/* Atravesar hasta el nodo final */

while(p!= NULL)

{

if(strcmp(p->bookname,temp)==0)

{

panduan++;

pausa;

}

p=p->siguiente;

}

if(panduan==1)

{

for(;s->next!=p;) /* Encuentra el nodo anterior de el nodo del número de tarjeta que desea eliminar*/

{

s=s->next;

}

s-> next=p->next; /* Will La dirección del último nodo se asigna al campo de puntero del nodo anterior*/

free(p);

printf(" \n ━━━━ ¡eliminado exitosamente! ━━━━\n");

}

else /* no se encontró la bibliografía correspondiente */

{

printf(" La bibliografía que ha ingresado no existe, ¡confírmela e ingrésela!\n");

}

return;

}

int main(void)

{

struct books_list * head;

elección de caracteres;

head= NULL;

for(;;) /* Implementar selección de entrada repetida*/

{

printf(" ┏ ━━━━━━━━━ ━━━━━━━━━━━━━ ━━━\n");

printf(" ┃ Sistema de gestión de bibliotecas Sokat┃ \n");

>

printf(" ┃ ━━━ ━━━━━━━━━━━━━━━━━━━ ┃ \n"); ━━━━━━━━━━━━━━━━━ ┃ \n");

printf("┃ ●[1] Entrada de información del libro┃ \n");

printf("┃ ┃ \n");

printf("┃ ┃ \n");

printf("┃ ●[2] Exploración de información de la biblioteca ┃ \n");

printf("┃ \n");

printf("┃ ┃\n");

printf("┃ socat sistema de gestión de biblioteca┃\n");

printf(" );

printf("┃ ●[3]Consulta de información del libro ┃\n");

printf("┃ ┃\n");

printf("┃ ●[4] Modificación de información del libro┃\n");

printf("┃ ┃\ n ");

printf("┃ ┃\n");

printf("┃ ●[5] ;

fflush(stdin);

scanf("%c",&choice);

if(choice=='1')

{

if ( head===NULL)

{

head=Crear _Books_Doc();

}

InsertDoc(head);

p>

}

else if(choice=='2')

{

Print_Book_Doc(head);

}

else if(choice=='3')

{

search_book(head);

}

más si(choice=='4')

{

info_change(head);

}

más si (choice=='5')

{

DeleteDoc(head);

}

else if(choice== ' 6')

{

printf("\n");

printf(" ━━━━━━━━ Gracias por usar la biblioteca sistema de gestión ━━━━━━━━\n");

descanso;

}

más

{< / p>

printf(" ━━━━ Error de entrada, ¡vuelva a escribir! ━━━━");

romper;

}

}

devolver 0;

}