Saltar al contenido principal

Boletín 505. Tienda de música

En esta práctica crearemos una aplicación para la gestión de una tienda de música donde pondremos en práctica todos los conocimientos adquiridos sobre la programación orientada a objetos en Java.

Enunciado

Una tienda de música desea realizar una aplicación para gestionar la compra de productos en su tienda.

Los gerentes nos piden que la aplicación deberá contar con una gestión básica de usuarios: registro e inicio de sesión mediante nombre de usuario y contraseña. Eso sí, deberemos contar con dos perfiles diferentes de usuarios, cada uno con sus respectivos permisos en la aplicación: administradores y clientes. Ten en cuenta que no pueden existir dos usuarios con el mismo nombre de usuario.

En cuanto a la gestión de productos, a todos los productos debemos asignar un identificador único. Además de este identificador deberemos almacenar su precio, con IVA y sin él, el stock disponible de dicho producto y una breve descripción del mismo. El IVA de todos los productos es del 21%.

En cuanto al tipo de productos, podemos clasificarlos en dos grandes categorías: instrumentos musicales y complementos.

Todos los instrumentos deberán almacenar los datos de cualquier producto pero también su marca y modelo. Además existen varias categorías de instrumentos, cada uno con sus determinadas características que resumimos en la siguiente tabla:

Tipo de instrumentoCaracterísticas propias
FlautasPueden tener "pie de Si" o no.
SaxofonesHay cuatro tipos de saxo: soprano, alto, tenor o barítono.
TrombonesPueden tener transpositor o no.

En cuanto a los complementos, tenemos las siguientes categorías con sus características:

ComplementoCaracterísticas propias
LibrosTendrán un título, autor e ISBN de 10 dígitos. Debes controlar que el ISBN es correcto.
EstuchesSe indicará para qué instrumento sirve y la marca.

Para cada uno de los productos deberá mostrarse por pantalla con el siguiente formato:

Tipo de productoFormato Texto
FlautaFlauta. <id>: <marca> - <modelo>. Precio con IVA: <Precio> € ; Precio sin IVA: <Precio> € ; Stock: <Stock> unidades ; Descripción: <descripcion> . <Pie de Si o Sin pie de Si>
SaxofónSaxofón. <id>: <marca> - <modelo>. Precio con IVA: <Precio> € ; Precio sin IVA: <Precio> € ; Stock: <Stock> unidades ; Descripción: <descripcion> . <tipo>
TrombónTrombón. <id>: <marca> - <modelo>. Precio con IVA: <Precio> € ; Precio sin IVA: <Precio> € ; Stock: <Stock> unidades ; Descripción: <descripcion> . <Transpositor o Sin transpositor>
LibroLibro. <id>: <titulo> - <autor>, ISBN: <isbn>. Precio con IVA: <Precio> € ; Precio sin IVA: <Precio> € ; Stock: <Stock> unidades ; Descripción: <descripcion> .
EstucheEstuche. <id>: <instrumento> Precio con IVA: <Precio> € ; Precio sin IVA: <Precio> € ; Stock: <Stock> unidades ; Descripción: <descripcion> .

En cuanto a las operaciones que puede realizar un administrador tenemos las siguientes:

  1. Añadir un producto: deberá hacerse un submenú para elegir el tipo de producto.
  2. Ver productos: deberá hacerse el siguiente submenú:
    • Ver todos los productos.
    • Ver todos los instrumentos.
    • Ver todas las flautas.
    • Ver todos los saxofones.
    • Ver todos los trombones.
    • Ver todos los complementos.
    • Ver todos los libros.
    • Ver todos los estuches.
  3. Ver la información de un producto concreto indicando su identificador.
  4. Añadir stock a un producto mediante su identificador.
  5. Eliminar stock de un producto mediante su identificador.

El cliente podrá realizar las siguientes tareas:

  1. Ver productos: deberá hacerse el siguiente submenú:
    • Ver todos los productos.
    • Ver todos los instrumentos.
    • Ver todas las flautas.
    • Ver todos los saxofones.
    • Ver todos los trombones.
    • Ver todos los complementos.
    • Ver todos los libros.
    • Ver todos los estuches.
  2. Comprar una unidad de un producto mediante su identificador. No es necesario almacenar las compras. Solo debes modificar el stock.

Captura las siguientes excepciones personalizadas:

  • Si se intenta registrar un usuario en el que ya existe otro usuario con el mismo nombre de usuario.
  • Si se introduce un precio a un producto que es negativo.
  • Si se introduce un stock a un producto que es negativo.
  • El ISBN de un libro es incorrecto.
  • Intentar acceder a un producto con un identificador único inválido.
  • Eliminar más stock del que existe.
  • Comprar un producto del que no hay stock.
Pruebas

Para que las pruebas se realicen de manera más rápida, debes añadir usuarios y productos de prueba cada vez que se inicia el programa.

Utiliza además los siguientes patrones de diseño:

  • Emplearemos el patrón Singleton para almacenar todos los datos de la tienda.
  • Emplearemos el patrón MVC para modelar nuestra aplicación.

Fíjate en la rúbrica de corrección porque puede proporcionar ayuda a la hora de realizar esta tarea.