Advertisement
robeeeert

Untitled

Nov 8th, 2023
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 46.92 KB | None | 0 0
  1. package pyfinal;
  2.  
  3. import javax.swing.*;
  4. import javax.swing.table.DefaultTableModel;
  5. import java.awt.*;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.sql.Connection;
  9. import java.sql.PreparedStatement;
  10. import java.sql.ResultSet;
  11. import java.sql.SQLException;
  12. import java.sql.Statement;
  13.  
  14. public class TiendaVG {
  15.     private static JTextField codigoField;
  16.     private static JTextField descripcionField;
  17.     private static JTextField tipoField;
  18.     private static JTextField cantidadField;
  19.     private static JTextField precioField;
  20.     private static JTable productosTable;
  21.     private static DefaultTableModel tableModel;
  22.     private static JTextField codigoFieldBusqueda;
  23.     private static JTextField descripcionFieldBusqueda;
  24.  
  25.     public static void main(String[] args) {
  26.         SwingUtilities.invokeLater(() -> {
  27.             crearVentanaInicioSesion();
  28.         });
  29.     }
  30.  
  31.     private static void crearVentanaInicioSesion() {
  32.         JFrame frame = new JFrame("Inicio de Sesión");
  33.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  34.         frame.setSize(1200, 700);
  35.  
  36.         JPanel panel = new JPanel(new GridBagLayout());
  37.         frame.add(panel);
  38.  
  39.         GridBagConstraints constraints = new GridBagConstraints();
  40.         constraints.fill = GridBagConstraints.HORIZONTAL;
  41.         constraints.insets = new Insets(5, 5, 5, 5);
  42.  
  43.         JLabel usuarioLabel = new JLabel("Usuario:");
  44.         JTextField usuarioField = new JTextField();
  45.         JLabel contraseñaLabel = new JLabel("Contraseña:");
  46.         JPasswordField contraseñaField = new JPasswordField();
  47.         JButton ingresarButton = new JButton("Ingresar");
  48.         JButton salirButton = new JButton("Salir");
  49.  
  50.         //constraints.gridx = 0;
  51.         //constraints.gridy = 0;
  52.         constraints.gridwidth = 1;
  53.         panel.add(usuarioLabel, constraints);
  54.  
  55.         //constraints.gridx = 1;
  56.         //constraints.gridy = 0;
  57.         constraints.gridwidth = 2;
  58.         panel.add(usuarioField, constraints);
  59.  
  60.         constraints.gridx = 0;
  61.         constraints.gridy = 1;
  62.         constraints.gridwidth = 1;
  63.         panel.add(contraseñaLabel, constraints);
  64.  
  65.         constraints.gridx = 1;
  66.         constraints.gridy = 1;
  67.         constraints.gridwidth = 2;
  68.         panel.add(contraseñaField, constraints);
  69.  
  70.         constraints.gridx = 1;
  71.         constraints.gridy = 2;
  72.         constraints.gridwidth = 1;
  73.         panel.add(ingresarButton, constraints);
  74.  
  75.         constraints.gridx = 2;
  76.         constraints.gridy = 2;
  77.         panel.add(salirButton, constraints);
  78.  
  79.         ingresarButton.addActionListener(new ActionListener() {
  80.             @Override
  81.             public void actionPerformed(ActionEvent e) {
  82.                 String usuario = usuarioField.getText();
  83.                 String contraseña = new String(contraseñaField.getPassword());
  84.  
  85.                 if (usuario.equals("rramirez") && contraseña.equals("1234")) {
  86.                     frame.dispose();
  87.                     crearVentanaTienda();
  88.                 } else {
  89.                     JOptionPane.showMessageDialog(null, "Usuario o contraseña incorrectos", "Error", JOptionPane.ERROR_MESSAGE);
  90.                 }
  91.             }
  92.         });
  93.  
  94.         salirButton.addActionListener(new ActionListener() {
  95.             @Override
  96.             public void actionPerformed(ActionEvent e) {
  97.                 System.exit(0);
  98.             }
  99.         });
  100.  
  101.         frame.setVisible(true);
  102.     }
  103.  
  104.  
  105.     private static void crearVentanaTienda() {
  106.         JFrame frame = new JFrame("Tienda");
  107.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  108.         frame.setSize(1200, 700);
  109.  
  110.         JPanel panel = new JPanel(new BorderLayout());
  111.  
  112.         // Panel superior para el mensaje "Bienvenido" y "Tienda De VideoJuegos"
  113.         JPanel welcomePanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
  114.         JLabel welcomeLabel = new JLabel("Bienvenido");
  115.         //JLabel storeLabel = new JLabel("Tienda De VideoJuegos");
  116.         welcomeLabel.setFont(new Font("Arial", Font.PLAIN, 24)); // Ajusta el tamaño de la fuente
  117.         //storeLabel.setFont(new Font("Arial", Font.PLAIN, 24)); // Ajusta el tamaño de la fuente
  118.         welcomePanel.add(welcomeLabel);
  119.         //welcomePanel.add(storeLabel);
  120.  
  121.         // Panel para la imagen
  122.         JPanel imagePanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
  123.         ImageIcon imagen = new ImageIcon("D:\\Eclipse\\ProyectoViedoJuegos\\Pyimagen.jpg"); // Reemplaza con la ruta de tu imagen
  124.         JLabel imagenLabel = new JLabel(imagen);
  125.         imagePanel.add(imagenLabel);
  126.  
  127.         // Panel para los botones
  128.         JPanel buttonPanel = new JPanel(new GridLayout(2, 3));
  129.         buttonPanel.setPreferredSize(new Dimension(700, 200)); // Ajusta el tamaño del panel de botones
  130.  
  131.         JButton productosButton = new JButton("Productos");
  132.         JButton actualizarProductoButton = new JButton("Actualizar Producto");
  133.         JButton consultaEliminarButton = new JButton("Consulta y Elimina");
  134.         JButton clientesButton = new JButton("Clientes");
  135.         JButton ventasButton = new JButton("Ventas");
  136.         JButton salirButton = new JButton("Salir");
  137.  
  138.         // Ajusta el tamaño de los botones
  139.         Dimension buttonSize = new Dimension(150, 50); // Tamaño deseado para los botones
  140.         productosButton.setPreferredSize(buttonSize);
  141.         actualizarProductoButton.setPreferredSize(buttonSize);
  142.         consultaEliminarButton.setPreferredSize(buttonSize);
  143.         clientesButton.setPreferredSize(buttonSize);
  144.         ventasButton.setPreferredSize(buttonSize);
  145.         salirButton.setPreferredSize(buttonSize);
  146.  
  147.         buttonPanel.add(productosButton);
  148.         buttonPanel.add(actualizarProductoButton);
  149.         buttonPanel.add(consultaEliminarButton);
  150.         buttonPanel.add(clientesButton);
  151.         buttonPanel.add(ventasButton);
  152.         buttonPanel.add(salirButton);
  153.  
  154.         // Agrega los paneles al panel principal en el orden deseado
  155.         panel.add(welcomePanel, BorderLayout.NORTH);
  156.         panel.add(imagePanel, BorderLayout.CENTER);
  157.         panel.add(buttonPanel, BorderLayout.SOUTH);
  158.  
  159.         salirButton.addActionListener(new ActionListener() {
  160.             @Override
  161.             public void actionPerformed(ActionEvent e) {
  162.                 System.exit(0); // Cierra la aplicación
  163.             }
  164.         });
  165.  
  166.         productosButton.addActionListener(new ActionListener() {
  167.             @Override
  168.             public void actionPerformed(ActionEvent e) {
  169.                 frame.dispose();
  170.                 crearVentanaProductos();
  171.             }
  172.         });
  173.  
  174.         actualizarProductoButton.addActionListener(new ActionListener() {
  175.             @Override
  176.             public void actionPerformed(ActionEvent e) {
  177.                 frame.dispose();
  178.                 crearVentanaActualizarProducto();
  179.             }
  180.         });
  181.  
  182.         consultaEliminarButton.addActionListener(new ActionListener() {
  183.             @Override
  184.             public void actionPerformed(ActionEvent e) {
  185.                 frame.dispose();
  186.                 crearVentanaConsultaEliminar();
  187.             }
  188.         });
  189.  
  190.         clientesButton.addActionListener(new ActionListener() {
  191.             @Override
  192.             public void actionPerformed(ActionEvent e) {
  193.                 frame.dispose();
  194.                 crearVentanaClientes();
  195.             }
  196.         });
  197.  
  198.         ventasButton.addActionListener(new ActionListener() {
  199.             @Override
  200.             public void actionPerformed(ActionEvent e) {
  201.                 frame.dispose();
  202.                 crearVentanaVentas();
  203.             }
  204.         });
  205.  
  206.         frame.add(panel);
  207.         frame.setVisible(true);
  208.     }
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.    
  216.     private static void crearVentanaVentas() {
  217.         JFrame frame = new JFrame("Ventas");
  218.         frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // Cambia el comportamiento de cierre
  219.         frame.setSize(1200, 700);
  220.  
  221.         JPanel panel = new JPanel(new BorderLayout());
  222.         frame.add(panel);
  223.  
  224.         JPanel inputPanel = new JPanel(new GridLayout(5, 2));
  225.  
  226.         JLabel clienteLabel = new JLabel("Seleccionar Cliente:");
  227.         JComboBox<String> clientesComboBox = new JComboBox<>();
  228.         JLabel productoLabel = new JLabel("Seleccionar Producto:");
  229.         JComboBox<String> productosComboBox = new JComboBox<>();
  230.         JLabel cantidadLabel = new JLabel("Cantidad:");
  231.         JTextField cantidadField = new JTextField();
  232.         JLabel totalLabel = new JLabel("Total:");
  233.         JTextField totalField = new JTextField();
  234.  
  235.         cargarClientesDesdeBD(clientesComboBox);
  236.         cargarProductosDesdeBD(productosComboBox);
  237.  
  238.         inputPanel.add(clienteLabel);
  239.         inputPanel.add(clientesComboBox);
  240.         inputPanel.add(productoLabel);
  241.         inputPanel.add(productosComboBox);
  242.         inputPanel.add(cantidadLabel);
  243.         inputPanel.add(cantidadField);
  244.         inputPanel.add(totalLabel);
  245.         inputPanel.add(totalField);
  246.  
  247.         panel.add(inputPanel, BorderLayout.NORTH);
  248.  
  249.         JPanel buttonPanel = new JPanel(); // Panel para los botones
  250.         JButton agregarVentaButton = new JButton("Agregar Venta");
  251.         JButton salirButton = new JButton("Salir"); // Botón para salir
  252.         JButton regresarButton = new JButton("Regresar"); // Botón para regresar
  253.  
  254.         buttonPanel.add(agregarVentaButton);
  255.         buttonPanel.add(salirButton);
  256.         buttonPanel.add(regresarButton);
  257.  
  258.         agregarVentaButton.setPreferredSize(new Dimension(200, 100)); // Establece un tamaño personalizado
  259.         regresarButton.setPreferredSize(new Dimension(200, 100));
  260.         salirButton.setPreferredSize(new Dimension(200, 100));
  261.         panel.add(buttonPanel, BorderLayout.SOUTH);
  262.  
  263.         agregarVentaButton.addActionListener(new ActionListener() {
  264.             @Override
  265.             public void actionPerformed(ActionEvent e) {
  266.                 String clienteSeleccionado = (String) clientesComboBox.getSelectedItem();
  267.                 String productoSeleccionado = (String) productosComboBox.getSelectedItem();
  268.                 String cantidad = cantidadField.getText();
  269.                
  270.                 // Obtener el precio del producto seleccionado desde la base de datos
  271.                 float precioProducto = obtenerPrecioProductoDesdeBD(productoSeleccionado);
  272.                
  273.                 // Calcular el total
  274.                 try {
  275.                     int cantidadInt = Integer.parseInt(cantidad);
  276.                     float total = precioProducto * cantidadInt;
  277.                     totalField.setText(String.valueOf(total));
  278.                    
  279.                     // Insertar la venta en la base de datos
  280.                     if (insertarVentaEnBD(clienteSeleccionado, productoSeleccionado, cantidadInt, total)) {
  281.                         JOptionPane.showMessageDialog(null, "Venta registrada exitosamente", "Éxito", JOptionPane.INFORMATION_MESSAGE);
  282.                     } else {
  283.                         JOptionPane.showMessageDialog(null, "Error al registrar la venta", "Error", JOptionPane.ERROR_MESSAGE);
  284.                     }
  285.                 } catch (NumberFormatException ex) {
  286.                     totalField.setText("Error");
  287.                 }
  288.             }
  289.         });
  290.        
  291.         salirButton.addActionListener(new ActionListener() {
  292.             @Override
  293.             public void actionPerformed(ActionEvent e) {
  294.                 System.exit(0);
  295.             }
  296.         });
  297.  
  298.         regresarButton.addActionListener(new ActionListener() {
  299.             @Override
  300.             public void actionPerformed(ActionEvent e) {
  301.                 frame.dispose(); // Cierra la ventana actual
  302.                 crearVentanaTienda();
  303.                 // Agrega aquí el código para regresar a la otra ventana
  304.             }
  305.         });
  306.  
  307.         frame.setVisible(true);
  308.     }
  309.    
  310.     private static boolean insertarVentaEnBD(String cliente, String producto, int cantidad, float total) {
  311.         try (Connection connection = BaseDeDatos.getConnection()) {
  312.             // Obtener el ID del cliente seleccionado
  313.             String clienteQuery = "SELECT nit FROM clientes WHERE nombre = ?";
  314.             PreparedStatement clienteStatement = connection.prepareStatement(clienteQuery);
  315.             clienteStatement.setString(1, cliente);
  316.             ResultSet clienteResult = clienteStatement.executeQuery();
  317.  
  318.             int nitCliente = 0;
  319.             if (clienteResult.next()) {
  320.                 nitCliente = clienteResult.getInt("nit");
  321.             } else {
  322.                 return false; // No se encontró el cliente
  323.             }
  324.  
  325.             // Obtener el ID del producto seleccionado y la cantidad actual en stock
  326.             String productoQuery = "SELECT codigo, cantidad FROM productos WHERE descripcion = ?";
  327.             PreparedStatement productoStatement = connection.prepareStatement(productoQuery);
  328.             productoStatement.setString(1, producto);
  329.             ResultSet productoResult = productoStatement.executeQuery();
  330.  
  331.             int codigoProducto = 0;
  332.             int cantidadProducto = 0;
  333.             if (productoResult.next()) {
  334.                 codigoProducto = productoResult.getInt("codigo");
  335.                 cantidadProducto = productoResult.getInt("cantidad");
  336.             } else {
  337.                 return false; // No se encontró el producto
  338.             }
  339.  
  340.             if (cantidad <= cantidadProducto) {
  341.                 // Restar la cantidad vendida del stock
  342.                 String actualizarStockQuery = "UPDATE productos SET cantidad = ? WHERE codigo = ?";
  343.                 PreparedStatement actualizarStockStatement = connection.prepareStatement(actualizarStockQuery);
  344.                 actualizarStockStatement.setInt(1, cantidadProducto - cantidad);
  345.                 actualizarStockStatement.setInt(2, codigoProducto);
  346.                 actualizarStockStatement.executeUpdate();
  347.  
  348.                 // Insertar la venta en la tabla de ventas
  349.                 String ventaQuery = "INSERT INTO ventas (cliente_nit, producto_codigo, cantidad, total) VALUES (?, ?, ?, ?)";
  350.                 PreparedStatement ventaStatement = connection.prepareStatement(ventaQuery);
  351.                 ventaStatement.setInt(1, nitCliente);
  352.                 ventaStatement.setInt(2, codigoProducto);
  353.                 ventaStatement.setInt(3, cantidad);
  354.                 ventaStatement.setFloat(4, total);
  355.  
  356.                 int rowsAffected = ventaStatement.executeUpdate();
  357.  
  358.                 return rowsAffected > 0; // Si se insertó con éxito, devuelve true
  359.             } else {
  360.                 // No hay suficiente cantidad en stock para la venta
  361.                 return false;
  362.             }
  363.         } catch (SQLException ex) {
  364.             ex.printStackTrace();
  365.             return false;
  366.         }
  367.     }
  368.  
  369.  
  370.    
  371.     public static float obtenerPrecioProductoDesdeBD(String productoSeleccionado) {
  372.         try (Connection connection = BaseDeDatos.getConnection()) {
  373.             String query = "SELECT precio FROM productos WHERE descripcion = ?";
  374.             PreparedStatement statement = connection.prepareStatement(query);
  375.             statement.setString(1, productoSeleccionado);
  376.             ResultSet resultSet = statement.executeQuery();
  377.  
  378.             if (resultSet.next()) {
  379.                 return resultSet.getFloat("precio");
  380.             } else {
  381.                 return 0.0f; // Valor por defecto en caso de que no se encuentre el producto
  382.             }
  383.         } catch (SQLException ex) {
  384.             ex.printStackTrace();
  385.             return 0.0f;
  386.         }
  387.     }
  388.  
  389.    
  390.  
  391.     private static void cargarClientesDesdeBD(JComboBox<String> comboBox) {
  392.         try (Connection connection = BaseDeDatos.getConnection()) {
  393.             String query = "SELECT nombre FROM clientes";
  394.             PreparedStatement statement = connection.prepareStatement(query);
  395.             ResultSet resultSet = statement.executeQuery();
  396.  
  397.             while (resultSet.next()) {
  398.                 String nombreCliente = resultSet.getString("nombre");
  399.                 comboBox.addItem(nombreCliente);
  400.             }
  401.         } catch (SQLException ex) {
  402.             ex.printStackTrace();
  403.         }
  404.     }
  405.  
  406.     private static void cargarProductosDesdeBD(JComboBox<String> comboBox) {
  407.         try (Connection connection = BaseDeDatos.getConnection()) {
  408.             String query = "SELECT descripcion FROM productos";
  409.             PreparedStatement statement = connection.prepareStatement(query);
  410.             ResultSet resultSet = statement.executeQuery();
  411.  
  412.             while (resultSet.next()) {
  413.                 String descripcionProducto = resultSet.getString("descripcion");
  414.                 comboBox.addItem(descripcionProducto);
  415.             }
  416.         } catch (SQLException ex) {
  417.             ex.printStackTrace();
  418.         }
  419.     }
  420.  
  421.  
  422.    
  423.    
  424.    
  425.    
  426.    
  427.    
  428.     private static void crearVentanaProductos() {
  429.         JFrame frame = new JFrame("Gestión de Productos");
  430.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  431.         frame.setSize(1200, 700);
  432.         JPanel panel = new JPanel();
  433.         frame.add(panel);
  434.         panel.setLayout(new BorderLayout());
  435.  
  436.         JPanel inputPanel = new JPanel();
  437.         inputPanel.setLayout(new GridLayout(7, 2));
  438.  
  439.         JLabel codigoLabel = new JLabel("Código:");
  440.         codigoField = new JTextField();
  441.         JLabel descripcionLabel = new JLabel("Descripción:");
  442.         descripcionField = new JTextField();
  443.         JLabel tipoLabel = new JLabel("Tipo:");
  444.         tipoField = new JTextField();
  445.         JLabel cantidadLabel = new JLabel("Cantidad:");
  446.         cantidadField = new JTextField();
  447.         JLabel precioLabel = new JLabel("Precio:");
  448.         precioField = new JTextField();
  449.  
  450.         inputPanel.add(codigoLabel);
  451.         inputPanel.add(codigoField);
  452.         inputPanel.add(descripcionLabel);
  453.         inputPanel.add(descripcionField);
  454.         inputPanel.add(tipoLabel);
  455.         inputPanel.add(tipoField);
  456.         inputPanel.add(cantidadLabel);
  457.         inputPanel.add(cantidadField);
  458.         inputPanel.add(precioLabel);
  459.         inputPanel.add(precioField);
  460.  
  461.         panel.add(inputPanel, BorderLayout.NORTH);
  462.  
  463.         productosTable = new JTable();
  464.         JScrollPane tableScrollPane = new JScrollPane(productosTable);
  465.         panel.add(tableScrollPane, BorderLayout.CENTER);
  466.  
  467.         JButton agregarButton = new JButton("Agregar");
  468.  
  469.         // Botones de "Regresar" y "Salir"
  470.         JButton regresarButton = new JButton("Regresar");
  471.         JButton salirButton = new JButton("Salir");
  472.  
  473.         // Panel para los botones "Agregar," "Regresar" y "Salir"
  474.         JPanel buttonPanel = new JPanel();
  475.         buttonPanel.add(agregarButton);
  476.         buttonPanel.add(regresarButton);
  477.         buttonPanel.add(salirButton);
  478.         panel.add(buttonPanel, BorderLayout.SOUTH);
  479.  
  480.         agregarButton.addActionListener(new ActionListener() {
  481.             @Override
  482.             public void actionPerformed(ActionEvent e) {
  483.                 int codigo = Integer.parseInt(codigoField.getText());
  484.                 String descripcion = descripcionField.getText();
  485.                 String tipo = tipoField.getText();
  486.                 int cantidad = Integer.parseInt(cantidadField.getText());
  487.                 float precio = Float.parseFloat(precioField.getText());
  488.  
  489.                 // Agregar aquí la lógica para agregar el producto en tu sistema
  490.                
  491.                 ViedoJuego videoJuego = new ViedoJuego(codigo, descripcion, tipo, cantidad, precio);
  492.                 videoJuego.agregarBD();
  493.  
  494.                 codigoField.setText("");
  495.                 descripcionField.setText("");
  496.                 tipoField.setText("");
  497.                 cantidadField.setText("");
  498.                 precioField.setText("");
  499.  
  500.                 actualizarListaProductos();
  501.             }
  502.  
  503.         });
  504.  
  505.         // Acción del botón "Regresar"
  506.         regresarButton.addActionListener(new ActionListener() {
  507.             @Override
  508.             public void actionPerformed(ActionEvent e) {
  509.                 frame.dispose();
  510.                 crearVentanaTienda();
  511.                 // Agrega aquí el código para regresar a la ventana anterior
  512.             }
  513.         });
  514.  
  515.         // Acción del botón "Salir"
  516.         salirButton.addActionListener(new ActionListener() {
  517.             @Override
  518.             public void actionPerformed(ActionEvent e) {
  519.                 System.exit(0); // Cierra la aplicación
  520.             }
  521.         });
  522.  
  523.         tableModel = new DefaultTableModel();
  524.         tableModel.addColumn("Código");
  525.         tableModel.addColumn("Descripción");
  526.         tableModel.addColumn("Tipo");
  527.         tableModel.addColumn("Cantidad");
  528.         tableModel.addColumn("Precio");
  529.  
  530.         // Asociar el modelo de tabla a la tabla
  531.         productosTable.setModel(tableModel);
  532.  
  533.         frame.setVisible(true);
  534.  
  535.         actualizarListaProductos();
  536.     }
  537.  
  538.    
  539.    
  540.    
  541.    
  542.    
  543.    
  544.    
  545.    
  546.  
  547.     private static void actualizarListaProductos() {
  548.         tableModel.setRowCount(0); // Limpiar la tabla antes de cargar los datos
  549.  
  550.         try (Connection connection = BaseDeDatos.getConnection()) {
  551.             Statement statement = connection.createStatement();
  552.             String query = "SELECT codigo, descripcion, tipo, cantidad, precio FROM productos";
  553.             ResultSet resultSet = statement.executeQuery(query);
  554.  
  555.             while (resultSet.next()) {
  556.                 int codigo = resultSet.getInt("codigo");
  557.                 String descripcion = resultSet.getString("descripcion");
  558.                 String tipo = resultSet.getString("tipo");
  559.                 int cantidad = resultSet.getInt("cantidad");
  560.                 float precio = resultSet.getFloat("precio");
  561.  
  562.                 // Agregar una fila al modelo de tabla
  563.                 tableModel.addRow(new Object[]{codigo, descripcion, tipo, cantidad, precio});
  564.             }
  565.         } catch (SQLException e) {
  566.             e.printStackTrace();
  567.         }
  568.     }
  569.  
  570.     private static void crearVentanaActualizarProducto() {
  571.         JFrame frame = new JFrame("Actualizar Producto");
  572.         frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // Cambia el comportamiento de cierre
  573.         frame.setSize(1200, 700);
  574.  
  575.         JPanel panel = new JPanel();
  576.         frame.add(panel);
  577.         panel.setLayout(new BorderLayout());
  578.  
  579.         JPanel inputPanel = new JPanel();
  580.         inputPanel.setLayout(new GridLayout(5, 2));
  581.  
  582.         JLabel codigoLabel = new JLabel("Código:");
  583.         JTextField codigoActualizarField = new JTextField();
  584.         JLabel descripcionLabel = new JLabel("Descripción:");
  585.         JTextField descripcionActualizarField = new JTextField();
  586.         JLabel tipoLabel = new JLabel("Tipo:");
  587.         JTextField tipoActualizarField = new JTextField();
  588.         JLabel cantidadLabel = new JLabel("Cantidad:");
  589.         JTextField cantidadActualizarField = new JTextField();
  590.         JLabel precioLabel = new JLabel("Precio:");
  591.         JTextField precioActualizarField = new JTextField();
  592.  
  593.         inputPanel.add(codigoLabel);
  594.         inputPanel.add(codigoActualizarField);
  595.         inputPanel.add(descripcionLabel);
  596.         inputPanel.add(descripcionActualizarField);
  597.         inputPanel.add(tipoLabel);
  598.         inputPanel.add(tipoActualizarField);
  599.         inputPanel.add(cantidadLabel);
  600.         inputPanel.add(cantidadActualizarField);
  601.         inputPanel.add(precioLabel);
  602.         inputPanel.add(precioActualizarField);
  603.  
  604.         panel.add(inputPanel, BorderLayout.NORTH);
  605.  
  606.         JPanel buttonPanel = new JPanel(); // Panel para los botones
  607.         JButton regresarButton = new JButton("Regresar");
  608.         JButton actualizarProductoButton = new JButton("Actualizar Producto");
  609.         JButton salirButton = new JButton("Salir"); // Botón para salir
  610.  
  611.         // Ajusta el tamaño de los botones (mismas dimensiones que en la ventana de "Ventas")
  612.         Dimension buttonSize = new Dimension(200, 100);
  613.         regresarButton.setPreferredSize(buttonSize);
  614.         actualizarProductoButton.setPreferredSize(buttonSize);
  615.         salirButton.setPreferredSize(buttonSize);
  616.  
  617.         buttonPanel.add(regresarButton);
  618.         buttonPanel.add(actualizarProductoButton);
  619.         buttonPanel.add(salirButton);
  620.         panel.add(buttonPanel, BorderLayout.SOUTH);
  621.  
  622.         actualizarProductoButton.addActionListener(new ActionListener() {
  623.             @Override
  624.             public void actionPerformed(ActionEvent e) {
  625.                 // Código para actualizar o agregar productos
  626.                 // ...
  627.                 int codigo = Integer.parseInt(codigoActualizarField.getText());
  628.                 String descripcion = descripcionActualizarField.getText();
  629.                 String tipo = tipoActualizarField.getText();
  630.                 int cantidad = Integer.parseInt(cantidadActualizarField.getText());
  631.                 float precio = Float.parseFloat(precioActualizarField.getText());
  632.  
  633.                 try (Connection connection = BaseDeDatos.getConnection()) {
  634.                     Statement statement = connection.createStatement();
  635.                     String query = "SELECT codigo FROM productos WHERE codigo = " + codigo;
  636.                     ResultSet resultSet = statement.executeQuery(query);
  637.  
  638.                     if (resultSet.next()) {
  639.                         // El producto ya existe, realizar la actualización
  640.                         String updateQuery = "UPDATE productos SET descripcion = ?, tipo = ?, cantidad = ?, precio = ? WHERE codigo = ?";
  641.                         PreparedStatement updateStatement = connection.prepareStatement(updateQuery);
  642.                         updateStatement.setString(1, descripcion);
  643.                         updateStatement.setString(2, tipo);
  644.                         updateStatement.setInt(3, cantidad);
  645.                         updateStatement.setFloat(4, precio);
  646.                         updateStatement.setInt(5, codigo);
  647.                         int rowsAffected = updateStatement.executeUpdate();
  648.  
  649.                         if (rowsAffected > 0) {
  650.                             JOptionPane.showMessageDialog(null, "Producto actualizado exitosamente", "Éxito", JOptionPane.INFORMATION_MESSAGE);
  651.                         } else {
  652.                             JOptionPane.showMessageDialog(null, "Error al actualizar el producto", "Error", JOptionPane.ERROR_MESSAGE);
  653.                         }
  654.                     } else {
  655.                         // El producto no existe, agregarlo
  656.                         String insertQuery = "INSERT INTO productos (codigo, descripcion, tipo, cantidad, precio) VALUES (?, ?, ?, ?, ?)";
  657.                         PreparedStatement insertStatement = connection.prepareStatement(insertQuery);
  658.                         insertStatement.setInt(1, codigo);
  659.                         insertStatement.setString(2, descripcion);
  660.                         insertStatement.setString(3, tipo);
  661.                         insertStatement.setInt(4, cantidad);
  662.                         insertStatement.setFloat(5, precio);
  663.                         int rowsAffected = insertStatement.executeUpdate();
  664.  
  665.                         if (rowsAffected > 0) {
  666.                             JOptionPane.showMessageDialog(null, "Producto agregado exitosamente", "Éxito", JOptionPane.INFORMATION_MESSAGE);
  667.                         } else {
  668.                             JOptionPane.showMessageDialog(null, "Error al agregar el producto", "Error", JOptionPane.ERROR_MESSAGE);
  669.                         }
  670.                     }
  671.                 } catch (SQLException ex) {
  672.                     ex.printStackTrace();
  673.                 }
  674.                 // Restablece los campos de entrada
  675.                 codigoActualizarField.setText("");
  676.                 descripcionActualizarField.setText("");
  677.                 tipoActualizarField.setText("");
  678.                 cantidadActualizarField.setText("");
  679.                 precioActualizarField.setText("");
  680.             }
  681.         });
  682.  
  683.         regresarButton.addActionListener(new ActionListener() {
  684.             @Override
  685.             public void actionPerformed(ActionEvent e) {
  686.                 frame.dispose(); // Cierra la ventana actual
  687.                 crearVentanaTienda();
  688.                 // Agrega aquí el código para regresar a la otra ventana
  689.             }
  690.         });
  691.  
  692.         salirButton.addActionListener(new ActionListener() {
  693.             @Override
  694.             public void actionPerformed(ActionEvent e) {
  695.                 System.exit(0); // Cierra la aplicación
  696.             }
  697.         });
  698.  
  699.         frame.setVisible(true);
  700.     }
  701.  
  702.  
  703.    
  704.     private static void crearVentanaConsultaEliminar() {
  705.         JFrame frame = new JFrame("Consulta y Eliminación de Productos");
  706.         frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // Cambia el comportamiento de cierre
  707.         frame.setSize(1200, 700);
  708.  
  709.         JPanel panel = new JPanel();
  710.         frame.add(panel);
  711.         panel.setLayout(new BorderLayout());
  712.  
  713.         JPanel inputPanel = new JPanel();
  714.         inputPanel.setLayout(new GridLayout(4, 2)); // Añade una fila adicional para los elementos de búsqueda
  715.  
  716.         JLabel buscarCodigoLabel = new JLabel("Buscar por Código:");
  717.         JLabel buscarDescripcionLabel = new JLabel("Buscar por Descripción:");
  718.         codigoFieldBusqueda = new JTextField();
  719.         descripcionFieldBusqueda = new JTextField();
  720.         JButton buscarButton = new JButton("Buscar");
  721.  
  722.         inputPanel.add(buscarCodigoLabel);
  723.         inputPanel.add(codigoFieldBusqueda);
  724.         inputPanel.add(buscarDescripcionLabel);
  725.         inputPanel.add(descripcionFieldBusqueda);
  726.         inputPanel.add(new JLabel()); // Espacio en blanco
  727.         inputPanel.add(new JLabel()); // Espacio en blanco
  728.         inputPanel.add(buscarButton);
  729.  
  730.         panel.add(inputPanel, BorderLayout.NORTH);
  731.  
  732.         // Inicializa el tableModel
  733.         tableModel = new DefaultTableModel();
  734.         tableModel.addColumn("Código");
  735.         tableModel.addColumn("Descripción");
  736.         tableModel.addColumn("Tipo");
  737.         tableModel.addColumn("Cantidad");
  738.         tableModel.addColumn("Precio");
  739.  
  740.         productosTable = new JTable(tableModel); // Asocia el modelo de tabla a la tabla
  741.         JScrollPane tableScrollPane = new JScrollPane(productosTable);
  742.         panel.add(tableScrollPane, BorderLayout.CENTER);
  743.  
  744.         JPanel buttonPanel = new JPanel(); // Panel para los botones
  745.         JButton eliminarButton = new JButton("Eliminar Producto");
  746.         JButton regresarButton = new JButton("Regresar");
  747.         JButton salirButton = new JButton("Salir");
  748.  
  749.         // Ajusta el tamaño de los botones (mismas dimensiones que en la ventana de "Actualizar Producto")
  750.         Dimension buttonSize = new Dimension(200, 100);
  751.         eliminarButton.setPreferredSize(buttonSize);
  752.         regresarButton.setPreferredSize(buttonSize);
  753.         salirButton.setPreferredSize(buttonSize);
  754.  
  755.         buttonPanel.add(eliminarButton);
  756.         buttonPanel.add(regresarButton);
  757.         buttonPanel.add(salirButton);
  758.         panel.add(buttonPanel, BorderLayout.SOUTH);
  759.  
  760.         buscarButton.addActionListener(new ActionListener() {
  761.             @Override
  762.             public void actionPerformed(ActionEvent e) {
  763.                 buscarProductos();
  764.             }
  765.         });
  766.  
  767.         eliminarButton.addActionListener(new ActionListener() {
  768.             @Override
  769.             public void actionPerformed(ActionEvent e) {
  770.                 eliminarProductoSeleccionado();
  771.             }
  772.         });
  773.  
  774.         regresarButton.addActionListener(new ActionListener() {
  775.             @Override
  776.             public void actionPerformed(ActionEvent e) {
  777.                 frame.dispose(); // Cierra la ventana actual
  778.                 crearVentanaTienda();
  779.                 // Agrega aquí el código para regresar a la otra ventana
  780.             }
  781.         });
  782.  
  783.         salirButton.addActionListener(new ActionListener() {
  784.             @Override
  785.             public void actionPerformed(ActionEvent e) {
  786.                 System.exit(0); // Cierra la aplicación
  787.             }
  788.         });
  789.  
  790.         frame.setVisible(true);
  791.     }
  792.  
  793.    
  794.     private static void crearVentanaClientes() {
  795.         JFrame frame = new JFrame("Gestión de Clientes");
  796.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  797.         frame.setSize(1200, 700);
  798.  
  799.         JPanel panel = new JPanel();
  800.         frame.add(panel);
  801.         panel.setLayout(new BorderLayout());
  802.  
  803.         JPanel inputPanel = new JPanel();
  804.         inputPanel.setLayout(new GridLayout(5, 2));
  805.  
  806.         JLabel nitLabel = new JLabel("NIT:");
  807.         JTextField nitField = new JTextField();
  808.         JLabel nombreLabel = new JLabel("Nombre:");
  809.         JTextField nombreField = new JTextField();
  810.         JLabel direccionLabel = new JLabel("Dirección:");
  811.         JTextField direccionField = new JTextField();
  812.         JLabel telefonoLabel = new JLabel("Teléfono:");
  813.         JTextField telefonoField = new JTextField();
  814.  
  815.         inputPanel.add(nitLabel);
  816.         inputPanel.add(nitField);
  817.         inputPanel.add(nombreLabel);
  818.         inputPanel.add(nombreField);
  819.         inputPanel.add(direccionLabel);
  820.         inputPanel.add(direccionField);
  821.         inputPanel.add(telefonoLabel);
  822.         inputPanel.add(telefonoField);
  823.  
  824.         // Botón "Registrar Cliente"
  825.         JButton registrarClienteButton = new JButton("Registrar Cliente");
  826.         inputPanel.add(new JLabel()); // Espacio en blanco
  827.         inputPanel.add(registrarClienteButton);
  828.  
  829.         panel.add(inputPanel, BorderLayout.NORTH);
  830.  
  831.         // Crear un DefaultTableModel para la tabla de clientes
  832.         DefaultTableModel tableModel = new DefaultTableModel();
  833.         tableModel.addColumn("NIT");
  834.         tableModel.addColumn("Nombre");
  835.         tableModel.addColumn("Dirección");
  836.         tableModel.addColumn("Teléfono");
  837.  
  838.         // Agregar una tabla para mostrar la lista de clientes
  839.         JTable clientesTable = new JTable(tableModel);
  840.         JScrollPane tableScrollPane = new JScrollPane(clientesTable);
  841.         panel.add(tableScrollPane, BorderLayout.CENTER);
  842.  
  843.         // Botón "Eliminar Cliente"
  844.         JButton eliminarClienteButton = new JButton("Eliminar Cliente");
  845.  
  846.         // Botones de "Regresar" y "Salir"
  847.         JButton regresarButton = new JButton("Regresar");
  848.         JButton salirButton = new JButton("Salir");
  849.  
  850.         // Panel para los botones "Eliminar Cliente," "Regresar" y "Salir"
  851.         JPanel buttonPanel = new JPanel();
  852.         buttonPanel.add(eliminarClienteButton);
  853.         buttonPanel.add(regresarButton);
  854.         buttonPanel.add(salirButton);
  855.         panel.add(buttonPanel, BorderLayout.SOUTH);
  856.  
  857.         // Agregar acción al botón "Registrar Cliente" para registrar un cliente
  858.         registrarClienteButton.addActionListener(new ActionListener() {
  859.             @Override
  860.             public void actionPerformed(ActionEvent e) {
  861.                 String nit = nitField.getText();
  862.                 String nombre = nombreField.getText();
  863.                 String direccion = direccionField.getText();
  864.                 String telefono = telefonoField.getText();
  865.  
  866.                 // Agregar aquí la lógica para registrar el cliente en tu sistema
  867.  
  868.                 nitField.setText("");
  869.                 nombreField.setText("");
  870.                 direccionField.setText("");
  871.                 telefonoField.setText("");
  872.  
  873.                 // Actualiza la lista de clientes después de agregar uno
  874.                 actualizarListaClientes(tableModel);
  875.             }
  876.         });
  877.  
  878.         // Agregar acción al botón "Eliminar Cliente" para eliminar un cliente seleccionado
  879.         eliminarClienteButton.addActionListener(new ActionListener() {
  880.             @Override
  881.             public void actionPerformed(ActionEvent e) {
  882.                 int filaSeleccionada = clientesTable.getSelectedRow();
  883.  
  884.                 if (filaSeleccionada == -1) {
  885.                     JOptionPane.showMessageDialog(null, "Por favor, selecciona un cliente para eliminar.", "Error", JOptionPane.ERROR_MESSAGE);
  886.                     return;
  887.                 }
  888.  
  889.                 String nit = (String) tableModel.getValueAt(filaSeleccionada, 0);
  890.  
  891.                 // Llama a un método para eliminar el cliente en la clase Cliente
  892.                 Cliente.eliminarCliente(nit);
  893.  
  894.                 // Actualiza la lista de clientes después de eliminar uno
  895.                 actualizarListaClientes(tableModel);
  896.             }
  897.         });
  898.  
  899.         // Acción del botón "Regresar"
  900.         regresarButton.addActionListener(new ActionListener() {
  901.             @Override
  902.             public void actionPerformed(ActionEvent e) {
  903.                 frame.dispose();
  904.                 crearVentanaTienda();
  905.                 // Agrega aquí el código para regresar a la ventana anterior
  906.             }
  907.         });
  908.  
  909.         // Acción del botón "Salir"
  910.         salirButton.addActionListener(new ActionListener() {
  911.             @Override
  912.             public void actionPerformed(ActionEvent e) {
  913.                 System.exit(0); // Cierra la aplicación
  914.             }
  915.         });
  916.  
  917.         // Cargar datos iniciales
  918.         actualizarListaClientes(tableModel);
  919.  
  920.         frame.setVisible(true);
  921.     }
  922.  
  923.  
  924.     // Actualiza la lista de clientes en el DefaultTableModel
  925.     private static void actualizarListaClientes(DefaultTableModel tableModel) {
  926.         // Limpia la tabla antes de agregar nuevos datos
  927.         tableModel.setRowCount(0);
  928.  
  929.         try (Connection connection = BaseDeDatos.getConnection()) {
  930.             Statement statement = connection.createStatement();
  931.             String query = "SELECT nit, nombre, direccion, telefono FROM clientes";
  932.             ResultSet resultSet = statement.executeQuery(query);
  933.  
  934.             while (resultSet.next()) {
  935.                 String nit = resultSet.getString("nit");
  936.                 String nombre = resultSet.getString("nombre");
  937.                 String direccion = resultSet.getString("direccion");
  938.                 String telefono = resultSet.getString("telefono");
  939.  
  940.                 // Agrega una nueva fila con los datos del cliente
  941.                 tableModel.addRow(new Object[]{nit, nombre, direccion, telefono});
  942.             }
  943.         } catch (SQLException ex) {
  944.             ex.printStackTrace();
  945.         }
  946.     }
  947.  
  948.  
  949.  
  950.    
  951.  
  952.  
  953.    
  954.    
  955.    
  956.    
  957.     private static void eliminarProductoSeleccionado() {
  958.         int filaSeleccionada = productosTable.getSelectedRow();
  959.        
  960.         if (filaSeleccionada == -1) {
  961.             JOptionPane.showMessageDialog(null, "Por favor, selecciona un producto para eliminar.", "Error", JOptionPane.ERROR_MESSAGE);
  962.             return; // No se seleccionó un producto, sal de la función.
  963.         }
  964.  
  965.         int codigo = (int) productosTable.getValueAt(filaSeleccionada, 0);
  966.  
  967.         try (Connection connection = BaseDeDatos.getConnection()) {
  968.             String deleteQuery = "DELETE FROM productos WHERE codigo = ?";
  969.             PreparedStatement deleteStatement = connection.prepareStatement(deleteQuery);
  970.             deleteStatement.setInt(1, codigo);
  971.             int rowsAffected = deleteStatement.executeUpdate();
  972.  
  973.             if (rowsAffected > 0) {
  974.                 JOptionPane.showMessageDialog(null, "Producto eliminado exitosamente.", "Éxito", JOptionPane.INFORMATION_MESSAGE);
  975.                 // Actualiza la lista de productos después de eliminar uno.
  976.                 actualizarListaProductos();
  977.             } else {
  978.                 JOptionPane.showMessageDialog(null, "Error al eliminar el producto.", "Error", JOptionPane.ERROR_MESSAGE);
  979.             }
  980.         } catch (SQLException ex) {
  981.             ex.printStackTrace();
  982.         }
  983.     }
  984.    
  985.    
  986.    
  987.     private static void buscarProductos() {
  988.         String codigoABuscar = codigoFieldBusqueda.getText().trim();
  989.         String descripcionABuscar = descripcionFieldBusqueda.getText().trim();
  990.  
  991.         String query;
  992.         if (!codigoABuscar.isEmpty()) {
  993.             // Si se proporciona un código, busca por código.
  994.             query = "SELECT codigo, descripcion, tipo, cantidad, precio FROM productos WHERE codigo = " + codigoABuscar;
  995.         } else if (!descripcionABuscar.isEmpty()) {
  996.             // Si se proporciona una descripción, busca por descripción (parcial).
  997.             query = "SELECT codigo, descripcion, tipo, cantidad, precio FROM productos WHERE descripcion LIKE '%" + descripcionABuscar + "%'";
  998.         } else {
  999.             JOptionPane.showMessageDialog(null, "Por favor, ingresa un código o una descripción para buscar.", "Advertencia", JOptionPane.WARNING_MESSAGE);
  1000.             return; // No hay términos de búsqueda, sal de la función.
  1001.         }
  1002.  
  1003.         tableModel.setRowCount(0); // Limpiar la tabla antes de cargar los resultados.
  1004.  
  1005.         try (Connection connection = BaseDeDatos.getConnection()) {
  1006.             Statement statement = connection.createStatement();
  1007.             ResultSet resultSet = statement.executeQuery(query);
  1008.  
  1009.             while (resultSet.next()) {
  1010.                 int codigo = resultSet.getInt("codigo");
  1011.                 String descripcion = resultSet.getString("descripcion");
  1012.                 String tipo = resultSet.getString("tipo");
  1013.                 int cantidad = resultSet.getInt("cantidad");
  1014.                 float precio = resultSet.getFloat("precio");
  1015.  
  1016.                 // Agregar una fila al modelo de tabla con los resultados de la búsqueda.
  1017.                 tableModel.addRow(new Object[]{codigo, descripcion, tipo, cantidad, precio});
  1018.             }
  1019.         } catch (SQLException ex) {
  1020.             ex.printStackTrace();
  1021.         }
  1022.     }
  1023.  
  1024. }
  1025.  
  1026. package pyfinal;
  1027.  
  1028. public abstract class producto {
  1029.     private int codigo;
  1030.     private String descripcion;
  1031.     private String tipo;
  1032.     private int cantidad;
  1033.     private float precio;
  1034.     public producto(int codigo, String descripcion, String tipo, int cantidad, float precio) {
  1035.         super();
  1036.         this.codigo = codigo;
  1037.         this.descripcion = descripcion;
  1038.         this.tipo = tipo;
  1039.         this.cantidad = cantidad;
  1040.         this.precio = precio;
  1041.     }
  1042.     public int getCodigo() {
  1043.         return codigo;
  1044.     }
  1045.     public void setCodigo(int codigo) {
  1046.         this.codigo = codigo;
  1047.     }
  1048.     public String getDescripcion() {
  1049.         return descripcion;
  1050.     }
  1051.     public void setDescripcion(String descripcion) {
  1052.         this.descripcion = descripcion;
  1053.     }
  1054.     public String getTipo() {
  1055.         return tipo;
  1056.     }
  1057.     public void setTipo(String tipo) {
  1058.         this.tipo = tipo;
  1059.     }
  1060.     public int getCantidad() {
  1061.         return cantidad;
  1062.     }
  1063.     public void setCantidad(int cantidad) {
  1064.         this.cantidad = cantidad;
  1065.     }
  1066.     public float getPrecio() {
  1067.         return precio;
  1068.     }
  1069.     public void setPrecio(float precio) {
  1070.         this.precio = precio;
  1071.     }
  1072. }
  1073.  
  1074. package pyfinal;
  1075.  
  1076. public interface Gestion {
  1077.     void agregarBD();
  1078.  
  1079. }
  1080. package pyfinal;
  1081.  
  1082. import java.sql.Connection;
  1083. import java.sql.PreparedStatement;
  1084. import java.sql.SQLException;
  1085.  
  1086.  
  1087. public class ViedoJuego extends producto implements Gestion {
  1088.    
  1089.     public ViedoJuego(int codigo, String descripcion, String tipo, int cantidad, float precio) {
  1090.         super(codigo, descripcion, tipo, cantidad, precio);
  1091.     }
  1092.  
  1093.  
  1094.      public void agregarBD() {
  1095.             try (Connection connection = BaseDeDatos.getConnection()) {
  1096.                 String query = "INSERT INTO productos (codigo, descripcion, tipo, cantidad, precio) VALUES (?, ?, ?, ?, ?)";
  1097.                 PreparedStatement preparedStatement = connection.prepareStatement(query);
  1098.                 preparedStatement.setInt(1, getCodigo());
  1099.                 preparedStatement.setString(2, getDescripcion());
  1100.                 preparedStatement.setString(3, getTipo());
  1101.                 preparedStatement.setInt(4, getCantidad());
  1102.                 preparedStatement.setFloat(5, getPrecio());
  1103.  
  1104.                 int rowsAffected = preparedStatement.executeUpdate();
  1105.  
  1106.                 if (rowsAffected > 0) {
  1107.                     //System.out.println("Producto agregado a la base de datos.");
  1108.                 } else {
  1109.                     //System.out.println("No se pudo agregar el producto a la base de datos.");
  1110.                 }
  1111.             } catch (SQLException e) {
  1112.                 e.printStackTrace();
  1113.             }
  1114.         }
  1115.  
  1116. }
  1117.  
  1118.  
  1119. package pyfinal;
  1120.  
  1121. import java.sql.Connection;
  1122. import java.sql.DriverManager;
  1123. import java.sql.SQLException;
  1124.  
  1125.  
  1126. public class BaseDeDatos {
  1127.    
  1128.     private static final String DB_URL = "jdbc:mariadb://localhost:3306/bdtienda";
  1129.     private static final String DB_USER = "root";
  1130.     private static final String DB_PASSWORD = "6321";
  1131.    
  1132.     public static Connection getConnection() throws SQLException {
  1133.         return DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
  1134.     }
  1135.  
  1136. }
  1137.  
  1138. package pyfinal;
  1139.  
  1140. import java.sql.Connection;
  1141. import java.sql.PreparedStatement;
  1142. import java.sql.SQLException;
  1143.  
  1144. import javax.swing.JOptionPane;
  1145.  
  1146. public class Cliente {
  1147.     private String nit;
  1148.     private String nombre;
  1149.     private String direccion;
  1150.     private String telefono;
  1151.     public Cliente(String nit, String nombre, String direccion, String telefono) {
  1152.         super();
  1153.         this.nit = nit;
  1154.         this.nombre = nombre;
  1155.         this.direccion = direccion;
  1156.         this.telefono = telefono;
  1157.     }
  1158.     public String getNit() {
  1159.         return nit;
  1160.     }
  1161.     public void setNit(String nit) {
  1162.         this.nit = nit;
  1163.     }
  1164.     public String getNombre() {
  1165.         return nombre;
  1166.     }
  1167.     public void setNombre(String nombre) {
  1168.         this.nombre = nombre;
  1169.     }
  1170.     public String getDireccion() {
  1171.         return direccion;
  1172.     }
  1173.     public void setDireccion(String direccion) {
  1174.         this.direccion = direccion;
  1175.     }
  1176.     public String getTelefono() {
  1177.         return telefono;
  1178.     }
  1179.     public void setTelefono(String telefono) {
  1180.         this.telefono = telefono;
  1181.     }
  1182.    
  1183.     public void registrarCliente() {
  1184.         try (Connection connection = BaseDeDatos.getConnection()) {
  1185.             String query = "INSERT INTO clientes (nit, nombre, direccion, telefono) VALUES (?, ?, ?, ?)";
  1186.             PreparedStatement preparedStatement = connection.prepareStatement(query);
  1187.             preparedStatement.setString(1, getNit());
  1188.             preparedStatement.setString(2, getNombre());
  1189.             preparedStatement.setString(3, getDireccion());
  1190.             preparedStatement.setString(4, getTelefono());
  1191.  
  1192.             int rowsAffected = preparedStatement.executeUpdate();
  1193.  
  1194.             if (rowsAffected > 0) {
  1195.                 //System.out.println("Producto agregado a la base de datos.");
  1196.             } else {
  1197.                 //System.out.println("No se pudo agregar el producto a la base de datos.");
  1198.             }
  1199.         } catch (SQLException e) {
  1200.             e.printStackTrace();
  1201.         }
  1202.     }
  1203.    
  1204.     public static void eliminarCliente(String nit) {
  1205.         try (Connection connection = BaseDeDatos.getConnection()) {
  1206.             String deleteQuery = "DELETE FROM clientes WHERE nit = ?";
  1207.             PreparedStatement deleteStatement = connection.prepareStatement(deleteQuery);
  1208.             deleteStatement.setString(1, nit);
  1209.             int rowsAffected = deleteStatement.executeUpdate();
  1210.  
  1211.             if (rowsAffected > 0) {
  1212.                 JOptionPane.showMessageDialog(null, "Cliente eliminado exitosamente.", "Éxito", JOptionPane.INFORMATION_MESSAGE);
  1213.             } else {
  1214.                 JOptionPane.showMessageDialog(null, "Error al eliminar el cliente.", "Error", JOptionPane.ERROR_MESSAGE);
  1215.             }
  1216.         } catch (SQLException ex) {
  1217.             ex.printStackTrace();
  1218.         }
  1219.     }
  1220.    
  1221.  
  1222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement