Está en la página 1de 10

Problema 1:

Consideraciones:

 Lo he trabajo con POO y considero viable crear una clase Producto, ya que posteriormente
se podría agregar más atributos según la situación.
 El programa se centra y se realiza en la Clase Tienda, donde se encuentran todos los
métodos indicados en ele ejercicio y algunas cosas extras para mejorar el programa.
 La clase DemoTienda es donde instancia un objeto de la clase Tienda, además contiene un
menú interactivo de opciones.

Clase Producto

public class Producto {


//atributos
private String nombre;
private double precio;
//constructores
public Producto() {
}
public Producto(String nombre) {
this.nombre=nombre;
}
public Producto(String nombre, double precio) {
this.nombre=nombre;
this.precio=precio;
}
//metodos accesores
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public double getPrecio() {
return precio;
}
public void setPrecio(double precio) {
this.precio = precio;
}
//metodo toString
public String toString() {
return " Producto: "+nombre+"\t"+"Precio: "+"S/ "+precio+"\n";
}
}
Clase Tienda

import java.util.*;

public class Tienda {

//atributos

private String nombre;

private HashMap<String,Producto> productos= new HashMap<String,Producto>();

private HashMap<String,Double> registroMeses= new HashMap<String,Double>();

private int contador=productos.size();

//constructores

public Tienda() {

agregarMeses();

productosDefault();

public Tienda(String nombre) {

this.nombre=nombre;

agregarMeses();

productosDefault();

//metodos accesores

public String getNombre() {

return nombre;

public void setNombre(String nombre) {

this.nombre = nombre;

public HashMap<String, Producto> getProductos() {


return productos;

public void setProductos(HashMap<String, Producto> productos) {

this.productos = productos;

public HashMap<String, Double> getRegistroMeses() {

return registroMeses;

public void setRegistroMeses(HashMap<String, Double> registroMeses) {

this.registroMeses = registroMeses;

public int getContador() {

return contador;

public void setContador(int contador) {

this.contador = contador;

//metodo para el hashmap de meses

public void agregarMeses() {

registroMeses.put("enero", 0.0);

registroMeses.put("febrero", 0.0);

registroMeses.put("marzo", 0.0);

registroMeses.put("abril", 0.0);

registroMeses.put("mayo", 0.0);

registroMeses.put("junio", 0.0);

registroMeses.put("julio", 0.0);

registroMeses.put("agosto", 0.0);

registroMeses.put("septiembre", 0.0);

registroMeses.put("octubre", 0.0);
registroMeses.put("noviembre", 0.0);

registroMeses.put("diciembre", 0.0);

//agregamos productos basicos de la tienda

public void productosDefault() {

productos.put("tallarines",new Producto("tallarines",2));

productos.put("cafe", new Producto("cafe",1));

productos.put("harina", new Producto("harina",2));

productos.put("chicle",new Producto("chicle",0.10));

// metodo para agregar productos

public void agregarProductos() {

Scanner entrada= new Scanner(System.in);

if(contador<100) {

System.out.println("Ingrese el nombre del producto: ");

String nombre=entrada.nextLine().toLowerCase();

if(productos.containsKey(nombre)) {

System.out.print("Ya existe este


producto"+"\n"+productos.get(nombre).toString());

else {

System.out.println("Ingrese el precio del producto: ");

double precio= entrada.nextDouble();

productos.put(nombre, new Producto(nombre,precio));

else {

System.out.println("Ya no se pueden agregar mas productos");

}
}

//mostrar productos existentes

public void mostrarProductos() {

String mostrar="Productos: "+"\n";

for(String key: productos.keySet()) {

mostrar+=productos.get(key).toString();

System.out.println(mostrar);

//estadisticas mayores y menores ganancias

public void cifrasMayoresMenoresMeses() {

int maxIdx=0;

int minIdx=0;

String claveMax="";

String claveMin="";

int i=0;

double [] cifras= new double[registroMeses.size()];

String [] mes= new String[cifras.length];

while(i<12) {

for(String key: registroMeses.keySet()) {

cifras[i]=registroMeses.get(key);

mes[i]=key;

i++;

for(int j=1;j<cifras.length;j++) {

if(cifras[j]<cifras[minIdx]) {

minIdx=j;

}
else if(cifras[j]>cifras[maxIdx]) {

maxIdx=j;

claveMax=mes[maxIdx];

claveMin=mes[minIdx];

String cadena1="Meses con mayor ganancia: "+"\n";

String cadena2="\n"+"Meses con menor ganancia: "+"\n";

for(String key: registroMeses.keySet()) {

if(registroMeses.get(key)== registroMeses.get(claveMax)) {

cadena1+=" Mes: "+key+"\t"+"Ganancias: "+"S/


"+registroMeses.get(key);

if(registroMeses.get(key)== registroMeses.get(claveMin)) {

cadena2+=" Mes: "+key+"\t"+"Ganancias: "+"S/


"+registroMeses.get(key);

System.out.println(cadena1+cadena2);

//estadisticas ganancias

public void cifrasMeses() {

String cadena="Ganancias por meses"+"\n";

for(String key: registroMeses.keySet()) {

cadena+= "Mes: "+key+"\t"+"Ganancias: "+"S/ "+registroMeses.get(key)


+"\n";

System.out.println(cadena);

// metodo para realizar ventas


public void realizarVenta() {

Scanner entrada= new Scanner(System.in);

System.out.println("Ingrese el mes: ");

String mes=entrada.nextLine().toLowerCase();

if(registroMeses.containsKey(mes)) {

String decision="si";

while(decision.equals("si")) {

System.out.println("Opciones:"+"\n"+

" 1.- Registrar


venta"+"\n"+

" 2.- Salir");

System.out.println("Ingrese su eleccion: ");

int eleccion= entrada.nextInt();

entrada.nextLine();

switch(eleccion) {

case 1:

System.out.println("Ingrese el nombre del producto: ");

String producto=entrada.nextLine().toLowerCase();

if(productos.containsKey(producto)) {

registroMeses.put(mes, registroMeses.get(mes)
+productos.get(producto).getPrecio());

System.out.println("Se registro la compra");

else {

System.out.println("No esta registrado este


producto");

break;

case 2: decision="no";

break;
default: System.out.println("Eleccion incorrecta");

else {

System.out.println("El mes ingresado es incorrecto");

//metodo para modificar productos

public void modificarProducto() {

Scanner entrada = new Scanner(System.in);

System.out.println("Ingrese el nombre del producto que quiere modificar: ");

String producto= entrada.nextLine().toLowerCase();

if(productos.containsKey(producto)) {

System.out.println("Producto: "+productos.get(producto).getNombre()
+"\t"+

"Precio:
"+productos.get(producto).getPrecio());

System.out.println("Ingrese el nuevo precio: ");

double newPrecio= entrada.nextDouble();

productos.get(producto).setPrecio(newPrecio);

System.out.println("Nuevo precio modificado");

else {

System.out.println("Este producto no se encuentra resgistrado");

}
Clase DemoTienda

import java.util.*;

import javax.swing.*;

public class DemoTienda {

public static void main(String[] args) {

Scanner entrada= new Scanner(System.in);

Tienda tienda= new Tienda();

String decision="si";

int eleccion;

while(decision.equals("si")) {

System.out.println("Opciones: "+"\n"+

" 1.- Agregar productos"+"\n"+

" 2.- Registrar venta"+"\n"+

" 3.- Mostrar todos los productos"+"\n"+

" 4.- Mostrar ganancias por meses"+"\n"+

" 5.- Mayor y menor ganancia del año"+"\n"+

" 6.- Modificar producto"+"\n"+

" 7.- Salir");

System.out.println("Ingrese su eleccion: ");

eleccion= entrada.nextInt();

switch(eleccion) {

case 1: tienda.agregarProductos();

break;

case 2: tienda.realizarVenta();

break;

case 3:tienda.mostrarProductos();
break;

case 4:tienda.cifrasMeses();

break;

case 5:tienda.cifrasMayoresMenoresMeses();

break;

case 6:

tienda.modificarProducto();

break;

case 7:

decision="no";

break;

default: System.out.println("Eleccion incorrecta");

System.out.println("Se acaba el programa");

También podría gustarte