The Sistema de Gestión Académica — UTP AED is a Java Swing desktop application built for the Instituto de Educación Superior Tecnológico Público (IESTP) Perú-Japón. Developed as a course project for Algoritmos y Estructuras de Datos (AED), the system manages students, courses, enrollment, and academic requests through a role-based interface for Administrators, Secretaries, and Students. What makes this system distinctive is that it deliberately avoids Java’s built-in collection classes — every core operation is powered by five hand-written data structures implemented from scratch: a binary search tree, a singly linked list, a stack, a 2D matrix, and a dynamic array.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/kenri89/PROYECTO_UTP_AED_1_1/llms.txt
Use this file to discover all available pages before exploring further.
Key Features
BST Student Registry
ArbolEstudiantes is a binary search tree keyed on student carnet IDs. It supports O(log n) insert, lookup, update, and delete, plus an in-order traversal used to build sorted lists throughout the UI.Linked-List Enrollment
ListaMatricula is a custom singly linked list that stores enrollment records. It exposes agregar and recorrer operations consumed by the enrollment panel and the TSV persistence layer.Stack-Based Action History
PilaAcciones_U3 is a hand-written stack that records enrollment actions. The Academic History panel (PanelHistorial) pops and displays entries so users can review the sequence of changes made in a session.Semester Matrix
MatrizSemestres is a 2D matrix that organises courses by semester. When a course is added, insertarPorSemestre places it in the correct matrix row, giving the UI an efficient way to display curricula grouped by period.Dynamic Array Course Catalog
ArregloCursos is a dynamic array (resizable on demand) that holds the full course catalog. Its insertar and obtenerCursos methods feed both the Course Management panel and the TSV persistence layer.Role-Based Access Control
Three roles gate every panel: Administrador sees all features including request management; Secretaria manages courses, students, and enrollment; Estudiante views their own enrolled courses and submits requests.
Dual Persistence
Data is saved to and loaded from Microsoft SQL Server via
PreparedStatement-based DAOs. When SQL Server is unavailable the application automatically falls back to reading and writing TSV files in ~/.proyecto_utp_aed_datos/.Excel Export
ExportadorExcel (in Util/) uses Apache POI 5.4.0 to export academic data to .xlsx spreadsheets, enabling reporting outside the application.Architecture Overview
The project follows a layered MVC layout inside thesrc/ directory.
| Package | Role |
|---|---|
Modelo/ | Plain data objects — Curso, Estudiante, Matricula, Solicitud, Usuario |
gui/ | Swing views and controllers — Main, LoginFrame, MenuPrincipal, and one Panel* class per feature |
dao/ | Data-access objects (CursoDAO, EstudianteDAO, MatriculaDAO, UsuarioDAO) that execute SQL via PreparedStatement |
ESTRUCTURAS/ | The five custom data structures: ArbolEstudiantes, ListaMatricula, PilaAcciones_U3, MatrizSemestres, ArregloCursos, plus the supporting ListaCursos and AccionMatricula types |
Util/ | Cross-cutting utilities: ConexionSQL (connection factory reading config.properties), PersistenciaAcademica (TSV read/write), ExportadorExcel, CuentasEstudiantes |
gui.Main, which sets the Metal cross-platform Look and Feel, applies the shared UIConstants colour palette, and then opens LoginFrame on the Swing Event Dispatch Thread. ConexionSQL loads the configuration file from the classpath using ConexionSQL.class.getClassLoader().getResourceAsStream("config.properties").
Technology Stack
| Technology | Version | Purpose |
|---|---|---|
| Java SE | 21 | Language and runtime |
| Microsoft SQL Server | (local) | Primary relational persistence |
| Apache Ant | — | Build tool (ant run to compile and launch) |
| Apache POI | 5.4.0 | Excel (.xlsx) export |
| Google Guava | 33.4.0-jre | String utilities, immutable collections, preconditions |
| mssql-jdbc | 13.4.0 | JDBC driver for SQL Server |
| Logback + SLF4J | 1.5.15 / 2.0.16 | Structured application logging |
| JUnit Jupiter | 5.11.4 | Unit testing |
| Apache Commons IO | 2.18.0 | File read/write helpers used by PersistenciaAcademica |