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 flotante

puntuación flotante <; /p>

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.

(sin exceder d)\n", N);

scanf("d", amp; n);

if(ngt; 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"); (i=0; ilt; n; i )

{

scanf("d s d d f f f",amp;stu[i].num,stu[i].nombre,amp; stu[i].x_num,amp; stu[i].class_num,amp;stu[i].score1,amp;stu[i].score2,amp;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;jlt;n-1;j)

for(i=j;ilt;n-j-1;i)

{

if(stu[i].num gt; stu[i 1].num)

{

t= estu[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(amp; n); , sizeof(int), 1, fp);

if((fp=fopen("estudiante", "wb"))==NULL)

{

printf("¡no se puede abrir el archivo!\n");

exit(0);

}

for(i=0; ilt; n; i )

fwrite(amp; stu[i], LEN, 1, fp); /p>

/*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(amp; n, sizeof(n) , 1, fp);

if((fp=fopen("estudiante", "rb"))==NULL)

{

printf( "¡No se puede abrir el archivo!\n");

exit(0);

}

> for(i=0;ilt;n;i)

fread(amp;stu[i], LEN, 1, fp);

printf("Ingrese la información del estudiante en secuencia: nombre del estudiante, 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", amp; t.num, t.name, amp ; t.x_num, amp;t.class_num,amp;t.score1,amp;t.score2,amp;t.score3);

t.total=t.score1 t.score2 t.score3; ;

t.average=t.total/3;

if(t.numgt; stu[n-1].num)

{

n=n 1;

stu[n-1]=t;

}

más

para (i=0; ilt; n; i )

{

printf("aw\n");

if(t.numlt;stu[ i].num)

{

n=n 1;

for(j=n-2; jgt; i-1; j--) stu[j 1] =stu[j];

stu[i]=t;

romper;

}

}

if((fp=fopen("student_number", "wb"))==NULL)

{

printf("no se puede abrir el archivo !\n") ;

exit(0);

}

fwrite(amp; n, sizeof(n), 1, fp);

if((fp=fopen("estudiante", "wb"))==NULL)

{

printf("¡No se puede abrir el archivo! \n");

exit(0);

}

for(i=0; ilt; n; i)

fwrite(amp; stu[i], LEN, 1, fp);

fclose(fp

comenzar:

printf("@Whether); para continuar con la operación "agregar" (s/n)?\n");

fflush(stdin);

ch=getchar();

if(ch=='y '||ch=='Y') agregar();

else if(ch=='n'||ch=='N') ;

else { printf ("¡Entrada incorrecta!\n"); ir a comenzar;}

}

/*3. Eliminar información del estudiante*/

void del()

{

int i, entumecido, marca=0

char

printf(" Ingrese el número de estudiantes que se eliminarán Número:\n");

scanf("d",amp;numb);

if((fp=fopen("student_number" ,"r

b"))==NULL)

{

printf("¡No se puede abrir el archivo!\n");

exit(0);

}

fread(amp;n,sizeof(n),1,fp);

if((fp=fopen("estudiante","rb "))==NULL)

{

printf("¡No se puede abrir el archivo!\n");

exit(0); p>

}

for(i=0;ilt;n;i)

{

fread(amp;stu[i] ,LEN , 1, fp);

if(stu[i].num==numb)

{

i--;

n--;

marca=1

}

}

if(marca==0) printf( "No hay información sobre el estudiante\n");

if((fp=fopen("student_number", "wb"))==NULL)

{

printf("¡no se puede abrir el archivo!\n");

exit(0);

}

fwrite(amp; n, sizeof(n ), 1, fp);

if((fp=fopen("estudiante", "wb"))==NULL)

{

printf ("¡no se puede abrir el archivo!\n");

exit(0);

}

for(i=0; ilt); ; n; i )

fwrite(amp; stu[i], LEN, 1, fp); /p>

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("¡Error de entrada!\n"); ir a comenzar;}

}

/ *4. Modificar la información del estudiante */

void change()

{

int i, entumecido, mark=0

; float puntuación1, puntuación2, puntuación3, total, promedio

char ch

printf("Ingrese el número del estudiante a modificar, puntuación alta en matemáticas, puntuación en inglés, puntuación en lenguaje C: \n");

scanf("d f f f",amp;numb,amp;score1,amp;score2,amp;score3);

if((fp=fopen(" número_estudiante","rb"))= =NULL)

{

printf("¡No se puede abrir el archivo!\n");

salir( 0);

}

fread(amp; n, sizeof(n), 1, fp

if((fp=fopen("estudiante","); rb"))==NULL)

{

printf("¡No se puede abrir el archivo!\n");

exit(0);

}

for(i=0;ilt;n;i)

{

fread(amp;stu[i], LEN, 1, fp);

if (stu[i].num==numb)

{

totall=puntuación1 puntuación2 puntuación3;

promedio=total/3;

stu[i].score1=score1

stu[i].score2=score2; [i].score3=score3;

stu[i].total=totall;

stu[i].average=average;

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(amp; n, tamaño de(n), 1,

if ((fp=fopen("estudiante", "wb"))==NULL)

{

printf("¡no se puede abrir el archivo!\n");

p>

salir(0);

}

for(i=0;ilt;n;i)

fwrite(amp;stu[ i], LEN, 1, fp);

fclose(fp);

comenzar:

printf("@Ya sea para 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. //(1) Presione Consulta de número, ingrese un número de estudiante y genere la información correspondiente del estudiante.

void num_search()

{

int i, num, mark=0

printf("Ingrese el número de estudiante:\ n");

scanf("d", amp; num);

for(i=0; ilt; n; i)

if( stu[i].num==num)

{

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 Inglés Puntuación: 0,2f c Puntuación de lenguaje: 0,2f Puntuación total: 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"); // (2) Buscar por nombre completo.

void name_search()

{

int i, mark=0

nombre de char[20];

printf("Ingrese nombre:\n");

scanf("s",nombre);

for(i=0;ilt;n;i)

if(strcmp(stu[i].name, name)==0)

{

printf("ID del estudiante: d Nombre: s Código de la 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].name, 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;ilt;n;i)

if(stu[i].nombre[0]==nombre[0] amp;amp; stu[i].nombre[1]==nombre[1])

{

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 lenguaje: 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

marca=1

}

if(marca) = =0) printf("No se encontró información relevante.\n");

}

//(4) Consulta por universidad, ingresa el nombre de la universidad y genera. 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",amp;x_num);

for(i=0;ilt;n;i)

si ( stu[i].x_num==x_num)

{

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 c Puntuación en idioma: 0,2f Puntuación total: 0,2f Puntuación media: 0,2f\n", stu[i].num, stu[i].name, stu[i].x_num, stu[i]. num_clase , 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"); >// (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",amp;class_num);

for(i=0;ilt;n;i)

si ( stu[i].class_num==class_num)

{

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 c Puntuación en idioma: 0,2f Puntuación total: 0,2f Puntuación media: 0,2f\n", stu[i].num, stu[i].name, stu[i].x_num, stu[i]. num_clase , 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"); >// Módulo de consulta

void search()

{

char

int

if( (fp=fopen("número_estudiante", "rb"))==NULL)

{

printf("¡no se puede abrir el archivo!\n");

salida(0);

}

fread(amp; n, tamaño de(n), 1, fp); if(( fp=fopen("estudiante", "rb"))==NULL)

{

printf("¡No se puede abrir el archivo!\n");

salir(0);

}

for(i=0; ilt; n; i)

fread(amp; stu [i] , LEN, 1, fp);

fclose(fp);

printf("Seleccione el código de palabra clave a consultar: 1. Consulta por número de estudiante. 2. Presione Consulta de nombre completo 3. Consulta por apellido 5. Consulta por clase \n");

fflush(stdin);

ch=getchar(); p><. p> cambiar(ch)

{

caso '1': num_search(); descanso;

caso '2': nombre_búsqueda();

case '3': firstname_search(); break;

case '4': x_search();

case '5' : classnum_search( ); break;

default :printf("El código de entrada es incorrecto.

\n");

}

begin:

printf("@¿Desea continuar con la operación de "consulta" (s/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) Ordenar la información de los estudiantes por puntuación total (desde la más alta a Bajo), genera la información ordenada y almacena la información ordenada del estudiante en un nuevo archivo binario

void total_score()

{

int i, j ;

estructura estudiante t;

for(j=0;jlt;n-1;j)

for(i=0 ; ilt; n-j- 1; i )

if(stu[i].totallt; stu[i 1].total)

{

t= stu[i];

estu[i]=stu[i 1];

stu[i 1]=t

}

si( (fp=fopen("número_estudiante", "wb"))==NULL)

{

printf("¡No se puede abrir el archivo!\n"

salir(0);

}

fwrite(amp; n, tamaño de (n), 1, fp); fp=fopen("student_totalscore", "wb"))==NULL) //Ordenar por puntuación total y guardar en una nueva carpeta

{

printf("can't. abrir archivo!\n");

salir(0);

}

for(i=0; ilt ; n; 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,2 f 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]. puntuación2, stu[i].score3, stu[i].total, stu[i].average

fwrite(amp; stu[i], LEN, 1, fp); >

}

fclose(fp);

}

//(2) Cuente cada puntaje individual de acuerdo con el puntaje promedio Número de estudiantes por nivel de grado (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;ilt;n;i)

{

if(stu[i].averagelt ;60) e ;

else if(stu[i].averagelt;70) d ;

else if(stu[i].averagelt;80) c ;

else if(stu[i].averagelt; 90) b;

else a

}

printf("El número de errores los estudiantes son d\n 60-69 personas son d\n 70-79 personas son d\n 80-89 personas son d\n 90-100 personas son d\n", e, d, c, b, a);

}

//(3) Encuentre los estudiantes con las calificaciones más altas en los tres cursos y genere su información.

void high_stu()

{

int max1, max2, max3, i

max1=max2=max3=0;

for(i=0;ilt;n;i)

{

if(stu[max1].score1lt;stu[i].score1) max1=i;

if(stu[max2].score2lt;stu[i].score2) max2=i;

if(stu[max3].score3lt;stu[i ].score3) max3=i;

}

printf("Información de los estudiantes con mayor puntaje en matemáticas altas:\nNúmero de estudiante: d Nombre: s Código de universidad: d Clase número: 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[max1].num, stu[max1].name, 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 c Puntaje en idioma: 0.2f Puntuación total: 0,2f Puntuación media :0,2f\n", stu[max2].num, stu[max2].name, stu[max2].x_num, stu[max2].class_num, stu[max2].score1, stu [max2].score2, stu [max2].score3, stu[max2].total, stu[max2].average);

printf("Información del estudiante con la puntuación más alta en lenguaje C:\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].nombre, stu[max3].x_num, stu[max3].class_num, stu[max3].score1, stu[max3].score2, stu[max3].score3, stu[max3].total, stu[max3 ].average);

}

//(4) Calcule las tasas de fracaso de los tres cursos y generelos.

vacío lleno()

{

int i;

float f1, f2, f3, sf1, sf2, sf3; /p>

f1=f2=f3=0;

for(i=0;ilt;n;i)

{

si( stu[i].score1lt; 60) f1

si (stu[i].score2lt; 60) f2

si (stu[i].score3lt; 60) f3; ;

}

sf1=f1/n;

sf2=f2/n;

sf3=f3/n;

p>

printf("La tasa de fracaso en matemáticas avanzadas es 0.2f\n", sf1

printf("La tasa de fracaso en inglés es 0.2f\n"); , sf2);

printf("La tasa de falla del lenguaje C es 0.2f\n", sf3);

}

//Módulo de estadísticas

void stat ()

{

char ch;

int i

if((fp=fopen( "número_estudiante","rb "))==NULL)

{

printf("¡no se puede abrir el archivo!\n");

salir (0);

p>

}

fread(amp; n, sizeof(n), 1, fp

if((fp=fopen); ("estudiante", "rb" ))==NULL)

{

printf("¡No se puede abrir el archivo!\n");

exit(0);

}

for(i=0; ilt; n; i )

fread(amp; stu[i], LEN, 1, fp);

printf("Seleccione el código para la operación estadística a realizar:\n1. Según el puntaje total de mayor a menor.\n2. Cuente el número de estudiantes en cada puntaje rango según el puntaje promedio (reprobado, 60-69, 70-79, 80-89, 90-100). Encuentre los estudiantes con los puntajes más altos en los 3 cursos. 3 cursos. \n");

fflush( stdin);

ch=getchar();

switch(ch)

{

caso '1': total_score() ;

caso '2': cada_score()

caso '3'; high_stu(); break;

case '4' : fill(); 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. Modifique 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(); //Ingrese la información del estudiante

p>

case '2': add(); break; //Agregar información del estudiante

case '3': del(); //Eliminar información del estudiante

case '4': change(); break; //Modificar la información del estudiante

case '5': search(); //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");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y') action();

else if(ch=='n'||ch=='N');

else { printf("¡Error de entrada!\n"); ir a comenzar;}

}

//Función principal

void main()

{

printf("~~ ~~~ ~Sistema de gestión del desempeño estudiantil~~~~~~\n\n");

action();

}