import java.util.InputMismatchException; import java.util.Scanner; class Cliente{ /* * Clase que crea un cliente y le asigna un numero random de visitas. * */ private String nombre; private String ruc; private int numVisita; public String getRuc() { return ruc; } public void setRuc(String ruc) { this.ruc = ruc; } public Cliente(String nombre, String ruc) { this.nombre = nombre; this.ruc = ruc; this.numVisita = (int)(Math.random()*125); } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public int getNumVisita() { return numVisita; } public void setNumVisita(int numVisita) { this.numVisita = numVisita; } public void addVisita(){ numVisita++; } } class Descuento{ /* * Clase que representa el descuento de cada cliente, tiene como paramentros el cliente del cual * es el descuento y define su descuento por su cantidad de visitas. */ private String tipo; private Cliente cliente; public String getTipo() { return tipo; } public void setTipo(String tipo) { this.tipo = tipo; } public Descuento(Cliente cliente){ this.cliente = cliente; if(cliente.getNumVisita()>=100){ this.tipo = "premium"; }else if(cliente.getNumVisita()>=50){ this.tipo = "oro"; }else if(cliente.getNumVisita()>=20){ this.tipo = "plata"; }else{ this.tipo = ""; } } } class Visita{ /* * Clase que administra cada visita de un cliente y provee un factura por visita. * */ private double gastoProductos; private double gastoServicios; private Descuento descuento; private Cliente cliente; public Visita(double gastoProductos, double gastoServicios, Cliente cliente, Descuento descuento){ this.gastoProductos = gastoProductos; this.gastoServicios = gastoServicios; this.cliente = cliente; this.descuento = descuento; } public void vistaCliente(){ cliente.addVisita(); System.out.println( "El cliente ha visitado el local "+ cliente.getNumVisita() + " veces." ); } public void calcularFactura(){ double montoACobrar; String extraInfo = ""; switch (descuento.getTipo()){ case "premium": montoACobrar = (gastoServicios+gastoProductos)*80/100; extraInfo = "Se aplico descuento premium"; break; case "oro": montoACobrar = (gastoServicios+gastoProductos)*85/100; extraInfo = "Se aplico descuento oro"; break; case "plata": montoACobrar = (gastoServicios+gastoProductos)*90/100; extraInfo = "Se aplico descuento plata"; break; default: montoACobrar = (gastoServicios+gastoProductos); } System.out.println("Salon de Belleza X\n Nombre y Apellido: "+cliente.getNombre() + "\nRUC: " + cliente.getRuc() + "\nMonto A Cobrar: " + montoACobrar + " $\n" + extraInfo); } public double getGastoProductos() { return gastoProductos; } public void setGastoProductos(double gastoProductos) { this.gastoProductos = gastoProductos; } public double getGastoServicios() { return gastoServicios; } public void setGastoServicios(double gastoServicios) { this.gastoServicios = gastoServicios; } } public class SalonBelleza { public static void main(String[] args){ Scanner in = new Scanner(System.in); String nombreCliente=""; String ruc = ""; double gastoProductos=0; double gastoServicios=0; try { System.out.println("Ingrese el nombre del cliente: "); nombreCliente = in.nextLine(); System.out.println("Ingrese el RUC del cliente: "); ruc = in.nextLine(); System.out.println("Ingrese los gastos en productos de la visita: ($)"); gastoProductos = in.nextDouble(); System.out.println("Ingrese los gastos en servicios de la visita: ($)"); gastoServicios = in.nextDouble(); }catch (InputMismatchException e) { System.out.println("Formato de entrada incorrecto"); } Cliente cliente = new Cliente(nombreCliente, ruc); Descuento descuento = new Descuento(cliente); Visita visita = new Visita(gastoProductos, gastoServicios, cliente, descuento); visita.vistaCliente(); visita.calcularFactura(); } }