Utilice el lenguaje C para programar un sistema de gestión del desempeño de los estudiantes.
El siguiente es el producto terminado que hice
#include "stdio.h"
#include "stdlib.h"
# include "string.h"
#define N 100 //Número máximo de estudiantes
#define LEN sizeof(struct Student)
ARCHIVO *fp; p>
int n=0; //Número de estudiantes
struct Student
{
int num;
nombre de char [20];
int x_num;
int class_num;
puntuación flotante1;
puntuación flotante2;
puntuación flotante3;
total flotante;
promedio flotante;
}stu[N]; //Estructura de información del estudiante
/*1. La información del estudiante se almacena en el archivo*/
void creat()
{
int i,j;
.struct Student t;
printf("Ingrese el número de estudiantes.
(no más de %d)\n",N);
scanf("%d",&n);
if(n>N) exit(0);
p>printf("Ingrese la información del estudiante en secuencia: número de estudiante, nombre, código de universidad, número de clase, puntaje alto en matemáticas, puntaje en inglés, puntaje en lenguaje C\n");
for(i=0;i { scanf("%d %s %d %d %f %f %f",&stu[i] .num,stu[i].nombre, &stu[i].x_num,&stu[i].class_num,&stu[i].score1,&stu[i].score2,&stu[i].score3); stu[i].total= stu[i].score1+stu[i].score2+stu[i].score3; stu[i].average=stu[i]. total/3; } for(j=0;j for(i=j;i { if(stu[i].num > stu[i+1].num) { t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } } if((fp=fopen("student_number","wb"))==NULL) //Guarda el número de estudiantes n { printf( "¡No se puede abrir el archivo!\n"); exit(0); } fwrite(&n,sizeof(int),1, fp); if((fp=fopen("estudiante","wb"))==NULL) { printf("¡No se puede abrir el archivo!\n"); exit(0); } for( i=0;i fwrite(&stu[i],LEN,1,fp); fclose(fp); } /*2. Agregar información de un estudiante*/ void add() { int i,j; char ch; estructura estudiante t; if((fp=fopen("número_estudiante","rb"))==NULL) { printf("¡No se puede abrir el archivo!\n"); exit(0); } fread(&n,sizeof(n), 1,fp); if((fp=fopen("estudiante","rb"))==NULL) { printf(" ¡No se puede abrir el archivo!\n"); exit(0); } for(i=0;i fread(&stu[i],LEN,1,fp); printf(" Ingrese la información del estudiante: número de estudiante, nombre, código de universidad, número de clase, puntaje alto en matemáticas, puntaje en inglés, puntaje en lenguaje C\n"); scanf("%d %s %d %d %f %f %f" ,&t.num,t.name,&t.x_num,&t.class_num,&t.score1,&t.score2,&t.score3); t.total=t.score1+ t.score2+t .score3; t.average=t.total/3; if(t.num>stu[n-1].num) { n=n+1; stu[n-1]=t; } más for(i=0;i { printf("aw\n"); if(t.num { n=n+1; for(j=n-2;j >i-1; j--) stu[j+1]=stu[j]; stu[i]=t; romper; } } if((fp=fopen("número_estudiante","wb"))==NULL) { printf(" ¡No se puede abrir el archivo!\n"); exit(0); } fwrite(&n,sizeof(n ),1,fp ); if((fp=fopen("estudiante","wb"))==NULL) { printf ("¡No se puede abrir el archivo!\n"); exit(0); } for(i=0;i fwrite(&stu[i],LEN,1,fp); fclose(fp); comenzar: printf("@ ¿Quieres continuar con la operación "agregar" (y/n)?\n"); fflush(stdin); ch=getchar() ; if (ch=='y'||ch=='Y') add(); else if(ch=='n'||ch== 'N') ; else { printf("¡Entrada incorrecta!\n"); ir a comenzar;} } /*3. información*/ void del() { int i,numb,mark=0; char ch; p> printf(" Ingrese el número de estudiante del estudiante que desea eliminar:\n"); scanf("%d",&numb); if( (fp=fopen("número_estudiante","rb "))==NULL) { printf("¡no se puede abrir el archivo!\n"); salir(0); } fread(&n,sizeof(n),1,fp); if(( fp=fopen("estudiante" ,"rb"))==NULL) { printf("¡No se puede abrir el archivo!\n"); exit(0) ; } for(i=0;i { fread(&stu[i], LEN,1,fp); if(stu[i].num==numb) { i--; n--; mark=1; } } if(mark==0) printf(" No hay información sobre este estudiante\n"); if((fp=fopen("student_number","wb"))==NULL) { printf("¡No se puede abrir el archivo!\n"); exit(0); } fwrite(&n,sizeof (n) ,1,fp); if((fp=fopen("estudiante","wb"))==NULL) { printf( "¡No se puede abrir el archivo!\n"); salir(0); } for(i=0;i< n;i++ ) fwrite(&stu[i],LEN,1,fp); fclose(fp); comenzar: printf("@¿Desea continuar con la operación "eliminar" (s/n)?\n"); fflush(stdin); ch=getchar (); if(ch=='y'||ch=='Y') del(); else if(ch=='n'||ch =='N') ; else { printf("¡Entrada incorrecta!\n"); ir a comenzar;} } /*4. Modificar la información del estudiante*/ void change() { int i,numb,mark=0; float score1, puntuación2, puntuación3, total, promedio; char ch; printf("Ingrese el número del estudiante, puntuación alta en matemáticas, puntuación en inglés, puntuación en lenguaje C:\n"); scanf("%d %f %f %f",&numb,&score1,&score2,&score3); if((fp=fopen("número_estudiante","rb") )==NULL) { printf("¡No se puede abrir el archivo!\n"); exit(0); } p> fread(&n,sizeof(n),1,fp); if((fp=fopen("estudiante","rb"))== NULL) { printf("¡No se puede abrir el archivo!\n"); exit(0); } for(i=0;i { fread(&stu[i],LEN,1,fp);< /p> if(stu[i].num==numb) { totall=puntuación1+puntuación2+puntuación3; promedio= totall/3; stu[i].score1=score1; stu[i].score2=score2; stu[i].score3= puntuación3; stu[i].total=totall; stu[i].average=promedio; mark=1; } } if(mark==0) printf("No hay información sobre este estudiante\n"); if((fp= fopen ("número_estudiante", "wb"))==NULL) { printf("¡no se puede abrir el archivo!\n"); salir(0); } fwrite(&n,sizeof(n),1,fp); if((fp=fopen(" estudiante ","wb"))==NULL) { printf("¡No se puede abrir el archivo!\n"); salir( 0 ); } for(i=0;i fwrite(&stu[i],LEN,1,fp) ; fclose(fp); begin: printf("@¿Quieres continuar con la operación "modificar" (y/n)?\ n"); fflush(stdin); ch=getchar(); if(ch=='y'||ch==' Y') del( ); else if(ch=='n'||ch=='N') ; else { printf("¡Entrada incorrecta!\n "); ir a comenzar;} } /*5. Operación de consulta*/ //(1) Consulta por número de estudiante, ingrese un estudiante número y generar la información correspondiente del estudiante. void num_search() { int i,num,mark=0; printf("Ingrese el número de estudiante:\ n"); scanf("%d",&num); for(i=0;i if(stu [i].num==num) { printf("Número de estudiante: %d Nombre: %s Código de universidad: %d Número de clase: %d Puntaje alto en matemáticas: %0.2f Puntuación en inglés:%0.2f c Puntuación en idioma:%0.2f Puntuación total:%0.2f Puntuación media:%0.2f\n",stu[i].num,stu[i].nombre,stu[i]. x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average); mark=1; } if(mark==0) printf("No se encontró información relevante.\n"); } //(2) Buscar por nombre completo. void name_search() { int i,mark=0; char nombre[20]; printf("Ingrese nombre:\n"); scanf("%s",nombre); for(i=0;i if(strcmp(stu[i].name,name)==0) { printf("Número de estudiante: %d Nombre: % s Código de universidad: %d Número de clase: %d Puntaje alto en matemáticas: %0.2f Puntaje en inglés: %0.2f c Puntaje en idioma: %0.2f Puntaje total: %0.2f Puntaje promedio: %0.2f\n",stu[i] .num,stu[i].nombre,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i]. total,stu[i].average); mark=1; } if(mark==0) printf("No se encontró información relevante . \n"); } //(3) Buscar por apellido. void firstname_search() { int i,mark=0; char nombre[20]; printf("Ingrese apellido:\n"); scanf("%s",nombre); for(i=0;i if(stu[i].nombre[0]==nombre[0] && stu[i].nombre[1]==nombre[1]) { printf("Número de estudiante: %d Nombre: %s Código de universidad: %d Número de clase: %d Puntuación alta en matemáticas: %0.2f Puntuación en inglés: %0.2f Puntuación en lenguaje C: %0.2f Total puntuación: %0.2f Puntuación media:%0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1, stu[ i].score2,stu[i].score3,stu[i].total,stu[i].average); marca=1; } p> if(mark==0) printf("No se encontró información relevante.\n"); } //(4) Consulta por universidad e ingresa el nombre de la universidad, genera la información de todos los estudiantes de la universidad. void x_search() { int i,x_num,mark=0; printf("Ingrese el código de la universidad: \ n"); scanf("%d",&x_num); for(i=0;i if( stu [i].x_num==x_num) { printf("ID de estudiante: %d Nombre: %s Código de universidad: %d ID de clase: %d Puntaje alto en matemáticas : %0.2f Puntuación en inglés:%0.2f c Puntuación en idioma:%0.2f Puntuación total:%0.2f Puntuación media:%0.2f\n",stu[i].num,stu[i].nombre,stu[i] x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average); mark=1; } if(mark==0) printf("No se encontró información relevante.\n"); } //(5) Consulta por clase, ingresa el nombre de la clase y genera la información de todos los estudiantes de la clase. void classnum_search() { int i,class_num,mark=0; printf("Ingrese el código de la universidad: \ n"); scanf("%d",&class_num); for(i=0;i if( stu [i].class_num==class_num) { printf("ID de estudiante: %d Nombre: %s Código de universidad: %d ID de clase: %d Puntaje alto en matemáticas : %0.2f Puntuación en inglés:%0.2f c Puntuación en idioma:%0.2f Puntuación total:%0.2f Puntuación media:%0.2f\n",stu[i].num,stu[i].nombre,stu[i] x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average); mark=1; } if(mark==0) printf("No se encontró información relevante.\n"); } //Módulo de consulta void search() { char ch; int i; if((fp=fopen("student_number","rb"))==NULL) { printf("no se puede abrir el archivo ! \n"); exit(0); } fread(&n,sizeof(n),1,fp); if((fp=fopen("estudiante","rb"))==NULL) { printf("¡no se puede abrir el archivo!\n " ); salir(0); } for(i=0;i fread ( &stu[i],LEN,1,fp); fclose(fp); printf("Seleccione el código de palabra clave a consultar: 1. Consulta de ID de estudiante. 2. Buscar por nombre completo. 3. Buscar por apellido. 4. Consulta universitaria. 5. Consulta de clase. \n"); fflush(stdin); ch=getchar(); switch(ch) { caso '1': num_search(); descanso; caso '2': nombre_search(); descanso; caso '3': nombre_búsqueda() ; romper; caso '4': x_search(); romper; caso '5': classnum_search(); predeterminado :printf( "El código de entrada es incorrecto.\n"); } begin: printf("@Si continuar con la operación de "consulta" (y /n) ?\n"); fflush(stdin); ch=getchar(); if(ch=='y'| |ch= ='Y') buscar(); else if(ch=='n'||ch=='N') ; else { printf(" Entrada incorrecta !\n"); ir a comenzar;} } /*6. Estadísticas*/ //(1) Información del estudiante basada en puntuación total Ordene (de mayor a menor), genere la información ordenada y almacene la información ordenada del estudiante en un nuevo archivo binario void total_score() { int i,j; estructura estudiante t; for(j=0;j for(i= 0;i if(stu[i].total { p> t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } if((fp=fopen("student_number","wb"))==NULL) { printf(" no se puede abrir el archivo !\n"); exit(0); } fwrite(&n,sizeof(n),1,fp ); if((fp=fopen("student_totalscore","wb"))==NULL) //Ordenar por puntuación total y guardar en una nueva carpeta. { printf("¡No se puede abrir el archivo!\n"); exit(0); } for(i=0;i { printf("Número de estudiante: %d Nombre: %s Código de universidad: %d Número de clase: %d Puntuación alta en matemáticas: %0.2f Puntuación en inglés: %0.2f Puntuación en lenguaje c: %0.2f Puntuación total: %0.2f Puntuación media: %0.2f\n",stu[i].num,stu[i ].nombre,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i] .average); fwrite(&stu[i],LEN,1,fp); } fclose(fp); } //(2) Cuente el número de estudiantes en cada rango de puntuación según la puntuación promedio (reprobado, 60-69, 70-79, 80-89, 90-100). void each_score() { int e,d,c,b,a,i; a=b= c=d=e=0; for(i=0;i { if(stu[i].average <60) e++; else if(stu[i].average<70) d++; else if(stu[i].average<80) c++; else if(stu[i].average<90) b++; else a++; } printf("El número de errores estudiantes es %d\n El número de personas entre 60-69 es %d\n El número de personas entre 70-79 es %d\n El número de personas entre 80-89 es %d\n El número de personas entre 90-100 es %d\n",e,d,c,b, a); } //(3) Encuentra los estudiantes con las puntuaciones más altas en el tres cursos y generar su información. void high_stu() { int max1,max2,max3,i; max1=max2=max3=0; for(i=0;i { if(stu[max1].score1 if(stu[max2].score2 if(stu[max3].score3 } printf("Información de los estudiantes con mayor puntaje en matemáticas secundarias:\nNúmero de estudiante: %d Nombre: %s Código de universidad: %d Número de clase: %d Puntuación alta en matemáticas: %0.2f Puntuación en inglés: %0.2f c Puntuación en idioma: %0.2f Puntuación total: %0.2f Puntuación media: %0.2f\n",stu[max1].num,stu [max1] .nombre,stu[max1].x_num,stu[max1].class_num,stu[max1].score1,stu[max1].score2,stu[max1].score3,stu[max1].total,stu[ max1]. Average); printf("Información del estudiante con el puntaje más alto en inglés:\nNúmero de estudiante: %d Nombre: %s Código de universidad: %d Número de clase: %d Puntaje alto en matemáticas : %0.2f Puntaje en inglés: %0.2f Puntaje en lenguaje c:%0.2f Puntaje total:%0.2f Puntaje promedio:%0.2f\n",stu[max2].num,stu[max2].nombre,stu[max2]. x_num,stu[max2] .class_num,stu[max2].score1,stu[max2].score2,stu[max2].score3,stu[max2].total,stu[max2].average); printf("c Información del estudiante con la puntuación más alta en idioma:\nNúmero de estudiante: %d Nombre: %s Código de universidad: %d Número de clase: %d Puntuación alta en matemáticas: %0.2f Puntuación en inglés: %0.2f c Puntuación en idioma: %0.2f Puntuación total: % 0.2f Puntuación media:%0.2f\n",stu[max3].num,stu[max3].name,stu[max3].x_num,stu[max3].class_num,stu[max3 ].score1,stu[max3 ].score2,stu[max3].score3,stu[max3].total,stu[max3].average); } // (4) Cuente 3 respectivamente. Se calcula y genera la tasa de fracaso del curso. vacío lleno() { int i; float f1,f2,f3,sf1,sf2,sf3; f1=f2=f3=0; for(i=0;i { si( stu[i].score1<60) f1++; if(stu[i].score2<60) f2++; if(stu[i].score3<60) f3++ ; } sf1=f1/n; sf2=f2/n; sf3=f3/n; p> p> printf("La tasa de fracaso en matemáticas superiores es %0.2f\n",sf1); printf("La tasa de fracaso en inglés es %0.2f\n", sf2); printf("Tasa de fallos del lenguaje C %0.2f\n",sf3); } //Módulo estadístico void stat() { char ch; int i; if((fp=fopen(" número_estudiante" ,"rb"))==NULL) { printf("¡No se puede abrir el archivo!\n"); salir( 0) ; } fread(&n,sizeof(n),1,fp); if((fp=fopen("estudiante", "rb "))==NULL) { printf("¡No se puede abrir el archivo!\n"); exit(0); } for(i=0;i fread(&stu[i],LEN,1,fp); printf("Seleccione el código de operación estadística a realizar:\n1. Ordene por puntaje total de mayor a menor.\n2. Cuente el número de estudiantes en cada rango de puntaje por puntaje promedio (fallido, 60 -69, 70-79, 80-89, 90-100). \n3. Encuentre los estudiantes con las calificaciones más altas en los tres cursos \n"); fflush(stdin). ch=getchar(); switch(ch) { caso '1': total_score(); caso '2': each_score(); descanso; caso '3': high_stu(); caso '4': lleno( ); break; default :printf("El código de entrada es incorrecto. \n"); } begin: printf("@¿Quieres continuar con la operación "estadísticas" (s/n)?\ n"); fflush(stdin); ch=getchar(); if(ch=='y'||ch==' Y') stat (); else if(ch=='n'||ch=='N') ; else { printf("¡Entrada incorrecta!\n "); ir a comenzar;} } /*Opciones principales*/ acción nula() { char ch; printf("Ingrese el código que desea operar:\n1. Ingrese la información del estudiante;\n2. Agregue información del estudiante;\n3. Borre la información del estudiante;\n4. Modificar información del estudiante; \n5. Consultar la información del estudiante según diferentes condiciones;\n6. Realizar trabajo estadístico sobre las puntuaciones de los estudiantes según diferentes condiciones \n"); fflush(stdin); ch=getchar(); switch(ch) { case '1':creat();break //Ingrese la información del estudiante case '2':add();break; //Agregar información del estudiante case '3':del();break; //Eliminar información del estudiante case '4':change();break; //Modificar la información del estudiante case '5':search();break; //Consultar la información del estudiante según diferentes condiciones case '6':stat();break; //Estadísticas sobre las puntuaciones de los estudiantes según diferentes condiciones default:printf("El código de entrada es incorrecto.\n"); } begin: printf("#¿Desea continuar con la operación de "administración"? (y/n)\n"); p> fflush(stdin); ch=getchar(); if(ch=='y'||ch=='Y') acción() ; else if(ch=='n'||ch=='N') ; else { printf("¡Entrada incorrecta!\n"); } } //Función principal void main() { printf("~ ~~~~ ~Sistema de gestión del desempeño estudiantil~~~~~~\n\n"); action(); }