Problemas de programación de datos en la gestión de bibliotecas
# include ltstdio.h gt
# include ltmalloc.h gt
# include ltconio.h gt
# include ltstring.h gt
# include ltstdlib.h gt
#Definir LEN sizeof (bibliografía de estructura)
# define len 2 sizeof(struct member list)
#Define LEN3 sizeof(struct member list)
Lector de estructura Typedef//estructura de información prestada
{
char name[30]; //Nombre del prestatario
Lector de estructura * next2
}Lector;
/ /Información del libro estructura
lista de libros de estructura typedef
{
Número de carácter [20] //Número de libro
nombre de carácter [30]; //Título del libro
char focus[50]; //Presione
char date[20]; //Fecha de publicación
char Author[20]; //Autor
int page; //Página
int precio; //Precio
Información //Número de libros restantes p>
Lector * a; // Prestatario
struct booklist * next
} book;
void creat list() // Crear nueva información del libro
p>Invalidar impresión (libro*head); //Imprimir información del libro
Invalidar guardar (book*head); //Guardar información del libro
void AddBook(); //Agregar información del libro
void del book(); //Eliminar información del libro
Book*Read() //Leer información del libro
void manager (); //Operación del administrador
void book consult(); //Consulta de libro
int Borrow() //Préstamo de libro
int Return( ); //Devolver libros
Libro*sort (libro*cabeza); //La información del libro se ordena por número de libro.
void information(); //Información del sistema
Libro *head=NULL, *p1=NULL, *p2 = NULL
//Crear nuevo libro información
void creatlist()
{
int i, n;
Printf("Número de libros a crear") ;
scanf("d ", ampn);
p2 = head =(Book *)malloc(LEN); //Crea una lista enlazada con un nodo principal
p2->;a=(lector*)mallock(en3);
p2->;a-gt;next2 = NULL
p2->;next= NULL
Printf("Ingrese la información del libro:\ n ");
for(I = 1; i lt= n; i)
{
p 1 =(Libro *)malloc(LEN);
printf(" ISBN: "); scanf("s ", p 1->; num); p>
p>
printf("Título:");scanf("s",p 1->;nombre);
printf("editor:");scanf(" s",p 1 ->;Seguir);
Printf("Fecha de publicación:");scanf("s",p 1->;Fecha);
Printf( "Autor:") ;scanf("s ", p 1->; autor);
Printf("Número de páginas del libro: "); scanf("d ", ampp 1->; página);
Printf("Precio del libro (yuanes):"); scanf("d", ampp 1->; precio
p 1->; (lector*) Mallock (EN3);
p 1->; a- gt; next2 = NULL
p 1->; >p 1-> ;siguiente = NULL
p2->;siguiente = p 1;
p2 = p 1;
if (iltN) printf( "Siguiente libro :\ n ");
}
head=sort(head
Guardar (head); Imprimir (cabeza);
}
//Imprimir información del libro
Desactivar impresión (libro*cabeza)
{
Libro * p = NULL
lector * p0 = NULL
p = head- gt;
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n ");
Y (p! = vacío)
{
Printf("Número de libro: s\nTítulo del libro: s\nEditor: s\nFecha de publicación: s\nAutor: s\nNúmero de página (número de páginas ): d \ n Precio del libro (yuanes): d \ n Cantidad restante: d \ n ", número de página, P- gt; nombre, p- gt; preocupación, p- gt; fecha, p- gt; Autor, p -gt;
, p- gt; precio, p- gt; información);
Printf("Prestatario: "); ) printf (" -¡No hay prestatario!");
Otro
{
for(P0 = p- gt; a- gt ;next2p0! = NULLp0 =p0->Siguiente2)
{
printf("s ", P0- gt; nombre);
}
}
p = p- gt; next; /* p mueve un nodo hacia atrás*/
printf(" \ n "); >printf(" \ n ");
}
}
//La información del libro se ordena por número de libro.
Libro*Ordenar(Libro*Título)
{
Libro *p1=NULL, *p2=NULL, *p3=NULL, *min=NULL , *min2=NULL, * cabeza 2 = cabeza- gt; siguiente;
p 1 = cabeza 2
mientras(p 1->; siguiente!=nulo)
p>
{
min = p2 = p 1; /*tomar el primer nodo como valor mínimo*/
Y (p2->siguiente!= Vacío)
{
if(strcmp(ming- gt; num, p2->next- gt; num)>0) /*El primer nodo y el siguiente nodo Comparación entre */
{
min2 = p2
min = p2- gt; siguiente
} p>
p2 = p2; - gt; siguiente;
}
si (min!=p1)
{
min 2->; - gt; next; /*Eliminar el nodo más pequeño*/
min->; next = p 1; head 2)head 2 = min;
De lo contrario P3->;next = min/*p3 es el puntero de nodo antes de min*/
p3 = valor mínimo
}
Otro
{
P3 = p 1;
p 1 = p 1->; /p>
}
}
cabeza->; siguiente = cabeza2
return (cabeza) ;
}
//Información del libro de almacenamiento
Guardado no válido (libro*cabeza)
{
ARCHIVO *fp, * fp2
Libro * p = NULL
lector * q = NULL
Fp=fopen("Información del libro.txt", "WB "); //printf ("No se puede abrir archivo!\n ");
Fp2=fopen("Información de préstamo.
txt", "WB"); //printf ("¡No se puede abrir el archivo! \n ");
p = encabezado;
Y (p! = vacío) p> p>
{
fwrite(p, LEN, 1, FP); /*Escribir archivo nodo por nodo*/
for(q = p- gt; a; q! = NULLq = q- gt; siguiente paso 2)
{fwrite(q, LEN3, 1, fp2);}
p = p- gt; ;
}
fclose(FP);
fclose(fp2);
}
// Añadir libros Información
void AddBook()
{
FILE *fp, *fp2
Libro *addbook = NULL
reader * p0 = NULL
Fp=fopen("Información del libro. txt", "ab"); //Abre el archivo agregando
Fp2=fopen( "Información de préstamo . txt", "ab");
addbook =(Libro *)malloc(LEN);
Printf("Ingrese la información del libro:\n ");
printf("ISBN:");scanf("s",addbook-gt;num);
printf("Título:");scanf("s",addbook- gt;nombre );
printf("editor:");scanf("s", addbook- gt; seguir);
Printf("Fecha de publicación:");scanf ("s ", addbook- gt; fecha);
Printf("Autor: "); scanf("s ", addbook- gt; autor
Printf("); Páginas del libro Número: "); scanf ("d ", ampaddbook- gt; página);
Printf ("Precio del libro (yuanes): "); scanf ("d ", ampaddbook- gt ; precio);
p0=(lector*)mallock(en3);
P0->;next2 = NULL
addbook- gt;a = p0
addbook-gt;info=10;
addbook-gt;next=NULL
fwrite(addbook,len,1,FP);/*bloque escribir* /
fwrite(p0, LEN3, 1, fp2);
fclose(FP); p> }
//Leer información del libro
Libro *read()
{
ARCHIVO *fp, *fp2 p>
Libro *p=NULL, *p1=NULL, * head = NULL
lector *p0=NULL, * p2 = NULL
If((fp=fopen ("Información del libro. txt "," rb"))==NULL) printf("¡No se puede abrir el archivo o el archivo no existe! \n ");
If((fp2=fopen("Información de préstamo.
txt "," rb"))==NULL) printf("¡No se puede abrir el archivo o el archivo no existe!\n");
head = (Libro *)malloc(LEN);
fread(cabeza, LEN, 1, FP);
p 1 = cabeza
p0 = (lector*)mallock(EN3); p>fread(p0, LEN3, 1, fp2);
P0->; next2 = NULL
cabeza->; a = p0
cabeza- >;next = NULL
p =(Book *)malloc(LEN);
While (Fread (p, len, 1, FP))/*Leer nodo por nodo* /
{
p 1->; siguiente = p;
p 1 = p 1->; =(lector*)mallock(en3);
p 1->;a = p0
mientras(fread(p0,LEN3,1,fp2))
{
Si (P0- gt; next2==NULL)
{
p2 = p0
p0= (Lector *)Mallock(EN3);
Pausa;
}
p2 = p0
p0=(Lector*) Mallock (EN3 );
p2->; siguiente2 = p0
}
Gratis (P0);
p =(Libro *)malloc(LEN);
}
p 1->;siguiente = NULL
Gratis( p);
fclose(FP);
fclose(fp2);
head=sort(head);
Si ( head!=NULL) return (head);
Otro
{
Printf("¡El archivo está vacío!\n ");
Devuelve 0;
}
}
//Eliminar información del libro
void DelBook()
{
Libro *head=NULL, *p=NULL, *q = NULL
char nombre del libro[30];
head = read() ;
Printf("Ingrese el título que desea eliminar: ");
scanf("s ", nombre del libro);
p = Head;
Y (p! =NULL)/*Buscar el libro que desea eliminar por nombre*/
{
if(strcmp(p- gt; name, bookname)==0)
{
if(p==cabeza)
{
cabeza = cabeza- gt;
romper;
}
Otro
{
q->; siguiente = p- gt; Romper;
}
}
q = p;
p = p- gt;Siguiente;
}
Guardar (encabezado);
}
//Operación del administrador
Administrador no válido
()
{
int n, i=0, k = 1;
mientras(k==1)
{
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("Seleccione la operación que necesita\ n ") ;
Printf(" ◎ 1. Crear nueva información del libro\ n ");
Printf(" ◎ 2. Insertar información del libro\ n "); > Printf(" ◎ 3. Eliminar información del libro\ n ");
Printf(" ◎ 4. Leer toda la información del libro\ n ");
Printf(" ◎ 5. Leer Especificar información del libro\n");
Printf(" ◎ 6. Volver al directorio principal\n ");
Printf(" ◎ 7. Guardar y salir\n ");
Printf("Ingrese: ");
scanf("d ", ampn);
Switch(n)
{
Caso 1: crear lista(); romper;
Caso 2: AddBook(); romper; ); break ;
Caso cuatro: head = read(); system("CLS"); print(head);
Caso cinco: system("CLS") ; consultar libro ();
Caso 6: k = 0;
Predeterminado: k = 0; >
}
}
//Consulta de reserva
Consulta de reserva no válida()
{
int n , m=1, signo = 0;
Libro *p=NULL, *p1=NULL, *p0=NULL, * head = NULL
lector * p2 = NULL p>
char a[30], b[20], c[20];
head = read()
mientras(m==1; )
p>
{
Printf("Seleccione el método con el que desea buscar libros: 1. Presione el título 2. Pulsa el tercer libro. Por el autor 4.
Salir de la consulta\n ");
printf(" input = ");
scanf("d", ampn);
switch(n)
{
Caso 1: printf("Ingrese un título: ");
scanf("s ", a
p0 = altura de presión;
Y (p0!=null)
{
if(strcmp(a,P0- gt;name)==0 )
{
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("Número de libro: s\nTítulo del libro: s\nEditor: s\nFecha de publicación: s\nAutor: s\nNúmero de páginas (número de páginas): d\nPrecio del libro (yuanes): d\nCantidad restante: d\n",P0.num, p0->nombre , P0- gt; foco, p0-> fecha, P0- gt; autor, P0- gt; página, p0-> precio,
Printf("Prestatario: ") ;
If (P0- gt; a- gt; Next2 == null) printf (" -¡No hay prestatario! \n ");
Otro
{
for(p2 = P0- gt; a; (p2 = p2- gt; siguientes 2)! = NULL)
{printf("s ", p2- gt; nombre);}
}
printf("\n");
signo = 1 ;
p0=p0-> Siguiente;
}
De lo contrario P0 = P0- gt;Siguiente;
}
If(sign==0) printf( "No hay información sobre este libro. \n ");
Break;
Caso 2: printf( "Ingrese el número del libro: "); p>scanf("s ", b);
p0 = cabezal de presión
And (p0! = vacío)
{
if(strcmp(b,P0- gt;num)==0)
{
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("Número de libro: s \nTítulo del libro: s\nEditor: s\nFecha de publicación: s\nAutor: s\ nNúmero de páginas (número de páginas): d\nPrecio del libro (yuanes): d\nCantidad restante: d\n", P0.
num, p0-> nombre, P0- gt; foco, p0-> fecha, P0- gt; autor, P0- gt; página, p0-> información ("Prestatario: ");
If (P0- gt; a- gt; Next2 == null) printf (" -¡No hay prestatario! \n ");
p>Otro
{
for(p2 = P0- gt; a; (p2 = p2- gt; siguientes 2)! = NULL)
{printf( "s",p2- gt;nombre);}
}
printf("\n");
Romper
}
De lo contrario P0 = P0- gt; next;
}
If(p0==NULL) printf(" No hay información sobre este libro
Pausa;
Caso 3: printf("Ingrese el autor del libro: ");
scanf("s ",c);
p0 = altura de presión;
Y (p0! = vacío)
{
if(strcmp( c, P0- gt; autor)==0)
{
Función de impresión
("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *);
Printf("Número de libro: s\nTítulo del libro: s\nEditor: s\nFecha de publicación: s\nAutor: s\nNúmero de páginas del libro ( Número de páginas): d\n Libro precio (yuanes) d\nCantidad restante: d\n ", P0-.num, p0-> nombre, P0- gt; foco, p0-> fecha, P0- gt; autor, P0- gt; página, p0-> precio, P0- gt; información);
Printf("Prestatario: ");
If (P0- gt; a- gt; Next2 == null) printf (" - ¡Sin prestatario!\n ");
Otro
{
for(p2 = P0- gt; a; (p2 = p2- gt; siguientes 2 )! = NULL)
{printf("s ", p2- gt; nombre);}
}
printf(" \ n ");
signo = 1;
p0=p0->Siguiente;
}
En caso contrario P0 = P0- gt; /p>
}
If(sign==0) printf("No hay información sobre este libro.
\ n ");
Pausa;
Valor predeterminado: m = 0; Pausa;
}
}
}
//Pedir prestado libros
int Borrow()
{
char a[30], b[30 ], c;
Libro *p0 = vacío, *head = vacío
lector *p2 = NULL, *p3 = NULL
head = leer( );
Printf("Ingrese el número del libro prestado: ");
scanf("s ", a
P0); head- >;Siguiente;
Y (p0!=null)
{
if((strcmp(a,P0- gt;num))= = 0)
{
If (P0- gt; información gt0)
{
Printf("El libro está en el biblioteca, OK Prestado. ¿Estás seguro de que quieres comprobarlo? y ' o ' n ' \ n ");
c = getchar();
scanf("c ", ampc) ;
if(c=='y ')
{
Printf("Ingrese su nombre de usuario nuevamente: "); p>
scanf("s ", b);
P3 = (lector *)malloc(EN3);
strcpy(P3- gt; nombre, b);
p>If (P0- gt; a- gt; next2==NULL)
{
P0->;
P3->; next2 = NULL
}
Otro
{
for(p2 = P0 - gt; a ;p2->;siguiente2! = NULLp2 = p2- gt;siguiente 2);
p2->;siguiente2 = p3
P3->;siguiente2 = NULL
}
-P0->;Información;
Guardar(head);
Printf("Una vez completada la operación, puedes llevarte el libro Gone.\n");
Regreso 1;
Pausa;
}
Otro
{
Devuelve 0
Romper
}
}
Else printf( "Lo siento, el libro no está en la biblioteca. \n "); devolver 0; romper;
}
De lo contrario P0 = P0- gt; siguiente;
}
si (p0==NULL)
{
Printf("Lo sentimos, este libro no existe.
\ n ");
Devuelve 0;
}
En caso contrario, devuelve 2;
}
/ /Devolver el libro
int Return()
{
Libro * p0 = vacío, *cabeza = vacío
lector *; p2 =NULL, * p3 = NULL
char c[20], b[30];
head = read();
Printf("Por favor ingrese el ISBN del libro a devolver: ");
scanf("s ", ampc);
P0 = head->; next;
y (p0!=null)
{
if((strcmp(c,P0- gt;num))==0)
{ p >
Printf("Ingrese su nombre de usuario: ");
scanf("s ", ampb);
If (P0- gt; a- gt; Next2 ==NULL) {printf("¡Usted no tomó prestado este libro!\n ");}
Otro
{
p3= p0 ->a;
p2 = P3->;siguiente2
Y (p2!=null)
{
if( strcmp (p2- gt; nombre, b)==0)
{
if (p2->siguiente 2 == NULL){ P3- gt; siguiente2 = NULL libre( p2 ); romper;}
Otro
{
P3->; siguiente 2 = p2- gt; );
Pausa;
}
}
Otros
{
p3 = p2
p2 = p2- gt; siguiente2
}
}
If(p2==NULL) printf( " ¡No tomaste prestado este libro! \ n ");
}
p0->Información;
Guardar (encabezado);
Printf("El libro ha sido devuelto a la biblioteca, la operación se completó. \n ");
Devolución 1;
Pausa;
En caso contrario P0 = P0- gt; siguiente;
}
if(p0==NULL)
{
Printf("No existe tal libro. \ n ");
Devuelve 0;
}
En caso contrario, devuelve 2;
}
/ /Información de préstamo
Información no válida()
{
printf(" \\\\\\\\\\" n ");
Printf("※¡Bienvenido a utilizar nuestro sistema de gestión de bibliotecas! ※La siguiente es una descripción de este sistema:\n");
Printf("※La función principal de este sistema es administrar libros, puede Crear, insertar, eliminar y ※\n "Información del libro);
printf("※query; En funcionamiento, la función de menú correspondiente se selecciona principalmente mediante números arábigos y 'y' significa 'sí' al seleccionar);
printf("※Use 'n' para indicar 'no'. Habrá indicaciones de operación correspondientes durante la operación.
※n ");
printf(" \\\\\\\\\\" n ");
}
principal() p>
{
int n, k = 1;
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n ");
printf(" \ n \ n ");
Printf("¡Bienvenido a nuestro sistema de gestión de bibliotecas! \ n "); n \ n ");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
mientras(k== 1)
{
Printf("Seleccione su operación: 1. Operación de administrador 2. Información del sistema 3. Salga del sistema\ n "); * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("Tu elección es");
scanf( "d", ampn );
Sistema("CLS");
Switch(n)
{
Caso 1: administrador(); ;
Caso 2: mensaje(); break;
Predeterminado: printf ("¡Bienvenido a usar nuestro sistema nuevamente! n ");
}
}
}