Proyecto final del curso de Python modular, persistencia y bases de datos relacionales. Es un sistema de consola para administrar una biblioteca personal: catálogo de libros, prestatarios y el ciclo completo de préstamo y devolución, con persistencia en SQLite.
- Registra libros (título, autor, ISBN, categoría, número de copias).
- Registra prestatarios (personas a las que se les prestan libros).
- Gestiona préstamos: no permite prestar un libro sin copias disponibles ni duplicar un préstamo activo de la misma persona para el mismo libro.
- Calcula préstamos vencidos con base en la fecha esperada de devolución y muestra una alerta al iniciar el programa.
- Genera reportes: libros más prestados, conteo por categoría, promedio de días que tarda la gente en devolver un libro.
- Exporta el catálogo completo a CSV (abrible en Excel).
- Crea un log de auditoría en JSON con cada operación realizada.
├── models/ # Dataclasses: Libro, Categoria, Prestatario, Prestamo ├── repositories/ # Acceso a datos (SQL) ├── services/ # Reglas de negocio, validaciones y excepciones de dominio ├── db/ # schema.sql y manejo de la conexión SQLite ├── utils/ # Exportadores CSV/JSON ├── tests/ # Pruebas automatizadas ├── exceptions.py # Excepciones ├── main.py # único lugar donde se capturan las excepciones └── seed_data.py # Datos de ejemplo
- CSV: menú 5. Exportar catálogo a CSV` genera exports/libros.csv.
- JSON: cada préstamo, devolución y alta de libro queda registrado en exports/auditoria.json.