Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

ComprasJR

import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner;

public class Pagos { private static final double IVA = 0.16; private static List platosSeleccionados = new ArrayList<>(); private static double saldoTarjeta = 0; private static String metodoPago = "";

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    boolean continuar = true;

    while (continuar) {
        mostrarMenuPrincipal();
        int opcion = scanner.nextInt();
        scanner.nextLine(); // Limpiar buffer

        switch (opcion) {
            case 1:
                mostrarMenuDesayuno(scanner);
                break;
            case 2:
                mostrarMenuAlmuerzo(scanner);
                break;
            case 3:
                mostrarMenuComida(scanner);
                break;
            case 0:
                continuar = false;
                break;
            default:
                System.out.println("Opción no válida. Intente nuevamente.");
        }

        if (continuar && opcion >= 1 && opcion <= 3) {
            System.out.print("¿Desea realizar otra compra? (s/n): ");
            String respuesta = scanner.nextLine();
            if (respuesta.equalsIgnoreCase("n")) {
                continuar = false;
            }
        }
    }

    if (!platosSeleccionados.isEmpty()) {
        procesarPago(scanner);
        mostrarFactura();
    } else {
        System.out.println("Gracias por su visita. No se realizaron compras.");
    }

    scanner.close();
}

private static void mostrarMenuPrincipal() {
    System.out.println("\n=== MENÚ PRINCIPAL ===");
    System.out.println("1. Desayuno");
    System.out.println("2. Almuerzo");
    System.out.println("3. Comida");
    System.out.println("0. Salir");
    System.out.print("Seleccione una opción: ");
}

private static void mostrarMenuDesayuno(Scanner scanner) {
    System.out.println("\n=== MENÚ DESAYUNO ===");
    System.out.println("1. Café + Pan tostado - $3.50");
    System.out.println("2. Jugo + Sandwich - $4.00");
    System.out.println("3. Fruta + Yogur - $2.50");
    System.out.println("4. Huevos revueltos - $5.00");
    System.out.print("Seleccione un plato: ");

    int opcion = scanner.nextInt();
    switch (opcion) {
        case 1:
            platosSeleccionados.add(new Plato("Café + Pan tostado", 3.50));
            break;
        case 2:
            platosSeleccionados.add(new Plato("Jugo + Sandwich", 4.00));
            break;
        case 3:
            platosSeleccionados.add(new Plato("Fruta + Yogur", 2.50));
            break;
        case 4:
            platosSeleccionados.add(new Plato("Huevos revueltos", 5.00));
            break;
        default:
            System.out.println("Opción no válida.");
    }
}

private static void mostrarMenuAlmuerzo(Scanner scanner) {
    System.out.println("\n=== MENÚ ALMUERZO ===");
    System.out.println("1. Sopa + Segundo - $6.50");
    System.out.println("2. Ensalada + Proteína - $7.00");
    System.out.println("3. Pasta - $5.50");
    System.out.println("4. Menú del día - $8.00");
    System.out.print("Seleccione un plato: ");

    int opcion = scanner.nextInt();
    switch (opcion) {
        case 1:
            platosSeleccionados.add(new Plato("Sopa + Segundo", 6.50));
            break;
        case 2:
            platosSeleccionados.add(new Plato("Ensalada + Proteína", 7.00));
            break;
        case 3:
            platosSeleccionados.add(new Plato("Pasta", 5.50));
            break;
        case 4:
            platosSeleccionados.add(new Plato("Menú del día", 8.00));
            break;
        default:
            System.out.println("Opción no válida.");
    }
}

private static void mostrarMenuComida(Scanner scanner) {
    System.out.println("\n=== MENÚ COMIDA ===");
    System.out.println("1. Carne con papas - $9.50");
    System.out.println("2. Pescado con arroz - $8.50");
    System.out.println("3. Pollo a la parrilla - $7.50");
    System.out.println("4. Menú vegetariano - $6.50");
    System.out.print("Seleccione un plato: ");

    
3 respuestas

int opcion = scanner.nextInt(); switch (opcion) { case 1: platosSeleccionados.add(new Plato("Carne con papas", 9.50)); break; case 2: platosSeleccionados.add(new Plato("Pescado con arroz", 8.50)); break; case 3: platosSeleccionados.add(new Plato("Pollo a la parrilla", 7.50)); break; case 4: platosSeleccionados.add(new Plato("Menú vegetariano", 6.50)); break; default: System.out.println("Opción no válida."); } }

private static void procesarPago(Scanner scanner) {
    System.out.println("\n=== MÉTODO DE PAGO ===");
    System.out.print("Seleccione método de pago (1. Débito / 2. Crédito): ");
    int metodo = scanner.nextInt();
    metodoPago = (metodo == 1) ? "Débito" : "Crédito";

    System.out.print("Ingrese el límite de la tarjeta (valor numérico): ");
    saldoTarjeta = scanner.nextDouble();

    double total = calcularTotal();

    if (saldoTarjeta < total) {
        System.out.println("Saldo insuficiente. No se puede completar la compra.");
        platosSeleccionados.clear();
    } else {
        saldoTarjeta -= total;
        System.out.println("Pago procesado con éxito.");
    }
}

private static double calcularTotal() {
    double subtotal = platosSeleccionados.stream().mapToDouble(Plato::getPrecio).sum();
    return subtotal * (1 + IVA);
}

private static void mostrarFactura() {
    System.out.println("\n=== FACTURA ===");
    System.out.println("Método de pago: " + metodoPago);

    // Ordenar platos por precio de mayor a menor
    platosSeleccionados.sort(Comparator.comparing(Plato::getPrecio).reversed());

    System.out.println("\nPlatos seleccionados:");
    for (Plato plato : platosSeleccionados) {
        System.out.printf("- %s: $%.2f%n", plato.getNombre(), plato.getPrecio());
    }

    double subtotal = platosSeleccionados.stream().mapToDouble(Plato::getPrecio).sum();
    double iva = subtotal * IVA;
    double total = subtotal + iva;

    System.out.printf("\nSubtotal: $%.2f%n", subtotal);
    System.out.printf("IVA (16%%): $%.2f%n", iva);
    System.out.printf("Total: $%.2f%n", total);
    System.out.printf("Saldo restante en tarjeta: $%.2f%n", saldoTarjeta);

    System.out.println("\n=== GRACIAS POR SU COMPRA ===");
}

static class Plato {
    private String nombre;
    private double precio;

    public Plato(String nombre, double precio) {
        this.nombre = nombre;
        this.precio = precio;
    }

    public String getNombre() {
        return nombre;
    }

    public double getPrecio() {
        return precio;
    }
}

}

Menús por franja horaria: Desayuno, almuerzo y comida con diferentes opciones cada uno.

Sistema de pago: Permite seleccionar entre débito y crédito.

Validación de saldo: Verifica si el saldo es suficiente para la compra.

Factura detallada: Muestra:

Lista de platos ordenados por precio (de mayor a menor)

Subtotal

IVA (16%)

Total a pagar

Saldo restante en la tarjeta

Control de flujo: Permite realizar múltiples compras antes de finalizar.

Manejo de opciones: Con opción para salir del programa.

Cómo usar el programa: Seleccione una franja horaria (1-3) o 0 para salir.

Elija un plato del menú mostrado.

Decida si desea continuar comprando o finalizar.

Al finalizar, seleccione método de pago e ingrese el límite de la tarjeta.

El programa mostrará la factura con todos los detalles o un mensaje de saldo insuficiente si aplica.

Hola John, espero que estés bien

Gracias por compartir tu código. Parece que estás trabajando en un sistema de pedidos de comida en Java. Tu código se ve bastante bien estructurado, pero noto que falta la implementación de algunas partes, como la clase Plato y el método procesarPago y mostrarFactura. Asegúrate de que estas partes estén bien definidas para que el programa funcione correctamente.

Aquí tienes algunas sugerencias:

  1. Clase Plato: Asegúrate de que esta clase tenga al menos dos propiedades: el nombre del plato y su precio. Algo como esto:

    public class Plato {
        private String nombre;
        private double precio;
    
        public Plato(String nombre, double precio) {
            this.nombre = nombre;
            this.precio = precio;
        }
    
        public String getNombre() {
            return nombre;
        }
    
        public double getPrecio() {
            return precio;
        }
    }
    
  2. Método procesarPago: Este método debería calcular el total a pagar, incluyendo el IVA, y verificar si el saldo de la tarjeta es suficiente para cubrir el costo. Aquí tienes un ejemplo básico:

    private static void procesarPago(Scanner scanner) {
        double total = 0;
        for (Plato plato : platosSeleccionados) {
            total += plato.getPrecio();
        }
        total += total * IVA; // Añadir IVA
    
        System.out.println("Total a pagar (con IVA): $" + total);
        System.out.print("Ingrese el saldo de su tarjeta: ");
        saldoTarjeta = scanner.nextDouble();
    
        if (saldoTarjeta >= total) {
            System.out.println("Pago realizado con éxito.");
        } else {
            System.out.println("Saldo insuficiente.");
        }
    }
    
  3. Método mostrarFactura: Aquí podrías mostrar un resumen de los platos seleccionados y el total a pagar. Un ejemplo podría ser:

    private static void mostrarFactura() {
        System.out.println("\n=== FACTURA ===");
        for (Plato plato : platosSeleccionados) {
            System.out.println(plato.getNombre() + " - $" + plato.getPrecio());
        }
        double total = platosSeleccionados.stream().mapToDouble(Plato::getPrecio).sum();
        total += total * IVA;
        System.out.println("Total (con IVA): $" + total);
    }
    

Espero que estas sugerencias te sean útiles para completar tu proyecto. ¡Bons estudios!