Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package maquinaExpendedora;
- import java.util.Scanner;
- public class Main
- {
- public static void main(String[] args)
- {
- /*
- * Nuestras máquinas trabajan con clientes que introducen dinero en ella y luego le solicitan que imprima un boleto.
- * La máquina mantiene un registro de la cantidad de dinero que ha recaudado durante todo su funcionamiento.
- * En la vida real, es frecuente que la máquina expendedora de boletos ofrezca un conjunto de boletos de diferentes tipos
- * y los clientes escogen entre ellos, sólo el que desean. Nuestra máquina simplificada imprime sólo boletos de un único precio.
- * Resulta significativamente más complicado programar una clase que sea capaz de emitir boletos de diferentes valores que si tienen un único precio.
- * Por otra parte, con programación orientada a objetos es muy fácil crear varias instancias de la clase,
- * cada una con su propio precio, para cumplir con la necesidad de diferentes tipos de boletos.
- *
- * 1) La máquina expendedora no emite boletos automáticamente. Modifique el comportamiento para que una
- * vez que se ingreso el saldo suficiente, se imprima. O puede realizar validaciones en imprimirBoleto.
- * 2) Añada un campo más del tipo boolean llamado estado. Además sus métodos de acceso y modificación.
- * 3) Agregue el método ponerPrecio.
- * 4) Agregue un constructor de la MaquinaDeBoletos de modo que no tenga ningún parámetro. En su lugar,
- * el precio de los boletos debiera fijarse en 10 pesos
- * 5) Mejore el método ingresarDinero de modo que no permita el ingreso de números negativos. Trate de
- * no acoplar vista (impresiones de pantalla) al método. Sea creativo.
- * 6) Agregue un campo estático que cuente la cantidad de boletos impresos. Agregue un metodo para
- * conocer esa cantidad.
- * 7) Implemente un método vaciar, que simule el efecto de quitar todo el dinero de la máquina. Este
- * método debe tener un tipo de retorno void y su cuerpo simplemente pone en cero el valor del campo total.
- * ¿Necesita tener algún parámetro? Pruebe su método creando una máquina, ingrese algo de dinero, emita
- * algunos boletos, verifique el total y luego vacíe la máquina. ¿Es un método de modificación o de acceso?
- * 8) Cambiar el main para que tenga un menu admin y menu cliente.
- */
- Scanner scanner = new Scanner(System.in);
- MaquinaExpendedora maquinaExpendedora = new MaquinaExpendedora((double)100);
- Menu menu = new Menu();
- /*comandos ocultos
- * -66: "rompe" la máquina para repararla.
- * -33: muestra el estado de la máquina y de estar dañada se da la opción de repararla.
- * 333: inicia sesción de administrador.
- * 666: apaga la máquina.
- */
- char c;
- int op;
- double vuelto = 0;
- boolean estadoMaquina = maquinaExpendedora.isEstado();
- boolean danioMaquina = maquinaExpendedora.isDanio();
- boolean admin = menu.isAdmin();
- String pass;
- System.out.println("Iniciando sistema...");
- System.out.println("¿Iniciar en modo administrador? s/n");
- c = scanner.nextLine().charAt(0);
- if(c == 's' || c == 'S')
- {
- do
- {
- System.out.println("Ingrese contraseña:");
- pass = scanner.nextLine();
- System.out.println(menu.verificarPass(pass));
- admin = menu.isAdmin();
- }while(!admin);
- }
- do
- {
- if(!danioMaquina && estadoMaquina)
- {
- System.out.println(menu.toString());
- op = scanner.nextInt();
- switch (op)
- {
- case 0:
- vuelto = maquinaExpendedora.getSaldo();
- if(vuelto > 0) System.out.println("Su vuelto es $"+vuelto+".");
- if(!admin) System.out.println("\n¡Hasta la próxima! :)");
- maquinaExpendedora.vaciarSaldo();
- break;
- case 1: /// imprimirBoleto tiene que invocarse automaticamente en ingresarDinero no en el main.
- boolean esNeg = true;
- while(esNeg)
- {
- System.out.println("Ingrese el monto que desea agregar a su saldo:");
- double dinero = scanner.nextDouble();
- if(dinero < 0) System.out.println("No se pueden agregar montos negativos.");
- else
- {
- maquinaExpendedora.ingresarDinero(dinero);
- esNeg = false;
- }
- }
- boolean conSaldo = maquinaExpendedora.verificarSaldo();
- if(conSaldo) System.out.println(maquinaExpendedora.imprimirBoleto());
- break;
- case 2:
- System.out.println("Tu saldo es: $"+maquinaExpendedora.getSaldo()+".");
- break;
- case 3:
- System.out.println("El precio del boleto es: $"+maquinaExpendedora.getPrecio()+".");
- break;
- case 4:
- System.out.println(maquinaExpendedora.imprimirBoleto());
- break;
- case 5:
- if(admin)
- {
- System.out.println("La cantidad de bolesto vendidos hasta el momento es: "+MaquinaExpendedora.cantidadBoletosVendidos()+".");
- }
- else System.out.println("Opción inválida.");
- break;
- case 6:
- if(admin)
- {
- System.out.println("El dinero recaudado hasta el momento es: $"+maquinaExpendedora.getTotal()+".");
- }
- else System.out.println("Opción inválida.");
- break;
- case 7:
- if(admin)
- {
- System.out.println("El dinero recaudado hasta el momento es: $"+maquinaExpendedora.getTotal()+".");
- maquinaExpendedora.extraerDinero();
- System.out.println("Extracción de dinero finalizada, el total del dinero recaudado actual es: $"+maquinaExpendedora.getTotal()+". ¿Desea reiniciar el contador de boletos? s/n");
- scanner.nextLine();
- c = scanner.nextLine().charAt(0);
- if(c == 's' || c == 'S')
- {
- MaquinaExpendedora.vaciarBoletosVendidos();
- System.out.println("El contador de boletos vendidos se encuentra en: "+MaquinaExpendedora.cantidadBoletosVendidos()+".");
- }
- }
- else System.out.println("Opción inválida.");
- break;
- case 8:
- if(admin)
- {
- System.out.println("Ingrese nuevo precio:");
- double precio = scanner.nextDouble();
- maquinaExpendedora.setPrecio(precio);
- System.out.println("Precio cambiado con éxito.");
- }
- else System.out.println("Opción inválida.");
- break;
- case 9:
- if(admin)
- {
- vuelto = maquinaExpendedora.getSaldo();
- if(vuelto > 0) System.out.println("Su vuelto es: $"+vuelto+".");
- maquinaExpendedora.vaciarSaldo();
- System.out.println("Cerrando sesión");
- admin = menu.cerrarSesión();
- }
- else System.out.println("Opción inválida.");
- break;
- case -33:
- if(admin)
- {
- System.out.println("La maquina se encuentra activa y lista para su funcionamiento.");
- }
- else System.out.println("Opción inválida.");
- break;
- case -66:
- maquinaExpendedora.setDanio(true);
- danioMaquina = maquinaExpendedora.isDanio();
- System.out.println("Presentando problemas...");
- System.out.println("Máquina expendedora dañada. x_x");
- break;
- case 333:
- do
- {
- System.out.println("Ingrese contraseña:");
- scanner.nextLine();
- pass = scanner.nextLine();
- System.out.println(menu.verificarPass(pass));
- admin = menu.isAdmin();
- }while(!admin);
- break;
- case 666:
- System.out.println("Apagando sistemas...");
- System.out.println("Total del dinero en la máquina: $"+maquinaExpendedora.getTotal()+".");
- System.out.println("Total de boletos vendidos: "+MaquinaExpendedora.cantidadBoletosVendidos()+".");
- estadoMaquina = maquinaExpendedora.apagar(false);
- System.out.println("¡Hasta la próxima! :)");
- break;
- default:
- System.out.println("Opción inválida.");
- break;
- }
- }
- else
- {
- System.out.println(menu.toString());
- op = scanner.nextInt();
- switch (op)
- {
- case -33:
- boolean dps = false;
- if(!admin)
- {
- System.out.println("¿Iniciar en modo administrador para reparar máquina? s/n");
- scanner.nextLine();
- c = scanner.nextLine().charAt(0);
- if(c == 's' || c == 'S')
- {
- do
- {
- System.out.println("Ingrese contraseña:");
- pass = scanner.nextLine();
- System.out.println(menu.verificarPass(pass));
- admin = menu.isAdmin();
- }while(!admin);
- dps = true;
- }
- }
- if(admin)
- {
- System.out.println("La maquina se encuentra rota.");
- System.out.println("¿Desea repararla? s/n");
- if(!dps) scanner.nextLine();
- c = scanner.nextLine().charAt(0);
- if(c == 's' || c == 'S')
- {
- danioMaquina = maquinaExpendedora.reparar(false);
- System.out.println("Maquina reparada.");
- }
- }
- break;
- default:
- System.out.println("Error de sistema.");
- break;
- }
- }
- }while(estadoMaquina);
- scanner.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement