Desarrollar un programa que permita gestionar una especie de base de datos de
productos, donde cada producto tendrá un precio y un código asociado. El
programa mostrará el siguiente menú:
1- Introducir producto
2- Modificar precio
3- Mostrar precio medio
4- Eliminar producto
5- Salir
La opción 1 nos pedirá el código y el precio del producto que queremos guardar.
Si ya existiera ese código nos mostrará un mensaje de advertencia y no hará
nada, volviendo a mostrar de nuevo el menú. La opción 2 nos pedirá el código del
producto a modificar y, caso de que exista, el nuevo precio del mismo. Si el
producto no existe no se realizará la sustitución y se mostrará un mensaje de
advertencia. La opción 3 mostrará la media de todos los precios existentes. La
opción 4 solicitará el código del producto y lo eliminará, pero si no existiera nos
mostrará un mensaje de advertencia.
/**
* @author Vogues
*/
import java.util.*;
import java.io.IOException;
public class Ej5 {
public static void main(String[] args) throws IOException{
HashMap<String, Double> lista= new HashMap<String, Double>();
//Atributos pidiendo datos por teclado
int opcion;
Scanner sc= new Scanner(System.in);
//Creamos un patron que en este caso sea \n
sc.useDelimiter("\n");
do{
System.out.println("\nElige la opcion que desees");
System.out.println("\n1. Introducir producto");
System.out.println("2. Modificar precio producto");
System.out.println("3. Mostrar precio medio");
System.out.println("4. Eliminar producto");
System.out.println("5. Salir \n");
System.out.println("-----------------------");
opcion=sc.nextInt();//Guardamos en opcion el valor por teclado
String item;//variables
Double precio;
switch(opcion){
case 1:
System.out.println("Introduce producto: ");
item=sc.next(); //Guarda dato tipo String
System.out.println("Introduce el precio del producto");
precio=sc.nextDouble();//Guarda dato tipo Double
guardarProducto(item, precio, lista);//Llama metodo
//con atributos (String, Double, nombre HashMap)
break;
case 2:
System.out.println("Introduce el producto a modificar: ");
item=sc.next();
modificaProducto(item, lista);
break;
case 3:
mediaProducto(lista);
break;
case 4:
System.out.println("Introduce el producto a eliminar : ");
item=sc.next();
eliminarProducto(item, lista);
break;
case 5:
break; // Si la opcion es 5 no se hace nada
default:
System.out.println("Introduce una opción valida");
}
}while(opcion!=5);
}
public static void guardarProducto(String valor, Double coste, HashMap<String, Double> lista){
if (lista.containsKey(valor)){
System.out.println("No se puede introducir el producto. El código esta repetido.");
}
else{
lista.put(valor, coste);
}
}
public static void modificaProducto(String valor, HashMap<String, Double> lista){
Scanner sc = new Scanner(System.in);
if (lista.containsKey(valor)){
System.out.println("Introduce el precio del producto:");
lista.put(valor, sc.nextDouble());
}
else{
System.out.println("No hay ningun producto con ese código.");
}
}
public static void mediaProducto(HashMap<String, Double> lista){
double media=0.0;
for(Object me: lista.values()){
media+=((Double) me).doubleValue();
}
media/=lista.size();
System.out.println("Precio medio: "+media);
}
public static void eliminarProducto(String valor, HashMap<String, Double> lista){
if (lista.containsKey(valor)){
lista.remove(valor);
}
else{
System.out.println("No hay ningun producto con ese código.");
}
}
}
