Diseño de curso de lenguaje C
Hay demasiadas puntuaciones de estudiantes. He encontrado un bibliotecario para que pueda ayudarle. El código es el siguiente:
#include lt;
#include lt; malloc.hgt;
#include lt; conio.hgt
#include string.hgt; p># include lt;stdlib.hgt;
#define LEN sizeof(struct booklist)
#define LEN2 sizeof(struct memberlist)
#define LEN3 sizeof(struct lectores)
typedef struct lectores//Estructura de información de préstamo
{
char name[30];//Nombre del prestatario
struct lectores *next2;
}lector
//Estructura de información del libro
typedef struct booklist
{
char num[20]; //número de libro
char nombre[30]; //título del libro
char preocupación[50]; //editorial
p>char fecha[20]; //Fecha de publicación
char autor[20]; //Autor
int página; //Número de páginas
int precio; //Precio
int imformation; //Cantidad restante de libros
lector *a; //Prestatario
struct booklist * next ;
}Libro;
void creatlist(); //Crear nueva información del libro
void print(Libro *head); /p>
void save(Book *head); //Guardar información del libro
void AddBook(); //Agregar información del libro
void DelBook(); Eliminar información del libro
Libro *read(); //Leer información del libro
void manager(); //Operación del administrador
void Bookconsult (); /Consulta de libro
int Borrow(); //Pedir prestado un libro
int Return(); //Devolver un libro
Libro *sort( Libro * head); //La información del libro se ordena por número de libro
void imformation(); //Información del sistema
Libro *head=NULL, *p1=NULL, *p2=NULL ;
//Crear nueva información del libro
void creatlist()
{
int i, n;
printf("Número de libros a crear");
scanf("d",&n);
p2=head=(Libro *)malloc(LEN ); /Crear una lista enlazada con un nodo principal
p2-gt; a=(reader *)
malloc(LEN3);
p2-gt; a-gt; next2=NULL;
p2-gt; next=NULL
printf("Por favor Ingrese la información del libro:\n");
for(i=1;ilt;=n;i)
{
p1=(Libro * ) malloc(LEN);
printf("número de libro: "); scanf("s", p1-gt; num);
printf("título del libro: "); scanf("s",p1-gt;nombre);
printf("Editor: "); scanf("s",p1-gt;preocupación); "Fecha de publicación: "); scanf("s", p1-gt; fecha);
printf("Autor: "); p>
printf("Número de página del libro: "); scanf("d", amp; p1-gt; página);
printf("Precio del libro (yuanes): "); ("d",amp;p1-gt;precio);
p1-gt;a=(lector *)malloc(LEN3);
p1-gt;a- gt ;next2=NULL;
p1-gt;imformación=10;
p1-gt;next=NULL;
p2-gt;next=p1 ;
p2=p1;
if(ilt;n) printf("Siguiente libro:\n");
}
head=sort(head);
save(head);
print(head);
}
// Imprimir libro información
impresión nula(Libro *cabeza)
{
Libro *p=NULL;
lector *p0=NULL ;
p=head-gt;siguiente;
printf("************************ ** ************************************************* * ****\n");
while(p!=NULL)
{
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 del libro (páginas): d\nPrecio del libro (yuanes): d\nCantidad restante: d\n", p-gt ;num,p-gt; nombre,p-gt;preocupación,p-gt;fecha,p-gt;autor,p-gt;página,p-gt;precio,p-gt;información);
printf("El persona que toma prestado el libro: ");
if(p-gt; a-gt; next2==NULL) printf("----------- -¡Aún no hay prestatario!"
else
{
for(p0=p-gt; a-gt; next2; p0!=NULL ;p0);
=p0-gt; siguiente2)
{
printf("s ", p0-gt; nombre
}
}
p=p-gt; next; /* p retrocede un nodo*/
printf("\n");
printf( " \n");
}
}
//La información del libro se ordena por número de libro
Libro *sort(Libro * head )
{
Libro *p1=NULL, *p2=NULL, *p3=NULL, *min=NULL, *min2=NULL, *head2=head-gt; siguiente ;
p1=cabeza2;
mientras(p1-gt; siguiente!=NULL)
{
min=p2= p1 ; /*Toma el primer nodo como valor mínimo*/
while(p2-gt; next!=NULL)
{
if(strcmp) (min -gt;num,p2-gt;next-gt;num)gt;0) /*Compara el primer nodo con el siguiente*/
{
min2= p2 ;
min=p2-gt;siguiente;
}
p2=p2-gt;siguiente;
} p >
if(min!=p1)
{
min2-gt; next=min-gt; /*Eliminar el nodo mínimo*/
min-gt; next=p1; /*Insertar el nodo mínimo*/
if(p1==head2) head2=min;
else p3-gt; next =min; /*p3 es el puntero de nodo antes de min*/
p3=min;
}
else
{
p3=p1;
p1=p1-gt; siguiente
}
}
cabeza -gt; next=head2;
return(head);
}
//Guardar información del libro
void save(Libro) *head)
{
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=head;
while(p!=NULL)
{
fwrite(p, LEN, 1, fp); /*Escribir archivos nodo por nodo*/
for(q=p-gt; a; q!=NULL; q=q-gt; siguiente2)
p=p-gt;
}
fclose(fp);
fclose(fp2);
}
//Agregar información del libro
void AddBook()
{
ARCHIVO *fp, *fp2;
Libro *addbook=NULL;
lector *p0=NULL
fp=fopen("Libro; Information.txt", "ab"); //Abre el archivo en modo agregar
fp2=fopen("Préstamo de información.txt", "ab");
addbook= (Libro *)malloc(LEN);
printf("Ingrese la información del libro: \n");
printf("Número de libro: "); addbook-gt ; num);
printf("Título del libro: "); scanf("s", addbook-gt; nombre);
printf("Editor: ") ; scanf ("s", addbook-gt; preocupación);
printf("Fecha de publicación: "); printf( "Autor: "); scanf("s", addbook-gt; autor);
printf("Páginas del libro: "); scanf("d", amp; addbook-gt; página ) ;
printf("Precio del libro (yuanes): "); scanf("d", amp; addbook-gt; precio
p0=(lector *)malloc); ( LEN3);
p0-gt;next2=NULL;
addbook-gt;a=p0;
addbook-gt;imformation=10;
p>
addbook-gt; next=NULL;
fwrite(addbook, LEN, 1, fp); fwrite(p0, LEN3, 1, fp2);
fclose(fp
fclose(fp2); //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);
p1=cabeza;
p0=(lector *)malloc(LEN3);
fread(p0, LEN3,
1, fp2);
p0-gt; siguiente2=NULL;
cabeza-gt; a=p0
siguiente=NULL;
p=(Libro *)malloc(LEN);
while(fread(p, LEN, 1, fp)) /*Leer nodo por nodo*/
{
p1-gt; siguiente=p;
p1=p1-gt; siguiente
p0=(lector *)malloc( LEN3 );
p1-gt; a=p0;
while(fread(p0, LEN3, 1, fp2))
{
if(p0-gt; next2==NULL)
{
p2=p0
p0=(lector *)malloc(LEN3) ;
descanso;
}
p2=p0;
p0=(lector *)malloc(LEN3);
p2-gt; siguiente2=p0;
}
libre(p0);
p2-gt;
p=(Libro *)malloc(LEN);
}
p1-gt; siguiente=NULL
libre(p); /p>
fclose(fp);
fclose(fp2);
cabeza=sort(cabeza);
if(cabeza!= NULL); ) return(head);
else
{
printf("¡El archivo está vacío!\n"); 0;
}
}
//Eliminar información del libro
void DelBook()
{
Libro *head=NULL, *p=NULL, *q=NULL;
char nombre del libro[30];
head=read(); p>
p>
printf("Ingrese el título del libro que desea eliminar: ");
scanf("s", nombre del libro
p); =head;
while(p!=NULL)/*Buscar el libro que desea eliminar por nombre*/
{
if(strcmp(p- gt; nombre, nombre del libro)==0 )
{
if(p==cabeza)
{
cabeza=cabeza -gt; siguiente;
romper
}
más
{
q-gt; =p-gt; siguiente;
p>romper
}
}
q=p;
p=p-gt; siguiente
}
guardar(cabeza);
}
//Operación del administrador
void manager()
{
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 libro 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 superior\n");
printf(" ◎ 7. Guardar y salir\n"); > printf("Por favor ingrese: ");
scanf("d", amp; n
switch(n)
{< /p); >
caso 1: creatlist(); descanso;
caso 2: AddBook();
caso 3: DelBook(); p> caso 4: cabeza=leer(); sistema("CLS"); imprimir(cabezal);
caso 5: sistema("CLS"); p>
caso 6: k=0; romper
predeterminado: k=0
}
}
<; p>}//Consulta de libro
void Bookconsult()
{
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)
{
pr
intf("Elija cómo desea buscar libros: 1. Por título del libro 2. Por número de libro 3. Por autor del libro 4. Salir de la búsqueda\n"); );
scanf("d", amp; n);
interruptor(n)
{
caso 1: printf. ("Ingrese el título del libro:");
scanf("s", a
p0=head
while(p0!=); NULL )
{
if(strcmp(a,p0-gt;nombre)==0)
{
printf( " ************************************************* ** *******************************\n");
printf("ISBN: s\ nNombre del libro: s\nEditor: s\nFecha de publicación: s\nAutor: s\nNúmero de páginas del libro (páginas): d\nPrecio del libro (yuanes): d\nCantidad restante: d\n", p0 -gt;num, p0-gt;nombre,p0-gt;preocupación,p0-gt;fecha,p0-gt;autor,p0-gt;página,p0-gt;precio,p0-gt;información); p>
printf("La persona que tomó prestado el libro: ");
if(p0-gt; a-gt; next2==NULL) printf("--------- --- ¡Aún no hay prestatario!\n");
else
{
for(p2=p0-gt;a;(p2=p2 -gt;next2 )!=NULL;)
}
printf("\n");
sign=1;
p0=p0 -gt; siguiente;
}
si( signo==0 ) printf("No hay información sobre este libro.\n");
break
caso 2: printf("Ingrese el número del libro:") ;
scanf("s",b);
p0=cabeza;
while(p0!=NULL)
{
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 del libro (páginas): d\nPrecio del libro (yuanes): d\nCantidad restante: d\n", p0-gt ;num,p0-gt ;nombre,p0-gt;preocupación,p0-gt;fecha,p0-gt;autor,p0-gt;página,p0-gt;precio,p0-gt;información);
printf(" La persona que pidió prestado el libro: ");
if(p0-gt; a-gt; next2==NULL) printf("----------- -Aún no hay prestatario !\n");
else
{
for(p2=p0-gt;a;(p2=p2-gt ;next2)!= NULL;)
}
printf("\n");
descanso
} p>
else p0=p0-gt; next;
}
if(p0==NULL) printf("No hay información sobre este libro.\n") ;
break;
caso 3: printf("Ingrese el autor del libro:");
scanf("s", c);
p>
p0=cabeza;
while(p0!=NULL)
{
if(strcmp(c,p0-gt ;autor) ==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 del libro (páginas): d\nPrecio del libro (yuanes) d\nCantidad restante: d\n", p0-gt; num, p0-gt; nombre, p0-gt; preocupación, p0-gt; fecha, p0-gt; autor, p0-gt; página, p0-gt; precio, p0-gt;
printf ("La persona que tomó prestado el libro: "); >
if(p0-gt; a-gt; next2==NULL) printf("---------------------¡Aún no hay prestatario!\n" );
else
{
for(p2=p0-gt;a;(p2=p2-gt;next2)!=NULL;)
}
printf("\n");
sign=1
p0=p0-gt; p>
}
else p0=p0-gt; next;
}
if(sign==0) printf("No hay información sobre este libro.\n"); >
descanso;
predeterminado: m=0
}
}
}
//Pedir libros prestados
int Borrow()
{
char a[30], b[30], c
<; p > Libro *p0=NULL, *head=NULLlector *p2=NULL, *p3=NULL
head=read(); > printf("Ingrese el número del libro que desea tomar prestado: ");
scanf("s", a
p0=head-gt;
mientras(p0!=NULL)
{
if((strcmp(a, p0-gt; num))==0) p>
{
if(p0-gt;imformationgt;0)
{
printf("El libro está en la biblioteca y puede ser prestado. ¿Estás seguro de que quieres tomarlo prestado?'y'or'n'\n");
c=getchar();
scanf("c",amp ;c);
if (c=='y')
{
printf("Ingrese su nombre de usuario nuevamente: " ); p>
scanf("s", b);
p3=(lector *)malloc(LEN3);
strcpy(p3-gt; nombre, b);
if(p0- gt; a-gt; next2==NULL)
{
p0-gt; next2=p3; /p>
p3-gt; next2 =NULL
}
else
{
for(p2=p0 -gt; a; p2-gt; siguiente2! =NULL; p2=p2-gt;
p2-gt; =NULL;
}
--p0-gt;imformación;
save(head);
printf("La operación Se completa y se puede retirar el libro.
\n");
devolver 1;
romper;
}
más
{ p>
return 0;
break;
}
}
else printf("Lo siento, el libro no está disponible Hall.\n"); return 0; break;
}
else p0=p0-gt; next;
}
if(p0==NULL)
{
printf("Lo sentimos, no existe tal libro.\n");
return 0;
}
else return 2
}
//Devuelve el libro
int Return() p>
{
Libro *p0=NULL, *head=NULL;
lector *p2=NULL, *p3=NULL;
char c[20], b[30];
head=read();
printf("Ingrese el ISBN del libro que desea devolver: ");
scanf("s",amp;c);
p0=head-gt;siguiente;
mientras(p0!=NULL)
{
if((strcmp(c,p0-gt;num))==0)
{
printf("Por favor, introduzca su nombre de usuario: ");
scanf("s", amp; b);
if(p0-gt; a-gt; next2==NULL)
else
{
p3=p0-gt;a;
p2=p3-gt;next2;
mientras (p2! =NULL)
{
if(strcmp(p2-gt; nombre, b)==0)
{
if (p2-gt; next2==NULL)
else
{
p3-gt; next2=p2-gt; p>
libre(p2);
descanso
}
}
más
{
p>p3=p2
p2=p2-gt;
}
}
if(p2 ==NULL) printf("¡No tomaste prestado este libro!\n");
}
p0-gt;imformación;
save(head );
printf("El libro ha sido devuelto a la biblioteca y la operación se ha completado.
\n");
devolver 1;
romper;
}
más p0=p0-gt; siguiente; p>
p>
}
if(p0==NULL)
{
printf("No existe tal libro.\ n");
p>devuelve 0;
}
de lo contrario, devuelve 2;
}
//Información de préstamo
void imformation()
{
printf("※※※※※※※※※※※※※※※※※ ※※※※※※※ ※※※※※※※※※※※※※※※※\n");
printf("※ ¡Bienvenido a utilizar nuestro sistema de gestión de bibliotecas! Los siguientes son instrucciones relevantes para este sistema: ※ \n");
printf("※La función principal de este sistema es administrar libros. Puede crear, insertar, eliminar, ※\n"); p>
printf("※Consulta; durante la operación, los números arábigos se utilizan principalmente para seleccionar la función del menú correspondiente, y 'y' se utiliza para indicar 'sí' al seleccionar ※\n"); p>printf(" ※'n' significa 'no'. Habrá indicaciones de operación correspondientes cuando opere.
※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ ※※※※※ ※\n");
}
main()
{
int n, k=1 ;
printf("****************************************** ** *****************************************\n");
printf("\n\n");
printf("¡Bienvenido a nuestro sistema de gestión de bibliotecas! \n");
printf("\n\n " );
printf("*************************************** **** *******************************************\n" ); p>
while(k==1)
{
printf(" Elija su operación: 1. Operación del administrador 2. Información del sistema 3. Salir el sistema\ n");
printf("********************************* *** ************************************************* *\n");
printf("Su elección es: ");
scanf("d",&n);
system("CLS ");
cambiar(n)
{
caso 1: administrador(); descanso;
caso 2: transformación( ); break;
default: printf("¡Bienvenido a usar nuestro sistema nuevamente! \n");
}