Curso: Diseño y Programación Orientados a Objetos (ELO329)
Integrantes del Grupo: Daniel Cubillos, Ignacia Márquez, Javiera Peña, Tomás Riveros
Fecha: 4 de Julio de 2025
La gestión del tiempo y la carga académica representa un desafío constante para los estudiantes universitarios. La dispersión de información sobre asignaturas, fechas de entrega y evaluaciones dificulta una planificación efectiva, generando estrés y afectando el rendimiento académico. Este proyecto desarrolla un planner universitario para centralizar y organizar eficientemente todas las actividades académicas.
El problema se contextualiza en el ambiente universitario, donde los estudiantes manejan múltiples asignaturas, cada una con diversas actividades (laboratorios, tareas, proyectos, certámenes) y cargas horarias definidas por el Sistema de Créditos Transferibles (SCT-Chile). La falta de una visión consolidada de estas dedicaciones horarias y la necesidad de una planificación proactiva son evidentes.
El sistema a desarrollar es una aplicación de escritorio diseñada para interactuar directamente con el estudiante. Los principales entes que participan son:
El sistema interactúa con el medio externo recibiendo datos de configuración inicial (ej. fechas de inicio y fin de semestres) y proporciona al estudiante una interfaz para interactuar y visualizar su planificación.
Se plantean tres casos de uso fundamentales para el sistema, que también servirán como base para las pruebas:
Actor (Estudiante) | Sistema |
---|---|
1. Navega a la pestaña "Ramos". | |
2. Presiona en el botón "Agregar Nuevo Ramo". | 3. Se abre el diálogo "Agregar Nuevo Ramo". |
4. Ingresa la información general (Nombre, Código, Créditos, Semestre Asociado, Profesor, Color). | |
5. En la sección "Actividades Evaluativas", añade filas para las evaluaciones clave (ej., "Certamen 1", "Tarea Promedio", "Proyecto Final"), especificando para cada una: Nombre, Fecha de Realización/Entrega, Ponderación (en porcentaje o fracción, ej., "55/2"), y Estimación de Horas de trabajo. | |
6. Presiona en "Aceptar". | 7. Valida los datos ingresados (ej., ponderaciones no exceden 100%, nombres no vacíos). |
8. Crea el objeto Ramo y las ActividadAcademicas evaluativas correspondientes, las asocia al ramo y las añade a la lista global de eventos. | |
9. La interfaz se actualiza mostrando el nuevo ramo en la lista y las actividades evaluativas en la pestaña "Eventos". |
Actor (Estudiante) | Sistema |
---|---|
1. Navega a la pestaña "Evaluaciones Ramos". | |
2. Selecciona un semestre en el ComboBox de semestres. | |
3. Selecciona un ramo de la lista de ramos. | 4. La tabla muestra las actividades evaluativas de ese ramo. |
5. Ubica la actividad evaluativa deseada (ej., "Certamen 1"). | |
6. Modifica la nota en la columna "Nota" de la tabla (ej., de "N/R" a "65"). | |
7. Presiona en el botón "Guardar Cambios". | 8. Actualiza la nota de la ActividadAcademica correspondiente y marca la actividad como completada. |
9. Recalcula la nota final estimada y el avance del ramo. | |
10. La interfaz se actualiza para reflejar la nueva nota y los cambios en la nota final del ramo. | |
11. Se muestra un mensaje de "Cambios guardados correctamente" de forma temporal. |
Actor (Estudiante) | Sistema |
---|---|
1. Navega a la pestaña "To-Do Semanal". | |
2. Selecciona una fecha de referencia para la semana deseada. | |
3. Presiona en el botón "Generar To-Do Semanal". | 4. Identifica las tareas y proyectos pendientes cuya fecha de entrega está próxima (ej., las 2 más próximas). |
5. Retro-planifica y sugiere bloques de avance distribuidos en los días hábiles previos a la entrega, respetando la carga máxima semanal del ramo (según créditos SCT) y la estimación de horas de las actividades. | |
6. Distribuye bloques de estudio personal y trabajo en proyectos generales del ramo. | |
7. Incorpora recordatorios de entregas y certámenes programados para esa semana. | |
8. Muestra la lista de actividades diarias generadas en la interfaz, organizada por día. | |
9. Puede marcar actividades como completadas directamente en la lista. |
El sistema sigue una arquitectura de capas simple:
El diagrama de clases resume la estructura principal del sistema, mostrando las clases clave y sus relaciones (agregación, herencia, composición y asociación) entre Calendario, Ramo, ActividadAcademica (y sus derivados), ActividadDiaria, GestorDatos y demás. La clase MainWindow representa la interfaz de usuario principal y contiene las interfaces gráficas (vistas y diálogos) que permiten la interacción del usuario con el sistema.
El diagrama de secuencia para el Caso de Uso "Registrar y Configurar un Ramo" ilustra la interacción temporal entre los actores y los objetos del sistema:
El proyecto fue implementado utilizando el lenguaje de programación C++ en conjunto con el framework Qt (específicamente Qt Widgets) para la construcción de la interfaz gráfica de usuario. El entorno de desarrollo integrado (IDE) utilizado fue Qt Creator, que facilitó la gestión del proyecto, la codificación y la depuración. La persistencia de los datos del planner se logra mediante la serialización y deserialización de objetos en formato JSON a un archivo local.
La documentación de la implementación se encuentra directamente en el código fuente mediante comentarios extensivos. Estos comentarios detallan el propósito de las clases, la funcionalidad de los métodos, la explicación de atributos importantes y cualquier lógica compleja. El código está diseñado para ser claro, legible y seguir buenas prácticas de codificación para facilitar su comprensión y futuro mantenimiento.
Las pruebas del sistema se realizaron de forma manual, enfocándose en la verificación de los casos de uso definidos y la correcta interacción de la interfaz con la lógica de negocio y la persistencia de datos.
Esta captura muestra el diálogo 'Agregar Nuevo Ramo' con todos los campos relevantes rellenados. Se ingresa la información general del ramo y se definen varias actividades evaluativas (ej., 'Certamen 1', 'Tarea 1', 'Proyecto Final') con sus respectivas fechas, ponderaciones (incluyendo expresiones como '55/2') y estimaciones de horas de trabajo.
Tras aceptar el diálogo de creación, esta imagen muestra el ramo recién añadido en la pestaña 'Ramos'. Se verifica que toda la información ingresada, incluyendo la tabla de actividades evaluativas con sus datos (nombre, fecha, ponderación y estimación de horas), se muestra correctamente, confirmando la persistencia y correcta visualización de los datos del ramo y sus evaluaciones asociadas.
En esta captura, se ha seleccionado un ramo y se ha modificado la nota de tres actividades evaluativas específicas. El estudiante ingresa las notas en la celda correspondiente y presiona en 'Guardar Cambios'. Una notificación flotante confirmará el guardado, y las vistas de la aplicación se actualizarán.
Esta imagen muestra el impacto del registro de la nota en la nota final estimada del ramo y su porcentaje de avance. Se verifica que el método calcularNotaFinal() del ramo opera correctamente, integrando la nueva nota y recalculando el promedio ponderado, validando así la lógica de cálculo y la actualización de la interfaz.
Esta captura demuestra la funcionalidad de la "To-Do List Semanal". Al seleccionar una fecha y presionar en "Generar To-Do Semanal", la aplicación genera una lista de actividades planificadas. Se observan recordatorios de entrega de tareas y evaluaciones próximas, así como bloques de tiempo sugeridos para avanzar en los dos proyectos/tareas más urgentes. La distribución de estas horas de avance respeta la carga máxima semanal del ramo y la retro-planificación desde las fechas de entrega, mostrando la utilidad de las horas SCT en la planificación activa.
Dificultades Encontradas en el Desarrollo y Superación:
Listado de Bugs Presentes:
A la fecha de entrega de este informe, el sistema presenta los siguientes bugs conocidos:
El código fuente completo del proyecto está disponible para su descarga en el siguiente enlace. Se recomienda descargarlo y revisar el archivo README.md para obtener instrucciones detalladas sobre la compilación y ejecución del proyecto.
Descargar Código Fuente del Proyecto (versión 1.0)
El archivo comprimido incluye todos los archivos .h y .cpp necesarios, así como el archivo de proyecto de Qt (.pro) y el Makefile generado. Se excluyen deliberadamente los archivos compilados (.o, ejecutables), los archivos HTML de documentación generados por herramientas, y cualquier código fuente externo que no haya sido directamente desarrollado por el grupo (las dependencias externas se especifican en el README.md).