Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Scanner;
- import java.util.Stack;
- public class PuntoSeis {
- Scanner scanner = new Scanner(System.in);
- Stack<Order> ordersToReview = new Stack<Order>();
- Stack<Order> ordersReviewed = new Stack<Order>();
- public static void main(String[] args) {
- new PuntoSeis().run();
- }
- float readDiscount(char plan)
- {
- float ret;
- while(true)
- {
- try
- {
- System.out.println("El plan " + plan + " tiene un límite de " + ((plan == 'A') ? "50%":"40%"));
- System.out.println("Introduzca el descuento:");
- ret = Float.parseFloat(scanner.next());
- if(plan == 'A' && ret <= 50 && ret>= 0) return ret;
- if(plan == 'B' && ret <= 40 && ret>= 0) return ret;
- System.out.println("Descuento inválido, reintente.");
- }
- catch(Exception ex)
- {
- System.out.println("Porcentaje de descuento inválido:");
- }
- }
- }
- char readAvailablePlans()
- {
- char x = '\0';
- while(true) {
- try
- {
- System.out.println("Ingrese el tipo de plan: Disponibles ( A | B )");
- x = Character.toUpperCase(scanner.next().charAt(0));
- if(x == 'A' || x == 'B') return x;
- System.out.println("Se introdujo un plan inválido, reintente.");
- }
- catch(Exception ex)
- {
- System.out.println("Se introdujo un plan inválido, reintente.");
- }
- }
- }
- boolean continueCharge()
- {
- char x = '\0';
- while(true)
- {
- try
- {
- System.out.println("¿Seguirá agregando órdenes? (S/N)");
- x =Character.toUpperCase(scanner.next().charAt(0));
- if(x == 'S' || x == 'N') return x == 'S';
- System.out.println("Opción inválida, reintente.");
- }catch (Exception e) {
- System.out.println("Opción inválida, reintente.");
- }
- }
- }
- int forceReadPositiveInt(String message)
- {
- int n = 0;
- while(true)
- {
- try
- {
- System.out.println(message);
- n = Integer.parseInt(scanner.next());
- if(n > 0) return n;
- System.out.println("El número ingresado no es válido, ingrese un número positivo.");
- }
- catch(Exception ex)
- {
- System.out.println("Se introdujo un número inválido, reintente.");
- }
- }
- }
- void reviewOrders()
- {
- while(!ordersToReview.isEmpty())
- {
- Order rev = ordersToReview.pop();
- rev.setStatus(((rev.getPlan() == 'A') ? ((rev.getCodeAnalysis() & 1) == 0) : ((rev.getCodeAnalysis() & 1) == 1)));
- System.out.println("Revisando la siguiente orden:\n" + rev.toString());
- if(rev.isStatus())
- {
- System.out.println("La orden fue aprobada.");
- rev.setDiscount(readDiscount(rev.getPlan()));
- }
- else
- {
- System.out.println("La orden fue rechazada, no se necesitará cargar el descuento.");
- }
- ordersReviewed.add(rev);
- }
- }
- void showOrders()
- {
- int rejectedA = 0;
- int approvedB = 0 ;
- while(!ordersReviewed.isEmpty())
- {
- Order popped = ordersReviewed.pop();
- rejectedA+= (popped.getPlan() == 'A' && !popped.isStatus()) ? 1: 0;
- approvedB+= (popped.getPlan() == 'B' && popped.isStatus()) ? 1: 0;
- System.out.println(popped.toString());
- }
- System.out.println("Total rechazados PLAN A: " + rejectedA);
- System.out.println("Total aprobados PLAN B: " + approvedB);
- }
- Date readDate()
- {
- while(true)
- {
- try
- {
- SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
- System.out.println("Introduzca la fecha dd/MM/yyyy: ");
- String dateInput = scanner.next();
- Date ret = sdf.parse(dateInput);
- return ret;
- }
- catch (Exception e) {
- System.out.println("Fecha inválida, reintente.");
- }
- }
- }
- boolean menu()
- {
- try
- {
- System.out.println("Elija una opción:\n 1-Registrar órdenes\n2-Auditoría\n3-Muestra ordenes revisadas.\n4-Salir");
- switch(scanner.next())
- {
- case "1":
- {
- addOrders();
- return true;
- }
- case "2":
- {
- reviewOrders();
- return true;
- }
- case "3":
- {
- showOrders();
- return true;
- }
- case "4": return false;
- default: System.out.println("Opción inválida"); return true;
- }
- }catch(Exception ex)
- {
- System.out.println("Opción inválida");
- }
- return true;
- }
- void addOrders()
- {
- while(true)
- {
- ordersToReview.add(new Order(forceReadPositiveInt("Introduzca el número de afiliado:"),
- readAvailablePlans(),
- forceReadPositiveInt("Introduzca código de estudio:"),
- forceReadPositiveInt("Introduzca matrícula del médico:"),
- readDate(),
- false,
- 0));
- if(!continueCharge()) return;
- }
- }
- void run()
- {
- while(menu());
- }
- }
Add Comment
Please, Sign In to add comment