Este proyecto es una mini aplicación de consola hecha en Python, diseñada para practicar y demostrar conceptos de Programación Orientada a Objetos (POO) junto con manejo de archivos CSV y JSON.
Incluye:
- Clases con herencia, encapsulación, propiedades y métodos especiales.
- Carga de datos desde CSV.
- Exportación completa de la escuela (estudiantes + docentes) a JSON.
- Un menú interactivo para gestionar la información.
app_mini_escuela/ ├─ data/ │ ├─ estudiantes.csv │ ├─ profesores.csv │ └─ escuela.json ← exportación completa ├─ src/ │ ├─ clases.py ← POO (Persona, Estudiante, Docente, Curso) │ ├─ menu.py ← Menú interactivo de consola │ └─ loader.py ← Carga de datos desde JSON └─ index.py ← Punto de entrada
Este proyecto usa varios pilares de la Programación Orientada a Objetos:
Estudiante y Docente heredan de Persona.
Atributos como la nota (__nota) y la lista de estudiantes del curso (__estudiantes) están protegidos.
Cada clase expone solo lo necesario: métodos como presentarse(), propiedades como aprobo, etc.
El método presentarse() funciona distinto en Persona, Estudiante y Docente.
Un Curso contiene:
- un docente
- una lista de estudiantes
Debes tener Python 3.10+ instalado.
python index.py
El sistema cargará automáticamente los datos desde:
data/estudiantes.csv
data/profesores.csv
o desde data/escuela.json (si ya fue exportada la escuela)
Luego verás un menú interactivo como este:
1. Ver lista de estudiantes del curso
2. Ver lista de docentes del curso
3. Ver lista de aprobados/no aprobados
4. Agregar estudiante
5. Agregar docente
6. Modificar nota
7. Salir
8. Exportar escuela a JSON
🗂 Datos del Proyecto (CSV y JSON)
📄 estudiantes.csv
Formato:
CSVnombre,documento,grupo,notaJuan Pérez,1001,A,4.5María Gómez,1002,A,3.2...Mostrar más líneas
📄 profesores.csv
Formato:
CSVnombre,documento,asignaturaAna María Torres,2001,Matemáticas...Mostrar más líneas
📄 escuela.json (exportado)
Ejemplo real:
JSON{ "estudiantes": [ { "nombre": "Juan Pérez", "documento": "1001", "grupo": "A", "nota": 4.5 } ], "docentes": [ { "nombre": "Ana María Torres", "documento": "2001", "asignatura": "Matemáticas" } ]}Mostrar más líneas
🧩 Funcionalidades Principales
✔ Ver estudiantes
Lee desde CSV o JSON y reconstruye objetos Estudiante.
✔ Ver docentes
Mismo proceso con objetos Docente.
✔ Ver aprobados/no aprobados
Usa la propiedad POO:
Python@propertydef aprobo(self): return self.__nota >= 3.0Mostrar más líneas
✔ Exportar toda la escuela a JSON
Incluye alumnos + docentes en un solo archivo.
✔ Agregar estudiantes y docentes desde consola
✔ Modificar notas (con validación)
🧪 Ejemplo: así luce un Estudiante reconstruido desde CSV/JSON
Pythonest = Estudiante("Juan Pérez", "1001", "A", 4.5)print(est.aprobo) # Trueprint(est.presentarse())Mostrar más líneas
💡 Objetivo del Proyecto
Este proyecto se hizo con dos propósitos:
Practicar POO real con clases útiles, no ejemplos vacíos.
Servir como pieza de portafolio en GitHub, mostrando:
arquitectura limpia
modularidad
persistencia con CSV / JSON
menú interactivo
buenas prácticas de Python
📌 Oportunidades de Mejoras (roadmap)
Validación más robusta de entradas del usuario.
Implementar cursos múltiples.
Guardar en JSON después de cada cambio.
Versión con interfaz gráfica (Tkinter o PyQt).
API REST usando FastAPI.
ESTE PROYECTO ES SOLAMENTE PARA INCLUIR EN PORTAFOLIO.