Escribir un sistema de gestión de estudiantes en lenguaje C.

Descripción general

Simplemente use múltiples matrices para administrar la información del desempeño de los estudiantes, sin usar estructuras. La principal dificultad de este programa es ordenar la información de los estudiantes según la identificación del estudiante o la puntuación total. La matriz se utiliza para marcar los índices ordenados.

Los resultados de ejecución son los siguientes:

Ingresar datos:?

Ordenar según la puntuación total:

Eliminar información del estudiante según número de estudiante:

p>

Pegue el código (un poco excesivo)

#include lt;stdio.hgt;

#include lt;stdlib.hgt; ?//¿archivo de encabezado de función relacionado con cadenas?

#define? de estudiantes?

//Declaración de función, este programa tiene 10 subfunciones, ¿cada función corresponde a una operación?

void Student_scanf(int n);

void estudiante_printf(int n);

int estudiante_find_name(int n);

int estudiante_find_num(int n

void estudiante_sort_num(int n);

void Student_sort_sum(int n);

int Student_alter_num(int n);

int Student_alter_name(int n);

int Student_delete_num(int n);

p>

int Student_delete_name(int n);

// ¿Variable de matriz global, utilizada para almacenar información de los estudiantes?

nombres de caracteres[MAX_STUDENT][50];

int math[MAX_STUDENT];

int english[MAX_STUDENT];

int computer[MAX_STUDENT];

int sum[MAX_STUDENT];

int num[MAX_STUDENT];

//¿Las siguientes variables se utilizan para ordenar matrices de información de los estudiantes como matrices temporales?

int temp_num[MAX_STUDENT];

char temp_names[MAX_STUDENT][50];

int temp_math[MAX_STUDENT];

int temp_english[ MAX_STUDENT];

int temp_computer[MAX_STUDENT] ];

int temp_sum[MAX_STUDENT];

//La matriz de clasificación almacena el subíndice del número o nombre del estudiante ordenado ?

int sort[MAX_STUDENT] ;

//¿Variables globales de bucle?

int i, j;

//main main función

int main(void)

{

int elección, n;

mientras (1)

{

printf("* **********************************\n" );

printf( "Bienvenido al sistema de gestión del desempeño estudiantil\n");

printf("[1] Ingrese todos los estudiantes

Información\n");

printf("[2] Generar todas las puntuaciones de los estudiantes\n");

printf("[3] Buscar información de un determinado estudiante por número de estudiante \n"); n");

printf("[4] Buscar la información de un estudiante por nombre\n");

printf("[5] Ordenar estudiantes por estudiante ID\n" ");

printf("[6] Ordenar estudiantes por puntuación total\n");

printf("[7] Modificar la información de un estudiante por número de estudiante \n ");

printf("[8] Modificar la información de un estudiante por nombre\n");

printf("[9] Eliminar la información de un estudiante por número de estudiante\ n"); n");

printf("[10] Eliminar la información de un estudiante por nombre\n");

printf("[0] Salir del programa\n ");

printf("Ingrese su elección (0 - 9): ");

scanf("d", amp; elección);

printf( "************************************)\n");

cambiar (elección)

{

caso 1: //Entrar;

printf("Ingrese el número de información del estudiante ingresada: ") ;

scanf("d",amp; n);?

student_scanf(n);

descanso;

caso 2 :/ /Salida;

student_printf(n);

break;

caso 3: //Buscar según el número de estudiante

Student_find_num(n );

break;

caso 4: //Buscar por nombre

student_find_name(n);

break;

caso 5: //Ordenar por número de estudiante

student_sort_num(n);

break;

Caso 6: //Ordenar por nombre

student_sort_sum(n);

break;

caso 7: //¿Modificar por número de estudiante?

student_alter_num( n);

break;

caso 8: //¿Modificar por nombre?

student_alter_name(n);

break;

caso 9: //¿Eliminar por número de estudiante?

student_delete_num(n);

n--;

break;

caso 10: //¿Eliminar por nombre?

student_delete_name(n);

n--;

break;

caso 0: //¿Salir del programa?

printf("Salir del programa\n");

printf("El programa finaliza, ¡gracias por usarlo!\ n");

exit(0);

default:

printf("El menú que ingresaste es incorrecto.

¡Por favor vuelve a entrar! \n");

}

}

devuelve 0;

}

//1. Introduce la información

void Student_scanf(int n)

{

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

{

printf("\nPor favor ingrese la información del désimo estudiante:\n", i 1);

printf("\nID del estudiante:");

scanf("d", amp;num[i]);

printf("\nNombre:");

scanf("s", nombres[ i])

printf("\nPuntuación de matemáticas: ");

scanf("d", amp; math[i]); nPuntuación en inglés:");

scanf("d", amp; inglés[i]);

printf("\nPuntuación en computadora:");

scanf("d", amp;computer[i]);

//Calcular la puntuación total

suma[i] = matemáticas[i] inglés [i] computadora[ i];

}

}

//2 Imprimir información

void Student_printf(int n)

{

printf("\nNúmero de estudiante\tNombre\tPuntuación de matemáticas\tPuntuación de inglés\tPuntuación de computadora\tPuntuación total\n");

printf("----- --------------------------------------- ----- ----------\n");

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

{

printf ("d\ts\td\t\td\t\td\t\td\n", num[i], nombres[i], matemáticas[i], inglés[i], computadora[i ], suma[ i]);

}

printf("--------------------- ------- ---------------------------\n");

}

>3 Buscar por número de estudiante

int Student_find_num(int n)

{

int nums;

int resultado

.

printf("Ingrese el número de estudiante que desea encontrar:");

scanf("d", amp; nums);

result= - 1;

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

{

if (nums == num[i])

{

resultado = i;

descanso

}

}

//Finalmente determina el valor de q

if (resultado == -1)

{

printf("¡No hay información sobre este estudiante!\n");

return 0;

}

else

{

//Imprime el encabezado primero

printf(

"\nNúmero de estudiante\t\tNombre\t\tPuntuación de matemáticas\tPuntuación de inglés\tPuntuación de computadora\tPuntuación total\n");

//Imprimir los datos nuevamente

printf(" d\t\ts\t\td\t\td\t\td\td\n", num[resultado], nombres[resultado], matemáticas[resultado], inglés[resultado], computadora[resultado], suma[ resultado]);

printf("¡Imprimir los resultados de la búsqueda!\n");

}

return 1;

}

//4. Buscar calificaciones por nombre

int Student_find_name(int n)

{

char name [200]; /p>

int result;

printf("Ingrese el nombre del estudiante que desea encontrar:");

scanf("s", nombre);

resultado = -1;

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

{

if (strcmp (nombre , nombres[i]) == 0)

{

resultado = i;

romper

}

}

if (resultado == -1)

{//No se encontró resultado

printf("¡No hay información sobre este estudiante!\ n ");

devuelve 0;

}

else//encuentra el resultado

{

printf ("\nNúmero de estudiante\tNombre\tPuntuación de matemáticas\tPuntuación de inglés\tPuntuación de computadora\tPuntuación total\n");

printf("d\ts\td\t\td\ t\td\t\ td\n", num[resultado], nombres[resultado], matemáticas[resultado], inglés[resultado], computadora[resultado], suma[resultado]);

printf ("¡Búsqueda completada!\ n");

}

return 1;

}

//5. Presione Ordenar por número

void Student_sort_num(int n)

{

int min, max;

for(i=0; ilt; n; i)? //Copiar ¿matriz temporal?

{

temp_num[i] = num[i];

}

max = 0; ¿el valor máximo del número de estudiante y almacenar su subíndice en el último valor de la matriz de clasificación?

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

{

if(temp_num[max]lt;temp_num[j])

max = j;

}?

ordenar[n-1] = max; // ¿El último número de la matriz de clasificación?

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

{

min = i; //Encontrar el número mínimo de estudiantes

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

{

if(temp_num[min] gt;temp_num[

j])

min = j;

}?

//¿El subíndice de la información ordenada del estudiante registrada en la matriz de clasificación?

sort[i] = min;

temp_num[min] = temp_num[max] // ¿Utiliza una matriz temporal para establecer el número de estudiante de la información del estudiante buscado en el valor máximo para eliminar la búsqueda? interferencia

}

for(i=0; ilt; n; i)? //¿Copiar la matriz temporal nuevamente?

{

temp_num[ i] = num[i];

strcpy(temp_names[i], nombres[i]);

temp_math[i] = math[i];

temp_english[i] = inglés[i];

temp_computer[i] = computadora[i];

temp_sum[i] = suma[i];

}

for(i=0; ilt; n; i)? //¿Modificar la matriz original según el subíndice?

{

num[i] = temp_num[sort[i]];?

strcpy(nombres[i], temp_names[sort[i]]);?

matemáticas [i] = temp_math[sort[i]];?

inglés[i] = temp_english[sort[i]];?

computadora[i] = temp_computer[sort[ i]]; ?

sum[i] = temp_sum[sort[i]];

}

printf("La clasificación está completa, presione tecla de menú 2 para ver los resultados de la clasificación !\n");

return;

}

//6. Ordenar por puntuación total

void Student_sort_sum(int n )

{

int min, max;

for(i=0; ilt; n; i)? /¿Copiar matriz temporal?

{

temp_sum[i] = suma[i]

}

max = 0; /¿Encontrar el valor máximo de la puntuación total y su subíndice se almacena en el último valor de la matriz de clasificación?

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

{

if(temp_sum [max]lt; temp_sum[j])

max = j;

}?

ordenar[ n-1] = max; //ordenar matriz ¿El último número?

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

{

min = i; //Encontrar el valor mínimo de la puntuación total

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

{

if(temp_sum [min]gt; temp_sum[j])

min = j;

}?

// El subíndice de la información ordenada del estudiante registrada en la clasificación array?

sort[i] = min;

temp_sum[min] = temp_sum[max] // ¿Usar una matriz temporal para buscar a los estudiantes?

La puntuación total de la información se establece en el valor máximo para eliminar la interferencia de búsqueda

}

for(i=0; ilt; n; i)? //Copiar la matriz temporal ¿otra vez?

{

temp_num[i] = num[i];

strcpy(temp_names[i], nombres[i]);

temp_math[i] = matemáticas[i];

temp_english[i] = inglés[i];

temp_computer[i] = computadora[i];

temp_sum[i] = sum[i];

}

for(i=0; ilt; n; i)? //Modificar la matriz original según al subíndice?

{

num[i] = temp_num[sort[i]];?

strcpy(names[i], temp_names[sort] [i]] );?

matemáticas[i] = temp_matemáticas[ordenar[i]];?

inglés[i] = temp_inglés[ordenar[i]];?

computadora[i] = temp_computer[sort[i]];?

suma[i] = temp_sum[sort[i]];

}

printf("La clasificación se completó, ¡presione la tecla de menú 2 para ver los resultados de la clasificación!\n");

return;

}

//7. Presione Modificar información del estudiante por número de estudiante

int Student_alter_num(int n)?

{

int nums;

int result;

printf("Ingrese el número de estudiante que desea modificar:");

scanf("d", amp; nums);

resultado= -1;

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

{

si (nums == num[i ])

{

resultado = i;

romper

}

}

//Finalmente determine el valor q

if (resultado == -1)

{

printf("¡No hay información sobre este estudiante!\ n");

return 0;

}

else //¿Modificar valor de información?

{

printf("Vuelva a ingresar la información del estudiante: \n");

printf("ID del estudiante:\n"); num[resultado]);

printf("Nombre:\n");

scanf("s", nombres[resultado]);?

printf("Puntuación de matemáticas:\n");

scanf("d", amp; matemáticas[resultado]);

printf("Puntuación de inglés:\n");

scanf("d" , inglés[resultado]);

printf("Puntuación de la computadora:\n"); ", amp;computadora[resultado]);<

/p>

suma[resultado] = matemáticas[resultado] inglés[resultado] computadora[resultado];

}

devuelve 1;

} ?

//8. Modificar la información del estudiante por nombre

int Student_alter_name(int n)?

{

char name[50 ];

int result;

printf("Ingrese el nombre del estudiante que desea modificar:"); );

resultado= -1;

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

{

si ( strcmp(nombre, nombres[i])==0)

{

resultado = i;

romper

}

}

//Finalmente determina el valor q

if (resultado == -1)

{

printf(" ¡No hay información sobre este estudiante!\n");

return 0;

}

else //¿Modificar el valor de la información?

{

printf("Vuelva a ingresar la información del estudiante:\n");

printf("ID del estudiante:\n");

scanf(" d",amp;num[resultado]);

printf("Nombre:\n");

scanf("s", nombres[resultado]);?

p>

printf("Puntuación de matemáticas:\n");

scanf("d", amp; math[resultado]);

printf("Puntuación en inglés: \n");

scanf("d", amp; inglés[resultado]);

printf("Puntuación en computadora: \n");

scanf("d",amp;computadora[resultado]);

suma[resultado] = matemáticas[resultado] inglés[resultado] computadora[resultado] ;

}

p>

return 1;

}?

//9. Eliminar información del estudiante por número de estudiante

int Student_delete_num(int n)?

{

int nums;

int resultado

printf("Por favor ingrese el número de estudiante que desea eliminar: ");

p>

scanf("d",amp;nums);

result= -1;

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

{

if (nums == num[i])

{

result = i;

break;

}

}

//Finalmente determina el valor de q

if (resultado == -1)

{

printf("¡No hay información sobre este estudiante!\n");

return 0;

}

else // Eliminar la información actual del estudiante es eliminar la matriz de res

¿La posición de ult se mueve una posición hacia adelante por turno?

{

for(i=result; ilt; n-1; i) //Finalmente, en la función principal, n ¿Valor menos 1?

{

núm[i] = núm[i 1];?

strcpy(nombres[i], nombres[i 1] ] );?

matemáticas[i] = matemáticas[i 1];?

inglés[i] = inglés[i 1];?

computadora [ i] = computadora[i 1];?

suma[i] = suma[i 1];

}?

}

return 1;

}?

//10. Eliminar información del estudiante por nombre

int Student_delete_name(int n)?

{

char name[50];

int result;

printf("Ingrese el nombre del estudiante que desea eliminar: ");

scanf("s",nombre);

resultado= -1;

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

{

if (strcmp(nombre,nombres[i])==0)

{

resultado = i;

break ;

}

}

//Finalmente determina el valor q

if (resultado == -1)

{

printf("¡No hay información sobre este estudiante!\n");

return 0; >

else //¿Eliminar la información actual del estudiante significa mover la matriz una posición hacia adelante desde la posición del resultado?

{

for(i=result; ilt; n- 1; i) // Finalmente, en la función principal, ¿quieres disminuir el valor de n en 1?

{

num[i] = num[i 1] ;?

strcpy( nombres[i], nombres[i 1]);?

matemáticas[i] = matemáticas[i 1];?

inglés[i] = inglés[i 1]; ?

computadora[i] = computadora[i 1];?

suma[i] = suma[i 1];

}?

}

devolver 1;

}?