Red de conocimientos sobre prescripción popular - Conocimiento dental - Sistema de gestión de información estudiantil

Sistema de gestión de información estudiantil

# incluir ltstdio.h gt/*Lo que hicimos*/

# 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>

Caso 5: SortbyScore(stu, n, m, orden ascendente);

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

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*/

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

}

Stu[i].aver = m gt0?Stu[i];

p>

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

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 )

{

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)

{

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

}