Construir un sistema de préstamos de biblioteca que permita registrar usuarios, administrar materiales (libros y revistas), realizar préstamos y devoluciones, y consultar la información de distintas formas. El núcleo debe funcionar en memoria usando clases abstractas, interfaces, ArrayList y HashMap. De manera opcional, el grupo podrá conectar el sistema a una base de datos utilizando JDBC.
-
Usuarios
- Registrar usuarios.
- Consultar usuarios por ID.
- Listar todos los usuarios.
-
Materiales (abstracto)
- Clase abstracta
Itemcon atributos comunes (ejemplo: id, título, autor). - Subclases:
LibroyRevista. - Consultar materiales por ID.
- Listar todos los materiales.
- Clase abstracta
-
Préstamos
- Registrar un préstamo de un material a un usuario, si el material está disponible.
- Registrar la devolución de un material.
-
Búsquedas
- Por ID: buscar usuario, material o préstamo específico.
- Personalizadas: obtener todos los préstamos activos o históricos de un usuario.
- Búsquedas complejas (alcanzables): combinar criterios sobre materiales (ejemplo: título contiene “java” + tipo Libro + disponible).
- Crear una base de datos con al menos tres tablas:
usuarios,materiales,prestamos. - Conectar desde Java con JDBC para guardar y consultar información.
- Mantener las mismas operaciones: registrar, buscar por id, listar, etc.
- Diagrama de caso de uso: mostrar las acciones principales (gestionar usuarios, gestionar materiales, registrar préstamo, registrar devolución, consultar información).
- Diagrama de clases: incluir clases abstractas, interfaces, entidades (
Usuario,Item,Libro,Revista,Prestamo) y servicios. - Diagrama de base de datos: tablas con sus relaciones (un usuario puede tener muchos préstamos, un préstamo corresponde a un material).
-
Documento corto con requerimientos y criterios de aceptación.
-
Diagramas UML: caso de uso, clases y base de datos.
-
Código Java con:
- Modelo de dominio (usuarios, materiales, préstamos).
- Manejo de datos en memoria con ArrayList y HashMap.
- Servicios para registrar, consultar y buscar.
- Programa principal (
main) que muestre las funciones básicas. - Conexión opcional a la base de datos con JDBC.
-
README con instrucciones de ejecución, supuestos y ejemplos de uso.
-
Modelo con abstracción y herencia
- Dado un modelo con
Itemcomo clase abstracta yLibroyRevistacomo subclases - Cuando creo materiales de distinto tipo
- Entonces todos pueden tratarse como
Itemy mostrar su información específica.
- Dado un modelo con
-
Operaciones en memoria con colecciones
- Dado listas y mapas en memoria
- Cuando agrego, consulto y recorro usuarios y materiales
- Entonces obtengo la información correcta en consola.
-
Reglas de préstamo
- Dado un material disponible y un usuario válido
- Cuando registro un préstamo
- Entonces el material queda no disponible y el préstamo se registra como activo.
-
Devoluciones
- Dado un préstamo activo
- Cuando registro la devolución
- Entonces el material vuelve a estar disponible y el préstamo queda cerrado.
-
Búsquedas por ID
- Dado entidades registradas en memoria
- Cuando busco un usuario, material o préstamo por su id
- Entonces obtengo la entidad correcta o un mensaje claro si no existe.
-
Búsquedas personalizadas
- Dado un usuario con préstamos activos e históricos
- Cuando consulto su historial
- Entonces veo la lista separada en activos e históricos.
-
Búsquedas complejas
- Dado un catálogo de materiales variado
- Cuando aplico criterios combinados (ejemplo: título contiene “java”, tipo = Libro, disponible = true)
- Entonces obtengo únicamente los materiales que cumplen todos los filtros.
-
Conexión a la base de datos (opcional)
- Dado una base de datos configurada
- Cuando ejecuto las operaciones de registrar, consultar y listar con JDBC
- Entonces los datos se guardan y recuperan desde la base de datos correctamente.