Consultar reprogramación
# include & ltstdio.h & gt
# include & ltmalloc.h & gt
# incluir & ltconio.h & gt
# incluir & ltstring.h & gt
# incluir & ltstdlib.h & gt
#Definir LEN sizeof(bibliografía de estructura)
#define len 2 sizeof(struct member list)
#Define LEN3 sizeof(lector de estructura)
Lector de estructura Typedef// Pedir prestado estructura de información
{
char name[30]; // nombre del prestatario
Lector de estructura * next2
} Lector; p>
//Estructura de información del libro
lista de libros con estructura typedef
{
Número de carácter [20] //Número de libro
;char name[30]; //Título del libro
char focus[50]; //Presione
char date[20] // Fecha de publicación
char autor[20]; //autor
int página; //página
int precio; //precio
Información; de libros restantes
Lector* a; //Prestatario
struct booklist * next
}libro;
void creat list() ; //Crear nueva información del libro
Void print(book*head); //Imprimir información del libro
Void save(book*head);/ /Almacenar información del libro
void AddBook(); //Añadir información del libro
void del book(); //Eliminar información del libro
Libro*Leer( );
void manager(); //Operación del administrador
void book consult(); //Consulta de libros
int Borrow (); /p>
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); /p> p>
p2->a=(lector*)mallock(en3)
p2->a->next2 = NULL
p2-> ;siguiente = NULL
Printf("Ingrese la información del libro:\ n ");
for(I = 1;I<= n;i++)
{
p 1 =(Libro *)malloc(LEN);
printf(" ISBN:"); scanf("%s ", p 1->; num);
printf(" Título:"); scanf("%s ", p 1->; nombre);
printf(" editor:"); , 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); ->a=(lector*)mallock(en3)
p 1->a->next2 = NULL
p 1->info = 10;
p 1->; siguiente = NULL
p2->; siguiente = p 1;
p2 = p 1;
if(i<N) printf ("Siguiente libro:\ n ");
}
head=sort(head);
Guardar (head); >Imprimir (cabeza);
}
//Imprimir información del libro
Impresión nula (libro*cabeza) )
{
Libro * p = NULL
lector * p0 = NULL
p = head-& gt; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ 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áginas (número de páginas):% d\nPrecio del libro (yuanes):% d\nCantidad restante:% d\n", número de página, P-> nombre, p-> cuidado, p-> fecha, p-> autor, p-> página, p-> precio, p->>Printf("Persona del libro prestado: ");
Si (p->a->Siguiente2
= = null) printf (" -¡Sin prestatario!");
Otro
{
for(P0 = p-& gt;a- & gt ; siguiente2p0! = 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*sort(libro*título)
{
Libro *p1=NULL, *p2=NULL, *p3=NULL, *min=NULL , *min2=NULL, * cabeza 2 = cabeza-> siguiente
p 1 = cabeza 2
mientras(p 1->; siguiente!=null ) p>
{
min = p2 = p 1; /*Toma el primer nodo como valor mínimo*/
Y (p2->siguiente! = vacío)
{
if(strcmp(min->num, p2->next->num)>0) /*El primer nodo y comparación entre los siguientes nodos*/ p>
{
min2 = p2
min = p2-& gt; siguiente;
}
p2 = p2 -& gt; siguiente;
}
si (min!=p1)
{
min 2->; min-> next; /*Eliminar el nodo más pequeño*/
min->; next = p 1;/*Insertar el nodo más pequeño */
if(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
}
Otros
{
P3 = p 1;
p 1 = p 1->;
}
}
cabeza->; siguiente = cabeza2
Retorno (encabezado);
}
//Almacenamiento de información del libro
Desactivar y guardar (libro*encabezado)
{
ARCHIVO *fp, *fp2 p>
Libro * p = NULL
lector * q = NULL
Fp=fopen("Información del libro . txt", "WB"); //printf (" ¡No se puede abrir el archivo!\n ");
Fp2=fopen("Préstamo de información.
txt", "WB"); //printf ("¡No se puede abrir el archivo! \n ");
p = encabezado;
Y (p! = vacío) p> p>
{
fwrite(p, LEN, 1, FP) /*Escribir archivos nodo por nodo*/
for(q = p-& gt); ; a ;q! = NULLq = q-& gt; Siguiente paso 2)
{fwrite(q, LEN3, 1, fp2);}
p = p-& gt ; Continuar hacia abajo;
}
fclose(FP);
fclose(fp2);
}
/ /Agregar información del libro
void AddBook()
{
FILE *fp, *fp2
Libro * addbook = NULL p>
lector * p0 = NULL
Fp=fopen("Información del libro. txt", "ab"); //Abre el archivo añadiendo
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->num);
printf(" Título:"); s " , addbook-& gt; nombre);
printf(" editor:"); scanf("%s ", addbook-& gt; atención);
Printf( "editor:" Fecha: "); scanf ("%s ", addbook-& gt; Fecha);
Printf ("Autor: "); scanf ("%s ", addbook-& gt ; Autor);
Printf("Número de páginas del libro:"); scanf("%d",&addbook->page);
Printf("Precio del libro (yuanes): "); scanf("%d",&addbook->precio);
p0=(reader*)mallock(es3);
P0->next2 = NULL
addbook->a = p0
addbook->info=10;
addbook->next = NULL
p >fwrite(addbook, LEN, 1, FP); /*Bloquear escritura*/
fwrite(p0, LEN3, 1, fp2);
fclose( FP) ;
fclose(fp2);
}
//Leer información del libro
Libro*leer()
{
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 *)malloc(l EN3);
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->; P0 =(lector *)malloc(l 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
}
Libre(P0);
p2- >; siguiente2 = NULL
p = (Libro *)malloc(LEN);
}
p 1->; siguiente = NULL
Gratis(p);
fclose(FP);
fclose(fp2);
head=sort(head);
If (head!=NULL) return (head);
Otro
{
Printf("¡El archivo está vacío!\n ") ;
Devuelve 0;
}
}
//Eliminar información del libro
void DelBook() p>
{
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 = cabeza;
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;
Pausa;
}
}
q = p;
p = p-& gt;Siguiente p>
}
Guardar (encabezado);
}
//Operación del administrador
Administrador no válido () p>
{
int n, i=0, k = 1;
mientras(k==1)
{
imprimir
(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ 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 libros Información\ n ");
Printf(" ◎ 4. Leer toda la información del libro\ n ");
Printf(" ◎ 5. Leer la información especificada del libro\ n");
Printf(" ◎ 6. Volver al directorio principal\ n ");
Printf(" ◎ 7. Guardar y salir\ n "); >Printf ("Por favor ingrese:");
scanf("%d ", & ampn);
Cambiar (n)
{
Caso 1: crear lista(); romper;
Caso 2: AddBook(); romper; >
Caso 4: head = read(); system("CLS"); print(head break);
Caso 5: system("CLS"); ;
Caso 6: k = 0; romper
Predeterminado: k = 0; romper
} p>
}
//Consulta de libro
Consulta de reserva no válida()
{
int n, m=1 , sign = 0;
Libro *p=NULL, *p1=NULL, *p0=NULL, * head = NULL
lector * p2 = NULL
char a[30], b[20], c[20];
cabeza = leer();
mientras(m==1)
{
Printf("Seleccione cómo desea buscar libros: 1. Presione el título 2. Presione el tercer libro. Presione el autor 4. Salga de la búsqueda\n "
printf(" input = ");
scanf("%d ", & ampn);
Cambiar(n)
{
Caso 1: printf("Ingrese el título:");
scanf("%s ", a);
p0 = cabezal de presión; /p>
Y (p0! = vacío)
{
if(strcmp(a,P0->nombre)==0)
{
printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("Número de libro: % s \ nTítulo del libro: % s \ nEditorial: % 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->enfoque, p0->fecha, P0->autor, P0->página, p0->precio,P0-> ("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-> nombre);}
}
printf(" \ n ") ;
signo = 1;
p0=p0->Siguiente;
}
En caso contrario P0 = P0-& gt; Siguiente;
}
If(sign==0) printf("No hay información sobre este libro.\n ");
Pausa
Caso 2: printf("Por favor, ingresa el libro número:");
scanf("%s ", b);
p0 = cabezal de presión;
Y (p0!=null) p>
{
if(strcmp(b,P0->num)==0)
{
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("Número de libro: % s \ nTítulo del libro: % s \ n Editorial: % s \ n Fecha de publicación: % s \ n Autor: % s \ n Número de páginas (número de páginas): % d \ n Precio del libro (yuanes): % d \ n Cantidad restante: % d \ n ", P0.num, p0->nombre, p0->atención, p0- >fecha, p0->autor, p0->página, p0->precio, p0->información
Printf("Prestatario:");
If (P0-); & gt; a-& gt; Next2 == null) printf (" - ¡Sin prestatario!\n ");
Otro
{
for( p2 = P0-> a; (p2 = p2-> siguientes 2)! = NULL)
{printf("%s ", p2-& gt; nombre);}
}
printf(" \ n ");
Pausa;
}
En caso contrario P0 = P0-& gt;Siguiente;
}
Si (p0==NULL) printf("No hay información sobre este libro.
\ n ");
Pausa;
Caso 3: printf("Por favor 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\nLibro Número de páginas (número de páginas):% d\nPrecio del libro (yuanes)% d\nCantidad restante:% d\n", P0-.num, p0->nombre, P0-> enfoque, p0-> Fecha, P0-> ; Autor, P0-> Página, p0-> Precio, P0-> Información);
Printf("Prestatario:");
p>
Si ( P0-& gt; a-& gt; Siguiente2 == null) printf (" -¡Sin prestatario!\n "); for(p2 = P0-& gt; a; (p2 = p2-& gt; siguientes 2)!= NULL)
{printf("%s " , p2->nombre);}
}
printf("\n");
signo = 1;
p0=p0->Siguiente;
}
En caso contrario P0 = P0-& gt;Next;
}
If(sign==0) printf("No hay información sobre este libro.\n ");
Pausa;
Valor predeterminado: m = 0;Pausa;
p>
}
}
}
//Pedir prestado libros
int Borrow()
{
char a[30], b[30], c;
libro *p0 = vacío, *cabeza = vacío
lector *p2 =NULL, * p3 = NULL
head = read();
Printf("Ingrese el número del libro prestado:");
scanf( "%s ", a);
P0 = cabeza->;Siguiente;
Y (p0! = vacío)
{
if((strcmp(a, P0-& gt; num))==0)
{
If (P0->Información>0)
{
Printf("El libro está en la biblioteca y se puede tomar prestado.
¿Estás seguro de que quieres ir a verlo? y ' o ' n ' \ n ");
c = getchar();
scanf("%c ", & ampc);
if (c=='y ')
{
Printf("Por favor, ingrese su nombre de usuario nuevamente:");
scanf("%s " , b
P3 = (lector *)malloc(EN3);
strcpy(P3-& gt; nombre, b
Si (P0-); >a->next2==NULL)
{
P0->;a->next2 = p3
P3 ->; NULL
}
Otro
{
for(p2 = P0-& gt;a;p2- > next2! = NULL p2 = p2-> siguiente 2);
p2->; siguiente2 = p3
P3->;
-P0->;Información;
Guardar(head);
Printf("Una vez completada la operación, puede retirar el libro.\n ");
Retorno 1;
Interrupción;
}
Otro
{
Return 0;
Break;
}
}
Else printf("Lo sentimos, el libro no está en la sala de libros. \n "); devolver 0; romper;
}
En caso contrario P0 = P0-& gt; siguiente;
}
if(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 introduzca el ISBN del libro que desea devolver: ");
scanf("%s ", & ampc);
P0 = head->; Siguiente;
Y (p0!=null)
{
if((strcmp(c,P0->num))==0)
{
Printf("Ingrese su nombre de usuario:");
scanf("%s ", & ampb); a-& gt; Next2==NULL) {printf("¡Usted no tomó prestado este libro!\n ");}
Otro
{ p>
p3=p0->a;
p2 = P3->;siguiente2
Y (p2!=null)
{ p>
if(strcmp(p2->nombre,b)==0)
{
if (p2->siguiente 2 == NULL){ P3 -> next2 = NULL free(p2);Break;}
Otro
{
P3->;next 2 = p2->
Gratis(p2);
Descanso;
}
}
Otro
{
p3 = p2
p2 = p2-& gt; siguiente2
}
}
Si(p2 ==NULL) printf("¡Usted no tomó prestado este libro!\n ");
}
++p0->Información;
Guardar (encabezado);
Printf("El libro ha sido devuelto a la biblioteca, la operación se ha completado.\n ");
Devolución 1;
Romper;
}
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 ", &n);
Sistema("CLS");
Conmutador(n)
{
Caso 1: administrador(); break;
Caso 2: mensaje(); break
Predeterminado: printf ("++++++++++++ ¡Bienvenido nuevamente a usar nuestro sistema! ++ +++++++++++++++++ ++ n "); k = 0; descanso;
}
}
}