GithubHelp home page GithubHelp logo

2024-c1-qa-java-t01's Introduction

Reto - Biblioteca La Pingüinera

La Pingüinera es una biblioteca que necesita un sistema para gestionar los libros y novelas que se encuentran disponibles. Es necesario poder agregar, actualizar, eliminar y obtener los libros y/o novelas en el sistema. También se debe tener un control de acceso para que solo puedan acceder al sistema los asistentes de la biblioteca, pero teniendo en cuenta que siempre habrá un usuario principal, el cual podrá acceder a todo. Los datos de este usuario son:

  • Nombre: John Doe
  • Correo: [email protected]
  • Contraseña: contraseñasegura123456
  • Rol: ADMINISTRADOR

El dueño de la biblioteca tendrá la posibilidad de agregar a los asistentes para que puedan hacerse cargo del inventario de libros y de los préstamos. Cabe resaltar que los asistentes de la biblioteca no pueden acceder a la información de los usuarios del sistema, solo tendrán acceso al apartado de libros y préstamos. Los asistentes tendrán los mismos campos del dueño de la biblioteca, nombre, correo, contraseña y rol (ASISTENTE). Los libros van a tener la siguiente información: título, autor, área del conocimiento, número de páginas, cantidad de ejemplares, cantidad prestados y la cantidad disponible. Mientras que las novelas van a tener la siguiente información: título, autor, género, edad de lectura sugerida, cantidad de ejemplares, cantidad de prestados y cantidad disponible.
El sistema debe brindarnos la posibilidad de listar a todos los autores que se encuentran asociados a los libros/novelas. Esto con el fin de filtrar todos los libros o todas las novelas que son de un autor en específico. Como punto a tener en cuenta, las novelas y los libros deben gestionarse por separado, ya que son elementos diferentes dentro de La Pingüinera. Los préstamos dentro de la biblioteca deben realizarse de la siguiente manera: Para que un usuario pueda prestar un libro, tendrá que crear un cuenta en el sistema de la biblioteca o, en caso de ya tener una cuenta, deberá iniciar sesión con su correo y contraseña. El sistema debe identificar a todos los prestamistas como “LECTORES” y los ejemplares que se muestran a este grupo de usuarios debe ser exclusivamente la lista de libros/novelas cuya cantidad disponible sea mayor que 0. Posteriormente, tendrá que seleccionar los libros y novelas que quiera prestar. El sistema debe pedirle la confirmación al usuario para finalizar el proceso. Si el usuario confirma el préstamo, debe descontar 1 a la cantidad de unidades disponibles en todos los libros y novelas que se escogieron. Se debe recibir la fecha del día del préstamo y cuándo se regresarán los ejemplares (este intervalo de tiempo puede ser máximo de 15 días). En el momento en que se confirma el préstamo, el usuario debe dirigirse hacia donde uno de los asistentes de la biblioteca para que le hagan entrega de los ejemplares, por lo tanto, el sistema debe permitirle al asistente consultar los préstamos que ha realizado el usuario cuando lo consulta por medio de su correo. Esto con el fin de poder confirmar el préstamo con algún funcionario de la biblioteca y que se puedan entregar los ejemplares.

Los préstamos deben tener 3 estados:

Solicitado (Se debe asignar este estado cuando el usuario realiza el préstamo a través de la plataforma). Realizado (Se debe asignar este estado cuando el asistente confirma el préstamo y entrega los ejemplares). Finalizado (Se debe asignar este estado cuando el usuario devuelva los ejemplares). Una vez el usuario esté haciendo la devolución en la biblioteca, el sistema debe permitirle al asistente buscarlo por su correo y, una vez confirmada la devolución de todos los ejemplares, debe aumentar 1 a la cantidad disponible de cada uno, actualizarlo en el listado de libros y/o novelas y marcar el préstamo como finalizado. Adicionalmente, si la transacción se realiza después de la fecha de devolución establecida, el sistema debe arrojar una advertencia de que el usuario no cumplió con la fecha establecida.

Aspectos técnicos a tener en cuenta

Este reto debe ser realizado en una aplicación de consola, NO SE DEBE REALIZAR FRONTEND, pero sí debe realizar la persistencia de la información en base de datos. Los temas a potenciar acá son la programación orientada a objetos y el manejo de colecciones. Lo que se va a realizar con los libros/novelas al tener cantidad prestada, cantidad de ejemplares y cantidad disponible es conocido como un borrado lógico. Se le conoce así porque el registro no va a ser eliminado del sistema en ningún momento, pero para el usuario no va a ser visible porque no cuenta con unidades disponibles para poder prestar, y por lo mismo, no le vamos a mostrar un ejemplar que no pueda prestar.

2024-c1-qa-java-t01's People

Contributors

davidbonelo avatar jacobogarces avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.