viernes, 9 de agosto de 2013

Clases de uso General - HashTable / HashSet / HashMap


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.");
            }    
         }      
   
}


 

No hay comentarios:

Publicar un comentario