Sistema de gestión de información estudiantil
# incluir ltstdlib.h gt
# incluir ltstring.h gt
#Definir MAX_LEN 10
#Define STU_Number 30
#Define Course_Number 6
estructura typedef estudiante
{
Núm largo
nombre de carácter[MAX_LEN];
Fracción flotante [número de curso];
Suma flotante;
Promedio flotante
}Stu;
int menu(void);
void ReadScore(STU stu[], int n, int m);
p>
void AverSumofEveryStudent(STU STU[], int n, int m);
void AverSumofEveryCourse(STU STU[], int n, int m);
void SortbyScore(STU stu[], int n, int m, int (*compare)(flotador a, flotante b));
int ascendente (flotador a, flotante b);
int descendente (flotante a, flotante b);
void SwapFloat(flotante *x, flotante *y);
void SwapLong(long *x, long *y);
void SwapChar(char x[], char y[]);
void sorchbynum(STU STU[], int n, int m);
void SortbyName(STU stu[], int n, int m);
void SearchbyNum(STU stu[], int n, int m);
void SearchbyName(STU stu [], int n , int m);
void StatisticAnalysis(STU stu[], int n, int m);
void PrintScore(STU stu[], int n, int m);
void WritetoFile(registro STU[], int n, int m);
void ReadfromFile(registro STU[], int *n, int * m); p>int main()
{
char ch
int n=0, m = 0;
STU STU[STU _ NUM];
mientras(1)
{
ch = Menú();
Cambiar( Canal)
{
caso 1: printf("Ingrese el número de estudiante (n lt=d): ", STU _ NUM
scanf(" d ", ampn) ;
printf("Ingrese el número del curso (m lt=d): ", COURSE_NUM);
scanf("d ", ampm);
scanf("d ", ampm);
p>
ReadScore(stu, n, m);
Descanso
Caso 2: AverSumofEveryCourse(stu, n, m); ;
Caso 3: AverSumofEveryStudent(stu,n,m);
Pausa;
Caso 4: SortbyScore(stu,n,m,descending);
printf("\nLista en orden descendente de puntuación:\n");
PrintScore(stu,n,m);
Break; p>
p>
Caso 5: SortbyScore(stu, n, m, orden ascendente);
printf("\nOrdenar por puntuación en orden ascendente:\n"); p>
PrintScore( stu, n, m);
Break;
Caso 6: Clasificación Bynum (stu, n, m); printf(" \ n Ordenar por puntuación en orden ascendente: \n ");
PrintScore(stu, n, m
Break; 7: SortbyName(stu, n, m);
printf(" \nOrdenar lexicográficamente por puntuación: \n "); p>
Pausa;
Caso 8: SearchbyNum(stu, n, m);
Pausa;
Caso 9: SearchbyName(stu, n , m);
Pausa;
Caso 10: Análisis estadístico (stu, n, m); 11: PrintScore( stu, n, m);
Romper
Caso 12: WritetoFile(stu, n, m); p>
Caso 13: leer desde archivo(stu amp;n amp;m);
Pausa;
Caso 14: printf("¡El programa finaliza!\n") ;
Salir(0);
Predeterminado: printf("¡Error de entrada!\n ");
}
}
Regresar 0;
}
/*Función: mostrar el menú y obtener las opciones de entrada del teclado del usuario*/
int menu ( invalid)
{
int itemSelected
printf("Gestión del rendimiento estudiantil\ n ");
printf("1. Registros de entrada\n ");
printf("2. Calcular la puntuación total y la puntuación media de cada curso\n ");
printf("3. Calcular la puntuación total y puntaje promedio de cada estudiante El puntaje total y el puntaje promedio\n ");
printf("4. Ordenar por puntaje en orden descendente\n ");
printf(" 5. Ordenar por puntuación en orden ascendente\n ");
printf("6. Ordenar numéricamente en orden ascendente\ n ");
printf("7. Ordenar lexicográficamente por nombre\n ");
printf("8. Buscar por número\n ");
printf("9. Buscar por nombre\n");
printf("10. Análisis estadístico\n ");
printf("11.
Listar registros\n ");
printf("12.Escribir en archivo\n");
printf("13.Leer desde archivo\n");
printf("0. Exit\n ");
printf("Ingrese su elección:"); //Leer la entrada del usuario
scanf ("d"); , ampitems seleccionados);
Devolver elementoSeleccionado
}
/*Función: Ingresar las calificaciones de n estudiantes y m cursos*/ p>
void ReadScore(STU stu[], int n, int m)
{
int i, j;
printf("Ingrese ID de estudiante, nombre y puntuación:\n ");
for(I = 0;iltn;i)
{
scanf("lds " , ampStu[i] .num,stu[i].nombre);
for(j = 0;j ltm;j)
{
scanf("f ", ampStu[i].score[j]);
}
}
}
/*Función: Calcular el curso total puntuación y puntuación media de cada alumno*/
void AverSumofEveryStudent(STU STU[], int n, int m)
{
int i,j;
for(I = 0; i ltn; i)
{
Stu[i];
for(j). = 0;j ltm;j)
{
stu sum=stu[i].[i].score[j];
} p>
Stu[i].aver = m gt0?Stu[i];
p>printf("estudiante d: suma = .0f,aver = .0f\n ", p>
i1,Stu[i].sum,stu[i].aver);
}
}
/*Función: Calcular la puntuación total y la puntuación media de cada curso*/
void AverSumofEveryCourse(STU STU[], int n, int m)
{
int i, j;
suma flotante[número de curso], aver[número de curso];
for(j = 0; j ltm; j )
{ p>
suma[j]= 0;
for(I = 0;iltn;i)
{
suma[j]=suma [j] estu[i].
puntuación[j];
}
aver[j]= n gt; ?sum[j]/n:
printf(" curso d: suma = .0f, aver = .0f\n ", j 1, suma[j], aver[j]);
}
}
/*Función: ordenar los valores de los elementos en la suma de la matriz mediante el método de selección*/
void SortbyScore(STU stu[], int n, int m, int (*compare)(float a , flotante b))
{
int i, j, k, t
for(I = 0; i ltn-1; i )
{
k = I
for(j = I 1; j ltn; j )
{
if((*comparación)(stu[j].sum, stu[k].sum))k = j
}
if (k!=i; )
{
for(t = 0; t ltm; t )
{
intercambiar flotador(amp; Stu[k ].score[t], ampStu[i]);
}
intercambiar float(amp; Stu[k]. suma ampStu [i].sum);
swap float(amp;Stu[k].aver amp;Stu[i].aver);
SwapLong(amp;Stu [k]. Número amp Stu[i].num) ;
SwapChar(stu[k]. Nombre, Stu[I].
Nombre);
}
}
}
/*Organizar los datos en orden ascendente*/
int Orden ascendente (punto flotante a, punto flotante b)
{
Devuelve un ltb; en orden descendente */
int orden descendente (punto flotante a, punto flotante b)
{
devuelve un gtb;
}
/*Intercambiar dos datos de punto flotante de precisión simple*/
void SwapFloat(float *x, float *y)
{
Temperatura de flotación;
temp = * x;
* x = * y
* y = temperatura
}
/*Intercambiar dos datos enteros largos*/
void SwapLong(long *x, long *y)
{
Temperatura a largo plazo;
temp = * x;
* x = * y
* y = temperatura
}
/*Intercambiar dos cadenas*/
void SwapChar(char x[], char y[])
{
Carácter temperatura [MAX _ LEN];
strcpy(temp, x);
strcpy(x, y);
strcpy(y, temp);
}
/*Función: Los valores de los elementos de la matriz num se ordenan de menor a mayor según el método de selección*/
Número de clasificación nulo (STU stu[], int n, int m)
{
int i, j, k, t
for(I = 0; i; ltn-1; i )
{
k = I
para(j = I 1; j ltn; j )
{
if (stu[j].num ltStu[k].num)k = j;
}
if (k!=i)
{
for(t = 0; t ltm; t )
{
intercambiar flotador(amp; Stu[k] Fracción[t], amp stu[i]. puntuación[t]);
}
intercambiar float(amp; stu[k]. suma amp stu[i]. suma);
swap float(amp;Stu[k].aver amp;Stu[i].aver);
SwapLong(amp;Stu[k]. Número amp stu [i].num);
SwapChar(stu[k].nombre, stu[i].nombre);
}
}
}
/*Función: el método de intercambio se utiliza para ordenar cadenas en orden lexicográfico*/
void SortbyName(STU stu[], int n, int m)
{
int i, j, t;
for(I = 0; i ltn-1; i) p>
{
for(j = I 1; j ltn; j )
{
if(strcmp(stu[j].Nombre ,Stu[i].
nombre) lt0)
{
for(t = 0;t ltm;t)
{
intercambiar float(amp; Stu[i]. puntuación[t], ampStu[j]);
}
intercambiar float(y Stu[i]. suma amp Stu[j].sum) ;
intercambiar float(amp; Stu[i].aver amp; Stu[j].aver);
SwapLong( amp; Stu[i].Number ampStu[j] .num);
SwapChar(stu[i].Nombre, Stu[j].Nombre);
}
}
}
}
/*Función: buscar puntuaciones de estudiantes según el número de estudiantes y mostrar resultados de búsqueda*/
void SearchbyNum(STU stu[], int n, int m)
{
Número largo;
int i, j ;
printf("Ingrese el número a buscar ");
scanf("ld", número de amplificador);
for(I = 0; I ltn; i )
{
if (Stu[i].num == número)
{
printf(" ld \ts \t ", stu[i]. num, stu[i ]. nombre);
for(j = 0; j ltm; j )
{
p>
printf(".0f \t ",stu[i].score[j]);
}
printf(".0f\t.0f\ n ", stu[i].sum, stu[ i].aver);
Retorno
}
}
printf("\n¡No encontrado!\n ");
}
/*Función: generar el informe en orden de nombres del diccionario*/
void SearchbyName (STU stu[], int n, int m)
{
char x[MAX _ LEN];
int i, j;
printf("Ingrese el número a buscar ");
scanf("s ",x);
for(I = 0;iltn;i)
{
if(strcmp(stu[i].Nombre, x)==0)
{
printf("ld \ts \t ", stu[i]. número,stu[i]. nombre);
for(j = 0; j ltm; j )
{
printf(".0f \t ", stu[i]. puntuación[j]);
}
printf(".0f\t.0f\n ", stu[i].sum, stu[i].
aver);
Retorno;
}
}
printf("\n¡No encontrado!\n ");
p>}
/*Función: Cuenta el número de estudiantes y su porcentaje para cada puntuación*/
void StatisticAnalysis(STU stu[], int n, int m)
{
int i, j, total, t[6]
for(j = 0; j ltm; j )
{
printf("Para el curso d: \n ", j 1
memset(t, 0, sizeof(t)); matriz T Todos los elementos se inicializan a 0.
for(I = 0;iltn;i)
{
if (Stu[i].score[j] gt;= 0 amp ampStu[ i].score[j]lt;60)t[0];
si no (stu[i].score[j]lt;70)t[1];
p>
else if (stu[i].score[j] lt; 80)t[2]
else if (stu[i].score[j] lt; 90) t [3] ;
si no (stu[i].score[j] lt;100)t[4] ;
si no (stu[i].score[ j] ]= 100)t[5];
}
for(total=0, I = 0; ilt=5; i)
{
Total = total t[I];
}
for(I = 0; i lt=5; i)
{
if(I == 0)printf(" lt; 60\td\t.2f\n ", t[i], (float)t[I]/n * 100); /p>
p>
si no(i==5)
printf("d\td\t.2f\n ", (i 5)*10, t[i ], (float)t [I]/n * 100);
Otros
printf("d-d\td\t.2f\n ", (i 5)*10 , (i 5)* 10 9, t[i], (flotante)t[I]/n * 100);
}
}
}
/*Función: Imprimir puntuaciones de los estudiantes*/
void PrintScore(STU stu[], int n, int m)
{
int i, j;
for(I = 0; i ltn; i )
{
printf("ld\ts\t " , stu[i]. num, stu[i]. nombre);
for(j = 0; j ltm; j )
{
printf (".0f\t ",stu[i].score[j]);
}
printf(".0f\t.0f\n ",stu[i ].sum,stu[i].
aver);
}
}
/*Envíe los números de estudiantes, nombres y puntajes de M cursos de N estudiantes al archivo Student.txt * /
void WritetoFile(STU stu[], int n, int m)
{
ARCHIVO * fp
int i, j ;
if((fp=fopen("student.txt "," w ")== NULL)
{
printf("Puntuación abierta. txt falló! \n ");
Salir(0);
}
fprintf(fp, " d\td\n ", n, m ); //Escribe el número de estudiantes y cursos en un archivo
for(I = 0; iltn;i)
{
fprintf. , " 10ld10s ", stu[i]. num, stu[i] nombre
for (j = 0; j ltm; j )
{
p>
fprintf(fp, " 10.0f ", stu[i]. puntuación[j]
}
fprintf(fp, " 10.0f10); .0f\ n ", stu[i].sum, stu[i].aver);
}
fclose(FP);
}
/*Lea el número de estudiante, el nombre, las calificaciones y otra información del estudiante del archivo y escríbalo en la matriz de estructura stu */
void ReadfromFile(STU stu[], int * n, int *m )
{
ARCHIVO * fp
int i, j;
if((fp=fopen( "student.txt " , " r ") = = NULL)
{
printf("¡Error al abrir score.txt!\n ");
Salir (0);
}
fscanf(fp, " d\td ", n, m); // Lee el número de estudiantes y cursos del archivo <. /p>
for(I = 0;ilt*n;i)
{
fscanf(fp, "10ld", ampstu[i].num);
fscanf(fp, " 10s ", stu[i]. nombre
for(j = 0; j lt* m; j )
{
fscanf(fp, "10f", ampstu[i]. score[j]);
}
fscanf(fp, "10f10f", ampstu[i].sum ampstu[i].aver); //no se puede usar 10.0f.
}
fclose(FP);
}