Explicación súper detallada del sistema de gestión de estudiantes desgarrado——[c++]

Requisitos del tema: Diseñar un programa de gestión del desempeño de los estudiantes para completar el ingreso y la modificación de la información del desempeño de los estudiantes por clase y guardarla en archivos. Realice la salida de las transcripciones de los estudiantes por clase; realice la consulta por número y nombre de estudiante, y ordene por calificación promedio.


  • Descripción del problema

El objetivo del programa es proporcionar una herramienta de gestión del desempeño de los estudiantes simple y fácil de usar para que las instituciones educativas puedan ingresar, modificar, consultar y clasificar de manera eficiente la información sobre el desempeño de los estudiantes. La persistencia de los datos se garantiza guardando la información de los estudiantes en archivos, lo que permite conservar y restaurar los datos de rendimiento de los estudiantes incluso después de cerrar el programa.

  • requerimientos básicos

El requisito básico de este programa es implementar un sistema de gestión del desempeño de los estudiantes, el cual requiere las siguientes funciones:

1. Ingresar las calificaciones de los estudiantes: puede recibir la entrada del usuario del nombre del estudiante, el número de estudiante, la clase y el puntaje, y guardar esta información en una estructura de datos en la memoria, como un vector o una lista vinculada.

2. Modificar las calificaciones de los estudiantes: el estudiante correspondiente se puede encontrar de acuerdo con la identificación del estudiante ingresada por el usuario, y el usuario puede modificar la calificación del estudiante.

3. Guardar las calificaciones de los estudiantes en archivos: es posible guardar los datos de los estudiantes en la memoria actual en un archivo para que pueda cargarse y usarse la próxima vez que se ejecute el programa.

4. Salida de transcripciones de estudiantes por clase: De acuerdo con el nombre de la clase ingresado por el usuario, se puede imprimir el nombre, número de estudiante, clase y puntaje de los estudiantes en la clase.

5. Consultar las calificaciones de los estudiantes por número y nombre de estudiante: según el método de consulta (número o nombre de estudiante) seleccionado por el usuario, puede recibir el número o nombre de estudiante ingresado por el usuario y luego imprimir la información correspondiente del estudiante.

6. Clasificación por calificación promedio: capaz de ordenar según la calificación promedio de los estudiantes e imprimir la información ordenada de los estudiantes.

El programa debe tener una buena interacción con el usuario, es decir, proporcionar a los usuarios opciones de menú claras e información rápida para que los usuarios puedan usar varias funciones fácilmente.

Además, el programa también debe considerar el manejo de errores y el manejo de excepciones. Por ejemplo, cuando el usuario ingresa una opción no válida o la información del estudiante no existe, se debe dar un mensaje de error apropiado.

Finalmente, para garantizar la persistencia de los datos de los estudiantes, el programa debe poder guardar las calificaciones de los estudiantes en un archivo y cargar los datos del archivo en cada inicio. De esta manera, los datos de los estudiantes se conservan y restauran incluso si el programa se cierra y se vuelve a abrir.

tres. análisis de la demanda 

El análisis de necesidades de este programa incluye principalmente los siguientes aspectos:

1. Requisitos de entrada de datos:

   - El usuario debe poder ingresar el nombre del estudiante, el número de estudiante, la clase y el grado.

   - El programa debe poder almacenar la información ingresada del estudiante en una estructura de datos en la memoria para operaciones posteriores.

   - La información de la clase del estudiante debe incluirse en los datos ingresados.

2. Requisitos de modificación de datos:

   - El usuario debe poder seleccionar el estudiante para modificar en función de la identificación del estudiante.

   - El programa debe poder encontrar al estudiante con el número de estudiante correspondiente y proporcionar una opción para modificar la puntuación.

   - Los datos modificados deberían poder actualizarse en la memoria para operaciones posteriores.

3. Requisitos de almacenamiento de datos:

   - El usuario desea poder guardar los datos de los estudiantes actualmente en la memoria en un archivo para que pueda cargarse la próxima vez que se inicie el programa.

   - El programa debe proporcionar una función de guardado para escribir la información del estudiante en un archivo.

4. Requisitos de salida de la transcripción:

   - Los usuarios deben poder exportar las transcripciones de los estudiantes por clase.

   - El programa debe encontrar a los estudiantes en la clase correspondiente de acuerdo con el nombre de la clase ingresado por el usuario y mostrar el nombre del estudiante, el número de estudiante, la clase y el puntaje.

5. Necesidades de consulta de información del estudiante:

   - Los usuarios deben poder consultar la información del estudiante en función de la identificación o el nombre del estudiante.

   - El programa debe ingresar el número o nombre del estudiante correspondiente de acuerdo con el método de consulta seleccionado por el usuario, y luego generar la información correspondiente del estudiante.

6. Requisitos de clasificación para grados:

   - El usuario debe poder clasificar a los estudiantes por promedio de calificaciones.

   - El programa debe ordenar la información de los estudiantes de acuerdo con la calificación promedio de los estudiantes y generar la información ordenada de los estudiantes.

7. Requisitos de manejo de errores:

   - El programa debe ser capaz de manejar los errores de entrada del usuario, como opciones no válidas o la información del estudiante correspondiente que no se encuentra.

   - Cuando ocurre un error, el programa debe dar un mensaje de error correspondiente para ayudar al usuario a operar correctamente.

8. Requisitos de persistencia:

   - El programa debe poder guardar la información de las calificaciones de los estudiantes en un archivo y poder cargar datos del archivo cuando se inicia el programa.

   - Al persistir los datos, las calificaciones de los estudiantes se pueden conservar y restaurar después de que se cierre el programa.

Lo anterior es el análisis de requerimientos del programa, el cual ayuda a determinar las funciones y necesidades del usuario que debe cumplir el programa. Al implementar el programa, debe desarrollarse y probarse gradualmente de acuerdo con estos requisitos para garantizar que el programa pueda lograr los objetivos esperados.

  • diseño de contorno

El diseño de alto nivel de este programa incluye los siguientes componentes:

1. Estructura `Estudiante`: ​​Indica la información básica del estudiante, incluyendo nombre, número de estudiante, clase y puntuación.

2. Función `addStudent`: se utiliza para ingresar la información del estudiante, recibir el nombre del estudiante, el número del estudiante, la clase y el puntaje ingresados ​​por el usuario, y agregar la información del estudiante a la estructura de datos del estudiante.

3. La función `modifyScore`: encuentra un estudiante basado en el número de estudiante y permite al usuario modificar la puntuación del estudiante.

4. Función `saveToFile`: guarda los datos actuales del estudiante en la memoria en un archivo.

5. Función `loadFromFile`: carga los datos de los estudiantes del archivo a la memoria.

6. Función `printClassScores`: de acuerdo con el nombre de la clase, imprime las calificaciones de los estudiantes en la clase.

7. Función `buscarEstudiante`: ​​De acuerdo con el método de consulta seleccionado (número o nombre del estudiante), reciba el número o nombre del estudiante ingresado por el usuario e imprima la información correspondiente del estudiante.

8. Función `sortByAverageScore`: ordena por la calificación promedio de los estudiantes e imprime la información ordenada de los estudiantes.

9. Programa principal: proporcione la interfaz de usuario, reciba la selección de operación del usuario y llame a la función correspondiente para realizar la función.

El flujo principal del programa es el siguiente:

1. El programa principal se inicia y carga el archivo de datos del estudiante (si existe).

2. Muestre el menú principal y deje que el usuario elija una acción.

3. Según la elección del usuario, llame a la función correspondiente para ejecutar la función correspondiente.

4. Después de realizar la operación, regrese al menú principal y espere la siguiente elección del usuario.

5. Cuando el usuario elige salir, los datos del alumno se guardan en un archivo y el programa finaliza.

Las funciones y componentes en el diseño del esquema están diseñados para realizar la gestión y operación de las calificaciones de los estudiantes. A través de una división y organización de funciones razonables, el programa puede tener una buena estructura y escalabilidad. Los detalles y algoritmos de implementación reales deben diseñarse y desarrollarse aún más de acuerdo con el lenguaje de programación y los requisitos específicos.

cinco. diseño detallado

Este es un programa relativamente complejo, el siguiente es su diseño detallado:

1. Estructura estudiantil:

cpp

estudiante de estructura {

    std::nombre de la cadena;

    identificación interna;

    std::string className;

    puntaje int;

};

2. función agregarEstudiante:

cpp

void addStudent(std::vector<Estudiante>& estudiantes) {

    std::nombre de la cadena;

    identificación interna;

    std::string className;

    puntaje int;

    std::cout << "Por favor ingrese el nombre del estudiante: ";

    estándar::cin >> nombre;

    std::cout << "Ingrese la identificación del estudiante: ";

    estándar::cin >> id;

    std::cout << "Por favor ingrese la clase del estudiante: ";

    std::cin >> nombreClase;

    std::cout << "Por favor ingrese el puntaje del estudiante: ";

    std::cin >> puntuación;

    estudiantes.push_back({nombre, id, className, score});

    std::cout << "Información del estudiante ingresada con éxito." << std::endl;

}

3. función modificarPuntuación:

cpp

void modificarPuntuación(std::vector<Estudiante>& estudiantes) {

    identificación interna;

    int nuevapuntuación;

    std::cout << "Por favor ingrese el número de estudiante para modificar el puntaje:";

    estándar::cin >> id;

    booleano encontrado = falso;

    para (auto&estudiante:estudiantes) {

        if (estudiante.id == id) {

            std::cout << "Por favor ingrese una nueva puntuación: ";

            std::cin >> nuevaPuntuación;

            alumno.puntuacion = nuevapuntuacion;

            encontrado = verdadero;

            std::cout << "La puntuación del estudiante ha sido modificada con éxito." << std::endl;

            romper;

        }

    }

    si se encuentra) {

        std::cout << "No se encontró ningún estudiante con la identificación de estudiante correspondiente." << std::endl;

    }

}

4. Función guardar en archivo:

cpp

void saveToFile(const std::vector<Estudiante>& estudiantes) {

    std::ofstream file("estudiantes.txt");

    si (archivo.es_abierto()) {

        for (const auto& estudiante : estudiantes) {

            archivo << estudiante.nombre << " " << estudiante.id << " " << estudiante.nombreDeLaClase << " " << estudiante.puntaje << std::endl;

        }

        archivo.cerrar();

        std::cout << "La información del estudiante se guardó correctamente." << std::endl;

    } demás {

        std::cout << "No se pudo abrir el archivo para guardarlo." << std::endl;

    }

}

5. función cargarDesdeArchivo:

cpp

void loadFromFile(std::vector<Estudiante>& estudiantes) {

    std::ifstream archivo("estudiantes.txt");

    si (archivo.es_abierto()) {

        std::línea de cadena;

        while (std::getline(archivo, línea)) {

            std::istringstream iss(línea);

            std::nombre de la cadena;

            identificación interna;

            std::string className;

            puntaje int;

            if (iss >> nombre >> id >> className >> puntuación) {

                estudiantes.push_back({nombre, id, className, score});

            }

        }

        archivo.cerrar();

        std::cout << "La información del estudiante se cargó con éxito." << std::endl;

    } demás {

        std::cout << "No se puede abrir el archivo para cargarlo." << std::endl;

    }

}

6. función imprimirpuntuacionesclase:

cpp

void printClassScores(const std::vector<Estudiante>& estudiantes) {

    std::string className;

    std::cout << "Por favor ingrese el nombre de la clase: ";

    std::cin >> nombreClase;

    std::cout << "clase" << className << " estudiantes

Transcripción: " << std::endl;

    booleano encontrado = falso;

    for (const auto& estudiante : estudiantes) {

        if (estudiante.className == className) {

            std::cout << "姓名:" << estudiante.nombre << "\t学号:" << estudiante.id << "\t班级:" << estudiante.nombreDeLaClase << "\t分数:" << estudiante.puntaje << std::endl;

            encontrado = verdadero;

        }

    }

    si se encuentra) {

        std::cout << "No se encontró ningún alumno en la clase correspondiente." << std::endl;

    }

}

7. función buscarEstudiante:

cpp

void buscarEstudiante(const std::vector<Estudiante>& estudiantes) {

    elección int;

    std::cout << "Por favor, seleccione el método de consulta:\n1. número de estudiante\n2. nombre\n";

    std::cin >> elección;

    si (elección == 1) {

        identificación interna;

        std::cout << "Por favor ingrese el número de estudiante: ";

        estándar::cin >> id;

        booleano encontrado = falso;

        for (const auto& estudiante : estudiantes) {

            if (estudiante.id == id) {

                std::cout << "学号:" << estudiante.id << "\t姓名:" << estudiante.nombre << "\t班级:" << estudiante.nombreDeLaClase << "\t分数:" << estudiante.puntaje << std::endl;

                encontrado = verdadero;

                romper;

            }

        }

        si se encuentra) {

            std::cout << "No se encontró ningún estudiante con la identificación de estudiante correspondiente." << std::endl;

        }

    } más si (elección == 2) {

        std::nombre de la cadena;

        std::cout << "Por favor ingrese el nombre: ";

        estándar::cin >> nombre;

        booleano encontrado = falso;

        for (const auto& estudiante : estudiantes) {

            if (estudiante.nombre == nombre) {

                std::cout << "学号:" << estudiante.id << "\t姓名:" << estudiante.nombre << "\t班级:" << estudiante.nombreDeLaClase << "\t分数:" << estudiante.puntaje << std::endl;

                encontrado = verdadero;

            }

        }

        si se encuentra) {

            std::cout << "No se encontró ningún estudiante con el nombre correspondiente." << std::endl;

        }

    } demás {

        std::cout << "Elección no válida." << std::endl;

    }

}

8. función sortByAverageScore:

cpp

bool compareByAverageScore(const Estudiante&estudiante1, const Estudiante&estudiante2) {

    return (estudiante1.puntuación + estudiante2.puntuación) / 2.0 > (estudiante2.puntuación + estudiante2.puntuación) / 2.0;

}

void sortByAverageScore(std::vector<Estudiante>& estudiantes) {

    std::sort(estudiantes.begin(), estudiantes.end(), compareByAverageScore);

    std::cout << "Ordenar éxito por calificación promedio." << std::endl;

}

9. Programa principal:

cpp

int principal() {

    std::vector<Estudiante> estudiantes;

    cargarDesdeArchivo(estudiantes);

    elección int;

    hacer {

        std::cout << "\n1. Ingrese las calificaciones de los estudiantes\n2. Modifique las calificaciones de los estudiantes\n3. Guarde las calificaciones de los estudiantes en archivos\n4. Genere las transcripciones de los estudiantes por clase\n5. Consulte las calificaciones de los estudiantes por número y nombre de estudiante\n6. Ordene por GPA\n0. Salir\n";

        std::cin >> elección;

        cambiar (elección) {

            caso 1:

                addStudent(estudiantes);

                romper;

            caso 2:

                modificarPuntuación(estudiantes

);

                romper;

            caso 3:

                saveToFile(estudiantes);

                romper;

            caso 4:

                printClassScores(estudiantes);

                romper;

            caso 5:

                buscarEstudiante(estudiantes);

                romper;

            caso 6:

                sortByAverageScore(estudiantes);

                romper;

            caso 0:

                saveToFile(estudiantes);

                std::cout << "Las calificaciones de los estudiantes se han guardado en el archivo, el programa está a punto de salir" << std::endl;

                romper;

            por defecto:

                std::cout << "Elección no válida." << std::endl;

                romper;

        }

    } while (elección != 0);

    devolver 0;

}

Este diseño detallado proporciona los detalles de implementación de cada función, incluidos los parámetros, el tipo de devolución y los pasos principales de la operación. A través de estos diseños, el programa puede administrar y operar las calificaciones de los estudiantes según sea necesario.

  • análisis de depuración

Durante el proceso de depuración se pueden encontrar algunos problemas, a continuación se detallan algunos problemas encontrados y sus soluciones, así como una revisión, discusión y análisis del diseño e implementación:

1. Problema: Al ingresar la información del estudiante, el puntaje ingresado excede el rango válido.

   Solución: agregue la lógica de validación adecuada en la función `addStudent` para asegurarse de que los puntajes ingresados ​​​​estén dentro del rango válido.

2. Problema: Al cargar un archivo de datos de estudiantes, el archivo no existe o tiene un formato incorrecto.

   Solución: agregue el manejo de errores adecuado en la función `loadFromFile`, como verificar si el archivo existe y formatear la validación al leer cada fila de datos.

3. Problema: Al modificar la nota de un alumno no se encuentra el alumno con el número de alumno correspondiente.

   Solución: agregue un juicio sobre si el estudiante existe en la función `modifyScore` y proporcione el mensaje de error correspondiente.

4. Problema: Al exportar las transcripciones de los estudiantes por clase, la clase no existe o no hay datos de los estudiantes.

   Solución: agregue un juicio sobre la existencia de la clase y si los datos del estudiante están vacíos en la función `printClassScores`, y proporcione el mensaje de error correspondiente.

5. Problema: al consultar las calificaciones de los estudiantes por número o nombre de estudiante, no se pueden encontrar estudiantes coincidentes.

   Solución: agregue un juicio sobre si existe un estudiante en la función `buscarEstudiante` y proporcione el mensaje de error correspondiente.

6. Problema: Al clasificar las calificaciones de los estudiantes, la lógica de clasificación es incorrecta.

   Solución: verifique la lógica de clasificación en la función `sortByAverageScore` para garantizar la clasificación correcta por puntaje promedio.

  • Instrucciones para el usuario

Los siguientes son los pasos detallados para usar el programa de gestión del desempeño de los estudiantes:

1. Abra una terminal o símbolo del sistema e ingrese el directorio donde se encuentra el programa.

2. Compile el código fuente del programa.

3. Ejecute el programa.

4. Después de que el programa comience a ejecutarse, aparecerá un menú para que elija una operación.

5. Seleccione la opción en el menú para realizar la operación correspondiente:

    Opción 1: Ingresar las calificaciones de los estudiantes

      Ingrese el nombre del estudiante, el número de estudiante, la clase y el puntaje, y siga las indicaciones del programa para ingresar.

      Una vez completada la entrada, el programa mostrará que la información del estudiante se ha introducido correctamente.

    Opción 2: Modificar las calificaciones de los estudiantes

      Ingrese el ID de estudiante del estudiante cuya calificación se va a modificar.

      Introduzca una nueva puntuación.

      Una vez completada la modificación, el programa mostrará que la puntuación del estudiante se ha modificado correctamente.

    Opción 3: Guardar las calificaciones de los estudiantes en un archivo

      La información del estudiante se guarda en un archivo llamado `students.txt`.

      El programa mostrará que la información del estudiante se ha guardado correctamente.

    Opción 4: Salida de transcripciones de estudiantes por clase

      Ingrese el nombre de la clase para exportar la transcripción.

      El programa buscará estudiantes de acuerdo con el nombre de la clase y generará las transcripciones de los estudiantes de la clase correspondiente.

    Opción 5: consultar las calificaciones de los estudiantes por número y nombre de estudiante

      Selecciona el método de consulta: por número de alumno o por nombre.

      Ingrese el número de estudiante correspondiente o el nombre para consultar.

      El programa encontrará y mostrará la información del estudiante que coincida.

    Opción 6: Ordenar por promedio de calificaciones

      La información del estudiante se ordenará por promedio de calificaciones.

      El programa mostrará el éxito ordenado por promedio de calificaciones.

    Opción 0: Salir del programa

      Las calificaciones de los estudiantes se guardan automáticamente en el archivo `students.txt`.

      El programa muestra que las calificaciones de los estudiantes se han guardado en el archivo y luego sale.

6. Seleccione la opción adecuada según sea necesario y siga las indicaciones del programa.

7. Después de realizar la operación seleccionada, puede optar por continuar con otras operaciones o salir del programa.

Tenga en cuenta que antes de ejecutar el programa, asegúrese de haber creado el archivo `students.txt` y guardado la información del estudiante en el formato correcto. Si necesita importar datos de estudiantes existentes, puede ingresar la información del estudiante en el archivo `students.txt` por línea y usar espacios para separar cada campo.

Al seguir los pasos anteriores, puede usar el programa My Student Grade Management para ingresar, modificar, consultar, ordenar y otras operaciones de la información del estudiante, y guardar la información del estudiante en un archivo.

  • Resultados de la prueba

Datos de prueba:

Resultados de la prueba:

  • Resumen del diseño del programa

El propósito de este diseño de programa es realizar el sistema de gestión de logros de los estudiantes A través del análisis de requisitos, el diseño del esquema y el diseño detallado del programa, hemos completado un programa de gestión de logros de los estudiantes basado en C++.

En la etapa de análisis de la demanda, definimos los requisitos básicos del programa, incluidas las funciones de ingreso, modificación, guardado, salida, consulta y clasificación de las calificaciones de los estudiantes. Estos requisitos nos ayudan a definir los límites funcionales del programa y las necesidades del usuario.

En la etapa de diseño del esquema, diseñamos los principales módulos y funciones del programa, y ​​definimos la clase de estudiantes y las funciones para administrar la información de rendimiento de los estudiantes. Estos diseños nos ayudan a ordenar la estructura y la lógica del programa.

En la etapa de diseño detallado, describimos más detalladamente los detalles de implementación de cada función, incluidos los parámetros de la función, el tipo de devolución y los pasos de la operación. Estos diseños nos ayudan a comprender más claramente el flujo de ejecución y el procesamiento de datos del programa.

En el proceso de realización, seguimos la guía del diseño, realizamos cada módulo funcional paso a paso y llevamos a cabo pruebas y depuración. Mediante el uso de datos de prueba, verificamos la integridad funcional y la corrección del programa.

A través de este diseño de programa, hemos aprendido el siguiente resumen de experiencia:

1. El análisis de requisitos es un paso clave en el proceso de diseño.La definición de requisitos puede ayudarnos a garantizar que las funciones del programa satisfagan las necesidades del usuario y evitar la redundancia funcional innecesaria.

2. El diseño del esquema y el diseño detallado son etapas importantes del diseño del programa, nos ayudan a establecer la estructura general y la lógica detallada del programa, y ​​brindan orientación para la codificación.

3. El diseño modular puede mejorar la legibilidad y el mantenimiento del programa.Dividir el programa en diferentes módulos o funciones ayuda a reducir la complejidad y mejorar la reutilización del código.

4. En el proceso de implementación, las pruebas y la depuración paso a paso son muy importantes, lo que puede ayudarnos a encontrar y resolver problemas potenciales y garantizar la corrección del programa.

5. Al diseñar y escribir código, es muy importante prestar atención a la legibilidad y mantenibilidad del código, como nombrar variables y funciones de manera adecuada, agregar comentarios, seguir los estándares de codificación, etc.

En general, el diseño de este programa nos permite comprender completamente y aplicar los principios y métodos básicos de la ingeniería de software, incluidos el análisis de requisitos, el diseño, la implementación, las pruebas y la depuración. Al mismo tiempo, también nos recuerda que debemos prestar atención a los detalles y la calidad en el proceso de diseño y codificación para desarrollar un software eficiente, confiable y fácil de mantener.

  • referencias

1. C++ Primer (5.ª edición) por Stanley B. Lippman, Josée Lajoie y Barbara E. Moo

2. Estructura de datos y análisis de algoritmos (descripción del lenguaje C++) por Mark Allen Weiss

3. Introducción a los sistemas de bases de datos por Abraham Silberschatz, Henry F. Korth y S. Sudarshan

4. Código completo (segunda edición) por Steve McConnell

5. Referencia de C++ (cppreference.com)

6. Desbordamiento de pila (stackoverflow.com)

  • Descripción del problema

El objetivo del programa es proporcionar una herramienta de gestión del desempeño de los estudiantes simple y fácil de usar para que las instituciones educativas puedan ingresar, modificar, consultar y clasificar de manera eficiente la información sobre el desempeño de los estudiantes. La persistencia de los datos se garantiza guardando la información de los estudiantes en archivos, lo que permite conservar y restaurar los datos de rendimiento de los estudiantes incluso después de cerrar el programa.

  • requerimientos básicos

El requisito básico de este programa es implementar un sistema de gestión del desempeño de los estudiantes, el cual requiere las siguientes funciones:

1. Ingresar las calificaciones de los estudiantes: puede recibir la entrada del usuario del nombre del estudiante, el número de estudiante, la clase y el puntaje, y guardar esta información en una estructura de datos en la memoria, como un vector o una lista vinculada.

2. Modificar las calificaciones de los estudiantes: el estudiante correspondiente se puede encontrar de acuerdo con la identificación del estudiante ingresada por el usuario, y el usuario puede modificar la calificación del estudiante.

3. Guardar las calificaciones de los estudiantes en archivos: es posible guardar los datos de los estudiantes en la memoria actual en un archivo para que pueda cargarse y usarse la próxima vez que se ejecute el programa.

4. Salida de transcripciones de estudiantes por clase: De acuerdo con el nombre de la clase ingresado por el usuario, se puede imprimir el nombre, número de estudiante, clase y puntaje de los estudiantes en la clase.

5. Consultar las calificaciones de los estudiantes por número y nombre de estudiante: según el método de consulta (número o nombre de estudiante) seleccionado por el usuario, puede recibir el número o nombre de estudiante ingresado por el usuario y luego imprimir la información correspondiente del estudiante.

6. Clasificación por calificación promedio: capaz de ordenar según la calificación promedio de los estudiantes e imprimir la información ordenada de los estudiantes.

El programa debe tener una buena interacción con el usuario, es decir, proporcionar a los usuarios opciones de menú claras e información rápida para que los usuarios puedan usar varias funciones fácilmente.

Además, el programa también debe considerar el manejo de errores y el manejo de excepciones. Por ejemplo, cuando el usuario ingresa una opción no válida o la información del estudiante no existe, se debe dar un mensaje de error apropiado.

Finalmente, para garantizar la persistencia de los datos de los estudiantes, el programa debe poder guardar las calificaciones de los estudiantes en un archivo y cargar los datos del archivo en cada inicio. De esta manera, los datos de los estudiantes se conservan y restauran incluso si el programa se cierra y se vuelve a abrir.

tres. análisis de la demanda 

El análisis de necesidades de este programa incluye principalmente los siguientes aspectos:

1. Requisitos de entrada de datos:

   - El usuario debe poder ingresar el nombre del estudiante, el número de estudiante, la clase y el grado.

   - El programa debe poder almacenar la información ingresada del estudiante en una estructura de datos en la memoria para operaciones posteriores.

   - La información de la clase del estudiante debe incluirse en los datos ingresados.

2. Requisitos de modificación de datos:

   - El usuario debe poder seleccionar el estudiante para modificar en función de la identificación del estudiante.

   - El programa debe poder encontrar al estudiante con el número de estudiante correspondiente y proporcionar una opción para modificar la puntuación.

   - Los datos modificados deberían poder actualizarse en la memoria para operaciones posteriores.

3. Requisitos de almacenamiento de datos:

   - El usuario desea poder guardar los datos de los estudiantes actualmente en la memoria en un archivo para que pueda cargarse la próxima vez que se inicie el programa.

   - El programa debe proporcionar una función de guardado para escribir la información del estudiante en un archivo.

4. Requisitos de salida de la transcripción:

   - Los usuarios deben poder exportar las transcripciones de los estudiantes por clase.

   - El programa debe encontrar a los estudiantes en la clase correspondiente de acuerdo con el nombre de la clase ingresado por el usuario y mostrar el nombre del estudiante, el número de estudiante, la clase y el puntaje.

5. Necesidades de consulta de información del estudiante:

   - Los usuarios deben poder consultar la información del estudiante en función de la identificación o el nombre del estudiante.

   - El programa debe ingresar el número o nombre del estudiante correspondiente de acuerdo con el método de consulta seleccionado por el usuario, y luego generar la información correspondiente del estudiante.

6. Requisitos de clasificación para grados:

   - El usuario debe poder clasificar a los estudiantes por promedio de calificaciones.

   - El programa debe ordenar la información de los estudiantes de acuerdo con la calificación promedio de los estudiantes y generar la información ordenada de los estudiantes.

7. Requisitos de manejo de errores:

   - El programa debe ser capaz de manejar los errores de entrada del usuario, como opciones no válidas o la información del estudiante correspondiente que no se encuentra.

   - Cuando ocurre un error, el programa debe dar un mensaje de error correspondiente para ayudar al usuario a operar correctamente.

8. Requisitos de persistencia:

   - El programa debe poder guardar la información de las calificaciones de los estudiantes en un archivo y poder cargar datos del archivo cuando se inicia el programa.

   - Al persistir los datos, las calificaciones de los estudiantes se pueden conservar y restaurar después de que se cierre el programa.

Lo anterior es el análisis de requerimientos del programa, el cual ayuda a determinar las funciones y necesidades del usuario que debe cumplir el programa. Al implementar el programa, debe desarrollarse y probarse gradualmente de acuerdo con estos requisitos para garantizar que el programa pueda lograr los objetivos esperados.

  • diseño de contorno

El diseño de alto nivel de este programa incluye los siguientes componentes:

1. Estructura `Estudiante`: ​​Indica la información básica del estudiante, incluyendo nombre, número de estudiante, clase y puntuación.

2. Función `addStudent`: se utiliza para ingresar la información del estudiante, recibir el nombre del estudiante, el número del estudiante, la clase y el puntaje ingresados ​​por el usuario, y agregar la información del estudiante a la estructura de datos del estudiante.

3. La función `modifyScore`: encuentra un estudiante basado en el número de estudiante y permite al usuario modificar la puntuación del estudiante.

4. Función `saveToFile`: guarda los datos actuales del estudiante en la memoria en un archivo.

5. Función `loadFromFile`: carga los datos de los estudiantes del archivo a la memoria.

6. Función `printClassScores`: de acuerdo con el nombre de la clase, imprime las calificaciones de los estudiantes en la clase.

7. Función `buscarEstudiante`: ​​De acuerdo con el método de consulta seleccionado (número o nombre del estudiante), reciba el número o nombre del estudiante ingresado por el usuario e imprima la información correspondiente del estudiante.

8. Función `sortByAverageScore`: ordena por la calificación promedio de los estudiantes e imprime la información ordenada de los estudiantes.

9. Programa principal: proporcione la interfaz de usuario, reciba la selección de operación del usuario y llame a la función correspondiente para realizar la función.

El flujo principal del programa es el siguiente:

1. El programa principal se inicia y carga el archivo de datos del estudiante (si existe).

2. Muestre el menú principal y deje que el usuario elija una acción.

3. Según la elección del usuario, llame a la función correspondiente para ejecutar la función correspondiente.

4. Después de realizar la operación, regrese al menú principal y espere la siguiente elección del usuario.

5. Cuando el usuario elige salir, los datos del alumno se guardan en un archivo y el programa finaliza.

Las funciones y componentes en el diseño del esquema están diseñados para realizar la gestión y operación de las calificaciones de los estudiantes. A través de una división y organización de funciones razonables, el programa puede tener una buena estructura y escalabilidad. Los detalles y algoritmos de implementación reales deben diseñarse y desarrollarse aún más de acuerdo con el lenguaje de programación y los requisitos específicos.

cinco. diseño detallado

Este es un programa relativamente complejo, el siguiente es su diseño detallado:

1. Estructura estudiantil:

cpp

estudiante de estructura {

    std::nombre de la cadena;

    identificación interna;

    std::string className;

    puntaje int;

};

2. función agregarEstudiante:

cpp

void addStudent(std::vector<Estudiante>& estudiantes) {

    std::nombre de la cadena;

    identificación interna;

    std::string className;

    puntaje int;

    std::cout << "Por favor ingrese el nombre del estudiante: ";

    estándar::cin >> nombre;

    std::cout << "Ingrese la identificación del estudiante: ";

    estándar::cin >> id;

    std::cout << "Por favor ingrese la clase del estudiante: ";

    std::cin >> nombreClase;

    std::cout << "Por favor ingrese el puntaje del estudiante: ";

    std::cin >> puntuación;

    estudiantes.push_back({nombre, id, className, score});

    std::cout << "Información del estudiante ingresada con éxito." << std::endl;

}

3. función modificarPuntuación:

cpp

void modificarPuntuación(std::vector<Estudiante>& estudiantes) {

    identificación interna;

    int nuevapuntuación;

    std::cout << "Por favor ingrese el número de estudiante para modificar el puntaje:";

    estándar::cin >> id;

    booleano encontrado = falso;

    para (auto&estudiante:estudiantes) {

        if (estudiante.id == id) {

            std::cout << "Por favor ingrese una nueva puntuación: ";

            std::cin >> nuevaPuntuación;

            alumno.puntuacion = nuevapuntuacion;

            encontrado = verdadero;

            std::cout << "La puntuación del estudiante ha sido modificada con éxito." << std::endl;

            romper;

        }

    }

    si se encuentra) {

        std::cout << "No se encontró ningún estudiante con la identificación de estudiante correspondiente." << std::endl;

    }

}

4. Función guardar en archivo:

cpp

void saveToFile(const std::vector<Estudiante>& estudiantes) {

    std::ofstream file("estudiantes.txt");

    si (archivo.es_abierto()) {

        for (const auto& estudiante : estudiantes) {

            archivo << estudiante.nombre << " " << estudiante.id << " " << estudiante.nombreDeLaClase << " " << estudiante.puntaje << std::endl;

        }

        archivo.cerrar();

        std::cout << "La información del estudiante se guardó correctamente." << std::endl;

    } demás {

        std::cout << "No se pudo abrir el archivo para guardarlo." << std::endl;

    }

}

5. función cargarDesdeArchivo:

cpp

void loadFromFile(std::vector<Estudiante>& estudiantes) {

    std::ifstream archivo("estudiantes.txt");

    si (archivo.es_abierto()) {

        std::línea de cadena;

        while (std::getline(archivo, línea)) {

            std::istringstream iss(línea);

            std::nombre de la cadena;

            identificación interna;

            std::string className;

            puntaje int;

            if (iss >> nombre >> id >> className >> puntuación) {

                estudiantes.push_back({nombre, id, className, score});

            }

        }

        archivo.cerrar();

        std::cout << "La información del estudiante se cargó con éxito." << std::endl;

    } demás {

        std::cout << "No se puede abrir el archivo para cargarlo." << std::endl;

    }

}

6. función imprimirpuntuacionesclase:

cpp

void printClassScores(const std::vector<Estudiante>& estudiantes) {

    std::string className;

    std::cout << "Por favor ingrese el nombre de la clase: ";

    std::cin >> nombreClase;

    std::cout << "clase" << className << " estudiantes

Transcripción: " << std::endl;

    booleano encontrado = falso;

    for (const auto& estudiante : estudiantes) {

        if (estudiante.className == className) {

            std::cout << "姓名:" << estudiante.nombre << "\t学号:" << estudiante.id << "\t班级:" << estudiante.nombreDeLaClase << "\t分数:" << estudiante.puntaje << std::endl;

            encontrado = verdadero;

        }

    }

    si se encuentra) {

        std::cout << "No se encontró ningún alumno en la clase correspondiente." << std::endl;

    }

}

7. función buscarEstudiante:

cpp

void buscarEstudiante(const std::vector<Estudiante>& estudiantes) {

    elección int;

    std::cout << "Por favor, seleccione el método de consulta:\n1. número de estudiante\n2. nombre\n";

    std::cin >> elección;

    si (elección == 1) {

        identificación interna;

        std::cout << "Por favor ingrese el número de estudiante: ";

        estándar::cin >> id;

        booleano encontrado = falso;

        for (const auto& estudiante : estudiantes) {

            if (estudiante.id == id) {

                std::cout << "学号:" << estudiante.id << "\t姓名:" << estudiante.nombre << "\t班级:" << estudiante.nombreDeLaClase << "\t分数:" << estudiante.puntaje << std::endl;

                encontrado = verdadero;

                romper;

            }

        }

        si se encuentra) {

            std::cout << "No se encontró ningún estudiante con la identificación de estudiante correspondiente." << std::endl;

        }

    } más si (elección == 2) {

        std::nombre de la cadena;

        std::cout << "Por favor ingrese el nombre: ";

        estándar::cin >> nombre;

        booleano encontrado = falso;

        for (const auto& estudiante : estudiantes) {

            if (estudiante.nombre == nombre) {

                std::cout << "学号:" << estudiante.id << "\t姓名:" << estudiante.nombre << "\t班级:" << estudiante.nombreDeLaClase << "\t分数:" << estudiante.puntaje << std::endl;

                encontrado = verdadero;

            }

        }

        si se encuentra) {

            std::cout << "No se encontró ningún estudiante con el nombre correspondiente." << std::endl;

        }

    } demás {

        std::cout << "Elección no válida." << std::endl;

    }

}

8. función sortByAverageScore:

cpp

bool compareByAverageScore(const Estudiante&estudiante1, const Estudiante&estudiante2) {

    return (estudiante1.puntuación + estudiante2.puntuación) / 2.0 > (estudiante2.puntuación + estudiante2.puntuación) / 2.0;

}

void sortByAverageScore(std::vector<Estudiante>& estudiantes) {

    std::sort(estudiantes.begin(), estudiantes.end(), compareByAverageScore);

    std::cout << "Ordenar éxito por calificación promedio." << std::endl;

}

9. Programa principal:

cpp

int principal() {

    std::vector<Estudiante> estudiantes;

    cargarDesdeArchivo(estudiantes);

    elección int;

    hacer {

        std::cout << "\n1. Ingrese las calificaciones de los estudiantes\n2. Modifique las calificaciones de los estudiantes\n3. Guarde las calificaciones de los estudiantes en archivos\n4. Genere las transcripciones de los estudiantes por clase\n5. Consulte las calificaciones de los estudiantes por número y nombre de estudiante\n6. Ordene por GPA\n0. Salir\n";

        std::cin >> elección;

        cambiar (elección) {

            caso 1:

                addStudent(estudiantes);

                romper;

            caso 2:

                modificarPuntuación(estudiantes

);

                romper;

            caso 3:

                saveToFile(estudiantes);

                romper;

            caso 4:

                printClassScores(estudiantes);

                romper;

            caso 5:

                buscarEstudiante(estudiantes);

                romper;

            caso 6:

                sortByAverageScore(estudiantes);

                romper;

            caso 0:

                saveToFile(estudiantes);

                std::cout << "Las calificaciones de los estudiantes se han guardado en el archivo, el programa está a punto de salir" << std::endl;

                romper;

            por defecto:

                std::cout << "Elección no válida." << std::endl;

                romper;

        }

    } while (elección != 0);

    devolver 0;

}

Este diseño detallado proporciona los detalles de implementación de cada función, incluidos los parámetros, el tipo de devolución y los pasos principales de la operación. A través de estos diseños, el programa puede administrar y operar las calificaciones de los estudiantes según sea necesario.

  • análisis de depuración

Durante el proceso de depuración se pueden encontrar algunos problemas, a continuación se detallan algunos problemas encontrados y sus soluciones, así como una revisión, discusión y análisis del diseño e implementación:

1. Problema: Al ingresar la información del estudiante, el puntaje ingresado excede el rango válido.

   Solución: agregue la lógica de validación adecuada en la función `addStudent` para asegurarse de que los puntajes ingresados ​​​​estén dentro del rango válido.

2. Problema: Al cargar un archivo de datos de estudiantes, el archivo no existe o tiene un formato incorrecto.

   Solución: agregue el manejo de errores adecuado en la función `loadFromFile`, como verificar si el archivo existe y formatear la validación al leer cada fila de datos.

3. Problema: Al modificar la nota de un alumno no se encuentra el alumno con el número de alumno correspondiente.

   Solución: agregue un juicio sobre si el estudiante existe en la función `modifyScore` y proporcione el mensaje de error correspondiente.

4. Problema: Al exportar las transcripciones de los estudiantes por clase, la clase no existe o no hay datos de los estudiantes.

   Solución: agregue un juicio sobre la existencia de la clase y si los datos del estudiante están vacíos en la función `printClassScores`, y proporcione el mensaje de error correspondiente.

5. Problema: al consultar las calificaciones de los estudiantes por número o nombre de estudiante, no se pueden encontrar estudiantes coincidentes.

   Solución: agregue un juicio sobre si existe un estudiante en la función `buscarEstudiante` y proporcione el mensaje de error correspondiente.

6. Problema: Al clasificar las calificaciones de los estudiantes, la lógica de clasificación es incorrecta.

   Solución: verifique la lógica de clasificación en la función `sortByAverageScore` para garantizar la clasificación correcta por puntaje promedio.

  • Instrucciones para el usuario

Los siguientes son los pasos detallados para usar el programa de gestión del desempeño de los estudiantes:

1. Abra una terminal o símbolo del sistema e ingrese el directorio donde se encuentra el programa.

2. Compile el código fuente del programa.

3. Ejecute el programa.

4. Después de que el programa comience a ejecutarse, aparecerá un menú para que elija una operación.

5. Seleccione la opción en el menú para realizar la operación correspondiente:

    Opción 1: Ingresar las calificaciones de los estudiantes

      Ingrese el nombre del estudiante, el número de estudiante, la clase y el puntaje, y siga las indicaciones del programa para ingresar.

      Una vez completada la entrada, el programa mostrará que la información del estudiante se ha introducido correctamente.

    Opción 2: Modificar las calificaciones de los estudiantes

      Ingrese el ID de estudiante del estudiante cuya calificación se va a modificar.

      Introduzca una nueva puntuación.

      Una vez completada la modificación, el programa mostrará que la puntuación del estudiante se ha modificado correctamente.

    Opción 3: Guardar las calificaciones de los estudiantes en un archivo

      La información del estudiante se guarda en un archivo llamado `students.txt`.

      El programa mostrará que la información del estudiante se ha guardado correctamente.

    Opción 4: Salida de transcripciones de estudiantes por clase

      Ingrese el nombre de la clase para exportar la transcripción.

      El programa buscará estudiantes de acuerdo con el nombre de la clase y generará las transcripciones de los estudiantes de la clase correspondiente.

    Opción 5: consultar las calificaciones de los estudiantes por número y nombre de estudiante

      Selecciona el método de consulta: por número de alumno o por nombre.

      Ingrese el número de estudiante correspondiente o el nombre para consultar.

      El programa encontrará y mostrará la información del estudiante que coincida.

    Opción 6: Ordenar por promedio de calificaciones

      La información del estudiante se ordenará por promedio de calificaciones.

      El programa mostrará el éxito ordenado por promedio de calificaciones.

    Opción 0: Salir del programa

      Las calificaciones de los estudiantes se guardan automáticamente en el archivo `students.txt`.

      El programa muestra que las calificaciones de los estudiantes se han guardado en el archivo y luego sale.

6. Seleccione la opción adecuada según sea necesario y siga las indicaciones del programa.

7. Después de realizar la operación seleccionada, puede optar por continuar con otras operaciones o salir del programa.

Tenga en cuenta que antes de ejecutar el programa, asegúrese de haber creado el archivo `students.txt` y guardado la información del estudiante en el formato correcto. Si necesita importar datos de estudiantes existentes, puede ingresar la información del estudiante en el archivo `students.txt` por línea y usar espacios para separar cada campo.

Al seguir los pasos anteriores, puede usar el programa My Student Grade Management para ingresar, modificar, consultar, ordenar y otras operaciones de la información del estudiante, y guardar la información del estudiante en un archivo.

  • Resultados de la prueba

Datos de prueba:

Resultados de la prueba:

A continuación mostramos todo el código de este proyecto:

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

struct Student {
    std::string name;
    int id;
    std::string className;
    int score;
};

// 函数声明
void addStudent(std::vector<Student>& students);
void updateStudent(std::vector<Student>& students);
void saveToFile(const std::vector<Student>& students);
void loadFromFile(std::vector<Student>& students);
void printClassScores(const std::vector<Student>& students);
void searchStudent(const std::vector<Student>& students);
void sortByAverageScore(std::vector<Student>& students);

int main() {
    std::vector<Student> students;
    loadFromFile(students);

    int choice;
    do {
        std::cout << "学生成绩管理程序" << std::endl;
        std::cout << "1. 录入学生成绩" << std::endl;
        std::cout << "2. 修改学生成绩" << std::endl;
        std::cout << "3. 保存学生成绩到文件" << std::endl;
        std::cout << "4. 按班级输出学生成绩单" << std::endl;
        std::cout << "5. 按学号和姓名查询学生成绩" << std::endl;
        std::cout << "6. 按平均成绩排序" << std::endl;
        std::cout << "0. 退出程序" << std::endl;
        std::cout << "请选择操作: ";
        std::cin >> choice;

        switch (choice) {
        case 1:
            addStudent(students);
            break;
        case 2:
            updateStudent(students);
            break;
        case 3:
            saveToFile(students);
            break;
        case 4:
            printClassScores(students);
            break;
        case 5:
            searchStudent(students);
            break;
        case 6:
            sortByAverageScore(students);
            break;
        case 0:
            saveToFile(students);
            std::cout << "程序已退出。" << std::endl;
            break;
        default:
            std::cout << "无效的选择,请重新选择操作。" << std::endl;
            break;
        }

        std::cout << std::endl;
    } while (choice != 0);

    return 0;
}

void addStudent(std::vector<Student>& students) {
    Student student;
    std::cout << "请输入学生姓名: ";
    std::cin >> student.name;
    std::cout << "请输入学生学号: ";
    std::cin >> student.id;
    std::cout << "请输入学生班级: ";
    std::cin >> student.className;
    std::cout << "请输入学生分数: ";
    std::cin >> student.score;

    students.push_back(student);
}

void updateStudent(std::vector<Student>& students) {
    int id;
    std::cout << "请输入要修改的学生学号: ";
    std::cin >> id;

    bool found = false;
    for (auto& student : students) {
        if (student.id == id) {
            std::cout << "请输入修改后的学生分数: ";
            std::cin >> student.score;
            found = true;
            break;
        }
    }

    if (!found) {
        std::cout << "未找到学号为 " << id << " 的学生。" << std::endl;
    }
}

void saveToFile(const std::vector<Student>& students) {
    std::ofstream file("students.txt");
    if (file.is_open()) {
        for (const auto& student : students) {
            file << student.name << " " << student.id << " " << student.className << " " << student.score << std::endl;
        }
        file.close();
        std::cout << "学生成绩已保存到文件。" << std::endl;
    }
    else {
        std::cout << "无法打开文件进行保存。" << std::endl;
    }
}

void loadFromFile(std::vector<Student>& students) {
    std::ifstream file("students.txt");
    if (file.is_open()) {
        std::string name, className;
        int id, score;
        while (file >> name >> id >> className >> score) {
            Student student;
            student.name = name;
            student.id = id;
            student.className = className;
            student.score = score;
            students.push_back(student);
        }
        file.close();
        std::cout << "从文件加载了 " << students.size() << " 条学生成绩信息。" << std::endl;
    }
    else {
        std::cout << "无法打开文件进行加载。" << std::endl;
    }
}

void printClassScores(const std::vector<Student>& students) {
    std::cout << "请输入班级名称: ";
    std::string className;
    std::cin >> className;

    std::cout << "班级成绩单:" << std::endl;
    for (const auto& student : students) {
        if (student.className == className) {
            std::cout << "姓名: " << student.name << ", 学号: " << student.id << ", 班级: " << student.className << ", 分数: " << student.score << std::endl;
        }
    }
}

void searchStudent(const std::vector<Student>& students) {
    std::cout << "请选择查询方式:" << std::endl;
    std::cout << "1. 按学号查询" << std::endl;
    std::cout << "2. 按姓名查询" << std::endl;
    std::cout << "请选择操作: ";
    int choice;
    std::cin >> choice;

    if (choice == 1) {
        int id;
        std::cout << "请输入学生学号: ";
        std::cin >> id;

        bool found = false;
        for (const auto& student : students) {
            if (student.id == id) {
                std::cout << "姓名: " << student.name << ", 学号: " << student.id << ", 班级: " << student.className << ", 分数: " << student.score << std::endl;
                found = true;
                break;
            }
        }

        if (!found) {
            std::cout << "未找到学号为 " << id << " 的学生。" << std::endl;
        }
    }
    else if (choice == 2) {
        std::string name;
        std::cout << "请输入学生姓名: ";
        std::cin >> name;

        bool found = false;
        for (const auto& student : students) {
            if (student.name == name) {
                std::cout << "姓名: " << student.name << ", 学号: " << student.id << ", 班级: " << student.className << ", 分数: " << student.score << std::endl;
                found = true;
            }
        }

        if (!found) {
            std::cout << "未找到姓名为 " << name << " 的学生。" << std::endl;
        }
    }
    else {
        std::cout << "无效的选择,请重新选择操作。" << std::endl;
    }
}

void sortByAverageScore(std::vector<Student>& students) {
    std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
        return a.score < b.score;
        });

    std::cout << "按平均成绩排序:" << std::endl;
    for (const auto& student : students) {
        std::cout << "姓名: " << student.name << ", 学号: " << student.id << ", 班级: " << student.className << ", 分数: " << student.score << std::endl;
    }
}

  • Resumen del diseño del programa

El propósito de este diseño de programa es realizar el sistema de gestión de logros de los estudiantes A través del análisis de requisitos, el diseño del esquema y el diseño detallado del programa, hemos completado un programa de gestión de logros de los estudiantes basado en C++.

En la etapa de análisis de la demanda, definimos los requisitos básicos del programa, incluidas las funciones de ingreso, modificación, guardado, salida, consulta y clasificación de las calificaciones de los estudiantes. Estos requisitos nos ayudan a definir los límites funcionales del programa y las necesidades del usuario.

En la etapa de diseño del esquema, diseñamos los principales módulos y funciones del programa, y ​​definimos la clase de estudiantes y las funciones para administrar la información de rendimiento de los estudiantes. Estos diseños nos ayudan a ordenar la estructura y la lógica del programa.

En la etapa de diseño detallado, describimos más detalladamente los detalles de implementación de cada función, incluidos los parámetros de la función, el tipo de devolución y los pasos de la operación. Estos diseños nos ayudan a comprender más claramente el flujo de ejecución y el procesamiento de datos del programa.

En el proceso de realización, seguimos la guía del diseño, realizamos cada módulo funcional paso a paso y llevamos a cabo pruebas y depuración. Mediante el uso de datos de prueba, verificamos la integridad funcional y la corrección del programa.

A través de este diseño de programa, hemos aprendido el siguiente resumen de experiencia:

1. El análisis de requisitos es un paso clave en el proceso de diseño.La definición de requisitos puede ayudarnos a garantizar que las funciones del programa satisfagan las necesidades del usuario y evitar la redundancia funcional innecesaria.

2. El diseño del esquema y el diseño detallado son etapas importantes del diseño del programa, nos ayudan a establecer la estructura general y la lógica detallada del programa, y ​​brindan orientación para la codificación.

3. El diseño modular puede mejorar la legibilidad y el mantenimiento del programa.Dividir el programa en diferentes módulos o funciones ayuda a reducir la complejidad y mejorar la reutilización del código.

4. En el proceso de implementación, las pruebas y la depuración paso a paso son muy importantes, lo que puede ayudarnos a encontrar y resolver problemas potenciales y garantizar la corrección del programa.

5. Al diseñar y escribir código, es muy importante prestar atención a la legibilidad y mantenibilidad del código, como nombrar variables y funciones de manera adecuada, agregar comentarios, seguir los estándares de codificación, etc.

En general, el diseño de este programa nos permite comprender completamente y aplicar los principios y métodos básicos de la ingeniería de software, incluidos el análisis de requisitos, el diseño, la implementación, las pruebas y la depuración. Al mismo tiempo, también nos recuerda que debemos prestar atención a los detalles y la calidad en el proceso de diseño y codificación para desarrollar un software eficiente, confiable y fácil de mantener.

Supongo que te gusta

Origin blog.csdn.net/m0_74755811/article/details/131263021
Recomendado
Clasificación