UNIDADES TECNOLÓGICAS DE SANTANDER

Facultad de Ciencias Naturales e Ingenierías

Tecnología en Desarrollo de Sistemas Informáticos

Proyecto Integrador: Fundamentos de Programación Orientada a Objetos
Docente: Ing. Leydi Johana Polo Amador
Semestre: 2025-2 - Bucaramanga

📋 Introducción al Proyecto

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.

👥

Gestión de Clientes

Registro y consulta de información de clientes

📅

Reservas

Gestión completa de reservas y horarios

💰

Cálculo de Costos

Cálculo automático con promociones

📊

Exportación

Exportación de datos a formato CSV

🏗️ Arquitectura del Sistema

El sistema está construido utilizando los principios de Programación Orientada a Objetos:

Encapsulamiento

Todos los componentes y datos están encapsulados en la clase FormularioPlatop

Herencia

La clase principal hereda de JFrame para reutilizar funcionalidad

Manejo de Eventos

Sistema responsivo mediante ActionListener y eventos

Estructura Principal de la Clase

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
    }
}

⚙️ Componentes de la Interfaz

🖼️ Ventana Principal

JFrame con título "PLATOP - Sistema de Reservas de Restaurantes", tamaño 1000x600 píxeles, centrada en pantalla.

📝 Campos de Texto

JTextField para nombre del cliente y teléfono. JTextArea para observaciones con JScrollPane.

📋 Listas Desplegables

JComboBox para restaurantes, fechas, horas y tipos de mesa con opciones predefinidas.

🔢 Control Numérico

JSpinner para número de personas (1-20), valor por defecto: 2 personas.

✅ Casillas de Verificación

JCheckBox para promociones y JRadioButton para métodos de pago (Efectivo/Tarjeta).

📊 Tabla de Datos

JTable con DefaultTableModel para mostrar reservas existentes.

🔧 Métodos Principales

consultarCliente()

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.

calcularCosto()

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.

agregarReserva()

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.

exportarCSV()

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.

🔄 Flujo de Trabajo

1

Consulta del Cliente

El usuario ingresa o consulta los datos del cliente

2

Selección de Parámetros

Se elige restaurante, fecha, hora, número de personas y tipo de mesa

3

Cálculo de Costo

El sistema calcula automáticamente el costo considerando promociones

4

Confirmación de Reserva

Se agrega la reserva a la tabla principal del sistema

5

Exportación (Opcional)

Las reservas pueden exportarse a CSV para reporting

👥 Información del Equipo

UNIDADES TECNOLÓGICAS DE SANTANDER Tecnología en Desarrollo de Sistemas Informáticos

👩‍🏫 Docente

Ingeniera Leydi Johana Polo Amador

Fundamentos de Programación Orientada a Objetos

Proyecto Integrador - 2025-2

Integrantes del Equipo:

DJ
Danna Jisseth Bohorquez

TI 1100956711

KR
Kevin Daniel Rueda Perez

CC 1097496106

OS
Oscar Steven Serrano Jaimes

CC 1097489776

AR
Andres Santiago Rodriguez Camacho

CC 1096538623

🖼️ Galería del Proyecto

Capturas de pantalla del sistema PLATOP en funcionamiento: