cambios de Aldo

This commit is contained in:
Tu Nombre 2025-03-02 14:51:45 -06:00
parent eb21517e43
commit 7bd8d9c651
8 changed files with 424 additions and 0 deletions

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>ticketCine</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>23</maven.compiler.release>
</properties>
<dependencies>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<mainClass>com.mycompany.ticketcine.MainApp</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,53 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.ticketcine;
public class Asiento {
private int id;
private int idSala;
private int numeroAsiento;
private String estado;
// Constructor
public Asiento(int id, int idSala, int numeroAsiento, String estado) {
this.id = id;
this.idSala = idSala;
this.numeroAsiento = numeroAsiento;
this.estado = estado;
}
// Getters y Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getIdSala() {
return idSala;
}
public void setIdSala(int idSala) {
this.idSala = idSala;
}
public int getNumeroAsiento() {
return numeroAsiento;
}
public void setNumeroAsiento(int numeroAsiento) {
this.numeroAsiento = numeroAsiento;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
}

View File

@ -0,0 +1,165 @@
package com.mycompany.ticketcine;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
public class CompraBoletosApp {
private JFrame frame;
private JComboBox<String> peliculasComboBox;
private JComboBox<String> salasComboBox;
private JPanel asientosPanel;
private Map<Integer, JButton> asientosBotones;
public CompraBoletosApp() {
frame = new JFrame("Compra de Boletos");
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
JPanel topPanel = new JPanel();
peliculasComboBox = new JComboBox<>();
salasComboBox = new JComboBox<>();
topPanel.add(peliculasComboBox);
topPanel.add(salasComboBox);
frame.add(topPanel, BorderLayout.NORTH);
asientosPanel = new JPanel(new GridLayout(5, 5, 5, 5));
frame.add(asientosPanel, BorderLayout.CENTER);
cargarPeliculas();
cargarSalas();
salasComboBox.addActionListener(e -> cargarAsientos());
frame.setVisible(true);
}
private void cargarPeliculas() {
try (Connection connection = DatabaseConnection.getConnection()) {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT nombre FROM peliculas");
while (resultSet.next()) {
peliculasComboBox.addItem(resultSet.getString("nombre"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private void cargarSalas() {
try (Connection connection = DatabaseConnection.getConnection()) {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT nombre FROM salas");
while (resultSet.next()) {
salasComboBox.addItem(resultSet.getString("nombre"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private void cargarAsientos() {
asientosPanel.removeAll();
asientosBotones = new HashMap<>();
String salaSeleccionada = (String) salasComboBox.getSelectedItem();
if (salaSeleccionada != null) {
try (Connection connection = DatabaseConnection.getConnection()) {
int idSala = obtenerIdSala(connection, salaSeleccionada);
String query = "SELECT id_asiento, numero_asiento, estado FROM asientos WHERE id_sala = ?";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setInt(1, idSala);
try (ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
int idAsiento = resultSet.getInt("id_asiento");
int numeroAsiento = resultSet.getInt("numero_asiento");
boolean disponible = "disponible".equals(resultSet.getString("estado"));
JButton asientoButton = new JButton(String.valueOf(numeroAsiento));
asientoButton.setEnabled(disponible);
asientoButton.addActionListener(e -> comprarBoleto(idAsiento, numeroAsiento));
asientosBotones.put(idAsiento, asientoButton);
asientosPanel.add(asientoButton);
}
}
}
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(frame, "Error al cargar los asientos: " + e.getMessage());
}
}
asientosPanel.revalidate();
asientosPanel.repaint();
}
private void comprarBoleto(int idAsiento, int numeroAsiento) {
String peliculaSeleccionada = (String) peliculasComboBox.getSelectedItem();
String salaSeleccionada = (String) salasComboBox.getSelectedItem();
if (peliculaSeleccionada != null && salaSeleccionada != null) {
try (Connection connection = DatabaseConnection.getConnection()) {
int idPelicula = obtenerIdPelicula(connection, peliculaSeleccionada);
String query = "INSERT INTO ventas_boletos (id_asiento, id_pelicula) VALUES (?, ?)";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setInt(1, idAsiento);
statement.setInt(2, idPelicula);
statement.executeUpdate();
}
String updateQuery = "UPDATE asientos SET estado = 'vendido' WHERE id_asiento = ?";
try (PreparedStatement updateStatement = connection.prepareStatement(updateQuery)) {
updateStatement.setInt(1, idAsiento);
updateStatement.executeUpdate();
}
JOptionPane.showMessageDialog(frame, "Boleto comprado para " + peliculaSeleccionada +
" en " + salaSeleccionada + " (Asiento: " + numeroAsiento + ")");
JButton asientoButton = asientosBotones.get(idAsiento);
if (asientoButton != null) {
asientoButton.setEnabled(false);
}
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(frame, "Error al comprar el boleto: " + e.getMessage());
}
} else {
JOptionPane.showMessageDialog(frame, "Por favor, selecciona una película y sala.");
}
}
private int obtenerIdPelicula(Connection connection, String nombrePelicula) throws SQLException {
String query = "SELECT id_pelicula FROM peliculas WHERE nombre = ?";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setString(1, nombrePelicula);
try (ResultSet resultSet = statement.executeQuery()) {
if (resultSet.next()) {
return resultSet.getInt("id_pelicula");
} else {
throw new SQLException("No se encontró la película: " + nombrePelicula);
}
}
}
}
private int obtenerIdSala(Connection connection, String nombreSala) throws SQLException {
String query = "SELECT id_sala FROM salas WHERE nombre = ?";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setString(1, nombreSala);
try (ResultSet resultSet = statement.executeQuery()) {
if (resultSet.next()) {
return resultSet.getInt("id_sala");
} else {
throw new SQLException("No se encontró la sala: " + nombreSala);
}
}
}
}
}

View File

@ -0,0 +1,15 @@
package com.mycompany.ticketcine;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnection {
private static final String URL = "jdbc:mysql://localhost:3306/cine";
private static final String USER = "root";
private static final String PASSWORD = "qwerty";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}

View File

@ -0,0 +1,12 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.ticketcine;
public class MainApp {
public static void main(String[] args) {
// Inicializa la aplicación de compra de boletos
new CompraBoletosApp();
}
}

View File

@ -0,0 +1,49 @@
package com.mycompany.ticketcine;
public class Pelicula {
private int id;
private String nombre;
private int duracion;
private String genero;
// Constructor
public Pelicula(int id, String nombre, int duracion, String genero) {
this.id = id;
this.nombre = nombre;
this.duracion = duracion;
this.genero = genero;
}
// Getters y Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getDuracion() {
return duracion;
}
public void setDuracion(int duracion) {
this.duracion = duracion;
}
public String getGenero() {
return genero;
}
public void setGenero(String genero) {
this.genero = genero;
}
}

View File

@ -0,0 +1,43 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.ticketcine;
public class Sala {
private int id;
private String nombre;
private int capacidad;
// Constructor
public Sala(int id, String nombre, int capacidad) {
this.id = id;
this.nombre = nombre;
this.capacidad = capacidad;
}
// Getters y Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getCapacidad() {
return capacidad;
}
public void setCapacidad(int capacidad) {
this.capacidad = capacidad;
}
}

View File

@ -0,0 +1,53 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.ticketcine;
public class VentaBoleto {
private int id;
private int idAsiento;
private int idPelicula;
private String fechaVenta;
// Constructor
public VentaBoleto(int id, int idAsiento, int idPelicula, String fechaVenta) {
this.id = id;
this.idAsiento = idAsiento;
this.idPelicula = idPelicula;
this.fechaVenta = fechaVenta;
}
// Getters y Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getIdAsiento() {
return idAsiento;
}
public void setIdAsiento(int idAsiento) {
this.idAsiento = idAsiento;
}
public int getIdPelicula() {
return idPelicula;
}
public void setIdPelicula(int idPelicula) {
this.idPelicula = idPelicula;
}
public String getFechaVenta() {
return fechaVenta;
}
public void setFechaVenta(String fechaVenta) {
this.fechaVenta = fechaVenta;
}
}