Red de conocimiento informático - Conocimiento informático - Sistema de gestión de información estudiantil

Sistema de gestión de información estudiantil

#include/*Lo que también hemos hecho*/

#include

#include

#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ú();

cambiar (ch)

{

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

scanf( "%d",&n);

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

sc

anf("%d",&m);

ReadScore(stu,n,m);

break;

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

descanso;

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

descanso;

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

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

PrintScore(stu,n,m) ;

descanso;

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

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

PrintScore(stu,n,m);

break;

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

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

PrintScore(stu,n,m);

break;

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

descanso;

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

descanso;

caso 10:StatisticAnalysis(stu,n,m);

descanso;

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

descanso;

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

descanso;

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

descanso;

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

exit(0);

default :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.Registro de entrada\n");

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

printf(" 3. Calcular la puntuación total y media de cada estudiante \n");

printf("4.Ordenar en d

orden ascendente 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 el 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.List registrar \n");

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

printf("13.leer desde un archivo \n"); p>

printf("0.Exit \n");

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

scanf( " %d",&itemSelected);

devolver itemSelected;

}

/*Función: Ingresar m calificaciones de cursos de n estudiantes*/

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

{

int i,j;

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

for(i=0;i

{

scanf(" %ld %s",&stu[i].num,stu[i].nombre);

for(j=0;j

{

scanf("%f",&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;i

{

stu [i]. suma=0;

for(j=0;j

{

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

}

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

printf("estudiante %d: suma = %.0f,aver = %.0f\n",

i+1,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[ COURSE_NUM],aver[ CURSO_NUM];

for(j=0;j

{

p>

suma[j]=0;

for(i=0;i

{

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

}

aver[j] = n>0 ? suma[j]/n:-1;

printf("curso %d:sum = %.0f,aver = %.0f\n",j+1,sum[j],aver[j]);

}

}

/*Función de función: ordenar los valores de los elementos en la suma de la matriz de acuerdo con el método de selección*/

void SortbyScore(STU stu[], int n,int m,int (*comparar)(flotante a,flotante b))

{

int i,j,k,t;

para(i=0;i

{

k=i;

para(j=i+ 1;j< n;j++)

{

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

}

if(k!=i)

{

for(t=0;t

{

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

}

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

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

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

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

}

}

}

/*Ordenar los datos en orden ascendente*/

int Ascending(float a, float b)

{

devolver a

}

/*Ordenar los datos en orden descendente*/

int Descendente(float a,float b)

{

return a>b;

}

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

void SwapFloat(float *x,float *y)

{

float temp;

temp =*x;

p>

*x=*y;

*y=temp;

}

/ *Intercambiar dos datos enteros largos*/

void SwapLong(long *x,long *y)

{

long temp;

temp=*x;

*x=*y;

*y=temp;

}

/*Intercambiar dos cadenas*/

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

{

char temp[MAX_LEN];

strcpy(temp,x);

strcpy(x,y);

strcpy(y,temp);

}

/*Función: Presione para seleccionar Método para ordenar los valores de los elementos de la matriz numérica de menor a mayor*/

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

{

int i,j,k,t;

for( i=0;i

{

k=i;

for(j=i+1;j

{

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

}

if(k!=i)

{

for(t=0;t

{

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

}

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

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

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

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

}

}

}

/*Función de función: método de intercambio para implementar la clasificación de cadenas en el orden del diccionario*/

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

{

int i,j,t;

for(i=0;i

{

for(j=i+1;j

{

if(strcmp(stu[j].nombre, stu[i].nombre )<0)

{

for(t=0;t

{

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

}

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

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

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

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

}

}

}

}

/*Función de función: buscar calificaciones 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",&number);

for(i=0;i

{

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

{

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

for(j=0;j

{

printf("%.0f \t" , estu[i].puntuación[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 el orden de los 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;i

{

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

{

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

for(j=0;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*/

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

{

int i,j,total,t[6];

for(j=0;j

{

printf("Para el curso %d:\n",j+1);

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

for(i=0;i

{

if( stu[ i].score[j]>=0&&stu[i].score[j]<60) t[0]++;

else if (stu[i].score[j]< 70) t[1]++;

si no (stu[i].score[j]<80) t[2]++;

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

si no (stu[i].score[j]<100) t[4]++;

si no, si (stu[i].score[j]=100) t[5]++;

}

for(total=0,i=0; i< =5;i++)

{

total=total+t[i];

}

for(i= 0; i<=5;i++)

{

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

si no(i==5)

printf("%d\t%d \t %.2f%%\n",(i+5)*10,t[i],(fl

avena)t[i]/n*100);

else

printf("%d-%d\t%d\t%.2f%%\n", (i+5)*10,(i+5)*19,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

{

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

for(j=0;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 calificaciones 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("estudiante.txt", "w "))==NULL)

{

printf("¡Error al abrir score.txt!\n");

exit(0) ;

}

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

p>

for(i=0;i

{

fprintf(fp,"%10ld%10s",stu[i] .num, stu[i].nombre);

for(j=0;j

{

fprintf(fp," %10.0f ",stu[i].score[j]);

}

fprintf(fp,"%10.0f%10.0f\n",stu[i] .sum, stu[i].aver);

}

fclose(fp);

}

/*Leer de file El número de estudiante, el nombre, las calificaciones y otra información del estudiante se escriben en la matriz de estructura stu*/

void ReadfromFile(STU stu[],int *n,int *m)

{

ARCHIVO *fp;

int i,j;

if((fp=fopen("estudiante.txt","r")) = =NULL)

{

printf("¡Error al abrir score.txt!\n");

salir(0);

}

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

for( i=0;i< *n;i++)

{

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

fscanf(fp,"%10s",stu[i].nombre);

for(j=0;j< *m;j++)

{

fscanf(f

p,"%10f",&stu[i].score[j]);

}

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

}

fclose(fp);

}