avances semana 1
This commit is contained in:
parent
727d7ad123
commit
737a71134d
AdminTicket
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"java.project.referencedLibraries": [
|
||||||
|
"lib/**/*.jar",
|
||||||
|
"c:\\Users\\Tron7\\Documents\\DesarrolloSoftware\\VentaBoletos\\AdminTicket\\MVC\\modelo\\mysql-connector-j-8.3.0.jar"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
import modelo.Database;
|
||||||
|
import vista.VentaBoletosView;
|
||||||
|
import controlador.VentaBoletosController;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Database database = new Database();
|
||||||
|
VentaBoletosView vista = new VentaBoletosView();
|
||||||
|
VentaBoletosController controlador = new VentaBoletosController(vista, database);
|
||||||
|
|
||||||
|
vista.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,107 @@
|
||||||
|
package controlador;
|
||||||
|
|
||||||
|
import modelo.*;
|
||||||
|
import vista.VentaBoletosView;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.sql.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class VentaBoletosController {
|
||||||
|
private VentaBoletosView vista;
|
||||||
|
private Database database;
|
||||||
|
private List<JButton> botonesAsientos;
|
||||||
|
|
||||||
|
public VentaBoletosController(VentaBoletosView vista, Database database) {
|
||||||
|
this.vista = vista;
|
||||||
|
this.database = database;
|
||||||
|
this.botonesAsientos = new ArrayList<>();
|
||||||
|
|
||||||
|
cargarAsientos();
|
||||||
|
agregarListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cargarAsientos() {
|
||||||
|
try {
|
||||||
|
Connection conexion = database.getConexion();
|
||||||
|
Statement stmt = conexion.createStatement();
|
||||||
|
ResultSet rs = stmt.executeQuery("SELECT * FROM asientos");
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
int numeroAsiento = rs.getInt("numero_asiento");
|
||||||
|
boolean disponible = rs.getBoolean("disponible");
|
||||||
|
|
||||||
|
JButton btnAsiento = new JButton(String.valueOf(numeroAsiento));
|
||||||
|
btnAsiento.setEnabled(disponible);
|
||||||
|
btnAsiento.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
venderAsiento(numeroAsiento);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
botonesAsientos.add(btnAsiento);
|
||||||
|
vista.agregarBotonAsiento(btnAsiento);
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void venderAsiento(int numeroAsiento) {
|
||||||
|
try {
|
||||||
|
Connection conexion = database.getConexion();
|
||||||
|
PreparedStatement pstmt = conexion.prepareStatement("UPDATE asientos SET disponible = FALSE WHERE numero_asiento = ?");
|
||||||
|
pstmt.setInt(1, numeroAsiento);
|
||||||
|
pstmt.executeUpdate();
|
||||||
|
|
||||||
|
pstmt = conexion.prepareStatement("INSERT INTO ventas (fecha_venta, numero_asiento, precio) VALUES (NOW(), ?, ?)");
|
||||||
|
pstmt.setInt(1, numeroAsiento);
|
||||||
|
pstmt.setDouble(2, 100.00); // Precio fijo por simplicidad
|
||||||
|
pstmt.executeUpdate();
|
||||||
|
|
||||||
|
vista.mostrarMensaje("Boleto vendido: Asiento " + numeroAsiento);
|
||||||
|
actualizarBotones();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void actualizarBotones() {
|
||||||
|
for (JButton btn : botonesAsientos) {
|
||||||
|
btn.setEnabled(false);
|
||||||
|
}
|
||||||
|
vista.actualizarBotones();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void generarReporte() {
|
||||||
|
try {
|
||||||
|
Connection conexion = database.getConexion();
|
||||||
|
Statement stmt = conexion.createStatement();
|
||||||
|
ResultSet rs = stmt.executeQuery("SELECT * FROM ventas");
|
||||||
|
|
||||||
|
StringBuilder reporte = new StringBuilder("Reporte de Ventas:\n");
|
||||||
|
while (rs.next()) {
|
||||||
|
reporte.append("Fecha: ").append(rs.getTimestamp("fecha_venta")).append(", ");
|
||||||
|
reporte.append("Asiento: ").append(rs.getInt("numero_asiento")).append(", ");
|
||||||
|
reporte.append("Precio: $").append(rs.getDouble("precio")).append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
vista.mostrarMensaje(reporte.toString());
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void agregarListeners() {
|
||||||
|
vista.getBtnGenerarReporte().addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
generarReporte();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package modelo;
|
||||||
|
|
||||||
|
public class Asiento {
|
||||||
|
private int id;
|
||||||
|
private int numeroAsiento;
|
||||||
|
private boolean disponible;
|
||||||
|
|
||||||
|
public Asiento(int id, int numeroAsiento, boolean disponible) {
|
||||||
|
this.id = id;
|
||||||
|
this.numeroAsiento = numeroAsiento;
|
||||||
|
this.disponible = disponible;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNumeroAsiento() {
|
||||||
|
return numeroAsiento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDisponible() {
|
||||||
|
return disponible;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisponible(boolean disponible) {
|
||||||
|
this.disponible = disponible;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package modelo;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class Database {
|
||||||
|
private Connection conexion;
|
||||||
|
|
||||||
|
public Database() {
|
||||||
|
conectar();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void conectar() {
|
||||||
|
try {
|
||||||
|
conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/venta_boletos", "root", "4560");
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Connection getConexion() {
|
||||||
|
return conexion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void cerrarConexion() {
|
||||||
|
try {
|
||||||
|
if (conexion != null) {
|
||||||
|
conexion.close();
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package modelo;
|
||||||
|
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
|
public class Venta {
|
||||||
|
private int id;
|
||||||
|
private Timestamp fechaVenta;
|
||||||
|
private int numeroAsiento;
|
||||||
|
private double precio;
|
||||||
|
|
||||||
|
public Venta(int id, Timestamp fechaVenta, int numeroAsiento, double precio) {
|
||||||
|
this.id = id;
|
||||||
|
this.fechaVenta = fechaVenta;
|
||||||
|
this.numeroAsiento = numeroAsiento;
|
||||||
|
this.precio = precio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Timestamp getFechaVenta() {
|
||||||
|
return fechaVenta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNumeroAsiento() {
|
||||||
|
return numeroAsiento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getPrecio() {
|
||||||
|
return precio;
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,43 @@
|
||||||
|
package vista;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
public class VentaBoletosView extends JFrame {
|
||||||
|
private JPanel panelAsientos;
|
||||||
|
private JButton btnGenerarReporte;
|
||||||
|
|
||||||
|
public VentaBoletosView() {
|
||||||
|
super("Venta de Boletos");
|
||||||
|
setSize(600, 400);
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
panelAsientos = new JPanel(new GridLayout(10, 10));
|
||||||
|
btnGenerarReporte = new JButton("Generar Reporte de Ventas");
|
||||||
|
|
||||||
|
add(panelAsientos, BorderLayout.CENTER);
|
||||||
|
add(btnGenerarReporte, BorderLayout.SOUTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel getPanelAsientos() {
|
||||||
|
return panelAsientos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JButton getBtnGenerarReporte() {
|
||||||
|
return btnGenerarReporte;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void agregarBotonAsiento(JButton boton) {
|
||||||
|
panelAsientos.add(boton);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mostrarMensaje(String mensaje) {
|
||||||
|
JOptionPane.showMessageDialog(this, mensaje);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void actualizarBotones() {
|
||||||
|
panelAsientos.revalidate();
|
||||||
|
panelAsientos.repaint();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
CREATE DATABASE venta_boletos;
|
||||||
|
|
||||||
|
USE venta_boletos;
|
||||||
|
|
||||||
|
CREATE TABLE asientos (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
numero_asiento INT NOT NULL,
|
||||||
|
disponible BOOLEAN NOT NULL DEFAULT TRUE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE ventas (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
fecha_venta DATETIME NOT NULL,
|
||||||
|
numero_asiento INT NOT NULL,
|
||||||
|
precio DECIMAL(10, 2) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO asientos (numero_asiento, disponible) VALUES
|
||||||
|
(101, true),
|
||||||
|
(102, false),
|
||||||
|
(103, true),
|
||||||
|
(104, true),
|
||||||
|
(105, false),
|
||||||
|
(106, true),
|
||||||
|
(107, true),
|
||||||
|
(108, false),
|
||||||
|
(109, true),
|
||||||
|
(110, true);
|
Loading…
Reference in New Issue