Es una aplicación en Java para gestionar estudiantes en un colegio, permitiendo registrar alumnos en niveles, listar alumnos por nivel, listar niveles, gestionar asignaturas, inscripciones, y generar reportes. Utiliza colecciones (ArrayList y HashMap) para administrar datos, BufferedReader para entradas por consola, y persistencia en archivos CSV. Incluye un método demo para inicializar datos de ejemplo.
- Java: JDK 11 o superior
- IDE: NetBeans 12 o superior (compatible con IntelliJ IDEA o Eclipse)
- Git: Instalado para clonar el repositorio (descargar Git)
- GitHub Desktop: Para gestionar el repositorio (descargar GitHub Desktop)
- Ve al repositorio en GitHub: https://github.com/NicoFuentese/GestionEstudiantes_PA_2025.git
- Haz clic en el botón verde Code.
- Copia la URL bajo HTTPS.
- Abre GitHub Desktop.
- Ve a File > Clone Repository.
- En la pestaña URL, pega el enlace copiado del repositorio.
- Selecciona un directorio local para guardar el proyecto (por ejemplo,
C:\Proyectos\GestionEstudiantes). - Haz clic en Clone para descargar el repositorio.
- Una vez clonado, el proyecto aparecerá en GitHub Desktop. Puedes abrir los archivos desde el directorio local.
- Abre NetBeans.
- Ve a File > Open Project.
- Navega al directorio donde clonaste el repositorio (por ejemplo,
C:\Proyectos\GestionEstudiantes) y selecciona la carpeta del proyecto. - NetBeans detectará automáticamente el proyecto Java si tiene la estructura correcta (
src/com/mycompany/gestion_estudiante). Si no, crea un nuevo proyecto:- File > New Project > Java > Java Application.
- Selecciona el directorio del repositorio como ubicación del proyecto.
- Asegúrate de que los archivos
.javaestén ensrc/com/mycompany/gestion_estudiante.
- Haz clic derecho en
Gestion_Estudiante.javaen el explorador de proyectos y selecciona Run File para ejecutar la aplicación. - Sigue el menú en consola para interactuar con la aplicación (insertar alumnos, listar alumnos por nivel, listar niveles, etc.).
Alumno.java: Modela un alumno con RUT, nombres, apellidos, teléfono, email, estado académico, nivel asignado, y mapa de notas por asignatura.Asignatura.java: Modela una asignatura con nombre (único), descripción, profesor, y créditos.Nivel.java: Modela un nivel académico con nombre, año, jornada, paralelo, capacidad máxima, estado activo, listas de alumnos, asignaturas, e inscripciones.Colegio.java: Modela un colegio con nombre, dirección, teléfono, estado privado, lista de niveles, y mapa de alumnos por RUT.Inscripcion.java: Modela la relación alumno-asignatura con estado (inscrito, aprobado, reprobado), nota final, y periodo.DataStore.java: Maneja persistencia en archivos CSV (data/alumnos.csv,niveles.csv,asignaturas.csv,inscripciones.csv).ExportadorTxt.java: Exporta reportes a archivos de texto.Reporte.java: Clase abstracta para reportes, con métodosresumenygenerar.ReporteAlumnoPorNivel.java: Genera reportes de ocupación por nivel.ReporteRendimientoNivel.java: Genera reportes de rendimiento (promedio, mediana, tasa de aprobación).GestionEstudiante.java: Gestiona operaciones como agregar, modificar, eliminar alumnos y niveles, y buscar alumnos.Gestion_Estudiante.java: Clase principal con la interfaz de consola y el métodomain.AlumnoDuplicadoException.java: Excepción para alumnos duplicados.EmailInvalidoException.java: Excepción para emails inválidos.InscripcionInvalidaException.java: Excepción para inscripciones inválidas.src/com/mycompany/gestion_estudiante/InscripcionDuplicadaException.java: Excepción para inscripciones duplicadas.src/com/mycompany/gestion_estudiante/TelefonoInvalidoException.java: Excepción para teléfonos inválidos..gitignore: Ignora archivos generados como.class,bin/,.idea/,*.iml,out/.
La aplicación gestiona estudiantes en un colegio, organizados por niveles académicos (por ejemplo, "primer año"). Sus principales características son:
- Carga de datos: Inicializa un colegio con datos de ejemplo usando el método
demodeColegio, que crea niveles, asignaturas, alumnos, e inscripciones. - Gestión de alumnos: Almacena alumnos en un
HashMap<String, Alumno>(por RUT) enColegioy permite registrarlos manualmente a través de la consola o interfaz gráfica (Swing conJOptionPaneyJTable). - Gestión de niveles: Almacena niveles en un
ArrayListenColegio, asignaturas e inscripciones enArrayLists enNivel. Los alumnos se asignan a niveles mediante unArrayListenNivel. - Gestión de inscripciones: Vincula alumnos con asignaturas, con estado (inscrito, aprobado, reprobado) y nota final.
- Reportes: Genera reportes de ocupación (
ReporteAlumnoPorNivel) y rendimiento (ReporteRendimientoNivel), exportados a archivos de texto conExportadorTxt. - Interfaz de usuario:
- Consola: Menú para insertar alumnos, listar alumnos por nivel, listar niveles, y salir.
- Gráfica: Menú con
JOptionPaney visualización de datos enJTablepara listar alumnos y niveles.
- Uso de colecciones:
ArrayListenAlumno(niveles aprobados),Nivel(alumnos, asignaturas, inscripciones), yColegio(niveles).HashMapenColegio(indiceAlumnos) para mapear RUTs a alumnos y enAlumno(notas por asignatura).
- Persistencia: Carga y guarda datos en archivos CSV usando
DataStore. - Robustez: Incluye validaciones para entradas vacías (en
Colegio.setNombre,setDireccion), capacidad máxima de alumnos en un nivel, y manejo de excepciones (AlumnoDuplicadoException,EmailInvalidoException, etc.) para entradas inválidas. - Funcionalidad adicional: Identifica alumnos en riesgo académico (promedio < 4.0) con
GestionEstudiante.mostrarAlumnosPeligro.
El diagrama UML del sistema, que detalla clases, atributos, métodos, y relaciones (1-* para Colegio-Nivel, Nivel-Alumno/Asignatura, Nivel-Inscripcion; 1-1 para Inscripcion-Alumno/Asignatura), está disponible en el repositorio como diagrama_uml.mmd. Puedes renderizarlo usando Mermaid Live Editor o un plugin de Mermaid en VSCode.
Al ejecutar Gestion_Estudiante.java, se carga el colegio con datos de ejemplo (método demo de Colegio). En el menú, selecciona una opción:
-
Insertar un alumno en un nivel:
Seleccione indice de nivel: 0 Rut: 33.333.333-3 Nombre 1: Carla Nombre 2: Sofia Apellido 1: Lopez Apellido 2: Gomez Telefono: 912345678 Email: carla.lopez@correo.cl Estado Academico: true Alumno agregado al nivel
-
Listar alumnos en un nivel:
Seleccion indice de nivel: 0 Alumnos en Nivel{nombre='primer año', anio=2025, jornada='diurna', paralelo='A', cantidadMaximaAlumnos=60, activo=Sí}: Alumno{rut=11.111.111-1, nombre=Ana Paula Perez Roncaglia, telefono=997205530, email=ana@correo.cl, Estado=Activo} Alumno{rut=22.222.222-2, nombre=Luis Emilio Ramirez Roco, telefono=922334455, email=luis@correo.cl, Estado=Activo}
-
Listar niveles:
Niveles del colegio: Nivel{nombre='primer año', anio=2025, jornada='diurna', paralelo='A', cantidadMaximaAlumnos=60, activo=Sí} Nivel{nombre='segundo año', anio=2025, jornada='diurna', paralelo='B', cantidadMaximaAlumnos=50, activo=Sí}
-
Otras funcionalidades (vía interfaz gráfica o consola):
- Agregar, modificar, o eliminar alumnos y niveles.
- Buscar alumnos por RUT.
- Mostrar alumnos en riesgo académico (promedio < 4.0).
- Generar reportes en archivos de texto.
- Salir del programa.
Este proyecto fue desarrollado como parte de una actividad de Programación Avanzada por Nicolás Fuentes, Victor Guilarte, y Eduardo Sandoval. Si deseas contribuir:
- Crea un fork del repositorio.
- Realiza tus cambios en una rama nueva.
- Envía un pull request con una descripción clara de los cambios.
Este proyecto es de uso académico y no tiene una licencia específica definida. Contacta a los autores para más información.