Boletín 602. Gestión de la Red de bibliotecas de Galicia
En este boletín utilizaremos todo lo visto en cuanto a OOP, programación funcional y manejo de archivos.
Enunciado
Crea un programa en Java para gestionar la Red de Bibliotecas de Galicia utilizando el patrón MVC.
El programa contará con tres partes bien diferenciadas:
- Administración general.
- Administración de una biblioteca concreta.
- El portal para usuarios.
El acceso está restringido mediante credenciales de nombre de usuario y contraseña.
Además, el programa debe contar con persistencia de datos mediante archivos binarios.
Realiza todas las comprobaciones pertinentes mediante excepciones. Ten cuidado porque hay bastantes cosas que comprobar.
Administradores generales
Los administradores generales podrán dar de alta nuevas bibliotecas. Cada una de las bibliotecas constará de:
- Nombre (puede haber dos bibliotecas con el mismo nombre).
- Dirección.
- Ciudad.
- Provincia.
Para poder diferenciarlas, cada biblioteca dispondrá de un identificador único.
Estos también podrán ver la lista de todas las bibliotecas. Cada biblioteca se mostrará con el siguiente formato: <id> <nombre>, <direccion>; <ciudad> (<provincia>).
Otra función de los administradores generales es poder dar de alta nuevos libros. La información que se desea almacenar sobre cada libro es la siguiente:
- Título.
- Autor (puede tener varios).
- Editorial.
- ISBN de tamaño 10 (se debe comprobar que es correcto).
- Idioma (solo se compran libros en gallego, castellano e inglés).
Al momento de añadir un libro, comprueba que el libro no esté ya añadido. Si está añadido, no lo agregues. Para que dos libros sean iguales, sólo deben coincidir sus ISBN.
Al igual que para las bibliotecas, estos podrán seleccionar ver todos los libros. Cada libro se mostrará con el siguiente formato: <isbn>, <titulo> de <autores> en <lengua> (<editorial>) (los autores separados por ;).
Al dar de alta cada libro, se debe poder indicar el número de ejemplares comprados. Cada uno de estos ejemplares debe asignarse un identificador único para poder realizar el seguimiento de cada uno. Este identificador debe contener el ISBN del libro del ejemplar.
Existen dos opciones para dar de alta nuevos libros:
- Introduciéndolos mediante la línea de comandos.
- Cargándolos mediante un archivo CSV.
El formato del archivo CSV debe tener el siguiente formato:
titulo,editorial,lingua,autores,isbn,numExemplares
Artificial Intelligence: A Modern Approach,Pearson,INGLES,Stuart Russell & Peter Norvig,0201633612,5
Historia de la literatura gallega,Xerais,GALEGO,Xosé Ramón Pena & Dolores Vilavedra & Anxo Tarrío & María do Cebreiro Rábade Villar & Arturo Casas,0307474720,3
El nombre del viento,Plaza & Janés,ESPAÑOL,Patrick Rothfuss,8499890946,1
El administrador general debe poder asignar ejemplares a una biblioteca. Solo podrá asignar aquellos que no estén ya asignados a una biblioteca. Puede haber en la misma biblioteca más de un ejemplar de un mismo libro.
Por último, este administrador puede dar de alta administradores de bibliotecas (incluido nombre de usuario y contraseña). Al momento de su alta, ya se le asignará una única biblioteca.
Al iniciar el programa debe existir la siguiente cuenta para acceder como administrador general:
- Usuario:
admin - Contraseña:
abc123.
Administradores de biblioteca
Los administradores de bibliotecas son los encargados de marcar los préstamos y devoluciones de su biblioteca.
Para ello pueden ver todos los ejemplares libres (es decir, que no están prestados) que tienen en su biblioteca. El formato para mostrar cada ejemplar es: <isbn>, <titulo> de <autores> en <lengua> (<editorial>). ID Ejemplar: <id_ejemplar>.
Para realizar cada préstamo o devolución, se debe indicar el identificador del ejemplar y el usuario del préstamo/devolución mediante su DNI.
Para cada préstamo se debe almacenar:
- La fecha del préstamo (que es la fecha actual al momento de realizar el préstamo).
- La fecha límite de devolución (2 semanas desde la fecha del préstamo). Si esta coincidiera en domingo, la fecha límite sería el día siguiente.
- La fecha en que se produjo la devolución del ejemplar si este ya fue devuelto.
Al hacer el préstamo se debe comprobar que el usuario no tenga más libros en préstamo (solo se puede tener uno al mismo tiempo) y que no esté sancionado.
Un usuario está sancionado sin poder llevar libros prestados cuando supera dos veces la fecha límite de devolución de un libro en el último año. El año se cuenta desde la fecha de préstamo.
Usuarios
Los usuarios para darse de alta en la aplicación deben indicar:
- Nombre.
- Apellidos.
- DNI. Se debe comprobar que es correcto y que no haya dos DNIs iguales en el sistema.
- Nombre de usuario.
- Contraseña. La contraseña debe ser almacenada utilizando un hash seguro.
Estos podrán buscar libros por título o autor. Como resultado se les indicarán los libros con ejemplares libres que coincidan con su búsqueda por orden alfabético por título. El sistema de búsqueda debe implementarse mediante programación funcional y expresiones regulares.
También podrán consultar la fecha límite de devolución en formato dd/mm/yyyy del préstamo en curso, si es que cuentan con algún libro prestado.