Informe LP
Informe LP
DE SAN MARTÍN
TEMA:
ESTUDIANTE:
Tarapoto – Perú
2024
ÍNDICE
ÍNDICE............................................................................................................................2
Introducción:................................................................................................................2
1. MAESTROS..........................................................................................................3
2. FUNCIONAMIENTO DEL MÓDULO....................................................................4
Introducción:
En el presente informe se detalla el desarrollo de un módulo de ventas implementado en
Java. Este módulo forma parte integral del sistema de gestión empresarial y está
diseñado para optimizar y automatizar el proceso de ventas, facilitando la
administración de inventarios, la gestión de clientes y el seguimiento de transacciones
comerciales.
1.2. CLIENTES:
El maestro de clientes se utiliza para gestionar la información de los clientes,
incluyendo su nombre, correo electrónico, y número de teléfono.
1.3. TRANSACCIONES:
El maestro de transacciones se utiliza para registrar las ventas realizadas,
incluyendo detalles sobre el cliente, los productos vendidos, la cantidad, el
precio total y la fecha de la transacción.
1.4. REPORTE:
El maestro de reportes se utiliza para generar informes basados en diversos
criterios, proporcionando una visión detallada del rendimiento de ventas y
otros aspectos clave del negocio.
2. FUNCIONAMIENTO DEL MÓDULO
El módulo de ventas desarrollado en Java está diseñado para ofrecer una solución
completa y eficiente para la gestión de procesos comerciales. A continuación, se
describe brevemente su funcionamiento, a través de las clases del código según los
maestros utilizados:
2.1. PRODUCTO:
2.1.1. Clase Producto
Esta clase proporciona una estructura básica para gestionar la información relacionada
con un producto en una aplicación, permitiendo la creación de instancias de productos y
la manipulación de sus atributos de manera controlada.
Atributos Privados:
Constructor:
Producto(int id, String nombre, String ventoción, double precio, int stock): Constructor
que inicializa los atributos de la clase con los valores proporcionados como argumentos.
Método toString:
Esta clase proporciona una forma interactiva y validada para que los usuarios puedan agregar
productos a una colección o base de datos, asegurando que los datos ingresados sean correctos
antes de almacenarlos.
Importaciones:
Atributos:
Constructor:
Método initialize:
Manejo de Eventos:
Dentro del ActionListener del botón “Agregar”, se realiza la validación de los datos
ingresados por el usuario:
o Se verifica que el ID sea un número entero positivo.
o Se valida que el precio sea un número positivo.
o Se asegura que el stock no sea negativo.
Si la validación es exitosa, se crea una instancia de Producto y se agrega a través de
productoDAO.
Se muestra un mensaje de confirmación usando JoptionPane.
Si hay errores de validación, se muestra un mensaje de error específico.
Estética:
Atributos:
Constructor:
Métodos Públicos:
Métodos Privados:
Esta clase proporciona una forma interactiva para que los usuarios puedan actualizar el stock de
un producto existente en la colección o base de datos, asegurando que el producto existe antes
de realizar la actualización.
Importaciones:
Clase ActualizarStockUI:
Atributos:
Constructor:
ActualizarStockUI(ProductoDAO productoDAO): Inicializa el atributo productoDAO y
llama al método initialize.
Método initialize:
Manejo de Eventos:
Esta clase proporciona una interfaz interactiva para gestionar (listar, eliminar y editar) productos
en una colección o base de datos, mejorando la usabilidad y facilitando la administración de los
productos.
Importaciones:
Clase GestionarProductoUI:
Atributos:
Constructor:
GestionarProductoUI(ProductoDAO productoDAO): Inicializa el atributo
productoDAO y llama al método initialize.
Método initialize:
Manejo de Eventos:
Eliminar Producto:
o Al hacer clic en el botón “Eliminar”, se obtiene la fila seleccionada en la tabla.
o Si hay una fila seleccionada, se obtiene el ID del producto y se elimina usando
productoDAO.eliminarProducto(id).
o Se elimina la fila de la tabla y se muestra un mensaje de confirmación.
o Si no hay ninguna fila seleccionada, se muestra un mensaje de error.
Editar Producto:
o Al hacer clic en el botón “Editar”, se obtiene la fila seleccionada en la tabla.
o Si hay una fila seleccionada, se obtiene el ID del producto y se busca el
producto usando productoDAO.buscarProducto(id).
o Si el producto se encuentra, se abre una nueva ventana EditarProductoUI para
editar el producto.
o Si no hay ninguna fila seleccionada, se muestra un mensaje de error.
Método cargarProductos:
Esta clase proporciona una interfaz interactiva para editar los detalles de un producto existente,
asegurando que los datos sean válidos y actualizando la vista de productos en la ventana
principal después de guardar los cambios.
Importaciones:
Atributos:
Constructor:
Método initialize:
Manejo de Eventos:
Guardar Producto:
o Al hacer clic en el botón "Guardar", se actualizan los valores del producto con
los datos ingresados en los campos de texto.
o Se maneja cualquier excepción de formato incorrecto mostrando un mensaje de
error.
o Si los datos son válidos, se actualiza el producto usando
productoDAO.editarProducto(producto) y se actualiza la vista en
GestionarProductoUI llamando a gestionarProductoUI.cargarProductos().
o Finalmente, se cierra la ventana de edición.
2.2. CLIENTES:
Atributos:
o id: Un entero que representa el identificador único del cliente.
o nombres: Una cadena que almacena los nombres del cliente.
o apellidos: Una cadena que almacena los apellidos del cliente.
o telefono: Una cadena que guarda el número de teléfono del cliente.
o email: Una cadena que guarda la dirección de correo electrónico del cliente.
Constructor:
o Cliente(int id, String nombres, String apellidos, String telefono, String email):
Inicializa un objeto Cliente con los valores proporcionados para cada atributo.
Métodos Getters y Setters:
o Métodos get y set para cada atributo (getId, setId, getNombres, setNombres,
etc.) que permiten acceder y modificar los datos del cliente de manera
controlada.
Método toString:
o Sobrescribe el método toString para proporcionar una representación de cadena
del objeto Cliente. En este caso, devuelve una cadena que concatena los
nombres y apellidos del cliente.
Este código define una clase ClienteDAO que se encarga de realizar operaciones de persistencia
(guardar, cargar, editar y eliminar) sobre una lista de objetos Cliente, utilizando archivos de
texto (clientes.txt) como almacenamiento.
Atributos:
clientes: Una lista (List) de objetos Cliente que contiene todos los clientes cargados en
memoria.
archivo: Una constante (final String) que especifica el nombre del archivo de texto
donde se guardan los datos de los clientes.
Constructor:
ClienteDAO(): Inicializa la lista de clientes como un nuevo ArrayList y luego carga los
clientes almacenados en el archivo de texto utilizando el método cargarClientes().
Métodos de Operación:
Métodos Privados:
cargarClientes(): Lee los datos del archivo de texto especificado (clientes.txt) y crea
objetos Cliente a partir de cada línea leída, que luego se añaden a la lista clientes.
guardarClientes(): Escribe los datos de todos los clientes en el archivo de texto
clientes.txt, sobrescribiendo cualquier contenido previo en el archivo.
Importaciones:
Clase AgregarClienteUI:
Atributos:
Método initialize():
Panel y Diseño:
Componentes UI:
JLabel y JTextField se utilizan para etiquetar y permitir la entrada de datos para cada
atributo del cliente (ID, Nombres, Apellidos, Teléfono, Email).
Se establecen colores de fondo (setOpaque(true) y setBackground(new Color(173, 216,
230))) para cada etiqueta para mejorar la presentación visual.
Botón Agregar:
JButton agregarButton: Crea un botón con el texto "Agregar", con colores de fondo y
texto configurados para una apariencia estilizada.
Añade un ActionListener al botón para manejar el evento de clic. Dentro del
ActionListener, se realiza la validación de los datos ingresados por el usuario:
o El ID debe ser un número entero positivo.
o Se capturan excepciones (NumberFormatException) si el usuario ingresa datos
incorrectos y muestra un mensaje de error.
o Si los datos son válidos, se crea un nuevo objeto Cliente con los datos
ingresados y se agrega utilizando clienteDAO.agregarCliente(cliente).
o Muestra un mensaje de confirmación al usuario mediante
JOptionPane.showMessageDialog() y cierra la ventana actual con dispose().
Interfaz Gráfica:
Atributos:
Método initialize()
Panel y Diseño:
JPanel panel: Se utiliza un layout de cuadrícula (GridLayout) de 5 filas y 2 columnas
para organizar los componentes de la interfaz.
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)): Establece un borde
vacío para añadir un espacio alrededor del panel.
panel.setBackground(new Color(173, 216, 230)): Establece el color de fondo del panel
a un tono de azul claro.
Componentes UI:
Se crean JLabel y JTextField para cada atributo del cliente que se puede editar
(Nombres, Apellidos, Teléfono, Email).
Cada JLabel tiene setOpaque(true) y setBackground(new Color(173, 216, 230)) para
mejorar la apariencia visual.
Botón Guardar:
JButton guardarButton: Crea un botón con el texto "Guardar", con colores de fondo y
texto configurados para una apariencia estilizada.
Añade un ActionListener al botón para manejar el evento de clic. Dentro del
ActionListener, se actualizan los campos del cliente con los valores ingresados en los
campos de texto (nombresField, apellidosField, telefonoField, emailField).
Se llama a clienteDAO.editarCliente(cliente) para guardar los cambios en la lista de
clientes.
gestionarClienteUI.cargarClientes() se llama para recargar la lista de clientes en la
ventana principal después de realizar la edición.
dispose() cierra la ventana de edición después de guardar los cambios.
Interfaz Gráfica:
Atributos:
Método initialize()
Panel y Diseño:
JButton eliminarButton: Crea un botón con el texto "Eliminar", con colores de fondo y
texto configurados para una apariencia estilizada.
Añade un ActionListener al botón para manejar el evento de clic. Dentro del
ActionListener, se obtiene la fila seleccionada (selectedRow) en clienteTable y se
elimina el cliente correspondiente utilizando clienteDAO.eliminarCliente(id). Se
actualiza tableModel para reflejar los cambios y se muestra un mensaje de confirmación
utilizando JOptionPane.
JButton editarButton: Crea un botón con el texto "Editar", con colores de fondo y texto
configurados para una apariencia estilizada.
Añade un ActionListener al botón para manejar el evento de clic. Dentro del
ActionListener, se obtiene la fila seleccionada (selectedRow) en clienteTable y se
obtiene el cliente correspondiente utilizando clienteDAO.buscarCliente(id). Si se
encuentra el cliente, se abre una nueva ventana de EditarClienteUI para permitir la
edición de los datos del cliente seleccionado.
Panel de Botones:
Función cargarClientes():
Interfaz Gráfica:
Todos los componentes (JTable, JPanel, JButton) se añaden al panel principal (panel)
en el orden adecuado (panel.add(componente, BorderLayout.XXXX)).
Finalmente, se añade el panel principal a la ventana utilizando add(panel) y se hace
visible la ventana con setVisible(true).
2.3. TRANSACCIONES:
Esta clase proporciona una estructura completa para registrar y manejar las transacciones de
venta en un sistema, permitiendo acceder a los detalles específicos de cada venta y gestionar su
información de manera efectiva.
Atributos Privados:
Constructor:
Atributos Privados:
ventas: Lista que almacena objetos de tipo Venta, representando todas las ventas
registradas.
productoDAO: Instancia de ProductoDAO para gestionar la actualización de stock de
productos relacionados con las ventas.
archivo: Nombre del archivo de texto donde se almacenan los datos de las ventas.
Constructor y Métodos:
VentaDAO(): Constructor que inicializa la lista de ventas y carga los datos desde el
archivo especificado.
agregarVenta(Venta venta): Agrega una nueva venta a la lista de ventas y guarda los
datos actualizados en el archivo.
obtenerVentaPorId(int id): Busca y devuelve una venta específica basada en su
identificador único.
eliminarVenta(int id): Elimina una venta especificada por su identificador. Antes de
eliminarla, actualiza el stock de productos involucrados devolviendo la cantidad
vendida al inventario mediante el método actualizarStock de ProductoDAO.
actualizarVenta(Venta ventaActualizada): Actualiza una venta existente en la lista de
ventas con los datos de una venta actualizada.
obtenerTodasLasVentas(): Devuelve la lista completa de todas las ventas registradas.
buscarVenta(int id): Busca y devuelve una venta específica según su identificador.
listarVentas(): Devuelve una copia de la lista de ventas, permitiendo la manipulación
externa sin afectar la lista original.
cargarVentas(): Método privado que carga las ventas desde el archivo de texto,
parseando cada línea y convirtiéndola en objetos Venta para almacenar en la lista.
guardarVentas(): Método privado que guarda todas las ventas actuales en el archivo de
texto, formateando cada venta como una línea de datos separados por comas.
generarCodigoVenta(): Genera y devuelve un nuevo código de venta único. Si no hay
ventas registradas, devuelve 1; de lo contrario, incrementa el código del último registro.
Este código proporciona una interfaz intuitiva y funcional para gestionar ventas, facilitando la
selección de productos, cálculo automático de totales y manejo eficiente del efectivo y vuelto.
Además, integra la persistencia de datos mediante DAOs para garantizar la consistencia y
precisión en las transacciones comerciales.
Atributos y Constructores:
Eventos y Funcionalidades:
Clases Internas:
Este código proporciona una interfaz intuitiva para modificar los detalles de una venta existente,
asegurando que los cambios se reflejen correctamente en la base de datos y en la interfaz
principal de gestión de ventas. Además, facilita la edición dinámica de productos asociados a la
venta, mejorando la experiencia del usuario al gestionar transacciones comerciales.
Atributos y Constructores:
Interfaz Gráfica:
Funcionalidades:
Este diseño permite una fácil extensión y mantenimiento, proporcionando una base sólida para
aplicaciones de gestión de ventas en entornos de escritorio Java.
Atributos:
ventaDAO: Objeto que maneja las operaciones de acceso a datos relacionadas con
ventas.
productoDAO: Objeto que maneja las operaciones de acceso a datos relacionadas con
productos.
table: JTable utilizada para mostrar y gestionar datos tabulares de ventas.
tableModel: DefaultTableModel que actúa como modelo de datos para la JTable.
Constructor:
Métodos:
2.4. REPORTE:
Atributos:
ventaDAO: Objeto que maneja las operaciones de acceso a datos relacionadas con
ventas.
table: JTable utilizada para mostrar y gestionar datos tabulares de ventas.
tableModel: DefaultTableModel que actúa como modelo de datos para la JTable.
Constructor:
Método initialize():
Método cargarVentas():
Este diseño permite una experiencia de usuario fluida y eficiente en aplicaciones de gestión que
requieren acceso rápido a diversas funciones desde un menú centralizado.
Atributos:
Constructor MenuPrincipal():
Método initialize():
Extiende JPanel y se utiliza para mostrar una imagen de fondo dentro del panel
principal (frame).
Este código proporciona una base sólida para una interfaz de inicio de sesión funcional en Java
Swing, con opciones para expandirse según los requisitos adicionales de la aplicación. Siendo
esta la clase MAIN de todo el modulo.
Panel topPanel
Panel mainPanel
Utiliza un layout nulo (null layout) para posicionar los componentes de forma absoluta.
Configura:
o Etiquetas y campos de entrada para usuario y contraseña.
o Un JCheckBox para permitir mostrar u ocultar la contraseña.
o Botones para iniciar sesión y cancelar, con colores de fondo personalizados.
Configuración de Componentes
Consideraciones
El código utiliza layouts adecuados para organizar los componentes de manera clara y
efectiva.
Los eventos de mouse y los efectos de cambio de color en los botones mejoran la
interactividad y la experiencia del usuario.
La gestión de inicio de sesión es básica y se puede expandir según las necesidades
específicas de autenticación y seguridad de la aplicación.