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 ; p>
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> 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)
{ p>
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> 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> 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); p>
}
//(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>
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"); p >
}
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();
}