# mathineitor/sistema-de-matricula architecture

> Architecture diagram of the GitHub repository mathineitor/sistema-de-matricula, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mathineitor/sistema-de-matricula
- Repository: https://github.com/mathineitor/sistema-de-matricula

## Overview

Sistema de Matrícula Académica is a Java Swing desktop application backed by MySQL. Users enter through the main window to manage students and courses, register enrollments and withdrawals, and inspect queries, reports, and dashboard statistics. Dialogs invoke DAOs, which persist domain records through the JDBC connection layer. The README documents the product capabilities; sampled code confirms key enrollment, withdrawal, and student operations. Some unsampled screens and DAO behavior are represented from the source index and README, so their internal links are limited to documented references.

Main entry points: [`src/gui/FrmPrincipal.java`](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/FrmPrincipal.java) (Main window), [`src/arreglos/AlumnoDao.java`](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/AlumnoDao.java) (Student DAO), [`src/arreglos/CursoDao.java`](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/CursoDao.java) (Course DAO), [`src/arreglos/MatriculaDao.java`](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/MatriculaDao.java) (Enrollment DAO)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_main["Main window<br/>[FrmPrincipal.java]"]
  node_student_ui["Student management<br/>[DlgMantAlumno.java]"]
  node_course_ui["Course management<br/>[DlgMantCurso.java]"]
  node_enrollment_ui["Enrollment registration"]
  node_withdrawal_ui["Withdrawal registration<br/>[DlgRegRetiro.java]"]
end

subgraph group_domain["Academic records"]
  node_student_model["Student model<br/>[Alumno.java]"]
  node_course_model["Course model<br/>[Curso.java]"]
  node_enrollment_model["Enrollment model<br/>[Matricula.java]"]
  node_withdrawal_model["Withdrawal model<br/>[Retiro.java]"]
  node_calendar["Date and time<br/>[Calendario.java]"]
  node_student_state["Student states<br/>[EstadoAlumno.java]"]
end

subgraph group_persistence["Persistence"]
  node_student_dao["Student DAO<br/>[AlumnoDao.java]"]
  node_course_dao["Course DAO<br/>[CursoDao.java]"]
  node_enrollment_dao["Enrollment DAO<br/>[MatriculaDao.java]"]
  node_withdrawal_dao["Withdrawal DAO<br/>[RetiroDao.java]"]
  node_dashboard_dao["Dashboard DAO<br/>[DashboardDao.java]"]
  node_connection["JDBC connection<br/>[Conexion.java]"]
end

subgraph group_analytics["Queries and reporting"]
  node_dashboard_ui["Dashboard<br/>[PnlDashboard.java]"]
  node_student_queries["Student queries"]
  node_course_queries["Course queries"]
  node_enrollment_queries["Enrollment queries"]
  node_withdrawal_queries["Withdrawal queries"]
  node_reports["Status reports<br/>[DlgReporteAMC.java]"]
  node_pending_report["Pending report<br/>[DlgReporteAMP.java]"]
  node_current_report["Current report<br/>[DlgReporteAMV.java]"]
end

node_user(("University staff"))
node_mysql[("MySQL database<br/>[schema.sql]")]

node_user -->|"uses"| node_main
node_main -->|"opens"| node_dashboard_ui
node_main -->|"opens"| node_student_ui
node_main -->|"opens"| node_course_ui
node_main -->|"opens"| node_enrollment_ui
node_main -->|"opens"| node_withdrawal_ui
node_main -->|"opens"| node_student_queries
node_main -->|"opens"| node_course_queries
node_main -->|"opens"| node_enrollment_queries
node_main -->|"opens"| node_withdrawal_queries
node_main -->|"opens"| node_reports
node_main -->|"opens"| node_pending_report
node_main -->|"opens"| node_current_report
node_student_ui -->|"calls"| node_student_dao
node_course_ui -->|"calls"| node_course_dao
node_enrollment_ui -->|"updates"| node_student_dao
node_enrollment_ui -->|"loads courses"| node_course_dao
node_enrollment_ui -->|"registers"| node_enrollment_dao
node_enrollment_ui -->|"gets timestamp"| node_calendar
node_withdrawal_ui -->|"updates"| node_student_dao
node_withdrawal_ui -->|"loads courses"| node_course_dao
node_withdrawal_ui -->|"looks up enrollment"| node_enrollment_dao
node_withdrawal_ui -->|"records withdrawal"| node_withdrawal_dao
node_withdrawal_ui -->|"gets timestamp"| node_calendar
node_dashboard_ui -->|"loads statistics"| node_dashboard_dao
node_student_queries -->|"queries"| node_student_dao
node_student_queries -->|"queries"| node_course_dao
node_student_queries -->|"queries"| node_enrollment_dao
node_course_queries -->|"queries"| node_course_dao
node_course_queries -->|"queries"| node_enrollment_dao
node_enrollment_queries -->|"queries"| node_student_dao
node_enrollment_queries -->|"queries"| node_course_dao
node_enrollment_queries -->|"queries"| node_enrollment_dao
node_withdrawal_queries -->|"queries"| node_student_dao
node_withdrawal_queries -->|"queries"| node_course_dao
node_withdrawal_queries -->|"queries"| node_enrollment_dao
node_withdrawal_queries -->|"queries"| node_withdrawal_dao
node_reports -->|"loads students"| node_student_dao
node_reports -->|"loads courses"| node_course_dao
node_reports -->|"loads enrollments"| node_enrollment_dao
node_reports -->|"uses states"| node_student_state
node_pending_report -->|"loads students"| node_student_dao
node_current_report -->|"loads students"| node_student_dao
node_student_dao -->|"opens connection"| node_connection
node_course_dao -->|"opens connection"| node_connection
node_enrollment_dao -->|"opens connection"| node_connection
node_withdrawal_dao -->|"opens connection"| node_connection
node_dashboard_dao -->|"opens connection"| node_connection

click node_main "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/FrmPrincipal.java"
click node_student_ui "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgMantAlumno.java"
click node_course_ui "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgMantCurso.java"
click node_enrollment_ui "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgRegMatricula.java"
click node_withdrawal_ui "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgRegRetiro.java"
click node_dashboard_ui "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/PnlDashboard.java"
click node_student_queries "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgConsultaAlumno.java"
click node_course_queries "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgConsultaCurso.java"
click node_enrollment_queries "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgConsultaMatricula.java"
click node_withdrawal_queries "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgConsultaRetiro.java"
click node_reports "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgReporteAMC.java"
click node_pending_report "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgReporteAMP.java"
click node_current_report "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgReporteAMV.java"
click node_student_dao "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/AlumnoDao.java"
click node_course_dao "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/CursoDao.java"
click node_enrollment_dao "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/MatriculaDao.java"
click node_withdrawal_dao "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/RetiroDao.java"
click node_dashboard_dao "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/DashboardDao.java"
click node_connection "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Conexion.java"
click node_student_model "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Alumno.java"
click node_course_model "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Curso.java"
click node_enrollment_model "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Matricula.java"
click node_withdrawal_model "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Retiro.java"
click node_calendar "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Calendario.java"
click node_student_state "https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/EstadoAlumno.java"
click node_mysql "https://github.com/mathineitor/sistema-de-matricula/blob/main/database/schema.sql"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_student_ui,node_course_ui,node_enrollment_ui,node_withdrawal_ui toneBlue
class node_student_model,node_course_model,node_enrollment_model,node_withdrawal_model,node_calendar,node_student_state,node_mysql toneAmber
class node_student_dao,node_course_dao,node_enrollment_dao,node_withdrawal_dao,node_dashboard_dao,node_connection toneMint
class node_dashboard_ui,node_student_queries,node_course_queries,node_enrollment_queries,node_withdrawal_queries,node_reports,node_pending_report,node_current_report toneRose
class node_user toneIndigo
```

## Components

### Desktop interface

- [Main window](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/FrmPrincipal.java): `src/gui/FrmPrincipal.java`
- [Student management](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgMantAlumno.java): `src/gui/DlgMantAlumno.java`
- [Course management](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgMantCurso.java): `src/gui/DlgMantCurso.java`
- [Enrollment registration](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgRegMatricula.java): `src/gui/DlgRegMatricula.java`
- [Withdrawal registration](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgRegRetiro.java): `src/gui/DlgRegRetiro.java`

### Academic records

- [Student model](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Alumno.java): `src/clases/Alumno.java`
- [Course model](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Curso.java): `src/clases/Curso.java`
- [Enrollment model](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Matricula.java): `src/clases/Matricula.java`
- [Withdrawal model](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Retiro.java): `src/clases/Retiro.java`
- [Date and time](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Calendario.java): `src/clases/Calendario.java`
- [Student states](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/EstadoAlumno.java): `src/clases/EstadoAlumno.java`

### Persistence

- [Student DAO](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/AlumnoDao.java): `src/arreglos/AlumnoDao.java`
- [Course DAO](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/CursoDao.java): `src/arreglos/CursoDao.java`
- [Enrollment DAO](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/MatriculaDao.java): `src/arreglos/MatriculaDao.java`
- [Withdrawal DAO](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/RetiroDao.java): `src/arreglos/RetiroDao.java`
- [Dashboard DAO](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/arreglos/DashboardDao.java): `src/arreglos/DashboardDao.java`
- [JDBC connection](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/clases/Conexion.java): `src/clases/Conexion.java`

### Queries and reporting

- [Dashboard](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/PnlDashboard.java): `src/gui/PnlDashboard.java`
- [Student queries](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgConsultaAlumno.java): `src/gui/DlgConsultaAlumno.java`
- [Course queries](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgConsultaCurso.java): `src/gui/DlgConsultaCurso.java`
- [Enrollment queries](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgConsultaMatricula.java): `src/gui/DlgConsultaMatricula.java`
- [Withdrawal queries](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgConsultaRetiro.java): `src/gui/DlgConsultaRetiro.java`
- [Status reports](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgReporteAMC.java): `src/gui/DlgReporteAMC.java`
- [Pending report](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgReporteAMP.java): `src/gui/DlgReporteAMP.java`
- [Current report](https://github.com/mathineitor/sistema-de-matricula/blob/main/src/gui/DlgReporteAMV.java): `src/gui/DlgReporteAMV.java`

### Other components

- **University staff**
- [MySQL database](https://github.com/mathineitor/sistema-de-matricula/blob/main/database/schema.sql): `database/schema.sql`

## Connections

- University staff → Main window: uses (evidence: `README.md`)
- Main window → Dashboard: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Student management: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Course management: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Enrollment registration: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Withdrawal registration: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Student queries: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Course queries: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Enrollment queries: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Withdrawal queries: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Status reports: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Pending report: opens (evidence: `src/gui/FrmPrincipal.java`)
- Main window → Current report: opens (evidence: `src/gui/FrmPrincipal.java`)
- Student management → Student DAO: calls (evidence: `src/gui/DlgMantAlumno.java`)
- Course management → Course DAO: calls (evidence: `src/gui/DlgMantCurso.java`)
- Enrollment registration → Student DAO: updates (evidence: `src/gui/DlgRegMatricula.java`)
- Enrollment registration → Course DAO: loads courses (evidence: `src/gui/DlgRegMatricula.java`)
- Enrollment registration → Enrollment DAO: registers (evidence: `src/gui/DlgRegMatricula.java`)
- Enrollment registration → Date and time: gets timestamp (evidence: `src/gui/DlgRegMatricula.java`)
- Withdrawal registration → Student DAO: updates (evidence: `src/gui/DlgRegRetiro.java`)
- Withdrawal registration → Course DAO: loads courses (evidence: `src/gui/DlgRegRetiro.java`)
- Withdrawal registration → Enrollment DAO: looks up enrollment (evidence: `src/gui/DlgRegRetiro.java`)
- Withdrawal registration → Withdrawal DAO: records withdrawal (evidence: `src/gui/DlgRegRetiro.java`)
- Withdrawal registration → Date and time: gets timestamp (evidence: `src/gui/DlgRegRetiro.java`)
- Dashboard → Dashboard DAO: loads statistics (evidence: `src/gui/PnlDashboard.java`)
- Student queries → Student DAO: queries (evidence: `src/gui/DlgConsultaAlumno.java`)
- Student queries → Course DAO: queries (evidence: `src/gui/DlgConsultaAlumno.java`)
- Student queries → Enrollment DAO: queries (evidence: `src/gui/DlgConsultaAlumno.java`)
- Course queries → Course DAO: queries (evidence: `src/gui/DlgConsultaCurso.java`)
- Course queries → Enrollment DAO: queries (evidence: `src/gui/DlgConsultaCurso.java`)
- Enrollment queries → Student DAO: queries (evidence: `src/gui/DlgConsultaMatricula.java`)
- Enrollment queries → Course DAO: queries (evidence: `src/gui/DlgConsultaMatricula.java`)
- Enrollment queries → Enrollment DAO: queries (evidence: `src/gui/DlgConsultaMatricula.java`)
- Withdrawal queries → Student DAO: queries (evidence: `src/gui/DlgConsultaRetiro.java`)
- Withdrawal queries → Course DAO: queries (evidence: `src/gui/DlgConsultaRetiro.java`)
- Withdrawal queries → Enrollment DAO: queries (evidence: `src/gui/DlgConsultaRetiro.java`)
- Withdrawal queries → Withdrawal DAO: queries (evidence: `src/gui/DlgConsultaRetiro.java`)
- Status reports → Student DAO: loads students (evidence: `src/gui/DlgReporteAMC.java`)
- Status reports → Course DAO: loads courses (evidence: `src/gui/DlgReporteAMC.java`)
- Status reports → Enrollment DAO: loads enrollments (evidence: `src/gui/DlgReporteAMC.java`)
- Status reports → Student states: uses states (evidence: `src/gui/DlgReporteAMC.java`)
- Pending report → Student DAO: loads students (evidence: `src/gui/DlgReporteAMP.java`)
- Current report → Student DAO: loads students (evidence: `src/gui/DlgReporteAMV.java`)
- Student DAO → JDBC connection: opens connection (evidence: `src/arreglos/AlumnoDao.java`)
- Course DAO → JDBC connection: opens connection (evidence: `src/arreglos/CursoDao.java`)
- Enrollment DAO → JDBC connection: opens connection (evidence: `src/arreglos/MatriculaDao.java`)
- Withdrawal DAO → JDBC connection: opens connection (evidence: `src/arreglos/RetiroDao.java`)
- Dashboard DAO → JDBC connection: opens connection (evidence: `src/arreglos/DashboardDao.java`)
