Cómo crear un sistema de gestión de bibliotecas utilizando lenguaje C
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) p >
{
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); p>
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;
}