0% encontró este documento útil (0 votos)
31 vistas22 páginas

Informe LP

informe de comunicacion de datos "una propuesta de red para una empresa"

Cargado por

CSRgamer
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas22 páginas

Informe LP

informe de comunicacion de datos "una propuesta de red para una empresa"

Cargado por

CSRgamer
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

UNIVERSIDAD NACIONAL

DE SAN MARTÍN

FACULTAD DE INGENIERÍA DE SISTEMAS E INFORMÁTICA

Estadística aplicada a la ingeniería

TEMA:

Nivel de satisfacción presentado por los estudiantes de FICA y FISI


hacia la plataforma virtual en la matrícula 2024-I de la UNSM

DOCENTE: MURRIETA PATOW GEORGE BRAYAM

ESTUDIANTE:

- BRYAN STEVE SALAS LUNA


- TELLO TIRADO AIRTON
- NILS SALDAÑA CERDEIRA
- CRISTOFER STALIN RIOS DIOPE

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.

Java fue seleccionado como lenguaje de programación principal debido a su robustez,


seguridad y capacidad para crear aplicaciones escalables y portátiles. El módulo de
ventas se beneficia de estas características, proporcionando una solución eficiente y
fiable que puede integrarse fácilmente con otros componentes del sistema.

El objetivo principal de este módulo de ventas es mejorar la experiencia del usuario


final, proporcionando una herramienta intuitiva y poderosa que simplifique las
operaciones diarias y facilite la toma de decisiones informadas. Con esta
implementación, se espera no solo mejorar la eficiencia operativa, sino también
proporcionar una base sólida para futuras expansiones y mejoras del sistema.
1. MAESTROS
1.1. PRODUCTOS:
El maestro de productos se utiliza para gestionar la información de todos los
productos disponibles en el inventario. Esto incluye detalles como el nombre
del producto, el código del producto, la descripción, el precio y la cantidad en
stock.

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:

 id: Identificador único del producto.


 nombre: Nombre del producto.
 descripción: Descripción del producto.
 precio: Precio del producto.
 stock: Cantidad disponible del producto en inventario.

 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:

 toString(): Sobrescribe el método toString de la clase Object para devolver el nombre


del producto.

 Métodos Getters y Setters:

 Métodos para obtener (getId, getNombre, getDescripcion, getPrecio, getStock) y


establecer (setId, setNombre, setDescripcion, setPrecio, setStock) los valores de los
atributos del producto.

2.1.2. Clase AgregarProductoUI

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:

 Se importan clases de javax.swing, java.awt, y java.awt.event para crear la interfaz


gráfica y manejar eventos.
 Clase AgregarProductoUI:

 Extiende Jframe para crear una ventana.

 Atributos:

 productoDAO: Una instancia de ProductoDAO que se utiliza para agregar productos a


la base de datos o colección de productos.

 Constructor:

 AgregarProductoUI(ProductoDAO productoDAO): Inicializa el atributo productoDAO


y llama al método initialize.

 Método initialize:

 Configura las propiedades de la ventana (título, tamaño, comportamiento de cierre, y


ubicación).
 Crea y organiza los componentes de la interfaz gráfica dentro de un Jpanel con un
GridLayout de 6 filas y 2 columnas.
 Añade etiquetas (Jlabel) y campos de texto (JtextField) para los atributos del producto:
ID, nombre, descripción, precio y stock.
 Añade un botón “Agregar” (Jbutton) y le asigna un ActionListener para manejar el
evento de clic.

 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:

 Se ajustan colores y bordes para mejorar la apariencia de la interfaz.

2.1.3. Clase ProductoDAO

Este diseño permite la manipulación y persistencia de productos en un archivo de texto,


proporcionando una solución simple para almacenar y gestionar la información de productos sin
necesidad de una base de datos compleja.

 Atributos:

 productos: Una lista (List<Producto>) que almacena los productos.


 FILE_NAME: Una constante que almacena el nombre del archivo donde se guardan los
datos de los productos.

 Constructor:

 ProductoDAO(): Inicializa la lista de productos y llama al método cargarProductos para


cargar los productos desde un archivo.

 Métodos Públicos:

 agregarProducto(Producto producto): Añade un nuevo producto a la lista y guarda los


productos en el archivo.
 eliminarProducto(int id): Elimina un producto de la lista basado en su ID y guarda los
cambios.
 editarProducto(Producto producto): Actualiza un producto existente en la lista y guarda
los cambios.
 buscarProducto(int id): Busca y devuelve un producto por su ID. Retorna null si no se
encuentra.
 actualizarStock(int id, int cantidadVendida): Actualiza el stock de un producto basado
en su ID y la cantidad vendida, luego guarda los cambios.
 listarProductos(): Devuelve una copia de la lista de productos.

 Métodos Privados:

 cargarProductos(): Carga los productos desde un archivo de texto (productos.txt). Lee el


archivo línea por línea, divide cada línea en sus componentes, y crea objetos Producto
que añade a la lista.
 guardarProductos(): Guarda la lista de productos en el archivo de texto. Escribe cada
producto como una línea en el archivo, con los atributos separados por comas.

2.1.4. Clase ActualizarStockUI

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:

 Se importan clases de javax.swing, java.awt, y java.awt.event para crear la interfaz


gráfica y manejar eventos.

 Clase ActualizarStockUI:

 Extiende Jframe para crear una ventana.

 Atributos:

 productoDAO: Una instancia de ProductoDAO que se utiliza para buscar y editar


productos en la base de datos o colección de productos.

 Constructor:
 ActualizarStockUI(ProductoDAO productoDAO): Inicializa el atributo productoDAO y
llama al método initialize.

 Método initialize:

 Configura las propiedades de la ventana (título, tamaño, comportamiento de cierre, y


ubicación).
 Crea y organiza los componentes de la interfaz gráfica dentro de un Jpanel con un
GridLayout de 3 filas y 2 columnas.
 Añade etiquetas (Jlabel) y campos de texto (JtextField) para ingresar el ID del producto
y el nuevo stock.
 Añade un botón “Actualizar” (Jbutton) y le asigna un ActionListener para manejar el
evento de clic.

 Manejo de Eventos:

 Dentro del ActionListener del botón “Actualizar”, se realiza lo siguiente:


o Se obtiene el ID del producto y el nuevo stock desde los campos de texto.
o Se busca el producto utilizando productoDAO.buscarProducto(id).
o Si el producto es encontrado, se actualiza su stock y se guarda el cambio usando
productoDAO.editarProducto(producto).
o Se muestra un mensaje de confirmación usando JoptionPane y se cierra la
ventana.
o Si el producto no es encontrado, se muestra un mensaje de error.

2.1.5. Clase GestionarProductoUI

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:

 Se importan clases de javax.swing, javax.swing.table.DefaultTableModel, java.awt, y


java.awt.event para crear la interfaz gráfica y manejar eventos.

 Clase GestionarProductoUI:

 Extiende Jframe para crear una ventana.

 Atributos:

 productoDAO: Una instancia de ProductoDAO que se utiliza para gestionar productos


en la base de datos o colección.
 productoTable: Una tabla (Jtable) para mostrar los productos.
 tableModel: Un modelo de tabla (DefaultTableModel) para gestionar los datos de la
tabla.

 Constructor:
 GestionarProductoUI(ProductoDAO productoDAO): Inicializa el atributo
productoDAO y llama al método initialize.

 Método initialize:

 Configura las propiedades de la ventana (título, tamaño, comportamiento de cierre, y


ubicación).
 Crea y organiza los componentes de la interfaz gráfica dentro de un Jpanel con un
BorderLayout.
 Configura el fondo del panel con un color azul claro.
 Define las columnas de la tabla y crea la tabla con su modelo.
 Añade la tabla dentro de un JscrollPane para permitir el desplazamiento y lo añade al
panel principal.
 Llama al método cargarProductos para cargar los productos en la tabla.
 Añade dos botones, “Eliminar” y “Editar”, con sus respectivos ActionListener para
manejar los eventos de clic.
 Configura el diseño y colores de los botones y los añade al panel.

 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:

 Limpia la tabla antes de cargar los datos.


 Itera sobre la lista de productos obtenida de productoDAO.listarProductos() y añade
cada producto a la tabla.

2.1.6. Clase EditarProductoUI

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:

 Se importan clases de javax.swing, java.awt, y java.awt.event para crear la interfaz


gráfica y manejar eventos.
 Clase EditarProductoUI:

 Extiende JFrame para crear una ventana.

 Atributos:

 productoDAO: Una instancia de ProductoDAO que se utiliza para gestionar productos


en la base de datos o colección.
 producto: Una instancia de Producto que representa el producto a editar.
 nombreField, descripcionField, precioField, stockField: Campos de texto para editar los
detalles del producto.
 gestionarProductoUI: Una instancia de GestionarProductoUI para actualizar la vista de
productos después de editar uno.

 Constructor:

 EditarProductoUI(ProductoDAO productoDAO, Producto producto,


GestionarProductoUI gestionarProductoUI): Inicializa los atributos productoDAO,
producto, y gestionarProductoUI, y llama al método initialize.

 Método initialize:

 Configura las propiedades de la ventana (título, tamaño, comportamiento de cierre, y


ubicación).
 Crea y organiza los componentes de la interfaz gráfica dentro de un JPanel con un
GridLayout de 5 filas y 2 columnas.
 Configura el fondo del panel con un color azul claro.
 Añade etiquetas (JLabel) y campos de texto (JTextField) para editar los detalles del
producto (nombre, descripción, precio y stock).
 Inicializa los campos de texto con los valores actuales del producto.
 Añade un botón "Guardar" (JButton) con un ActionListener para manejar el evento de
clic.

 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:

2.4.1. Clase Cliente


Esta estructura básica facilita la gestión de datos de clientes dentro de una aplicación,
proporcionando encapsulamiento y facilitando la manipulación de los datos del cliente de
manera coherente.

 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.

2.4.2. Clase ClienteDAO

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:

 agregarCliente(Cliente cliente): Añade un nuevo cliente a la lista clientes y luego


guarda todos los clientes en el archivo de texto mediante guardarClientes().
 eliminarCliente(int id): Elimina un cliente de la lista clientes si el ID del cliente
coincide con el proporcionado, y luego guarda los cambios en el archivo de texto.
 editarCliente(Cliente cliente): Actualiza los datos de un cliente existente en la lista
clientes si el ID coincide con el proporcionado, y luego guarda los cambios en el
archivo de texto.
 buscarCliente(int id): Busca un cliente en la lista clientes según su ID y devuelve el
objeto Cliente encontrado, o null si no se encuentra.
 listarClientes(): Devuelve una copia de la lista clientes, lo que permite obtener todos
los clientes almacenados actualmente.

 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.

2.4.3. Clase AgregarClienteUI

El código define una interfaz gráfica de usuario (AgregarClienteUI) utilizando la biblioteca


Swing para agregar nuevos clientes a través de una ventana JFrame.

 Importaciones:

 Se importan las clases necesarias de javax.swing y java.awt.event para crear la interfaz


gráfica y manejar eventos de usuario.

 Clase AgregarClienteUI:

 Extiende JFrame, lo que significa que representa una ventana de la aplicación.

 Atributos:

 clienteDAO: Una instancia de ClienteDAO que se utiliza para realizar operaciones de


persistencia de clientes, como agregar un nuevo cliente.
 Campos de texto (idField, nombresField, apellidosField, telefonoField, emailField):
Estos campos permiten al usuario ingresar datos para el nuevo cliente.

 Método initialize():

 Configura la apariencia y el comportamiento inicial de la ventana.


 Configura el título de la ventana con setTitle(), establece el tamaño con setSize(), y
define el comportamiento al cerrar con
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE).
 setLocationRelativeTo(null) centra la ventana en la pantalla.

 Panel y Diseño:

 JPanel panel: Crea un panel con un diseño de cuadrícula (GridLayout) de 6 filas y 2


columnas para organizar los componentes.
 Configura el color de fondo del panel con setBackground(new Color(173, 216, 230)),
un tono de azul claro.

 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:

 Agrega los componentes al panel (panel.add(componente)) en el orden adecuado.


 Usa add(panel) para agregar el panel a la ventana JFrame y setVisible(true) para hacer
visible la ventana.

2.4.4. Clase EditarClienteUI

El código implementa una interfaz gráfica de usuario (EditarClienteUI) en Java utilizando


Swing. Esta interfaz permite editar los detalles de un cliente existente.

 Atributos:

 clienteDAO: Instancia de ClienteDAO utilizada para realizar operaciones de CRUD


(Crear, Leer, Actualizar, Eliminar) en la lista de clientes.
 cliente: Cliente específico que se va a editar.
 nombresField, apellidosField, telefonoField, emailField: Campos de texto donde se
muestran y permiten modificar los datos del cliente seleccionado.
 gestionarClienteUI: Referencia a la ventana GestionarClienteUI, que se utiliza para
recargar la lista de clientes después de editar.

 Método initialize()

 Configura la apariencia y el comportamiento inicial de la ventana de edición.


 setTitle("Editar Cliente"): Establece el título de la ventana.
 setSize(400, 300): Define el tamaño de la ventana.
 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE): Configura la acción de
cierre de la ventana para que solo se cierre esta ventana y no la aplicación completa.
 setLocationRelativeTo(null): Centra la ventana en la pantalla.

 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:

 Los componentes (JLabel, JTextField, JButton) se añaden al panel en el orden adecuado


(panel.add(componente)).
 Finalmente, se añade el panel a la ventana principal utilizando add(panel) y se hace
visible la ventana con setVisible(true).

2.4.5. Clase GestionarClienteUI

El código implementa una interfaz gráfica de usuario (GestionarClienteUI) en Java utilizando


Swing. Esta interfaz permite gestionar (listar, eliminar, editar) la información de clientes
almacenada en una lista, utilizando la clase ClienteDAO para realizar operaciones de acceso a
datos.

 Atributos:

 clienteDAO: Instancia de ClienteDAO utilizada para realizar operaciones de CRUD


(Crear, Leer, Actualizar, Eliminar) en la lista de clientes.
 clienteTable: JTable utilizada para mostrar la lista de clientes en formato tabular.
 tableModel: DefaultTableModel que gestiona los datos mostrados en clienteTable.

 Método initialize()

 Configura la apariencia y el comportamiento inicial de la ventana de gestión de clientes.


 setTitle("Gestionar Clientes"): Establece el título de la ventana.
 setSize(600, 400): Define el tamaño de la ventana.
 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE): Configura la acción de
cierre de la ventana para que solo se cierre esta ventana y no la aplicación completa.
 setLocationRelativeTo(null): Centra la ventana en la pantalla.

 Panel y Diseño:

 JPanel panel: Utiliza un layout de borde (BorderLayout) para organizar los


componentes de la interfaz.
 panel.setBackground(new Color(173, 216, 230)): Establece el color de fondo del panel
a un tono de azul claro.

 Tabla de Clientes (JTable):

 Se define un array de String con los nombres de las columnas (columnNames).


 Se crea un DefaultTableModel (tableModel) inicializado con 0 filas y los nombres de
las columnas definidos.
 Se crea la JTable (clienteTable) utilizando tableModel y se configura el color de fondo
(Color.WHITE).
 Se crea un JScrollPane (scrollPane) que contiene clienteTable para permitir el
desplazamiento si hay muchos clientes.

 Botones de Acción (Eliminar y Editar):

 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:

 JPanel buttonPanel: Panel para agrupar los botones de acción (eliminarButton y


editarButton).
 buttonPanel.setBackground(new Color(173, 216, 230)): Establece el color de fondo del
panel de botones a un tono de azul claro.
 Añade los botones (eliminarButton y editarButton) al buttonPanel.

 Función cargarClientes():

 tableModel.setRowCount(0): Limpia todas las filas actuales en tableModel.


 Itera a través de la lista de clientes obtenida de clienteDAO.listarClientes() y agrega
cada cliente como una nueva fila en tableModel.

 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:

2.3.1. Clase Venta

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:

 id: Identificador único de la venta.


 fecha: Fecha y hora en que se realizó la venta.
 idCliente: Identificador del cliente que realizó la compra.
 idProductos: Lista de identificadores de los productos vendidos.
 nombresProductos: Lista de nombres de los productos vendidos.
 cantidades: Lista de cantidades vendidas de cada producto.
 precios: Lista de precios unitarios de los productos vendidos.
 subtotales: Lista de subtotales por producto (cantidad vendida * precio unitario).
 totalVenta: Total de la venta, calculado sumando todos los subtotales.
 efectivo: Monto de efectivo recibido del cliente.
 vuelto: Cambio devuelto al cliente, calculado como efectivo - totalVenta.

 Constructor:

 Venta(int id, Date fecha, int idCliente, List<Integer> idProductos, List<String>


nombresProductos, List<Integer> cantidades, List<Double> precios, List<Double>
subtotales, double totalVenta, double efectivo, double vuelto): Constructor que
inicializa los atributos de la venta con los valores proporcionados como argumentos.

 Métodos Getters y Setters:

 Métodos para obtener (getId, getFecha, getIdCliente, getIdProductos,


getNombresProductos, getCantidades, getPrecios, getSubtotales, getTotalVenta,
getEfectivo, getVuelto) y establecer (setIdCliente, setTotalVenta, setEfectivo,
setVuelto) los valores de los atributos de la venta.

2.3.2. Clase VentaDAO


Este componente proporciona una interfaz para gestionar eficazmente las ventas de productos,
permitiendo operaciones de agregado, eliminación, actualización y consulta de ventas, además
de mantener la consistencia con el stock de productos mediante la integración con
ProductoDAO.

 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.

2.3.3. Clase NuevaVentaUi

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:

 ventaDAO, clienteDAO, productoDAO: Instancias de las clases DAO para la gestión


de ventas, clientes y productos respectivamente.
 codigoVenta: Variable que almacena el código único de la venta actual.
 initialize(): Método principal que inicializa y configura la interfaz gráfica de la ventana.
 Interfaz Gráfica:

 Panel Superior: Contiene la etiqueta de "Facturación" y la fecha actual.


 Panel Cliente y Producto: Permite seleccionar un cliente de una lista desplegable o
buscarlo por su ID. Similar para los productos, con opción de búsqueda por ID y
especificación de cantidad.
 Tabla de Productos: Muestra los productos añadidos a la venta, permitiendo ver
detalles como ID, nombre, descripción, cantidad, precio y subtotal por producto.
Incluye botones "Eliminar" para cada producto.
 Panel de Totales: Muestra el total a pagar, campo para ingresar el efectivo recibido y
calcula el vuelto automáticamente.
 Botón "Finalizar Venta": Completa la transacción, verificando stock suficiente y
efectivo adecuado, actualizando los datos de ventas y productos.

 Eventos y Funcionalidades:

 Añadir Producto: Agrega productos a la tabla de ventas, calculando automáticamente


el subtotal y actualizando el total a pagar.
 Eliminar Producto: Permite eliminar productos de la venta desde la tabla.
 Actualizar Total y Vuelto: Calcula dinámicamente el total a pagar y el vuelto según el
efectivo ingresado.
 Finalizar Venta: Verifica y guarda la venta en la base de datos, actualizando el stock
de productos y mostrando un mensaje de confirmación.

 Clases Internas:

 ButtonRenderer: Renderer para los botones de acción en la tabla de productos.


 ButtonEditor: Editor para los botones "Eliminar" en la tabla, permite su interacción y
actualización de la tabla al eliminar productos.

2.3.4. Clase EditarVentaUI

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:

 ventaDAO, productoDAO: Instancias de las clases DAO para la gestión de ventas y


productos, respectivamente.
 venta: Objeto de tipo Venta que representa la venta a ser editada.
 gestionarVentasUI: Instancia de la interfaz principal de gestión de ventas para
actualizar la tabla después de editar la venta.
 initialize(): Método principal que inicializa y configura la interfaz gráfica de la ventana
de edición.

 Interfaz Gráfica:

 Campos de Texto: Muestra información como el ID del cliente, total de la venta,


efectivo recibido y vuelto.
 Tabla de Productos: Muestra los productos asociados a la venta, permitiendo editar la
cantidad, precio y subtotal por producto.
 Botones de Acción: Incluye botones para guardar los cambios realizados y cancelar la
operación.

 Funcionalidades:

 Guardar: Actualiza los detalles de la venta en la base de datos, incluyendo la


modificación de productos y cantidades asociadas a la venta.
 Cancelar: Cierra la ventana de edición sin guardar cambios.

2.3.5. Clase GestionarVentasUI

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:

 GestionarVentasUI(VentaDAO ventaDAO, ProductoDAO productoDAO):


Constructor principal que inicializa la interfaz y los DAO necesarios. Llama al método
initialize() para configurar la interfaz gráfica.

 Métodos:

 initialize(): Configura y muestra la ventana principal de gestión de ventas.


o Configura el título, tamaño, cierre de la ventana y ubicación relativa al centro
de la pantalla.
o Crea el modelo de la tabla con nombres de columnas específicos para mostrar
información sobre cada venta.
o Carga las ventas disponibles llamando al método cargarVentas().
o Agrega la tabla a un JScrollPane para permitir el desplazamiento cuando hay
muchas ventas.
o Crea un panel de botones (JPanel) que contiene botones para editar, eliminar y
salir.
o Configura acciones para cada botón:
 Editar: Permite editar una venta seleccionada mostrando una nueva
ventana (EditarVentaUI).
 Eliminar: Elimina la venta seleccionada después de confirmar la
acción con un cuadro de diálogo.
 Salir: Cierra la ventana de gestión de ventas.
 cargarVentas(): Obtiene todas las ventas del ventaDAO y las carga en la tabla.
o Utiliza un formato de fecha específico (yyyy-MM-dd HH:mm:ss) para
formatear las fechas de las ventas.
o Para cada venta, crea un arreglo de objetos (Object[]) con los datos relevantes y
los agrega al modelo de la tabla (tableModel).
 actualizarTabla(): Limpia el modelo de datos de la tabla (tableModel) y vuelve a
cargar las ventas actualizadas llamando al método cargarVentas().

2.4. REPORTE:

2.5.1. Clase ReportesUI

Este diseño facilita la generación y visualización de reportes de ventas en entornos de escritorio


Java, proporcionando una experiencia de usuario eficiente y amigable para los usuarios finales.

 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:

 ReportesUI(VentaDAO ventaDAO): Constructor principal que inicializa la interfaz y


el ventaDAO. Llama al método initialize() para configurar la interfaz gráfica.

 Método initialize():

 Configura y muestra la ventana principal de reportes de ventas.


o Configura el título, tamaño, cierre de la ventana y ubicación relativa al centro
de la pantalla.
o Crea el modelo de la tabla con nombres de columnas específicos para mostrar
información sobre cada venta.
o Llama al método cargarVentas() para cargar los datos de ventas en la tabla.
o Agrega la tabla a un JScrollPane para permitir el desplazamiento cuando hay
muchas ventas.
o Hace visible la ventana.

 Método cargarVentas():

 Carga los datos de ventas desde el ventaDAO y los muestra en la tabla.


o Limpia el modelo de datos de la tabla (tableModel) antes de cargar nuevos
datos.
o Obtiene todas las ventas disponibles llamando al método
obtenerTodasLasVentas() del ventaDAO.
o Utiliza un formato de fecha específico (yyyy-MM-dd HH:mm:ss) para
formatear las fechas de las ventas.
o Para cada venta, crea un arreglo de objetos (Object[]) con los datos relevantes y
los agrega al modelo de la tabla (tableModel).
2.5. LOGIN (MAIN) Y MENU PRINCIPAL:

2.5.1. Clase MenuPrincipal

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:

 frame: JFrame que representa la ventana principal de la aplicación.


 productoDAO, clienteDAO, ventaDAO: Objetos DAO para acceder y manejar datos
relacionados con productos, clientes y ventas respectivamente.

 Constructor MenuPrincipal():

 Inicializa los objetos productoDAO, clienteDAO y ventaDAO.


 Llama al método initialize() para configurar y mostrar la interfaz gráfica del menú
principal.

 Método initialize():

 Configura la ventana principal (JFrame):


o Establece el título y el comportamiento de cierre para que la aplicación se cierre
al presionar la "X".
o Maximiza la ventana para cubrir toda la pantalla sin decoraciones, utilizando
JFrame.MAXIMIZED_BOTH.
o Crea un panel de fondo personalizado (BackgroundPanel) utilizando una
imagen de fondo cargada desde un archivo de recursos.
o Configura este panel como el contenido principal del marco.

 Configuración del panel superior (topPanel):


o Utiliza un GridBagLayout para organizar los botones en una cuadrícula
flexible.
o Establece un color de fondo azul para el panel.
o Crea y configura botones para diferentes funciones (Productos, Clientes,
Transacciones, Reportes y Salir).
o Crea un arreglo de botones para facilitar la configuración y el manejo posterior.

 Configuración de los botones:


o Personaliza cada botón con un tamaño prefijado, fuente, colores de texto y
fondo.
o Desactiva el pintado del borde y el enfoque para un aspecto más limpio.
o Añade efectos de cambio de color al pasar el ratón sobre los botones utilizando
un MouseListener.

 Manejo de acciones de los botones:


o Productos: Muestra un menú emergente (JPopupMenu) con opciones para
agregar un nuevo producto, gestionar productos existentes y actualizar el stock.
o Clientes: Muestra un menú emergente con opciones para agregar un nuevo
cliente y gestionar clientes existentes.
o Transacciones: Muestra un menú emergente con opciones para realizar una
nueva venta y gestionar las ventas existentes.
o Reportes: Muestra un menú emergente con la opción de ver reportes de ventas.
o Salir: Cierra la aplicación al hacer clic.

 Método resizeIcon(ImageIcon icon, int width, int height):

 Método auxiliar que redimensiona un ImageIcon a un tamaño específico.

 Clase interna BackgroundPanel:

 Extiende JPanel y se utiliza para mostrar una imagen de fondo dentro del panel
principal (frame).

2.5.2. Clase Login (MAIN)

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.

 Método main(String[] args)

 Este método es el punto de entrada principal de la aplicación.


 Crea un JFrame que representa la ventana de inicio de sesión con el título "Login".
 Configura el tamaño inicial de la ventana y calcula su posición para que aparezca
centrada en la pantalla.
 Crea dos paneles principales:
o topPanel: Panel en la parte superior que contiene una etiqueta de bienvenida
con fondo azul.
o mainPanel: Panel principal que contiene los campos de entrada de usuario y
contraseña, así como botones para iniciar sesión y cancelar.

 Panel topPanel

 Utiliza un GridBagLayout para organizar los componentes dentro de este panel.


 Añade una etiqueta de bienvenida grande con el texto "Login".

 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

 Iconos de Usuario y Contraseña: Se cargan desde archivos ubicados en /imagenes y se


escalan para ajustarse a un tamaño específico antes de ser mostrados en etiquetas.
 Campos de Texto: JTextField para el usuario y JPasswordField para la contraseña.
 Botones: Configurados con eventos ActionListener para manejar acciones como iniciar
sesión y cancelar. Además, tienen efectos de cambio de color al pasar el mouse sobre
ellos.

 Acciones de los Botones

 Iniciar: Verifica si el usuario y la contraseña ingresados son correctos (Administrador y


admin123). Si son correctos, cierra la ventana de inicio de sesión y crea una instancia de
MenuPrincipal (suponiendo que MenuPrincipal es la clase que maneja el menú
principal de la aplicación).
 Cancelar: Cierra la aplicación al hacer clic.
 Mostrar Contraseña: Cambia el carácter de visualización en el campo de contraseña
entre texto visible y asteriscos según esté seleccionado el checkbox.

 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.

También podría gustarte