Informe Final de Proyecto

Planner Universitario

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

1. Descripción del Problema

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.

2. Análisis del Problema

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.

3. Definición de Requerimientos

Se plantean tres casos de uso fundamentales para el sistema, que también servirán como base para las pruebas:

Caso de Uso 1: Registrar y Configurar un Ramo

Caso de Uso 2: Registrar Nota y Ver Avance

Caso de Uso 3: Generar Lista de Tareas Semanal

4. Diseño

Arquitectura de Solución (Alto Nivel)

El sistema sigue una arquitectura de capas simple:

Diagrama de Clases (UML)

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.

Diagrama de Clases
Figura 1: Diagrama de Clases Principal del Planner Universitario

Diagrama de Secuencia (UML): "Registrar y Configurar un Ramo"

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:

Diagrama de Secuencia UML: Añadir Ramo
Figura 2: Diagrama de Secuencia para "Añadir y Configurar un Ramo"

5. Implementación

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.

6. Pruebas

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.

Prueba 1: Creación y Visualización de un Ramo con sus Evaluaciones

Diálogo de Agregar Ramo
Figura 3: Diálogo para añadir un nuevo Ramo con datos y evaluaciones.

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.

Ramo creado y sus evaluaciones en tabla
Figura 4: Ramo recién creado y su tabla de evaluaciones en la pestaña "Evaluaciones Ramos".

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.

Prueba 2: Registro de Nota y Recálculo del Avance del Ramo

Registro de nota en Evaluaciones Ramos
Figura 5: Registro de la nota de una actividad evaluativa.

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.

Nota final del ramo actualizada
Figura 6: El resumen del Ramo refleja la nota final estimada actualizada.

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.

Prueba 3: Generación Inteligente de la To-Do List Semanal

To-Do List Semanal generada
Figura 7: To-Do List semanal con tareas, avances de estudio/proyecto y recordatorios.

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:

7. Enlace al Código Fuente

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).