import java.util.Scanner;
import java.text.NumberFormat;
class Producto{
private String codigo; // si no se asigna Java asigna valor de default
private String descripcion;
private double precio;
public Producto(){ }
public Producto(String codigo, String descripcion, double precio){
this.codigo = codigo;
this.descripcion = descripcion;
this.precio = precio;
}
public void setCodigo(String codigo) {this.codigo = codigo;}
public String getCodigo(){return codigo;}
public void setDescripcion(String descripcion){ this.descripcion = descripcion;}
public String getDescripcion(){return descripcion;}
public void setPrecio(double precio){this.precio = precio;}
public double getPrecio(){return precio;}
public String getFormattedprecio(){ // precio con formato
NumberFormat moneda = NumberFormat.getCurrencyInstance();
return moneda.format(precio);
}
}
class ProductoDB {
public static Producto getProducto(String productoCodigo){
Producto p = new Producto(); // crea un objeto
p .setCodigo(productoCodigo); // llena los atributos del objeto
if (productoCodigo.equalsIgnoreCase("java")){
p.setDescripcion("Java SE");
p.setPrecio(49.50);
} else if (productoCodigo.equalsIgnoreCase("jssp")){
p.setDescripcion("Java Servlets y JSP");
p.setPrecio(49.50);
} else if (productoCodigo.equalsIgnoreCase("fprg")){
p.setDescripcion("Fundamentos de ProgramaciĂ³n");
p.setPrecio(30.50);
} else p.setDescripcion("Desconocido");
return p;
}
}
//public class TiendaApp{
public class Main{
public static void main(String args[]){
System.out.println("Bienvenidos a Mi Tienda");
System.out.println();
Scanner sc = new Scanner(System.in);
String choice = "s";
while (choice.equalsIgnoreCase("s")){
String productoCodigo =
Validator.getString(sc,"Ingrese el cĂ³digo de un producto: ");
int quantity = Validator.getInt(sc, "Ingrese la cantidad: ", 0, 1000);
Producto producto = ProductoDB.getProducto(productoCodigo);
Venta venta = new Venta() ;
venta.setProducto(producto);
venta.setQuantity(quantity);
System.out.println() ;
System.out.println("PRODUCTO");
System.out.println("CĂ³digo: " + producto.getCodigo());
System.out.println("DescripciĂ³n: " + producto.getDescripcion());
System.out.println("Precio: " + producto.getFormattedprecio());
System.out.println("Cantidad: " + venta.getQuantity());
System.out.println("Total: " + venta.getFormattedTotal()+ "\n");
choice = Validator.getString(sc, "Continua? (s/n): ");
System.out.println();
}
}
}
class Validator {
public static String getString(Scanner sc, String prompt){
System.out.print(prompt);
String s = sc.next();
sc.nextLine();
return s;
}
public static int getInt(Scanner sc, String prompt){
int i = 0 ;
boolean isValid = false;
while (isValid == false){
System.out.print(prompt);
if (sc.hasNextInt()){
i = sc.nextInt();
isValid = true;
} else System.out.println("Error! Valor entero no vĂ¡lido. Intente de nuevo.");
sc.nextLine();
}
return i;
}
public static int getInt(Scanner sc, String prompt, int min, int max){
int i = 0;
boolean isValid = false;
while (isValid == false){
i = getInt(sc, prompt);
if (i < min) System.out.println("Error! El nĂºmero debe ser mayor o igual que " + min + ".");
else if (i > max) System.out.println("Error! El nĂºmero debe ser menor o igual que " + max + ".");
else isValid = true;
}
return i ;
}
public static double getDouble(Scanner sc, String prompt){
double d = 0 ;
boolean isValid = false;
while (isValid == false){
System.out.print(prompt);
if (sc.hasNextDouble()){
d = sc.nextDouble();
isValid = true;
} else System.out.println("Error! Valor decimal no vĂ¡lido. Intente de nuevo.");
sc.nextLine();
}
return d;
}
public static double getDouble(Scanner sc, String prompt, double min, double max) {
double d = 0 ;
boolean isValid = false;
while (isValid == false){
d = getDouble(sc, prompt);
if (d < min) System.out.println("Error! El nĂºmero debe ser mayor o igual que " + min + ".");
else if (d > max) System.out.println("Error! El nĂºmero debe ser menor o igual que " + max + ".");
else isValid = true;
}
return d;
}
public static float getFloat(Scanner sc, String prompt){
float d = 0 ;
boolean isValid = false;
while (isValid == false){
System.out.print(prompt);
if (sc.hasNextFloat()){
d = sc.nextFloat();
isValid = true;
} else System.out.println("Error! Valor decimal no vĂ¡lido. Intente de nuevo.");
sc.nextLine();
}
return d;
}
public static float getFloat(Scanner sc, String prompt, float min, float max) {
float d = 0 ;
boolean isValid = false;
while (isValid == false){
d = getFloat(sc, prompt);
if (d < min) System.out.println("Error! El nĂºmero debe ser mayor o igual que " + min + ".");
else if (d > max) System.out.println("Error! El nĂºmero debe ser menor o igual que " + max + ".");
else isValid = true;
}
return d;
}
}
class Venta{
private Producto producto;
private int quantity;
private double total;
public Venta(){
this.producto = new Producto();
this.quantity = 0 ;
this.total = 0 ;
}
public void setProducto(Producto producto){this.producto = producto;}
public Producto getProducto(){return producto;}
public void setQuantity(int quantity){this.quantity = quantity;}
public int getQuantity(){return quantity;}
public double getTotal(){this.calcularTotal();return total;}
private void calcularTotal(){total = quantity * producto.getPrecio();}
public String getFormattedTotal(){
NumberFormat currency = NumberFormat.getCurrencyInstance();
return currency.format(this.getTotal());
}
}