Skip to main content

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.

The Secretary role is designed for administrative staff responsible for day-to-day academic data entry. Secretaries can manage the full course catalog, maintain the student registry, handle enrollment operations, and view the student request queue. They do not have access to the enrollment history stack or the administrative request-resolution panel — those are reserved for administrators (and, in the case of history, also for students and teachers).

Available Panels

1

Gestión de Cursos

Full create, read, update, and delete access to the course catalog via PanelCursos. Courses are stored across a ListaCursos, ArregloCursos, and MatrizSemestres, all of which the panel manages transparently.
2

Gestión de Estudiantes

Full CRUD access to the student registry via PanelEstudiantes. The underlying data structure is an ArbolEstudiantes binary search tree, enabling efficient lookup by carnet.
3

Matrícula

Enroll and cancel student enrollments through PanelMatricula. Enrolling a student for the first time automatically calls CuentasEstudiantes.registrarPorMatricula(carnet), creating the student’s login account in the local text file.
4

Solicitudes

Opens PanelSolicitudesEstudiante, giving secretaries visibility into the shared Queue<Solicitud>. This is the same student-facing panel that students use to submit and track requests. Secretaries can monitor queued requests but cannot resolve or close them — that action is exclusive to the administrator through the Atender Solicitudes panel.

Panels Not Accessible to Secretary

The following sidebar buttons are hidden when the authenticated user holds the Secretary role:
PanelReason
Historial AcadémicoHistory stack is reserved for administrators, students, and teachers (esDocente) — secretaries are excluded
Atender SolicitudesRequest resolution is an administrator-only operation
The visibility logic in MenuPrincipal enforces this at startup:
btnHistorial.setVisible(esAdmin || esEstudiante || esDocente); // secretaria excluded
btnSolicitudes.setVisible(esAdmin || esEstudiante || esSecretaria); // secretaria included
btnAtenderSolicitudes.setVisible(esAdmin);                          // admin only
Secretaries can see the Solicitudes button, which opens the student-facing PanelSolicitudesEstudiante panel. They cannot, however, access Atender Solicitudes (PanelAdministradorSolicitudes), which is the administrative request-resolution panel exclusive to administrators.

Default Credentials

The default secretary account is inserted by schema.sql:
INSERT INTO usuarios (username, password, rol)
VALUES ('secretaria', '1234', 'Secretaria');
FieldValue
Usernamesecretaria
Password1234
Role (rol)Secretaria

Login Path

The Secretary follows the same SQL Server authentication path as the Administrator. UsuarioDAO.autenticar() performs a case-insensitive username lookup in the usuarios table:
// UsuarioDAO.java
String sql = "SELECT * FROM usuarios WHERE LOWER(username) = LOWER(?)";
If the database is unavailable, the in-memory fallback accepts secretaria/1234:
// UsuarioDAO.java — autenticarFallback()
if (u.equals("secretaria") && p.equals("1234")) {
    return new Usuario(u, p, "Secretaría");
}
The Usuario object for a secretary does not carry a carnet value (carnet = null), because secretaries are not enrolled as students.

Role String Matching

The application matches both "secretaria" and "secretaría" (with a Unicode accent on the i) when evaluating panel visibility. This handles inconsistencies between the string stored in the database (Secretaria, without accent) and the string returned by the offline fallback (Secretaría, with accent):
// MenuPrincipal.java
boolean esSecretaria = rol.equals("secretaría") || rol.equals("secretaria");
Ensure that any new usuarios row for a secretary uses one of these two exact role strings (case-insensitive comparison is applied via .trim().toLowerCase() before the equality check).
To add additional secretary accounts, insert a row into the usuarios table:
INSERT INTO usuarios (username, password, rol)
VALUES ('nueva_secretaria', 'contraseña_segura', 'Secretaria');

Build docs developers (and LLMs) love