Discusión sobre el método de diseño del sistema de gestión del desempeño de los estudiantes (lenguaje C)
El objetivo básico de la programación es utilizar algoritmos para procesar los datos originales del problema para obtener el efecto deseado. Pero esto es sólo un requisito básico para la programación. Es necesario mejorar integralmente la calidad del programa, mejorar la eficiencia de la programación, hacer que el programa tenga buena legibilidad, confiabilidad, mantenibilidad y buena estructura, y compilar buenos programas debe ser el objetivo de todo programador. Para ello, debes dominar los métodos y técnicas de programación correctos. El lenguaje C es un lenguaje estructurado. Tiene una jerarquía clara y facilita la organización de programas de forma modular, facilitando su depuración y mantenimiento. Por lo tanto, se utiliza un método de programación estructurada para llevar a cabo un refinamiento gradual, de arriba hacia abajo y un diseño modular del sistema de gestión.
El análisis de las necesidades del tema muestra que el sistema de gestión gestiona la información sobre el desempeño de los estudiantes. La información del estudiante incluye: número de estudiante, nombre, semestre, calificaciones de cada curso, calificación promedio y clasificación. Implementación: ingreso, modificación, eliminación y consulta de información de los estudiantes, consulta por semestre, número de estudiante, nombre, etc.
Para las puntuaciones de entrada de los estudiantes, se calcularon correctamente la puntuación promedio, la puntuación más alta, la puntuación más baja y el número de reprobados y el número de estudiantes en cada rango de puntuación. E imprímalo correctamente de acuerdo con el formato requerido.
Diseño de funciones funcionales
Este programa es relativamente engorroso y requiere el cálculo de la puntuación promedio, la puntuación más alta, la puntuación más baja y estadísticas de. el número de estudiantes reprobados y el número de estudiantes que reprobaron las puntuaciones de diferentes materias se generan secuencialmente. Si se escribe una función para cada una, el programa será muy grande y la eficiencia no será muy alta. Lo que debería usarse aquí debería ser un método mejor. Aquí se usan las siguientes funciones:
Función de entrada:
entrada vacía (marca *s)/*función de entrada de datos*/ <. /p>
Función de salida:
void print (mark *p)/*Función para generar registros de estudiantes*/
void den(mark *p , mark *q, int *m)/*La función de esta función es asignar el primer registro al segundo*/
Esta función es para la posterior llamada a la función sign para asignar una persona La información se almacena en una lista enlazada,
void converse (mark *s, fsp *q)/*Transferir el registro del estudiante a la variable intermedia q*/
Esta función implementa La función es almacenar Matemáticas, inglés y datos informáticos juntos como una lista vinculada, lo que facilita el proceso posterior.
void sign(mark *s, mark *a, mark *b, mark *c, mark *d, fsp *q)
La función de esta función es Clasificar por puntuaciones de las materias y puntuaciones medias.
void count(mark *s) /*Cuenta el puntaje promedio de cada materia, el puntaje más alto (más bajo) de cada materia y el número de personas en cada rango de puntaje*/
void found(mark *s) )/*Ingrese el número de estudiante del estudiante para verificar su desempeño*/
(1) Lista de programas
#include lt;
# include lt; malloc.hgt;
#include lt; string.hgt
#define N 7 /*Número de estudiantes*/ p>
typedef struct
{
char num[5];
char name[10] /*Nombre del registro y número de estudiante*/
float matemáticas, inglés, computación, promedio /*Cada materia y puntaje promedio*/
}calificación /*Definir el tipo de estructura del registro del estudiante*/
typedef struct
{
float fen[4];
int n
}fsp; variable para conversión de registros de estudiantes*/ p>
entrada nula (marca *s)/*función de entrada de datos*/
{
int
mark *p;
p>
printf("Ingrese el registro de cada estudiante\n"); ; ilt; N; i, p)
{
scanf("ssfff", p-gt; num, p-gt; nombre, amp; p-gt; matemáticas, amp; p-gt; inglés, amp; p-gt; comput);
}
}
impresión nula (marca *p)/*Función para generar registros de estudiantes*/
{
int i;
marca *s;
for(i=0, s=p; ilt; N; i, s)
printf("s .1f .1f .1f .1f\ n", s-gt; num, s-gt; nombre, s-gt; matemáticas, s-gt; inglés, s-gt; comput, s-gt; Average);
}
p>void den(mark *p, mark *q, int *m)/*La función de esta función es asignar el primer registro al el segundo*/
{ p>
int i; /*m almacena el número de bits del estudiante (ordenado por grado)*/
for(i=0; ilt; N; i)
{ strcpy((q i)-gt; núm, (p *(m i))-gt;
strcpy((q i)- gt; nombre, (p *(m i))-gt ;nombre);
(q i)-gt; matemática=(p *(m i))-gt; >(q i)-gt; inglés=(p *( m i))-gt;
(q i)-gt;
=(p *(m i))-gt;
(q i)-gt; promedio=(p *(m i))-gt; p> p>
}
void converse (mark *s, fsp *q)/*Transferir registros de estudiantes a la variable intermedia q*/
{
fsp *p;
int i;
for(i=0, p=q; ilt; N; i, p)
{ p -gt; n=i;
*(p-gt; fen)=(s i)-gt; )-gt; inglés;
*(p-gt; fen 2)=(s i)-gt; )-gt; promedio;
}
}
signo nulo(marca *s, marca *a, marca *b, marca *c, marca * d, fsp *q)
{ /* Ordenar las puntuaciones de los estudiantes y las puntuaciones promedio en cada materia*/
int t[N], i, j, k, x, n ; /*El número de bits del estudiante se almacena en t (ordenado por calificaciones)*/
float temp /*Variable intermedia en el proceso de clasificación*/
for(i =0 ;ilt;4;i)/*La diferencia en i apunta a diferentes materias y puntuaciones promedio*/
{ for(j=0;jlt;N;j)
{ temp=*((q j)-gt; fen i); /*Inicializar variables intermedias*/
for(k=j 1;klt;N;k)
if( *((q k)-gt; fen i)lt; temp)
{ x=k; temp=*((q k)-gt; fen i);}
if(x!=j)
{ temp=*((q j)-gt; fen i
*((q j)-gt; fen i ) =*((q x)-gt; fen i);
*((q x)-gt; fen i)=temp
n=(q j)-gt; ; (q j)-gt; n=(q x)-gt; (q x)-gt;
}/*Intercambiar dos variables*/
[j]=(q j)-gt;
}
interruptor(i)
{ caso 0: den(s, a, t ) ; romper;
caso 1: den(s, b, t);
caso 2: den(s, c, t); p>caso 3: den(s, d, t); break
}
}
}
recuento de vacíos ( mark *s)/*Estadísticas sobre la puntuación media de cada materia, la puntuación más alta (más baja) de cada materia y el número de personas en cada rango de puntuación*/
{
float ave[3]={ 0}; /*Almacena la puntuación promedio de cada materia*/
float m[3][2]
int num[3][ 5]={0};/* Almacena el número de personas en cada fracción*/
int i;
m[0][1]=m[0][0]=s-gt;
m[1][0]=m[1][1; ]=s-gt; inglés;
m[2][0]=m[2][1]=s-gt; ilt; N; i )
{ ave[0] =(s i)-gt;
ave[1] =(s i)-gt; >
ave[2] =(s i)-gt; comput;
if( (s i)-gt; math gt; m[0][0] )
m[0][0]=(s i)-gt; matemática;
else if( (s i)-gt; matemática lt; m[0][1] )
m[0][1]=(s i)-gt; math;
if( (s i)-gt; inglés gt; m[1][0] )
m [1][0]=(s i)-gt; inglés;
else if( (s i)-gt; inglés lt; m[1] [1] )
m [1][1]=(s i)-gt; inglés;
if( (s i)-gt; comput gt; m[ 2][0] )
m[ 2][0]=(s i)-gt; comput;
else if( (s i)-gt; comput lt ; m[2][1] )
m[ 2][1]=(s i)-gt;
/*Estadísticas sobre la puntuación más alta (más baja) en cada sujeto*/
if((s i)-gt; mathlt ; 60.0)
num[0][0]
else if((s i) )-gt; mathlt; 70.0)
num[0][ 1]
si no((s i)-gt; mathlt; 80.0)
num[0][2] ;
else if((s i )-gt; mathlt; 90.0)
num[0][3]; else num[0][4];
/*Matemáticas estadísticas Número de personas en cada segmento*/
if((s i)-gt; englishlt; 60.0)
num[1][0];
else if ((s i)-gt; englishlt; 70.0)
num[1][1]
else if((s i)-gt; englishlt; 80.0)
num[1][2];
else if((s i)-gt; englishlt; 90.0)
num[1][3];
else num[1][4];
/*Cuenta el número de personas en cada inglés subsegmento*/
if((s i)-gt; computlt; 60.0)
num[2][0]
else if(( s i)-gt; computlt; 70.0)
num[2][1];
else if((s i)-gt; computl
t; 80.0)
num[2][2];
else if((s i)-gt; computlt; 90.0)
num[2] [3];
else num[2][4];
/*Cuenta el número de personas en cada sección de la computadora*/
}
for(i=0;ilt;3;i)
ave[i]=ave[i]/N
printf("Puntuaciones promedio de tres materias Son:\n.1f .1f .1f\n", ave[0], ave[1], ave[2]);
printf("Las puntuaciones más altas y más bajas en los tres temas Los puntos son:\n");
printf(".1f .1f\n.1f .1f\n.1f .1f\n",
m [0] [0], m[0][1], m[1][0], m[1][1], m[2][0], m[2][1]); p>
printf("El número de personas que reprobaron 60-69, 70-79, 80-89 y más de 90 puntos en tres materias son:\n"); : 3d5d6d6d4d\n", número [0][0], número[0][1], número[0][2], número[0][3], número[0][4]);
printf(" Inglés: 3d5d6d6d4d\n", num[1][0], num[1][1], num[1][2], num[1][3], num[1] [4]); p>
printf("Equipo: 3d5d6d6d4d\n", número[2][0], número[2][1], número[2][2], número[2] [3], num[2 ][4]);
}
void found(mark *s)/*Ingrese el número de estudiante del estudiante para verificar el desempeño del estudiante*/
{
char a[10];/*Aceptar el número de estudiante ingresado*/
int flag, i;/*Variable de bucle*/
char * b ="exit";
do
{ flag=0;
printf("Ingrese el número de estudiante o el nombre de el estudiante que desea consultar\n") ;
getchar();
gets(a);
for(i=0;ilt;N ;i)
if(strcmp(a, (s i)-gt; num)==0 || strcmp(a, (s i)-gt; nombre)==0 )
{printf("El número académico del estudiante, nombre, cada curso y puntaje promedio son:\ns .1f .1f .1f .1f\n"
, (s i)-gt; num, ( s i)-gt; nombre, (s i)-gt; matemáticas, (s i)-gt; inglés, (s i)-gt; cálculo, (s i)-gt;
flag=1; }
if(flag==0) printf("No se encontró esa persona\n");
printf("consulta finalizada");
}
main()
{
. marcar *s, *a, *b, *c, *d
fsp *p;
s=(marca*)malloc(N*tamañode(marca));
a=(marca*)malloc(N*tamañode(marca));
b=(marca*)malloc(N*tamañode(marca));
c=(marca*)malloc(N*tamañode(marca)); =(mark*)malloc(N*sizeof(mark));
p=(fsp*)malloc(N*sizeof(fsp)); /*Espacio abierto para cada variable*/
entrada(s);
printf("Inicializar registro del estudiante:\n");
print(s); , p);
sign(s, a, b, c, d, p)
printf("Los registros de los estudiantes ordenados por puntajes de matemáticas son:\n") ;
print(a);
printf("Los registros de los estudiantes ordenados por puntajes de inglés son:\n");
printf("Los registros de los estudiantes ordenados por puntajes de computadora son:\n");
print(c);
printf("Estudiantes ordenados por puntuaciones promedio El registro es: \n");
print(d);
count(s);
found(s);
obtener();
}