Planteamiento
En la empresa KD-Electronics venden productos electrónicos y desean desarrollar un sistema de gestión de inventario. En el módulo de productos se debe realizar un CRUD, es decir, el registro (create) de nuevos productos en el inventario con su código de producto, nombre, descripción, precio base, precio de venta, categoría y cantidad disponible; así mismo, la actualización (update) de todos los campos, excepto el código del producto; en la parte de eliminación (delete) del producto, no se podrá eliminar físicamente y se debe permitir traer consultas (read) por código de producto.
Desarrollo
Para implementar un sistema de gestión de inventario en
Java que permita realizar operaciones CRUD sobre productos, primero crearemos
una clase Producto que represente los datos de los productos. Luego,
implementaremos un controlador para gestionar las operaciones CRUD y finalmente
una vista por consola para interactuar con el sistema.
Clase Producto
Gitub
Explicación detallada:
Atributos de la clase:
codigo: El código único que identifica al producto.
nombre: El nombre del producto.
descripcion: Una breve descripción del producto.
precioBase: El precio base del producto.
precioVenta: El precio de venta del producto.
categoria: La categoría a la que pertenece el producto.
cantidadDisponible: La cantidad disponible del producto
en el inventario.
Constructor:
Producto(String codigo, String nombre, String descripcion, double precioBase, double precioVenta, String categoria, int cantidadDisponible): Este constructor inicializa un nuevo objeto Producto con los valores proporcionados.
Métodos Getters y Setters:
getCodigo(): Devuelve el código del producto.
setNombre(String nombre), setDescripcion(String
descripcion), setPrecioBase(double precioBase), setPrecioVenta(double
precioVenta), setCategoria(String categoria), setCantidadDisponible(int
cantidadDisponible): Estos métodos permiten modificar los atributos del
producto excepto el código, ya que este no se puede cambiar una vez asignado.
Método toString():
toString(): Devuelve una representación en forma de cadena de texto del objeto Producto, mostrando todos sus atributos. Esto es útil para mostrar información del producto en la consola.
Clase ProductoController
Github
Explicación detallada:
Atributo inventario:
Map<String, Producto> inventario: Un mapa que almacena los productos utilizando su código como clave. Permite acceso rápido a los productos por su código.
Constructor:
ProductoController(): Inicializa el inventario como un HashMap.
Métodos CRUD:
createProducto(String codigo, String nombre, String descripcion, double precioBase, double precioVenta, String categoria, int cantidadDisponible): Crea un nuevo producto y lo agrega al inventario. Imprime un mensaje de confirmación en la consola.
readProducto(String codigo): Busca un producto en el
inventario por su código y lo devuelve.
updateProducto(String codigo, String nombre, String
descripcion, double precioBase, double precioVenta, String categoria, int
cantidadDisponible): Actualiza los atributos de un producto existente (excepto
el código). Si el producto no se encuentra, imprime un mensaje en la consola.
deleteProducto(String codigo): Marca un producto como eliminado estableciendo su cantidad disponible a 0. Si el producto no se encuentra, imprime un mensaje en la consola.
Clase Main
Gitub
https://github.com/jdavisanb/Unimin_POO_S6/commit/3e6041c33a477d6b2fe6de6ebbf51537af8c8864
Explicación detallada:
Inicialización:
ProductoController controller = new ProductoController(): Crea una instancia del controlador de productos.
Scanner scanner = new Scanner(System.in): Crea una
instancia del escáner para leer la entrada del usuario desde la consola.
Variables locales:
Variables como codigo, nombre, descripcion, categoria, precioBase, precioVenta, cantidadDisponible se utilizan para almacenar temporalmente la entrada del usuario.
Menú principal:
Se muestra un menú con opciones para crear, leer, actualizar y eliminar productos, así como salir del sistema.
El usuario selecciona una opción, que se lee con
scanner.nextInt().
scanner.nextLine() se usa para consumir la nueva línea
que queda en el buffer del escáner después de leer un entero.
Switch case para manejar opciones:
Caso 1 (Crear Producto): Se solicitan todos los datos necesarios para crear un nuevo producto. Luego se llama a controller.createProducto(...) para crear y agregar el producto al inventario.
Caso 2 (Leer Producto): Se solicita el código del
producto y se llama a controller.readProducto(codigo) para buscar y mostrar el
producto.
Caso 3 (Actualizar Producto): Se solicita el código del
producto y todos los datos nuevos para actualizar el producto. Luego se llama a
controller.updateProducto(...).
Caso 4 (Eliminar Producto): Se solicita el código del
producto y se llama a controller.deleteProducto(codigo) para marcar el producto
como eliminado.
Caso 5 (Salir): Se imprime un mensaje y se sale del bucle
do-while, terminando el programa.
Default: Se maneja cualquier opción no válida mostrando
un mensaje de error.
Cierre del escáner:
scanner.close(): Se cierra el escáner al final del programa para liberar recursos.
No hay comentarios:
Publicar un comentario