Facultad de Ciencias Naturales e Ingenierías
Tecnología en Desarrollo de Sistemas Informáticos
PLATOP es un sistema de gestión de reservas para restaurantes desarrollado en Java utilizando programación orientada a objetos y la librería Swing para la interfaz gráfica. El sistema permite gestionar reservas de manera eficiente, calcular costos y exportar datos.
Registro y consulta de información de clientes
Gestión completa de reservas y horarios
Cálculo automático con promociones
Exportación de datos a formato CSV
El sistema está construido utilizando los principios de Programación Orientada a Objetos:
Todos los componentes y datos están encapsulados en la clase FormularioPlatop
La clase principal hereda de JFrame para reutilizar funcionalidad
Sistema responsivo mediante ActionListener y eventos
public class FormularioPlatop extends JFrame {
// Componentes de la interfaz
private JTextField txtCliente, txtTelefono;
private JComboBox<String> cbRestaurante, cbFecha, cbHora, cbMesa;
private JSpinner spPersonas;
private JCheckBox chkPromo;
private JRadioButton rbEfectivo, rbTarjeta;
private JTextArea taObs;
private JTable tabla;
private DefaultTableModel modeloTabla;
private JButton btnAgregar, btnExportar, btnConsultar, btnCalcular, btnVista;
public FormularioPlatop() {
// Constructor que inicializa la interfaz
setTitle("PLATOP - Sistema de Reservas de Restaurantes");
setSize(1000, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// ... más configuración
}
}
JFrame con título "PLATOP - Sistema de Reservas de Restaurantes", tamaño 1000x600 píxeles, centrada en pantalla.
JTextField para nombre del cliente y teléfono. JTextArea para observaciones con JScrollPane.
JComboBox para restaurantes, fechas, horas y tipos de mesa con opciones predefinidas.
JSpinner para número de personas (1-20), valor por defecto: 2 personas.
JCheckBox para promociones y JRadioButton para métodos de pago (Efectivo/Tarjeta).
JTable con DefaultTableModel para mostrar reservas existentes.
private void consultarCliente() {
String nombre = JOptionPane.showInputDialog(this,
"Ingrese el nombre del cliente:");
if (nombre != null && !nombre.trim().isEmpty()) {
txtCliente.setText(nombre);
JOptionPane.showMessageDialog(this,
"Cliente registrado: " + nombre);
}
}
Propósito: Busca y registra clientes mediante cuadros de diálogo.
private void calcularCosto() {
int personas = (Integer) spPersonas.getValue();
double costoBase = 50000;
double subtotal = personas * costoBase;
if (chkPromo.isSelected()) subtotal *= 0.9;
JOptionPane.showMessageDialog(this,
"Costo estimado de la reserva: $" + subtotal);
}
Propósito: Calcula costo total aplicando 10% de descuento por promoción.
private void agregarReserva() {
String cliente = txtCliente.getText();
String tel = txtTelefono.getText();
String restaurante = (String) cbRestaurante.getSelectedItem();
String fecha = (String) cbFecha.getSelectedItem();
String hora = (String) cbHora.getSelectedItem();
int personas = (Integer) spPersonas.getValue();
String mesa = (String) cbMesa.getSelectedItem();
String promo = chkPromo.isSelected() ? "Sí" : "No";
String pago = rbEfectivo.isSelected() ? "Efectivo" :
rbTarjeta.isSelected() ? "Tarjeta" : "-";
double costo = personas * 50000;
if (chkPromo.isSelected()) costo *= 0.9;
modeloTabla.addRow(new Object[]{cliente, tel,
restaurante, fecha, hora, personas, mesa, promo, pago, costo});
}
Propósito: Agrega nueva reserva a la tabla con todos los datos recopilados.
private void exportarCSV() {
JFileChooser chooser = new JFileChooser();
chooser.setSelectedFile(new File("reservas_PLATOP.csv"));
if (chooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
File archivo = chooser.getSelectedFile();
try (PrintWriter pw = new PrintWriter(archivo)) {
// Escribe encabezados y datos en formato CSV
for (int i = 0; i < modeloTabla.getColumnCount(); i++) {
pw.print(modeloTabla.getColumnName(i));
if (i < modeloTabla.getColumnCount() - 1) pw.print(",");
}
pw.println();
// ... proceso de escritura de datos
} catch (IOException e) {
JOptionPane.showMessageDialog(this,
"Error al exportar archivo: " + e.getMessage());
}
}
}
Propósito: Exporta todas las reservas a archivo CSV para backup y análisis.
El usuario ingresa o consulta los datos del cliente
Se elige restaurante, fecha, hora, número de personas y tipo de mesa
El sistema calcula automáticamente el costo considerando promociones
Se agrega la reserva a la tabla principal del sistema
Las reservas pueden exportarse a CSV para reporting
Fundamentos de Programación Orientada a Objetos
Proyecto Integrador - 2025-2
TI 1100956711
CC 1097496106
CC 1097489776
CC 1096538623
Capturas de pantalla del sistema PLATOP en funcionamiento: