Diseño de curso de lenguaje C
Hay demasiadas puntuaciones de estudiantes. He encontrado un bibliotecario para usted. Espero que pueda ayudar. El código es el siguiente:
#include #include #include #include #include < stdlib. h> #definir tamaño LEN de (lista de libros de estructuras) #definir tamaño de LEN2 de (lista de miembros de estructuras) #definir tamaño de LEN3 de (lectores de estructuras) lectores de estructura typedef//Estructura de información de préstamo { char name[30];//Nombre del prestatario lectores de estructura *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 char fecha[20];//Fecha de publicación char autor[20];//Autor int page;//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);//Imprimir información del libro 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(Book *head); la información 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=(Book *)malloc(LEN); //Crear banda lista enlazada con nodo principal p2->a=(reader *)malloc(LEN3); p2->a->next2=NULL; p2- >next=NULL; printf("Por favor, introduce el libro Información:\n"); for(i=1;i<=n;i++) { p1=(Libro *)malloc ( LEN); printf("Número de libro: "); scanf("%s",p1->num); printf("Título del libro: "); "%s",p1->nombre); printf("Editor: "); scanf("%s",p1->preocupación); printf(" Publicación fecha: "); scanf("%s",p1->fecha); printf("Autor: "); scanf("%s",p1->autor); printf("Recuento de páginas del libro: "); scanf("%d",&p1->página); printf("Precio del libro (yuanes): "); ",&p1->precio); p1->a=(lector *)malloc(LEN3); p1->a->next2=NULL; p1->imformación=10; p1->siguiente=NULL; p2->siguiente=p1; p2=p1; /p> if(i } head=sort(head); save(head); print(head); } //Imprimir información del libro void print (Libro *head) { Libro *p=NULL; lector *p0=NULL; p=head- >siguiente ; printf("************************************ *** ***************************************\n"); while(p!=NULL) { printf("ISBN: %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",p->num,p-> nombre,p->concern,p-> fecha,p->autor,p->página,p->precio,p->información); printf("La persona que tomó prestado el libro:") ; if(p->a->next2==NULL) printf("-------------¡Aún no hay prestatario!"); else { for(p0=p->a->siguiente2;p0!=NULL;p0=p0->siguiente2) { printf( "%s ",p0->name); } } p=p->next; / * p retrocede un nodo*/ printf("\n");< /p> printf("\n"); } } //La información del libro se ordena por número de libro Libro *sort(Libro *cabeza) { Libro *p1=NULL,*p2=NULL,*p3=NULL,*min=NULL,*min2= NULL, *cabeza2=cabeza->siguiente; p1=cabeza2; mientras(p1->siguiente!=NULL) { min=p2=p1; /*Toma el primer nodo como valor mínimo*/ while(p2->next!=NULL) { if(strcmp(min->num,p2->next->num)>0) /*Compara el primer nodo con el siguiente nodo*/ { min2= p2; min=p2->siguiente; } p2=p2->siguiente; } p> if(min!=p1) { min2->next=min->next /*Eliminar el nodo mínimo*/ min->next=p1; /*Insertar el nodo mínimo*/ if(p1==head2) head2=min; else p3->next=min; /* p3 es el puntero de nodo antes de min*/ p3=min; } else { p3=p1; p1=p1->siguiente; } } cabeza->siguiente=cabeza2 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("Información del préstamo.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->a;q!=NULL; q =q->siguiente2) p=p->siguiente; } fclose(fp); fclose( fp2 ); } //Agregar información del libro void AddBook() { ARCHIVO * fp,*fp2; Libro *addbook=NULL; lector *p0=NULL; fp=fopen("Información del libro.txt", " ab"); //Abre el archivo en modo agregar fp2=fopen("Préstamo Information.txt","ab"); addbook=(Libro *)malloc(LEN); printf("Ingrese la información del libro:\n"); printf("Número de libro: "); scanf("%s",addbook->num); printf("Título del libro: "); - >nombre); printf("Editor: "); scanf("%s",addbook->preocupación); printf("Fecha de publicación: "); ("%s",addbook->fecha); printf("Autor: "); scanf("%s",addbook->autor); Número de páginas del libro: "); scanf("%d",&addbook->page); printf("Precio del libro (yuanes): "); scanf("%d",&addbook ->precio); p0=(lector *)malloc(LEN3); p0->next2=NULL; addbook->a=p0 ; addbook->imformation=10; addbook->next=NULL; 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("Borrow Message.txt","rb"))==NULL) printf("¡No se puede abrir el archivo o el archivo no existe!\n"); head=(Libro * )malloc(LEN); fread(head,LEN,1,fp); p1=head; p0=(lector *) malloc(LEN3); fread(p0,LEN3,1,fp2); p0->next2=NULL; head->a=p0 ; head- >next=NULL; p=(Libro *)malloc(LEN); while(fread(p,LEN,1, fp)) /*Leer nodo por nodo */ { p1->next=p; p1=p1->next; p0=(lector * )malloc(LEN3); p1->a=p0; while(fread(p0,LEN 3,1,fp2)) { if(p0->next2==NULL) { p2=p0 ; p0=(lector *)malloc(LEN3); break; } p2=p0; p0=(lector *)malloc(LEN3); p2->next2=p0; } gratis(p0); p2->siguiente2=NULL; p=(Libro *)malloc(LEN); } p1->siguiente =NULL; libre(p); fclose(fp); fclose(fp2); head=sort( head); if(head!=NULL) return(head); else { printf("El archivo está vacío!\n"); return 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 del libro que desea eliminar: "); scanf("%s" ,bookname); p=head; while(p!=NULL)/*Buscar libros para eliminar por nombre*/ { if(strcmp(p->nombre,nombre del libro)==0) { if(p==cabeza) { head=head->siguiente; descanso; } más { p> q->siguiente=p->siguiente; romper; } } q=p p=p->siguiente; } guardar(cabeza); } //Operación del administrador void manager() { int n,i=0,k=1; while( 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 la información especificada del libro\n") ; p> printf(" ◎ 6. Regresar al directorio superior\n"); printf(" ◎ 7. Guardar y salir\n"); printf ("Por favor, introduzca:"); scanf("%d",&n); switch(n) { caso 1: creatlist();romper; caso 2: AddBook();romper; caso 3: DelBook();romper; caso 4: head=read();system("CLS");print(head);break; caso 5: system("CLS");Bookconsult();break; caso 6: k=0;romper; predeterminado: k=0;romper; } } } //Consulta de libro void Bookconsult() { int n,m=1,sign=0 ; p> Libro *p=NULL,*p1=NULL,*p0=NULL,*head=NULL; lector *p2=NULL; char a [30 ],b[20],c[20]; head=read(); mientras(m==1) { printf("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"); printf( "input="); scanf("%d",&n); cambiar(n) { caso 1: printf("Ingrese el título del libro:"); scanf("%s",a); p0=head; while (p0!=NULL) { if(strcmp(a,p0->nombre)==0) { printf("************************************************ ********************************\n"); printf("ISBN : %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->num, p0->nombre,p0->concern,p0->fecha,p0->autor,p0->página,p0->precio,p0->información); printf ("La persona que toma prestado el libro:"); if(p0->a->next2==NULL) printf("------------¡Aún no hay prestatario! \n"); else { for(p2=p0->a;(p2=p2->next2)!=NULL;) } printf("\n"); sign=1; p0=p0->siguiente; p > } else p0=p0->next; } if(sign==0) printf("No existe tal libro información.\n"); break; caso 2: printf("Por favor, introduzca el número del libro:"); scanf("% s ",b); p0=cabeza; while(p0!=NULL) { if(strcmp( b ,p0->num)==0) { printf("************************ ** ************************************************* *** ********\n"); printf("ISBN: %s\nTítulo del libro: %s\nEditor: %s\nFecha de publicación: %s\n Autor : %s\nNúmero de páginas del libro (páginas): %d\nPrecio del libro (yuanes): %d\nCantidad restante: %d\n",p0->num,p0->nombre,p0->concern,p0- >fecha,p0->autor,p0->página,p0->precio,p0->información); printf("La persona que tomó prestado el libro:"); if(p0->a->next2==NULL) printf("---------------------¡Aún no hay prestatario!\n"); else p> { for(p2=p0->a;(p2=p2->next2)!=NULL;) } printf("\n"); romper } else p0=p0->siguiente; } p> si(p0==NULL) printf ("No hay información sobre este libro.\n"); break; caso 3: printf("Ingrese el autor del libro:"); p> scanf("%s",c); p0=cabeza; while(p0!=NULL) { p> if(strcmp(c,p0->autor)==0) { printf ("***** *** ************************************************* **** **********************\n"); printf("ISBN: %s\nTítulo del libro: %s \nEmpresa publicada: %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- >num ,p0->nombre,p0->concern,p0->fecha,p0->autor,p0->página,p0->precio,p0->información); printf("Propietario del libro prestado :"); if(p0->a->next2==NULL) printf("------------¡Aún no hay prestatario!\n"); p> else { for(p2=p0->a;(p2=p2->next2)!=NULL;) } printf("\n"); sign=1; p0=p0->siguiente; } else p0=p0->next; } if(sign==0) printf("No hay información sobre este libro. \n" ); romper; predeterminado: m=0; romper; } } } //Pedir prestado libros int Borrow() { char a[30],b[30] ,c; Libro *p0=NULL,*head=NULL; lector *p2=NULL,*p3=NULL; head=read( ); printf("Ingrese el número del libro que desea tomar prestado:"); scanf("%s",a); p0 = cabeza->siguiente; mientras(p0!=NULL) { if((strcmp(a,p0->num))== 0 ) { if(p0->imformation>0) { printf("La biblioteca está en la biblioteca y se puede pedir prestado, ¿estás seguro de prestar? 'y'o'n'\n"); c=getchar(); > scanf("%c",&c); if(c=='y') { printf("Por favor, introduzca su nombre de usuario: "); scanf("%s",b); p3=(lector *)malloc(LEN3); strcpy( p3-> nombre,b); if(p0->a->siguiente2==NULL) { p0->a->siguiente2 =p3; p3->next2=NULL; } else { for( p2=p0 ->a;p2->siguiente2!=NULL;p2=p2->siguiente2); p2->siguiente2=p3; p3->siguiente2=NULL ; p> } --p0->imformación; save(head); printf("La operación está completa, puede traer Ir a reservar \n"); devolver 1; descanso; } más { return 0; break; } } else printf("Lo siento, El libro no está en la biblioteca.\n");return 0;break; } else p0=p0->next; } if(p0==NULL) { printf("Lo sentimos, este libro no está disponible. \n"); devuelve 0; } en caso contrario devuelve 2; } / /Devolver el libro int Return() { 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",&c); p0=head->next; mientras (p0!=NULL) { if((strcmp(c,p0->num))==0) { printf("Ingrese su nombre de usuario:"); scanf("%s",&b); if(p0->a-> next2= =NULL) else { p3=p0->a; p2=p3->next2; while(p2!=NULL) { if(strcmp(p2->nombre,b)==0) { if(p2->siguiente2==NULL) else { p3->siguiente2=p2->siguiente2 ; gratis(p2); descanso; } } más { p3=p2 p2=p2->siguiente2; } } if(p2==NULL) printf("¡No tomaste prestado este libro!\n"); } ++p0->informació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->siguiente; } if(p0==NULL) { printf("No existe tal libro. \n"); devuelve 0; } si no, 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 relevantes instrucciones para este sistema: ※\n"); printf("※La función principal de este sistema es administrar libros. Puedes crear, insertar, eliminar, ※\n" ); printf("※Consulta; En funcionamiento, los números arábigos se utilizan principalmente para seleccionar la función de menú correspondiente, y 'y' se utiliza para indicar 'sí' al seleccionar ※\n"); printf("※'n' significa 'no'. Habrá indicaciones de operación correspondientes cuando opere. ※\n"); printf("※※※※ ※※※※※※※ ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); } principal () { 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"); mientras(k==1) { printf(" Elija 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"); interruptor(n) { caso 1: manager();break; caso 2: implementación();break; predeterminado: printf("++++++++++ +++ +++++++++++++++ ¡Bienvenido a usar nuestro sistema nuevamente! +++++++++++++++++++++++++++++++ \n");k=0;romper; } } }