Red de conocimiento del abogados - Cuestiones jurídicas del divorcio - Sistema de gestión de información estudiantil

Sistema de gestión de información estudiantil

#includelt;stdio.hgt;/*Nosotros también lo hemos hecho*/

#includelt;stdlib.hgt;

#includelt;string.hgt ;

#define MAX_LEN 10

#define STU_NUM 30

#define COURSE_NUM 6

estudiante de estructura typedef

{

número largo;

nombre de carácter[MAX_LEN];

puntuación flotante[COURSE_NUM];

suma flotante;

p>

promedio flotante;

}STU;

int Menú(void);

void ReadScore(STU stu[] , int n, int m);

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)(float a, float b));

int Ascending(float a, float b);

int Descending(float a, float b);

void SwapFloat(float *x, float *y);

void SwapLong( long *x, long *y);

void SwapChar(char x[], char y[]);

void AsSortbyNum(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);

int main()

{

char ch;

int n=0, m =0;

p>

STU stu[STU_NUM];

mientras(1)

{

ch=Menú ();

switch (ch)

{

caso 1: printf("Ingrese el número de estudiante (nlt;=d):", STU_NUM);

p>

scanf("d",amp;n);

printf("Ingrese el número del curso (mlt;=d):",COURSE_NUM);

scanf( "d",amp;m);

ReadScore(stu,n,m);

break;

caso 2: AverSumofEveryCourse(stu,n, m);

descanso;

caso 3: AverSumofEveryStudent(stu, n, m);

caso 4: SortbyScore(stu, n, m, Descendente);

printf("\nOrdenar en orden descendente por puntuación:\n");

descanso;

caso 5: SortbyScore(stu, n, m, Ascendente);

printf("\nOrdenar en orden ascendente por puntuación:\n ");

PrintScore(stu, n, m);

romper;

caso 6: AsSortbyNum(stu, n, m);

printf("\nOrdenar en orden ascendente por puntuación:\n");

PrintScore(stu, n, m

break; p>caso 7: SortbyName(stu, n, m);

printf("\nOrdenar en el diccionario por puntuación:\n");

PrintScore(stu, n, m);

descanso;

caso 8: SearchbyNum(stu, n, m);

caso 9: SearchbyName(stu, n, m);

descanso;

caso 10: Análisis estadístico (stu, n, m);

caso 11: PrintScore(stu, n, m);

romper;

caso 12: WritetoFile(stu, n, m); break;

caso 13: ReadfromFile(stu,amp;n,amp;m);

break;

caso 14: printf("Fin del programa !\n");

salir(0);

predeterminado: printf("¡Error de entrada!\n");

}

}

return 0;

}

/*Función: mostrar el menú y obtener las opciones ingresadas por el teclado del usuario*/

int Menu(void)

{

int itemSelected;

printf("Gestión de puntuaciones de los estudiantes\n");

printf("1.En

poner registro\n");

printf("2.Calcular puntaje total y promedio de cada curso \n");

printf("3.Calcular puntaje total y promedio de cada estudiante \n");

printf("4.Ordenar en orden descendente por puntuación \n");

printf("5.Ordenar en orden ascendente por puntuación \n ");

printf("6.Ordenar en orden ascendente por número \n");

printf("7.Ordenar en diccionario 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 registro \n");

printf("12.escribir en un archivo \n");

p>

printf("13.leer de un archivo \n");

printf("0.Salir \n");

printf ("Ingrese su elección: "); //Lea la entrada del usuario

scanf("d", itemSelected);

devuelva itemSelected;

}

/*Función: Ingrese m puntajes de cursos de n estudiantes*/

void ReadScore(STU stu[], int n, int m)

{

int i, j;

printf("Ingrese el ID, el nombre y la puntuación de los estudiantes:\n"); n; i )

{

scanf("lds", amp; stu[i].num, stu[i].nombre);

para (j=0;jlt;m;j)

{

scanf("f", amp; stu[i].score[j]);

}

}

}

/*Función función: Calcula la puntuación total y la puntuación media de los cursos de cada estudiante*/

void AverSumofEveryStudent(STU stu[], int n, int m)

{

int i, j;

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

{

stu[i].sum=0;

for(j=0;jlt;m;j)

{

stu[i].sum=stu[i].sum stu[i].score[j];

}

stu[i].aver=mgt;0?stu[i].sum/m:-1;

printf("estudiante

t d: suma = .0f, aver = .0f\n",

i 1, stu[i].sum, stu[i].aver);

}

}

/*Función de función: Calcula la puntuación total y la puntuación promedio de cada curso*/

void AverSumofEveryCourse(STU stu[], int n, int m )

{

int i,j;

suma flotante[COURSE_NUM],aver[COURSE_NUM];

for(j= 0;jlt;m;j )

{

suma[j]=0;

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

{

suma[j]=sum[j] stu[i].score[j];

}

promedio[ j] = ngt; 0 ? suma[j]/n: -1;

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 según el método de selección* /

void SortbyScore(STU stu[], int n, int m, int (*compare)(float a, float b))

{

int i, j, k, t;

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

{

k=i;

for(j=i 1;jlt;n;j)

{

if((*comparar)(stu[j].sum,stu[ k]. suma)) k=j;

}

if(k!=i)

{

for(t). =0; tlt; m; t )

{

SwapFloat(amp; stu[k].score[t],amp; stu[i].score[t]) ;

p>

}

SwapFloat(amp;stu[k].sum,amp;stu[i].sum);

SwapFloat(amp; stu[k].aver, amp; stu[i].aver);

SwapLong(amp;stu[k].num, amp;stu[i].num);

SwapChar(stu [k].nombre, stu[i].nombre);

}

}

}

/* Ordenar los datos en orden ascendente*/

int Ascending(float a, float b)

{

return alt; >

}

/*Ordenar los datos en orden descendente*/

int Descending(float a, float b)

{

return agt; b;

}

/*Intercambiar dos datos de punto flotante de precisión simple*/

void SwapFloat(float *x, flotante *y)

{

temperatura flotante;

temp=*x;

*x=*y;

*y

=temp;

}

/*Intercambiar dos datos enteros largos*/

void SwapLong(long *x, long *y)

{

temperatura larga;

temp=*x;

*x=*y;

*y=temp ;

}

/*Intercambiar dos cadenas*/

void SwapChar(char x[], char y[])

{

temperatura de carácter[MAX_LEN];

strcpy(temp, x);

strcpy(x, y);

strcpy( y, temp);

}

/*Función función: Ordena los valores de los elementos de la matriz num de menor a mayor según el método de selección*/

void AsSortbyNum(STU stu[], int n, int m)

{

int i, j, k, t;

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

{

k=i;

for(j=i 1;jlt;n ;j )

{

if(stu[j].num lt; stu[k].num) k=j;

}

if(k!=i)

{

for(t=0;tlt;m;t)

{

SwapFloat(amp;stu[k].score[t],amp;stu[i].score[t]);

}

SwapFloat(amp;stu [k ].sum,amp;stu[i].sum);

SwapFloat(amp;stu[k].aver,amp;stu[i].aver);

SwapLong (amp;stu[k].num,amp;stu[i].num);

SwapChar(stu[k].nombre, stu[i].nombre);

}

}

}

/*Función: método de intercambio para ordenar cadenas en el orden del diccionario*/

void SortbyName (STU stu[], int n, int m)

{

int i, j, t;

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

{

for(j=i 1;jlt;n;j )

{

si( strcmp(stu[j].nombre, stu[i].nombre)lt;0)

{

for(t=0;tlt;m;t)

{

SwapFloat(amp;stu[i].score[t],amp;stu[j].score[t]);

}

SwapFloat(amp;stu[i].sum,amp;stu[j].sum);

SwapFloat(amp;stu[i].aver,amp;stu[j]. aver);

SwapLong(amp;stu[i].num,amp;stu[j].num);

SwapChar(stu[i].nombre,stu[j ].nombre);

}

}

}

}

/*Función: buscar puntuaciones de estudiantes por número de estudiante y mostrar los resultados de la búsqueda*/

void SearchbyNum(STU stu[], int n, int m)

{

número largo;

int i, j;

printf("Ingrese el número que desea buscar");

scanf("ld", amp; número

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

{

if(stu[i].num==número)

{

printf( "ld \ts \t", stu[i].num, stu[i].nombre);

for(j=0;jlt;m;j)

{

printf(".0f \t", stu[i].score[j]);

}

printf(".0f\t. 0f\n", stu[i].sum, stu[i].aver);

return;

}

}

printf("\n ¡No encontrado! \n");

}

/*Función: organizar la tabla de resultados 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 que desea buscar");

scanf("s", x

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

{

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

{

printf("ld \ts \t", stu[i].num, stu[i].nombre);

for(j=0;jlt;m;j)

{

printf(".0f \t",stu[i].score[j]);

}

printf(".0f \t.0f\n", stu[i].sum, stu[i].aver);

return;

}

}

printf("\n ¡No encontrado! \n");

}

/*Función: Cuente el número de estudiantes en cada rango de puntuación y su porcentaje * /

análisis estadístico nulo(STU stu[], int n, int m)

{

int i, j, total, t[6]

for(j=0;jlt;m;j)

{

printf("Por supuesto d:\n",j 1);< / p>

memset(t, 0, sizeof(t)); //Inicializa todos los elementos de la matriz t en 0

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

{

if(stu[i].score[j]gt;=0amp;amp;stu[i].score[j]l

t; 60) t[0];

else si (stu[i].score[j]lt; 70) t[1];

else si (stu[i] ].puntuación[j]lt; 80) t[2]

si no (stu[i].score[j]lt; 90) t[3]

de lo contrario si (stu[i].score[j]lt; 100) t[4] ;

de lo contrario si (stu[i].score[j]=100) t[5] ;

else if (stu[i].score[j]=100) t[5] ;

p>

}

for(total=0 ,i=0;ilt;=5;i)

{

total=total t[ i];

}

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

{

if(i= =0) printf("lt;60\td\t.2f\n" ,t[i],(float)t[i]/n*100);

else if(i== 5)

printf("d\td\t. 2f\n", (i 5)*10, t[i], (flotante)t[i]/n*100);

p>

else

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;ilt;n;i)

{

printf("ld\ts\t", stu[i].num, stu[i].nombre) ;

for(j=0;jlt;m ;j)

{

printf(".0f\t",stu[i].score [j]);

}

printf(".0f\t.0f\n", stu[i].sum, stu[i].aver);

p>

}

}

/*Envíe los números de estudiantes, nombres y calificaciones de m cursos de n estudiantes al archivo Student.txt*/

void WritetoFile(STU stu[], int n, int m )

{

ARCHIVO *fp;

int i, j;

p>

if((fp=fopen ("student.txt", "w"))==NULL)

{

printf("Error al abrir la partitura. txt!\n");

exit(0);

}

fprintf(fp, "d\td\n", n, m) //Escribe el número de estudiantes y cursos a; el archivo

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

{

fprintf(fp , "10ld10s", stu[i].num , stu[i].nombre);

for(j=0;jlt;m;j)

{

fprintf(fp, "10.0f ", stu[i].puntuación[j]);

<

p>}

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 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");

exit(0);

}

fscanf(fp, "d\td", n, m); //Lee el número de estudiantes y cursos del archivo

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

{

fscanf(fp, "10ld", amp; stu[i].num);

fscanf(fp, "10s", stu[i].nombre); for(j=0;jlt; *m;j)

{

fscanf(fp, "10f", amp; stu[i].score[j]); /p>

}

fscanf(fp, "10f10f", amp; stu[i].sum, amp; stu[i].aver); //No se puede usar 10.0f

}

fclose(fp);

}