Red de conocimiento informático - Conocimientos de programación - Problemas de programación de datos en la gestión de bibliotecas

Problemas de programación de datos en la gestión de bibliotecas

/*Este programa es una reproducción del blog de Tianya Diving 2*/

# 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

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

}

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>

{

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

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

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

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)

{

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

{

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

}

}

}