Red de conocimiento informático - Computadora portátil - Consultar reprogramación

Consultar reprogramación

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

# 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;

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

{

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

{

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

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>

{

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

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

{

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

}

Guardar (encabezado);

}

//Operación del administrador

Administrador no válido ()

{

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

}

}

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

{

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

{

p3=p0->a;

p2 = P3->;siguiente2

Y (p2!=null)

{

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

{

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;

}

}

}