Informe de prueba del sistema de gestión de biblioteca
1. Título: Gestión del desempeño estudiantil
2. Propósito y requisitos
1. (1) Dominar las ideas y métodos básicos de la programación orientada a procesos;
(2) Dominar los conocimientos y habilidades básicos del lenguaje C;
(3) Ser capaz de aplicar las Conocimientos básicos y habilidades aprendidas. Habilidades para resolver problemas de programación simples.
2. Requisitos
Requisitos básicos:
1. Se requiere utilizar el concepto de programación orientada a procesos del lenguaje C para completar el diseño del sistema; /p>
2. Resalte las características funcionales del lenguaje C y utilice múltiples funciones para realizar cada subfunción;
3. Dibuje el diagrama del módulo funcional;
4. el diseño de la interfaz puede lograr una interacción amigable;
5. Tener un diagrama de flujo del programa claro y una definición detallada de la estructura de datos
6.
Requisitos de innovación:
Una vez cubiertas las necesidades básicas, se pueden llevar a cabo diseños innovadores, como el control de funciones del usuario del sistema. Las funciones del sistema son diferentes para el nivel de administrador y el general. usuarios de nivel.
3. Descripción de la información
Ingrese el número de estudiantes de 10 estudiantes en una clase y las calificaciones de cada estudiante en tres materias (matemáticas, inglés, conceptos básicos de computación). El programa calcula el puntaje total y el puntaje promedio de cada estudiante, los clasifica por desempeño y finalmente imprime una transcripción ordenada de puntaje alto a puntaje bajo. Requisitos:
1) La clasificación se implementa mediante una función.
2) Los elementos del expediente académico impreso incluyen: número de serie, número de estudiante, matemáticas, inglés, computadora, puntaje total y puntaje promedio.
3) Rellenar el contenido experimental según el formato de plantilla electrónica del informe experimental.
4. Descripción de la función
1. Ingresar la información básica del estudiante y los resultados de la materia seleccionada.
2. Consulta y modificación de información básica (departamento, clase; subtema).
3. Analizar los resultados de cada departamento o clase (es decir, encontrar el puntaje promedio, la tasa de aprobación y la tasa de excelencia de una sola materia);
4. cursos ofrecidos (encontrar el puntaje promedio, el puntaje más alto, el puntaje más bajo)
5. Clasificar los puntajes de las pruebas de los estudiantes (las materias individuales se clasifican por departamento o clase, y los puntajes completos de los estudiantes en cada clase y el Se clasifican el mismo semestre y cada materia tiene una puntuación)
Solución de verbo (abreviatura de verbo)
1. Analizar los requisitos funcionales del programa y dividir los módulos funcionales del programa.
2. Dibujar un diagrama de flujo del sistema.
3. Escritura de código. Definir estructuras de datos y varias subfunciones funcionales.
4. Depuración de funciones del programa.
5. Complete el informe resumido del sistema y el manual de instrucciones.
Horario de verbos intransitivos
Este curso tiene una duración de dos semanas y se realiza en cuatro etapas:
1. Los instructores deben guiar activamente a los estudiantes para que estudien y profundicen en los problemas de forma independiente, aclaren las necesidades de diseño, descubran métodos de implementación y sigan los pasos del análisis de necesidades, el diseño general y el diseño detallado.
2. Etapa de codificación y depuración: escriba el código C de acuerdo con el plan de análisis del diseño y luego depure el código para lograr las funciones requeridas por el proyecto.
3. Etapa del informe resumido: resuma el trabajo de diseño, escriba una descripción del diseño del curso y solicite a los estudiantes que escriban los pasos y el contenido del análisis de la demanda, el diseño general, el diseño detallado, la codificación y las pruebas.
4. Etapa de evaluación.
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
#define STU_NUM 10 /*Definición de macro número de estudiantes*/
Estructura estudiante/*Defina una estructura para almacenar el número de estudiante del estudiante, puntajes de tres cursos, puntaje total y puntaje promedio*/
{
char stu _ id[20];/*Tarjeta de identificación del estudiante;*/
Puntuación flotante[3];/*Tres resultados del curso;*/
Cantidad flotante total;/*Puntuación total ; */
Promedio flotante/*puntuación promedio;*/
};
/*La clasificación se implementa a través de funciones*/
void SortScore(estudiante *stu, int n)
{
Estudio del estudiante;
for(int I = 0;i<n-1;i++ )
for(int j = I+1; j & ltn; j++)
{
if (Stu[i].Total & lts Figura[j] .Total)
{
stud = stu[I];
stu[I]= stu[j];
stu [j]= semental;
}
}
}
int main()
{
Estudiante STU[STU _ NUM];/*Hay 10 elementos en la matriz estructural creada, que se utilizan para almacenar la información relevante de estas 10 personas. */
/*Ingrese información relevante de estos diez estudiantes*/
for(int I = 0;I& ltSTU _ NUMi++)
{
Printf("Ingrese el número de estudiante de %d estudiante:", I+1
scanf("%s ", & Stu_id
Printf); ("Ingrese la puntuación de matemáticas de %d estudiante:", I+1
scanf("%f ", & Stu[I]. Puntuación
Printf); ("Ingrese la puntuación de inglés de %d estudiante:", I+1
scanf("%f ",&Stu[I ]. Puntuación[1]);
Printf( "Ingrese la puntuación de computadora de %d estudiante:", I+1);
scanf("%f ", &s graph[i].score[2]);
Stu[ i]. total = estu[i]. puntuación[0]+stu[i]. puntuación[1]+stu[i]. puntuación[2];
Stu[i]. aver = estu[i]. total/3;
}
printf(" \n ");
ordenar puntuación(stu, stu_num); /* llamar a la función de clasificación* /
/*Muestre las puntuaciones de los estudiantes ordenadas*/
for(I = 0;I& ltSTU _ NUMi++)
{
Printf( "Número de serie: %d\t ", I);
Printf("ID de estudiante: %s\t ", stu[i]. stu_id);
Printf (" Matemáticas: %f\t ", stu[i]. Puntuación [0]);
Printf ("Inglés: %f\t ", stu[i]. Puntuación [ 1]); p>
Printf("Computadora: %f\t ", stu[i]. Puntuación[2]);
Printf ("GPA: %f\t ", stu[i]. aver);
Printf("Puntuación total: %f\t ", stu[i].
Total);
printf(" \ n \ n ");
}
Devuelve 0;
Nota: (Descripción del identificador principal en el programa fuente)
#define STU_NUM 10 /*Definición macro del número de alumnos*/
Estructura alumno/*Definir una estructura para almacenar el número de estudiante del estudiante, los puntajes de tres cursos, el puntaje total y el puntaje promedio*/
{
char stu _ id[20] /*Student ID;*/; p>
Puntuación flotante[3];/*Puntuaciones de tres cursos;*/
Puntuación flotante total;/*Puntuación total;*/
Promedio flotante/* Puntuación promedio;*/
}
Resultados experimentales:
Ingreso: (ingrese solo los siguientes números y las palabras anteriores las generará usted mismo).
Por favor introduzca el número de estudiante 1: 001.
Ingrese la puntuación de matemáticas del primer estudiante: 1.
Ingrese la puntuación de inglés del primer estudiante: 1.
Ingrese la puntuación informática del primer estudiante: 1.
Por favor ingrese el número de estudiante del segundo estudiante: 002.
Ingrese la puntuación de matemáticas del segundo estudiante: 2
Ingrese la puntuación de inglés del segundo estudiante: 2
Ingrese la puntuación de computadora del segundo estudiante: 2
Por favor ingrese el número de estudiante del tercer estudiante: 003.
Ingrese la puntuación de matemáticas del tercer estudiante: 3
Ingrese la puntuación de inglés del tercer estudiante: 3
Ingrese la puntuación de computadora del tercer estudiante: 3
Por favor ingrese el número de estudiante del cuarto estudiante: 004.
Ingrese la puntuación de matemáticas del cuarto estudiante: 4
Ingrese la puntuación de inglés del cuarto estudiante: 4
Ingrese la puntuación de computadora del cuarto estudiante: 4
Por favor ingrese el número de estudiante del quinto estudiante: 005.
Ingrese la puntuación de matemáticas del quinto estudiante: 5
Ingrese la puntuación de inglés del quinto estudiante: 5
Ingrese la puntuación de computadora del quinto estudiante: 5
Por favor ingrese el número de estudiante del sexto estudiante: 006.
Ingrese la puntuación de matemáticas del sexto estudiante: 6
Ingrese la puntuación de inglés del sexto estudiante: 6
Ingrese la puntuación de computadora del sexto estudiante: 6
Por favor ingrese el número de estudiante del séptimo estudiante: 007.
Ingrese la puntuación de matemáticas del séptimo estudiante: 7
Ingrese la puntuación de inglés del séptimo estudiante: 7
Ingrese la puntuación de computadora del séptimo estudiante: 7
Por favor ingrese el número de estudiante del octavo estudiante: 008.
Ingrese la puntuación de matemáticas del octavo estudiante: 8
Ingrese la puntuación de inglés del octavo estudiante: 8
Ingrese la puntuación de computadora del octavo estudiante: 8
Por favor ingrese el número de estudiante del noveno estudiante: 009.
Ingrese la puntuación de matemáticas del noveno estudiante: 9
Ingrese la puntuación de inglés del noveno estudiante: 9
Ingrese la puntuación de computadora del noveno estudiante: 9
Por favor ingrese el número de estudiante del estudiante No. 10: 010.
Ingrese la puntuación de matemáticas del décimo estudiante: 10.
Ingrese la puntuación de inglés del décimo estudiante: 10.
Ingrese la puntuación informática del décimo estudiante: 10.
Salida:
Número de serie: 0 Número de estudiante: 010 Matemáticas: 10.000000 Inglés: 10.000000 Computadora: 10.00000.
Puntuación media: 10.000000 Puntuación total: 30.000000.
Número de serie: 1 ID de estudiante: 009 Matemáticas: 9.000000 Inglés: 9.000000 Computadora: 9.000000.
Puntuación media: 9.000000, puntuación total: 27.000000.
Número de serie: 2 ID de estudiante: 008 Matemáticas: 8.000000 Inglés: 8.000000 Computadora: 8.000000.
Puntuación media: 8.000000, puntuación total: 24.000000.
Número de serie: 3 ID de estudiante: 007 Matemáticas: 7.000000 Inglés: 7.000000 Computadora: 7.000000.
Puntuación media: 7.000000, puntuación total: 21.000000.
Número de serie: 4 Número de estudiante: 006 Matemáticas: 6.000000 Inglés: 6.000000 Computadora: 6.000000.
Puntuación media: 6.000000, puntuación total: 18.000000.
Número de serie: 5 Número de estudiante: 005 Matemáticas: 5.000000 Inglés: 5.000000 Computadora: 5.000000.
Puntuación media: 5.000000, puntuación total: 15.000000.
Número de serie: 6 ID de estudiante: 004 Matemáticas: 4.000000 Inglés: 4.000000 Computadora: 4.000000.
Puntuación media: 4.000000, puntuación total: 12.000000.
Número de serie: 7 Número de estudiante: 003 Matemáticas: 3.000000 Inglés: 3.000000 Computadora: 3.000000.
Puntuación media: 3.000000, puntuación total: 9.000000.
Número de serie: 8 ID de estudiante: 002 Matemáticas: 2.000000 Inglés: 2.000000 Computadora: 2.000000.
Puntuación media: 2.000000, puntuación total: 6.000000.
Número de serie: 9 Número de estudiante: 001 Matemáticas: 1.000000 Inglés: 1.000000 Computadora: 1.000000.
Puntuación media: 1,000000 Puntuación total: 3,000000.
7. Redactar un informe de diseño del curso o un resumen del diseño del curso.
Requisitos del informe de diseño del curso:
El informe resumido incluye análisis de demanda, diseño general, diseño detallado, codificación (los pasos de programación están escritos en detalle), pasos y contenido de prueba, resumen del diseño del curso. , Materiales de referencia, etc. Si no se cumplen los requisitos anteriores, el diseño se marcará como fallido.
Errores comunes en el lenguaje C
Al escribir identificadores se ignora la diferencia entre letras mayúsculas y minúsculas.
Principal()
{
int a = 5;
printf("%d ", A);
}
El compilador trata y como dos nombres de variables diferentes y muestra un mensaje de error. c considera las letras mayúsculas y minúsculas como dos caracteres diferentes. Tradicionalmente, los nombres de constantes simbólicas están en mayúsculas y los nombres de variables en minúsculas para aumentar la legibilidad.
2. Ignora el tipo de variable y realiza una operación ilegal.
Principal()
{
Float a, b;
printf("%d ", a % b);
}
% es la operación restante para obtener el resto entero de a/b. Las variables enteras A y B pueden realizar operaciones de resto, mientras que las variables reales no pueden realizar operaciones de "resto".
3. Confundir constantes de caracteres y constantes de cadena.
char c;
c = " a
Aquí, las constantes de caracteres se confunden con las constantes de cadena. Las constantes de caracteres están encerradas entre un par de comillas simples. carácter, una constante de cadena es una secuencia de caracteres encerrados entre un par de comillas dobles. c especifica "\" como final de la cadena, que el sistema agrega automáticamente, por lo que la cadena "a" en realidad contiene dos caracteres: ' a' y '\' no pueden asignarse a variables de caracteres
4. Ignore la diferencia entre "=" y "=="
En muchos casos avanzados. En el lenguaje, el símbolo "=" se utiliza como operador relacional "igual a". Por ejemplo, puedes escribir en el programa BASIC
Si (a=3) entonces...
Pero en C. En el lenguaje, "=" es un operador de asignación y "==" es un operador relacional. Por ejemplo:
if(a = = 3)a = b;
El primero es una comparación. Si A es igual a 3, el segundo significa que si A y 3 son iguales, asigne el valor B a A. Por costumbre, los principiantes suelen cometer este error.
5. No se preocupe por el signo más.
p>El punto y coma es una parte integral de la declaración C y debe haber un punto y coma al final de la declaración.
a=1
b=2
Al compilar, el compilador no encontró el punto y coma después de "a=1", por lo que cambió la siguiente línea "b =2" como parte de la línea anterior, lo que provocará un error de sintaxis. Al corregir errores, a veces el error no se encuentra en la línea donde se señaló el error. Depende de si falta el punto y coma de la línea anterior.
{ z = x+y;
t = z/100
printf("%f", t
}
Para declaraciones compuestas, el último punto y coma de la última declaración no se puede ignorar (esto es diferente de PASCAL).
6. Puntos extra.
Para declaraciones compuestas, por ejemplo:
{ z = x+y
t = z/100
printf( " %f ", t);
};
No puede haber símbolos adicionales después de las llaves de una oración compuesta, de lo contrario será superfluo.
Otro ejemplo es:
if(a % 3 = = 0
i++
Originalmente 3 if A If it); divide uniformemente, le sumaré 1. Pero como hay un punto y coma después de if (a%3 == 0), la declaración if termina aquí y el programa ejecutará la declaración I ++. Independientemente de si 3 es divisible por A, agregaré automáticamente 1.
Otro ejemplo es:
for(I = 0;i<5;i++);
{scanf("%d",& ampx) ; p>
printf("%d ",x);}
La intención original es ingresar cinco números en secuencia y luego generar cada número. Debido a que se agrega un punto y coma después de for(), el cuerpo del bucle se convierte en una declaración vacía. En este momento, solo se puede ingresar y emitir un número.
7. Olvidé agregar el operador de dirección "&" al ingresar variables. .
int a, b;
scanf("%d%d ", a, b;
Esto es ilegal. La función Scanf se utiliza para almacenar los valores de A y B en función de sus direcciones en la memoria. "& amp "A" se refiere a la dirección de A en la memoria.
8. El método de entrada de datos no cumple con los requisitos. ①scanf("%d%d ", & amp一, & ampb );
Al ingresar, las comas no se pueden usar como separador entre dos datos. Por ejemplo, la siguiente entrada es ilegal:
3,4
Cuando. ingresando datos, deje uno o más espacios entre los dos datos, o presione Enter o tab
②scanf("%d, %d ", & amp one, & ampb
); c estipula que si hay caracteres distintos de la descripción del formato en la cadena de "control de formato", se deben ingresar los mismos caracteres que estos al ingresar datos. La siguiente entrada es legal:
3,4.
Está mal utilizar espacios u otros caracteres en lugar de comas
3 4 3:4
Otro ejemplo es:
scanf ("a=%d,b=%d",&one,&b);
La entrada debe tener el siguiente formato:
a=3,b=4 p>
9. El formato de los caracteres de entrada no cumple con los requisitos.
Al ingresar caracteres en el formato "%c", tanto los "caracteres de espacio" como los "caracteres de escape" se ingresan como. caracteres válidos
scanf("%c%c%c ", &c 1; c2 y ampC3
Por ejemplo, ingrese un carácter b c
; "a" se envía a c1, el carácter "" se envía a c2 y el carácter "b" se envía a c3, porque %c solo necesita leer un carácter y no es necesario utilizar un espacio como intervalo entre los dos caracteres.
10. Los tipos de datos de entrada y salida son inconsistentes con los especificadores de formato utilizados.
Por ejemplo, A se define como un número entero y B se define como un real. tipo de número.
a = 3; b = 4.5
printf("%f%d\n ", a, b
No se proporcionará al compilar mensaje de error, pero los resultados de la ejecución serán inconsistentes con la intención original. Este error requiere atención especial.
11.Se intentó especificar la precisión al ingresar los datos.
scanf("%7.2f ", & ampa);
Hacerlo es ilegal y no se puede especificar la precisión al ingresar datos.
12. La declaración de interrupción se omite en la declaración de cambio.
Por ejemplo, imprima un campo de porcentaje basado en el nivel de puntuación del examen.
Cambiar (nivel)
{ case ' A ':printf(" 85 ~ 100 \ n ");
Caso ' B ':printf(" 70 ~ 84 \ n ");
caso ' C ':printf(" 60 ~ 69 \ n ");
caso ' D ':printf(" & lt; 60 \n");
Valor predeterminado: printf(" error \n ");
Debido a la omisión de la declaración break, case solo funciona como una etiqueta y no funciona como efecto de juicio. Por lo tanto, cuando el valor del nivel es a, la función printf ejecuta la segunda, tercera, cuarta y quinta declaración de la función printf después de ejecutar la primera declaración. La forma correcta de escribirlo es agregar "descanso" después de cada rama. . Por ejemplo
case ' A ':printf(" 85 ~ 100 \ n "); breaks;
13. Ignore las diferencias detalladas entre las declaraciones while y do- while.
(1)main()
{int a=0, I
scanf("%d", & ampI
);Y(i<=10)
{ a = a+I
i++
}
printf (" %d ", a);
}
(2) Principal()
{int a=0, I;
scanf("%d ",&I);
Hacer
{ a = a+I;
i++;
} mientras (I <=10);
printf("%d ", a);
}
Se puede ver que cuando se ingresa Cuando el valor de I es menor o igual a 10, los dos resultados son iguales. Cuando i> está en 10, el resultado es diferente. Porque el bucle while se juzga antes de la ejecución, mientras que el bucle do- while se juzga después de la ejecución. Para números mayores que 10, el bucle while no ejecuta el cuerpo del bucle una vez, pero la instrucción do- while ejecuta el cuerpo del bucle una vez.
14. Mal uso de variables al definir arrays.
int n;
scanf("%d ", & ampn
int a[n]; Los corchetes en ambos lados son expresiones constantes y pueden contener constantes y constantes simbólicas. Es decir, C no permite definir dinámicamente el tamaño de una matriz.
15. Al definir una matriz, el "número de elementos" definido se confunde con el valor máximo del subíndice.
Principal()
;
printf("%d ", a[10]);
}
El lenguaje C estipula que se usa un [10] al definir, lo que significa que la matriz A tiene 10 elementos. Su valor de subíndice comienza desde 0, por lo que el elemento de matriz a[10] no existe.
16. No se utiliza almacenamiento estático al inicializar la matriz.
int a[3]=;
Es incorrecto inicializar una matriz como esta. El lenguaje C estipula que solo se pueden inicializar matrices de almacenamiento estáticas y matrices de almacenamiento externo.
Debe cambiarse a:
static int a[3]=;
17. El operador de dirección no debe agregarse y el operador de dirección no debe agregarse a la posición donde está. agregado.
scanf("%s ", & ampstr);
El sistema de compilación en lenguaje C procesa el nombre de la matriz de esta manera: el nombre de la matriz representa la dirección inicial de la matriz, en el Función scanf El elemento de entrada es un nombre de matriz de caracteres, por lo que no es necesario agregar el símbolo de dirección &. Debe cambiarse a:
scanf("%s ", str);
18 Se definen tanto los parámetros formales como las variables locales en la función.
int max(x, y)
int x, y, z;
{ z = x & gty? x:y;
Return (z);
}
Los parámetros formales deben definirse fuera de la función, mientras que las variables locales deben definirse dentro de la función. Debe cambiarse a:
int max(x, y)
int x, y
{ int z
z; = x>y? x:y;
Return (z);
}
experiencia en el idioma c
A través de esta formación he aumentado mi aprendizaje Interés por la tecnología del software. Aunque no conocía el contenido específico de la tecnología de software, encontré la diversión de programar a partir del curso de lenguaje C. En el proceso de aprendizaje del lenguaje C, también aprendí muchos conocimientos básicos de aplicaciones informáticas y también obtuve un conocimiento básico. Comprensión del cuerpo de la computadora.
En esta capacitación, el profesor dio un programa de muestra y, después de su propia reescritura, se cumplieron los requisitos. Primero realice una salida simple y luego realice otros modos paso a paso. Algunos errores cometidos durante la operación real conducirán a ganancias inesperadas y la capacitación es muy interesante. En la operación específica se consolidaron los conocimientos teóricos del lenguaje C aprendidos este semestre y se logró el propósito básico de la capacitación. Al mismo tiempo, también descubrí mis propios defectos y debería prestarles más atención en el futuro. Al mismo tiempo, me di cuenta de que el lenguaje C tiene las características de declaraciones concisas, uso flexible y alta eficiencia de ejecución. Descubra el importante papel de la formación en informática, especialmente una comprensión profunda de las matrices y los bucles.
A través de operaciones prácticas, aprendí los pasos y métodos básicos de la programación en lenguaje C, desarrollé mi capacidad de pensamiento lógico y cultivé mi capacidad para analizar y resolver problemas. Entiendo profundamente el significado de "nada es imposible, sólo imaginable", "la unidad hace la fuerza", "la práctica es el estándar para probar la verdad" y "No me avergüenzo de hacer preguntas".
Espero llevar a cabo más capacitaciones de este tipo en el futuro, ampliar la sala de diseño, cultivar la capacidad de los estudiantes para pensar de forma independiente y mejorar su nivel de operación práctica.
Ocho. Referencia: tutorial de programación en lenguaje C