SlideShare una empresa de Scribd logo
Desarrollar un sistema de gestión de partes de un taller mecánico.

La información de los partes es: código, descripción e importe. Un parte irá asociado a la matrícula de un coche de
manera que podamos añadir, mostrar y eliminar un parte a partir de la matrícula de coche al que está asociado. La
información de una matrícula es: provincia, número y letra.

La clase Practica11d mostrará un menú de opciones por consola: crear, listar, mostrar y eliminar partes. También
habrá una opción de salir.

El formato de entrada de una matrícula es: provincia-número-letra (por ejemplo: M-1234-AV).

Para leer por teclado se usará la clase Lector que se adjunta con esta práctica.

Realizar el diagrama UML.

Lector.java
/*
 * @(#)Lector.java    1.1 27-Nov-2004
 *
 * Copyright (c) 2004 José M. Ordax. All rights reserved.
 *
 * This program and the accompanying materials
 * are made available under the terms of the MIT License
 * which accompanies this distribution, and is available at
 * http://www.opensource.org/licenses/mit-license.html
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * La clase <code>Lector</code> sirve para leer datos de distintos
 * tipos por el teclado. Posee un método estático para leer cada tipo.
 * <p><p/>
 * Un ejemplo de su uso sería:
 * <blockquote><pre>
 *      System.out.println("Introduzca un String: ");
 *      String unString = Lector.leerString();
 *      System.out.println("El String introducido es: " + unString);
 * </pre></blockquote>
 * <p>
 * Al realizar operaciones de entrada/salida o conversiones entre tipos
 * se pueden producir problemas (excepciones en la tecnología Java) como
 * por ejemplo {@link java.lang.NumberFormatException} o
 * {@link java.io.IOException}.
 * Todos estos problemas están controlados y gestionados por la clase
 * <code>Lector</code> y en caso de producirse, se mostrará un mensaje
 * de error por pantalla explicando el motivo.
 *
 * @author José M. Ordax
 * @version 1.1, 27-Nov-2004
 * @see      java.lang.System#in
 * @see      java.io.InputStream
 * @see      java.io.InputStreamReader
 * @see      java.io.BufferedReader
 * @see      java.io.IOException
 */


                                                                                    bitCoach::Juan Bautista Cascallar Lorenzo
public class Lector
{
       // Atributos.
       private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

       // Constructor.
       private Lector()
       {
              super();
       }

       /**
    * Lee un byte por teclado. Utiliza la tecla "Enter" para indicar el final del dato.
    *
    * @return      el byte introducido o 0 si se produjo algún problema.
    */
       public static byte leerByte()
       {
              byte tmp = 0;
              try
              {
                      tmp = Byte.parseByte(br.readLine());
              }
              catch (NumberFormatException ex)
              {
                      System.out.println("Error: el dato introducido no se puede convertir en un byte.");
                      ex.printStackTrace();
              }
              catch (IOException ex)
              {
                      System.out.println("Error: hubo un problema en la operación de entrada de datos.");
                      ex.printStackTrace();
              }
              catch(Exception ex)
              {
                      System.out.println("Error: hubo un problema no controlado.");
                      ex.printStackTrace();
              }
              return tmp;
       }

       /**
    * Lee un short por teclado. Utiliza la tecla "Enter" para indicar el final del dato.
    *
    * @return      el short introducido o 0 si se produjo algún problema.
    */
       public static short leerShort()
       {
              short tmp = 0;
              try
              {
                      tmp = Short.parseShort(br.readLine());
              }
              catch (NumberFormatException ex)
              {
                      System.out.println("Error: el dato introducido no se puede convertir en un short.");
                      ex.printStackTrace();
              }
              catch (IOException ex)
              {
                      System.out.println("Error: hubo un problema en la operación de entrada de datos.");
                      ex.printStackTrace();
              }
              catch(Exception ex)
              {
                      System.out.println("Error: hubo un problema no controlado.");
                      ex.printStackTrace();
              }
              return tmp;
       }




                                                                             bitCoach::Juan Bautista Cascallar Lorenzo
/**
* Lee un char por teclado. Utiliza la tecla "Enter" para indicar el final del dato.
*
* @return      el primer char introducido o un blanco si se produjo algún problema.
*/
   public static char leerChar()
   {
          char tmp = ' ';
          try
          {
                  tmp = br.readLine().charAt(0);
          }
          catch (IOException ex)
          {
                  System.out.println("Error: hubo un problema en la operación de entrada de datos.");
                  ex.printStackTrace();
          }
          catch(Exception ex)
          {
                  System.out.println("Error: hubo un problema no controlado.");
                  ex.printStackTrace();
          }
          return tmp;
   }
   /**
* Lee un int por teclado. Utiliza la tecla "Enter" para indicar el final del dato.
*
* @return      el int introducido o 0 si se produjo algún problema.
*/
   public static int leerInt()
   {
          int tmp = 0;
          try
          {
                  tmp = Integer.parseInt(br.readLine());
          }
          catch (NumberFormatException ex)
          {
                  System.out.println("Error: el dato introducido no se puede convertir en un int.");
                  ex.printStackTrace();
          }
          catch (IOException ex)
          {
                  System.out.println("Error: hubo un problema en la operación de entrada de datos.");
                  ex.printStackTrace();
          }
          catch(Exception ex)
          {
                  System.out.println("Error: hubo un problema no controlado.");
                  ex.printStackTrace();
          }
          return tmp;
   }

   /**
* Lee un long por teclado. Utiliza la tecla "Enter" para indicar el final del dato.
*
* @return      el long introducido o 0 si se produjo algún problema.
*/
   public static long leerLong()
   {
          long tmp = 0;
          try
          {
                  tmp = Long.parseLong(br.readLine());
          }
          catch (NumberFormatException ex)
          {
                  System.out.println("Error: el dato introducido no se puede convertir en un long.");
                  ex.printStackTrace();
          }
          catch (IOException ex)
          {
                  System.out.println("Error: hubo un problema en la operación de entrada de datos.");
                  ex.printStackTrace();
          }
          catch(Exception ex)
          {
                  System.out.println("Error: hubo un problema no controlado.");
                  ex.printStackTrace();
          }
          return tmp;
   }
                                                                         bitCoach::Juan Bautista Cascallar Lorenzo
/**
     * Lee un float por teclado. Utiliza la tecla "Enter" para indicar el final del dato.
     *
     * @return      el float introducido o 0.0 si se produjo algún problema.
     */
        public static float leerFloat()
        {
               float tmp = 0;
               try
               {
                       tmp = Float.parseFloat(br.readLine());
               }
               catch (NumberFormatException ex)
               {
                       System.out.println("Error: el dato introducido no se puede convertir en un float.");
                       ex.printStackTrace();
               }
               catch (IOException ex)
               {
                       System.out.println("Error: hubo un problema en la operación de entrada de datos.");
                       ex.printStackTrace();
               }
               catch(Exception ex)
               {
                       System.out.println("Error: hubo un problema no controlado.");
                       ex.printStackTrace();
               }
               return tmp;
        }
        /**
     * Lee un double por teclado. Utiliza la tecla "Enter" para indicar el final del dato.
     *
     * @return      el double introducido o 0.0 si se produjo algún problema.
     */
        public static double leerDouble()
        {
               double tmp = 0;
               try
               {
                       tmp = Double.parseDouble(br.readLine());
               }
               catch (NumberFormatException ex)
               {
                       System.out.println("Error: el dato introducido no se puede convertir en un
double.");
                       ex.printStackTrace();
               }
               catch (IOException ex)
               {
                       System.out.println("Error: hubo un problema en la operación de entrada de datos.");
                       ex.printStackTrace();
               }
               catch(Exception ex)
               {
                       System.out.println("Error: hubo un problema no controlado.");
                       ex.printStackTrace();
               }
               return tmp;
        }
        /**
     * Lee una cadena de caracteres por teclado. Utiliza la tecla "Enter" para indicar el final del dato.
     *
     * @return      el string introducido o <code>null</code> si se produjo algún problema.
     */
        public static String leerString()
        {
               String tmp = null;
               try
               {
                       tmp = br.readLine();
               }
               catch (IOException ex)
               {
                       System.out.println("Error: hubo un problema en la operación de entrada de datos.");
                       ex.printStackTrace();
               }
               catch(Exception ex)
               {
                       System.out.println("Error: hubo un problema no controlado.");
                       ex.printStackTrace();
               }
               return tmp;
        }
                                                                              bitCoach::Juan Bautista Cascallar Lorenzo
/**
    * Lee un boolean por teclado. Utiliza la tecla "Enter" para indicar el final del dato.
    *
    * @return      <code>false</code> en cualquier caso a no ser que se introduzca la cadena "true".
    */
       public static boolean leerBoolean()
       {
              boolean tmp = false;
              try
              {
                      tmp = new Boolean(br.readLine()).booleanValue();
              }
              catch (IOException ex)
              {
                      System.out.println("Error: hubo un problema en la operación de entrada de datos.");
                      ex.printStackTrace();
              }
              catch(Exception ex)
              {
                      System.out.println("Error: hubo un problema no controlado.");
                      ex.printStackTrace();
              }
              return tmp;
       }
}

CodigosParte.java
public class CodigosParte {
       public static int codigo = 1;
}

Matricula.java
public class Matricula {

       //Atributos
    private String provincia;
    private int numero;
    private String letra;

    //Constructor
    public Matricula(String prov, int num, String letr){
       provincia = prov;
       numero = num;
       letra = letr;
    }

    public boolean equals(Object o){

        if(this == o){
               return true;
        }

           if(!(o instanceof Matricula)){
              return false;
           }

           Matricula param = (Matricula)o;
           return param.provincia.equals(provincia) && param.numero == numero &&
param.letra.equals(letra);
    }


    public int hashCode(){

        StringBuffer buffer = new StringBuffer();

        buffer.append(provincia);
            buffer.append(Integer.toString(numero));
            buffer.append(letra);

           return buffer.toString().hashCode();

    }




                                                                             bitCoach::Juan Bautista Cascallar Lorenzo
//Getters
    public String getProvincia(){
       return provincia;
    }

    public int getNumero(){
       return numero;
    }

    public String getLetra(){
       return letra;
    }
}


Parte.java
public class Parte {

         //Atributos
         private Matricula matricula;
         private int codigo;
         private String descripcion;
         double importe = 0.0;

         //Constructor
         public Parte(Matricula matric, String desc, double imp){
                codigo = CodigosParte.codigo;
                matricula = matric;
                descripcion = desc;
                importe = imp;
         }

         //GETTERS
         public int getCodigo(){
                return codigo;
         }

         public Matricula getMatricula(){
                return matricula;
         }
         public String getDescripcion(){
                return descripcion;
         }

         public double getImporte(){
                return importe;
         }
}


GestorPartesHMap.java
import   java.util.HashMap;
import   java.util.ArrayList;
import   java.util.Iterator;
import   java.util.Set;

public class GestorPartesHMap {

         //Atributos
         HashMap<Matricula,ArrayList<Parte>> hm = new HashMap<Matricula,ArrayList<Parte>>();

         //--- OPCIÓN [1]: CREAR PARTE ---
         public void crearParte(){

                Parte p;

                System.out.println("DATOS PARA CREAR EL PARTE ");
                System.out.println("------------------------------------------");

                Matricula m = crearMatricula();

                 System.out.println("DESCRIPCIÓN: ");
          String descripcion = Lector.leerString();

          System.out.println("IMPORTE: ");
          double importe = Lector.leerDouble();

          p = new Parte(m,descripcion,importe);


                                                                               bitCoach::Juan Bautista Cascallar Lorenzo
if(hm.containsKey(p.getMatricula()) == false){
               ArrayList<Parte> partes = new ArrayList<Parte>();
               hm.put(p.getMatricula(), partes);
               hm.get(p.getMatricula()).add(p);
        }else{
               hm.get(p.getMatricula()).add(p);
        }

        CodigosParte.codigo++;
       }

       //--- OPCIÓN [2]: LISTAR PARTES POR COCHE ---
       public void listarPartesPorCoche(){

              System.out.println("LISTAR PARTES POR COCHE/MATRICULA: ");
              System.out.println("------------------------------------------");

              Matricula m = crearMatricula();

               if(hm.containsKey(m) == true){
                      ArrayList<Parte> partes = hm.get(m);
                      Iterator<Parte> it = partes.iterator();
                      System.out.println("Partes asociados a la matrícula [" + m.getProvincia() +
                                     "-" + m.getNumero() + "-" + m.getLetra() + "]");
                      System.out.println("===================================================");
                      while(it.hasNext()){
                              Parte p = it.next();
                              System.out.println("-----------------------------------");
                              System.out.println("MATRÍCULA: " + p.getMatricula().getProvincia()+
                                             "-" + p.getMatricula().getNumero() + "-" +
p.getMatricula().getLetra());
                              System.out.println("CÓDIGO: " + p.getCodigo());
                              System.out.println("DESCRIPCIÓN: " + p.getDescripcion());
                              System.out.println("PRECIO: " + p.getImporte());
                              System.out.println("-----------------------------------");
                      }
               }else{
                      System.out.println("Objeto no localizado...");
               }
       }//fin funcion

       //--- OPCIÓN [3]: LISTADO COMPLETO DE PARTES ---
       public void listadoCompletoDePartes(){

              if(hm.size() != 0){
                     Set<Matricula> claves = hm.keySet();
                     Iterator<Matricula> itClaves = claves.iterator();
                     while(itClaves.hasNext())
                     {
                             Matricula m = itClaves.next();
                             System.out.println("Partes asociados a la matricula: " +
                                            m.getProvincia() + "-" + m.getNumero() + "-" + m.getLetra());
                             System.out.println("---------------------------------------------------");

                                ArrayList<Parte> partes = hm.get(m);
                                Iterator<Parte> itPartes = partes.iterator();

                                while(itPartes.hasNext()){
                                       Parte p = itPartes.next();
                                       System.out.println("-----------------------------------");
                                       System.out.println("MATRICULA: " + p.getMatricula().getProvincia() +
                                                      "-" + p.getMatricula().getNumero() + "-" +
p.getMatricula().getLetra());
                                       System.out.println("CÓDIGO: " + p.getCodigo());
                                       System.out.println("DESCRIPCIÓN: " + p.getDescripcion());
                                       System.out.println("IMPORTE: " + p.getImporte());
                                       System.out.println("-----------------------------------");
                                }
                        }
              }else{
                        System.out.println("No hay partes....");
              }

       }//fin funcion




                                                                                bitCoach::Juan Bautista Cascallar Lorenzo
//--- [4] ELIMINAR PARTE POR MATRICULA ---
       public void eliminarPartePorMatricula(){

              Matricula m = crearMatricula();

              if(hm.containsKey(m) == true){
                     ArrayList<Parte> partes = hm.get(m);
                     Iterator<Parte> it = partes.iterator();
                     System.out.println("Partes asociados a la matrícula [" + m.getProvincia() +
                                    "-" + m.getNumero() + "-" + m.getLetra() + "]");
                     System.out.println("===================================================");



                      while(it.hasNext()){
                              Parte p = it.next();
                              System.out.println("-----------------------------------");
                              System.out.println("MATRÍCULA: " + p.getMatricula().getProvincia()+
                                             "-" + p.getMatricula().getNumero() + "-" +
p.getMatricula().getLetra());
                              System.out.println("CÓDIGO: " + p.getCodigo());
                              System.out.println("DESCRIPCIÓN: " + p.getDescripcion());
                              System.out.println("PRECIO: " + p.getImporte());
                              System.out.println("-----------------------------------");
                      }

                        System.out.println("Código del Parte que quieres borrar: ");
                        int codigo = Lector.leerInt();

                        Iterator<Parte> it2 = partes.iterator();

                        while(it2.hasNext()){
                               Parte p = it2.next();
                               if(codigo == p.getCodigo()){
                                       it2.remove();
                                       System.out.println("Parte eliminado....");
                               }else{
                                       System.out.println("Objeto no encontrado...");
                               }
                        }
              }else{
                        System.out.println("Objeto no localizado...");
              }

       }//fin funcion


       //--- [5] ELIMINAR TODOS LOS PARTES ASOCIADOS A UNA MATRICULA ---
       public void eliminarTodosLosPartesPorMatricula(){

              Matricula m = crearMatricula();

              if(hm.containsKey(m) == true){
                     hm.remove(m);
                     System.out.println("Se han borrado todos los partes asociados a la matricula: " +
                                    m.getProvincia() + "-" + m.getNumero() + "-" + m.getLetra());
              }else{
                     System.out.println("Objeto no encontrado...");
              }
       }

       private Matricula crearMatricula(){

              System.out.println("MATRICULA DEL COCHE (PROVINCIA-NÚMERO-LETRA):");

              //-- Leer matrícula ---
              String provincia,letra;
              int numero;

              //--- PROVINCIA ---
              boolean correcto = true;
              do{
                     correcto = true;
                     System.out.println("PROVINCIA: "); provincia = Lector.leerString();
                     for(int i=0;i<provincia.length();i++){
                             if(Character.isLetter(provincia.charAt(i)) == false){
                                    System.out.println("El campo <PROVINCIA> sólo contiene letras...");
                                    correcto = false;
                                    break;
                             }
                     }
              }while(correcto == false);
              //---
                                                                                bitCoach::Juan Bautista Cascallar Lorenzo
//--- NUMERO ---
               System.out.println("NÚMERO: "); numero = Lector.leerInt();

               //--- LETRA ---
               correcto = true;
               do{
                      correcto = true;
                      System.out.println("LETRA: "); letra = Lector.leerString();
                      for(int i=0;i<letra.length();i++){
                              if(Character.isLetter(letra.charAt(i)) == false){
                                     System.out.println("El campo <LETRA> sólo contiene letras...");
                                     correcto = false;
                                     break;
                              }
                      }
               }while(correcto == false);
               //---

               Matricula m = new Matricula(provincia,numero,letra);

               return m;
       }
}//FIN CLASE



TestGestionPartes.java
public class TestGestionPartes {

       /**
        * @param args
        */

       //Atributos
       private static GestorPartesHMap gp = new GestorPartesHMap();

       public static void main(String[] args) {
              // TODO Auto-generated method stub

               //MENÚ (SELECCIONAR OPCIÓN)
               int seleccion = 0;
               do{
                       System.out.println("SELECCIONA LA OPCIÓN DE MENÚ............");
                System.out.println("[1] CREAR PARTE");
                System.out.println("[2] LISTADO DE PARTES POR MATRICULA");
                System.out.println("[3] LISTADO COMPLETO DE PARTES");
                System.out.println("[4] ELIMINAR PARTE POR MATRICULA");
                System.out.println("[5] ELIMINAR TODOS LOS PARTES ASOCIADOS A UNA MATRICULA");
                System.out.println("[6] SALIR");
            System.out.println("Selection: ");
            seleccion = Lector.leerInt();
            //-------------
            switch (seleccion){
                    case 1: gp.crearParte(); break;
                    case 2: gp.listarPartesPorCoche(); break;
                    case 3: gp.listadoCompletoDePartes(); break;
                    case 4: gp.eliminarPartePorMatricula(); break;
                    case 5: gp.eliminarTodosLosPartesPorMatricula(); break;
                    case 6: System.out.println("Fin del programa.");System.exit(0);
                    default: System.out.println("Teclea una opción válida"); break;
            }//Fin switch
               }while(seleccion!=6);//Fin while
       }//Fin main

}//Fin clase




                                                                              bitCoach::Juan Bautista Cascallar Lorenzo
Diagrama de clases UML




                         bitCoach::Juan Bautista Cascallar Lorenzo

Más contenido relacionado

PDF
Polimorfismo
PPTX
Introducción a la programación
DOCX
Como crear y eliminar vlan en un switch catalyst cisco
PDF
jQuery Mobile :: Cuadros de diálogo
PDF
Java Applet:::Pelota que rebota en un recinto.
PDF
Acceso a BBDD mediante un servlet
PDF
jQuery Mobile :: Enlaces a páginas internas.
PDF
Programa Java que gestiona los productos que comercializan varios viveros
Polimorfismo
Introducción a la programación
Como crear y eliminar vlan en un switch catalyst cisco
jQuery Mobile :: Cuadros de diálogo
Java Applet:::Pelota que rebota en un recinto.
Acceso a BBDD mediante un servlet
jQuery Mobile :: Enlaces a páginas internas.
Programa Java que gestiona los productos que comercializan varios viveros

Destacado (20)

PDF
Java ArrayList Iterator
PDF
Acciones JSP
PDF
Jsp directiva page
PDF
Explicación del código del Servlet HolaMundo
PDF
Find File Servlet DB
PDF
Proyecto JSP
PDF
Elementos de script en JSP
PDF
Servlets que manejan datos de formularios HTML
PDF
Java AWT Calculadora
PDF
Servlet Hola Mundo con Eclipse y Tomcat
PDF
Java Thread Cronometro
PDF
Java AWT Tres en Raya
PDF
Sincronizar Threads
PDF
Java::Acceso a Bases de Datos
DOCX
Proyecto final
PDF
Configurar entorno Android
PDF
App Android MiniBanco
PDF
MIT App Inventor2 Pintar en Imagen
DOCX
Entrega trabajo final uml gp 8
PDF
Práctica Completa en Flash – ActionScript
Java ArrayList Iterator
Acciones JSP
Jsp directiva page
Explicación del código del Servlet HolaMundo
Find File Servlet DB
Proyecto JSP
Elementos de script en JSP
Servlets que manejan datos de formularios HTML
Java AWT Calculadora
Servlet Hola Mundo con Eclipse y Tomcat
Java Thread Cronometro
Java AWT Tres en Raya
Sincronizar Threads
Java::Acceso a Bases de Datos
Proyecto final
Configurar entorno Android
App Android MiniBanco
MIT App Inventor2 Pintar en Imagen
Entrega trabajo final uml gp 8
Práctica Completa en Flash – ActionScript
Publicidad

Similar a Java HashMap (20)

PDF
Ejercicios en Netbeans
PDF
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
PDF
Unidad iii pilas y colas
PDF
PPT
Entrada De Datos
PDF
Comunicacion Java Envio De Datos Al Puerto Paralelo
PDF
PDF
Manejo de excepciones en Java
DOC
Unidad16 Codigof1
DOC
Ejemplos Importantisimo
PDF
Pila dinamica y pila estatica
PDF
Unidad iii Pilas y colas
PDF
Desarrollo De Programas Ejemplos 01
PDF
Desarrollo de programas_ejemplos_01
PDF
Ahorcado
PDF
Ahorcado
PDF
Creacion de proyecto_en_netbeans
ODP
Entrada Teclado
PPTX
Java básico
Ejercicios en Netbeans
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Unidad iii pilas y colas
Entrada De Datos
Comunicacion Java Envio De Datos Al Puerto Paralelo
Manejo de excepciones en Java
Unidad16 Codigof1
Ejemplos Importantisimo
Pila dinamica y pila estatica
Unidad iii Pilas y colas
Desarrollo De Programas Ejemplos 01
Desarrollo de programas_ejemplos_01
Ahorcado
Ahorcado
Creacion de proyecto_en_netbeans
Entrada Teclado
Java básico
Publicidad

Más de jubacalo (13)

PDF
Cronómetro con MIT App Inventor 2
PDF
Crear Base de Datos en Oracle
PDF
Web de noticias en Ajax
PDF
Escenarios
PDF
Matrices02
PDF
Gráficos
PDF
Tabla Dinámica
PDF
Tabla de Datos
PDF
Textura de agua
PDF
Funciones lógicas y condicionales
PDF
Solver
PDF
Word VBA
PDF
Java Thread Cronometro
Cronómetro con MIT App Inventor 2
Crear Base de Datos en Oracle
Web de noticias en Ajax
Escenarios
Matrices02
Gráficos
Tabla Dinámica
Tabla de Datos
Textura de agua
Funciones lógicas y condicionales
Solver
Word VBA
Java Thread Cronometro

Último (20)

PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
DOCX
2 GRADO UNIDAD 5 - 2025.docx para primaria
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
Metodologías Activas con herramientas IAG
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
DOCX
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
2 GRADO UNIDAD 5 - 2025.docx para primaria
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Metodologías Activas con herramientas IAG
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
Escuelas Desarmando una mirada subjetiva a la educación
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Tarea De El Colegio Coding For Kids 1 y 2
Punto Critico - Brian Tracy Ccesa007.pdf
V UNIDAD - PRIMER GRADO. del mes de agosto
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
Escuela Sabática 6. A través del Mar Rojo.pdf

Java HashMap

  • 1. Desarrollar un sistema de gestión de partes de un taller mecánico. La información de los partes es: código, descripción e importe. Un parte irá asociado a la matrícula de un coche de manera que podamos añadir, mostrar y eliminar un parte a partir de la matrícula de coche al que está asociado. La información de una matrícula es: provincia, número y letra. La clase Practica11d mostrará un menú de opciones por consola: crear, listar, mostrar y eliminar partes. También habrá una opción de salir. El formato de entrada de una matrícula es: provincia-número-letra (por ejemplo: M-1234-AV). Para leer por teclado se usará la clase Lector que se adjunta con esta práctica. Realizar el diagrama UML. Lector.java /* * @(#)Lector.java 1.1 27-Nov-2004 * * Copyright (c) 2004 José M. Ordax. All rights reserved. * * This program and the accompanying materials * are made available under the terms of the MIT License * which accompanies this distribution, and is available at * http://www.opensource.org/licenses/mit-license.html */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * La clase <code>Lector</code> sirve para leer datos de distintos * tipos por el teclado. Posee un método estático para leer cada tipo. * <p><p/> * Un ejemplo de su uso sería: * <blockquote><pre> * System.out.println("Introduzca un String: "); * String unString = Lector.leerString(); * System.out.println("El String introducido es: " + unString); * </pre></blockquote> * <p> * Al realizar operaciones de entrada/salida o conversiones entre tipos * se pueden producir problemas (excepciones en la tecnología Java) como * por ejemplo {@link java.lang.NumberFormatException} o * {@link java.io.IOException}. * Todos estos problemas están controlados y gestionados por la clase * <code>Lector</code> y en caso de producirse, se mostrará un mensaje * de error por pantalla explicando el motivo. * * @author José M. Ordax * @version 1.1, 27-Nov-2004 * @see java.lang.System#in * @see java.io.InputStream * @see java.io.InputStreamReader * @see java.io.BufferedReader * @see java.io.IOException */ bitCoach::Juan Bautista Cascallar Lorenzo
  • 2. public class Lector { // Atributos. private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // Constructor. private Lector() { super(); } /** * Lee un byte por teclado. Utiliza la tecla "Enter" para indicar el final del dato. * * @return el byte introducido o 0 si se produjo algún problema. */ public static byte leerByte() { byte tmp = 0; try { tmp = Byte.parseByte(br.readLine()); } catch (NumberFormatException ex) { System.out.println("Error: el dato introducido no se puede convertir en un byte."); ex.printStackTrace(); } catch (IOException ex) { System.out.println("Error: hubo un problema en la operación de entrada de datos."); ex.printStackTrace(); } catch(Exception ex) { System.out.println("Error: hubo un problema no controlado."); ex.printStackTrace(); } return tmp; } /** * Lee un short por teclado. Utiliza la tecla "Enter" para indicar el final del dato. * * @return el short introducido o 0 si se produjo algún problema. */ public static short leerShort() { short tmp = 0; try { tmp = Short.parseShort(br.readLine()); } catch (NumberFormatException ex) { System.out.println("Error: el dato introducido no se puede convertir en un short."); ex.printStackTrace(); } catch (IOException ex) { System.out.println("Error: hubo un problema en la operación de entrada de datos."); ex.printStackTrace(); } catch(Exception ex) { System.out.println("Error: hubo un problema no controlado."); ex.printStackTrace(); } return tmp; } bitCoach::Juan Bautista Cascallar Lorenzo
  • 3. /** * Lee un char por teclado. Utiliza la tecla "Enter" para indicar el final del dato. * * @return el primer char introducido o un blanco si se produjo algún problema. */ public static char leerChar() { char tmp = ' '; try { tmp = br.readLine().charAt(0); } catch (IOException ex) { System.out.println("Error: hubo un problema en la operación de entrada de datos."); ex.printStackTrace(); } catch(Exception ex) { System.out.println("Error: hubo un problema no controlado."); ex.printStackTrace(); } return tmp; } /** * Lee un int por teclado. Utiliza la tecla "Enter" para indicar el final del dato. * * @return el int introducido o 0 si se produjo algún problema. */ public static int leerInt() { int tmp = 0; try { tmp = Integer.parseInt(br.readLine()); } catch (NumberFormatException ex) { System.out.println("Error: el dato introducido no se puede convertir en un int."); ex.printStackTrace(); } catch (IOException ex) { System.out.println("Error: hubo un problema en la operación de entrada de datos."); ex.printStackTrace(); } catch(Exception ex) { System.out.println("Error: hubo un problema no controlado."); ex.printStackTrace(); } return tmp; } /** * Lee un long por teclado. Utiliza la tecla "Enter" para indicar el final del dato. * * @return el long introducido o 0 si se produjo algún problema. */ public static long leerLong() { long tmp = 0; try { tmp = Long.parseLong(br.readLine()); } catch (NumberFormatException ex) { System.out.println("Error: el dato introducido no se puede convertir en un long."); ex.printStackTrace(); } catch (IOException ex) { System.out.println("Error: hubo un problema en la operación de entrada de datos."); ex.printStackTrace(); } catch(Exception ex) { System.out.println("Error: hubo un problema no controlado."); ex.printStackTrace(); } return tmp; } bitCoach::Juan Bautista Cascallar Lorenzo
  • 4. /** * Lee un float por teclado. Utiliza la tecla "Enter" para indicar el final del dato. * * @return el float introducido o 0.0 si se produjo algún problema. */ public static float leerFloat() { float tmp = 0; try { tmp = Float.parseFloat(br.readLine()); } catch (NumberFormatException ex) { System.out.println("Error: el dato introducido no se puede convertir en un float."); ex.printStackTrace(); } catch (IOException ex) { System.out.println("Error: hubo un problema en la operación de entrada de datos."); ex.printStackTrace(); } catch(Exception ex) { System.out.println("Error: hubo un problema no controlado."); ex.printStackTrace(); } return tmp; } /** * Lee un double por teclado. Utiliza la tecla "Enter" para indicar el final del dato. * * @return el double introducido o 0.0 si se produjo algún problema. */ public static double leerDouble() { double tmp = 0; try { tmp = Double.parseDouble(br.readLine()); } catch (NumberFormatException ex) { System.out.println("Error: el dato introducido no se puede convertir en un double."); ex.printStackTrace(); } catch (IOException ex) { System.out.println("Error: hubo un problema en la operación de entrada de datos."); ex.printStackTrace(); } catch(Exception ex) { System.out.println("Error: hubo un problema no controlado."); ex.printStackTrace(); } return tmp; } /** * Lee una cadena de caracteres por teclado. Utiliza la tecla "Enter" para indicar el final del dato. * * @return el string introducido o <code>null</code> si se produjo algún problema. */ public static String leerString() { String tmp = null; try { tmp = br.readLine(); } catch (IOException ex) { System.out.println("Error: hubo un problema en la operación de entrada de datos."); ex.printStackTrace(); } catch(Exception ex) { System.out.println("Error: hubo un problema no controlado."); ex.printStackTrace(); } return tmp; } bitCoach::Juan Bautista Cascallar Lorenzo
  • 5. /** * Lee un boolean por teclado. Utiliza la tecla "Enter" para indicar el final del dato. * * @return <code>false</code> en cualquier caso a no ser que se introduzca la cadena "true". */ public static boolean leerBoolean() { boolean tmp = false; try { tmp = new Boolean(br.readLine()).booleanValue(); } catch (IOException ex) { System.out.println("Error: hubo un problema en la operación de entrada de datos."); ex.printStackTrace(); } catch(Exception ex) { System.out.println("Error: hubo un problema no controlado."); ex.printStackTrace(); } return tmp; } } CodigosParte.java public class CodigosParte { public static int codigo = 1; } Matricula.java public class Matricula { //Atributos private String provincia; private int numero; private String letra; //Constructor public Matricula(String prov, int num, String letr){ provincia = prov; numero = num; letra = letr; } public boolean equals(Object o){ if(this == o){ return true; } if(!(o instanceof Matricula)){ return false; } Matricula param = (Matricula)o; return param.provincia.equals(provincia) && param.numero == numero && param.letra.equals(letra); } public int hashCode(){ StringBuffer buffer = new StringBuffer(); buffer.append(provincia); buffer.append(Integer.toString(numero)); buffer.append(letra); return buffer.toString().hashCode(); } bitCoach::Juan Bautista Cascallar Lorenzo
  • 6. //Getters public String getProvincia(){ return provincia; } public int getNumero(){ return numero; } public String getLetra(){ return letra; } } Parte.java public class Parte { //Atributos private Matricula matricula; private int codigo; private String descripcion; double importe = 0.0; //Constructor public Parte(Matricula matric, String desc, double imp){ codigo = CodigosParte.codigo; matricula = matric; descripcion = desc; importe = imp; } //GETTERS public int getCodigo(){ return codigo; } public Matricula getMatricula(){ return matricula; } public String getDescripcion(){ return descripcion; } public double getImporte(){ return importe; } } GestorPartesHMap.java import java.util.HashMap; import java.util.ArrayList; import java.util.Iterator; import java.util.Set; public class GestorPartesHMap { //Atributos HashMap<Matricula,ArrayList<Parte>> hm = new HashMap<Matricula,ArrayList<Parte>>(); //--- OPCIÓN [1]: CREAR PARTE --- public void crearParte(){ Parte p; System.out.println("DATOS PARA CREAR EL PARTE "); System.out.println("------------------------------------------"); Matricula m = crearMatricula(); System.out.println("DESCRIPCIÓN: "); String descripcion = Lector.leerString(); System.out.println("IMPORTE: "); double importe = Lector.leerDouble(); p = new Parte(m,descripcion,importe); bitCoach::Juan Bautista Cascallar Lorenzo
  • 7. if(hm.containsKey(p.getMatricula()) == false){ ArrayList<Parte> partes = new ArrayList<Parte>(); hm.put(p.getMatricula(), partes); hm.get(p.getMatricula()).add(p); }else{ hm.get(p.getMatricula()).add(p); } CodigosParte.codigo++; } //--- OPCIÓN [2]: LISTAR PARTES POR COCHE --- public void listarPartesPorCoche(){ System.out.println("LISTAR PARTES POR COCHE/MATRICULA: "); System.out.println("------------------------------------------"); Matricula m = crearMatricula(); if(hm.containsKey(m) == true){ ArrayList<Parte> partes = hm.get(m); Iterator<Parte> it = partes.iterator(); System.out.println("Partes asociados a la matrícula [" + m.getProvincia() + "-" + m.getNumero() + "-" + m.getLetra() + "]"); System.out.println("==================================================="); while(it.hasNext()){ Parte p = it.next(); System.out.println("-----------------------------------"); System.out.println("MATRÍCULA: " + p.getMatricula().getProvincia()+ "-" + p.getMatricula().getNumero() + "-" + p.getMatricula().getLetra()); System.out.println("CÓDIGO: " + p.getCodigo()); System.out.println("DESCRIPCIÓN: " + p.getDescripcion()); System.out.println("PRECIO: " + p.getImporte()); System.out.println("-----------------------------------"); } }else{ System.out.println("Objeto no localizado..."); } }//fin funcion //--- OPCIÓN [3]: LISTADO COMPLETO DE PARTES --- public void listadoCompletoDePartes(){ if(hm.size() != 0){ Set<Matricula> claves = hm.keySet(); Iterator<Matricula> itClaves = claves.iterator(); while(itClaves.hasNext()) { Matricula m = itClaves.next(); System.out.println("Partes asociados a la matricula: " + m.getProvincia() + "-" + m.getNumero() + "-" + m.getLetra()); System.out.println("---------------------------------------------------"); ArrayList<Parte> partes = hm.get(m); Iterator<Parte> itPartes = partes.iterator(); while(itPartes.hasNext()){ Parte p = itPartes.next(); System.out.println("-----------------------------------"); System.out.println("MATRICULA: " + p.getMatricula().getProvincia() + "-" + p.getMatricula().getNumero() + "-" + p.getMatricula().getLetra()); System.out.println("CÓDIGO: " + p.getCodigo()); System.out.println("DESCRIPCIÓN: " + p.getDescripcion()); System.out.println("IMPORTE: " + p.getImporte()); System.out.println("-----------------------------------"); } } }else{ System.out.println("No hay partes...."); } }//fin funcion bitCoach::Juan Bautista Cascallar Lorenzo
  • 8. //--- [4] ELIMINAR PARTE POR MATRICULA --- public void eliminarPartePorMatricula(){ Matricula m = crearMatricula(); if(hm.containsKey(m) == true){ ArrayList<Parte> partes = hm.get(m); Iterator<Parte> it = partes.iterator(); System.out.println("Partes asociados a la matrícula [" + m.getProvincia() + "-" + m.getNumero() + "-" + m.getLetra() + "]"); System.out.println("==================================================="); while(it.hasNext()){ Parte p = it.next(); System.out.println("-----------------------------------"); System.out.println("MATRÍCULA: " + p.getMatricula().getProvincia()+ "-" + p.getMatricula().getNumero() + "-" + p.getMatricula().getLetra()); System.out.println("CÓDIGO: " + p.getCodigo()); System.out.println("DESCRIPCIÓN: " + p.getDescripcion()); System.out.println("PRECIO: " + p.getImporte()); System.out.println("-----------------------------------"); } System.out.println("Código del Parte que quieres borrar: "); int codigo = Lector.leerInt(); Iterator<Parte> it2 = partes.iterator(); while(it2.hasNext()){ Parte p = it2.next(); if(codigo == p.getCodigo()){ it2.remove(); System.out.println("Parte eliminado...."); }else{ System.out.println("Objeto no encontrado..."); } } }else{ System.out.println("Objeto no localizado..."); } }//fin funcion //--- [5] ELIMINAR TODOS LOS PARTES ASOCIADOS A UNA MATRICULA --- public void eliminarTodosLosPartesPorMatricula(){ Matricula m = crearMatricula(); if(hm.containsKey(m) == true){ hm.remove(m); System.out.println("Se han borrado todos los partes asociados a la matricula: " + m.getProvincia() + "-" + m.getNumero() + "-" + m.getLetra()); }else{ System.out.println("Objeto no encontrado..."); } } private Matricula crearMatricula(){ System.out.println("MATRICULA DEL COCHE (PROVINCIA-NÚMERO-LETRA):"); //-- Leer matrícula --- String provincia,letra; int numero; //--- PROVINCIA --- boolean correcto = true; do{ correcto = true; System.out.println("PROVINCIA: "); provincia = Lector.leerString(); for(int i=0;i<provincia.length();i++){ if(Character.isLetter(provincia.charAt(i)) == false){ System.out.println("El campo <PROVINCIA> sólo contiene letras..."); correcto = false; break; } } }while(correcto == false); //--- bitCoach::Juan Bautista Cascallar Lorenzo
  • 9. //--- NUMERO --- System.out.println("NÚMERO: "); numero = Lector.leerInt(); //--- LETRA --- correcto = true; do{ correcto = true; System.out.println("LETRA: "); letra = Lector.leerString(); for(int i=0;i<letra.length();i++){ if(Character.isLetter(letra.charAt(i)) == false){ System.out.println("El campo <LETRA> sólo contiene letras..."); correcto = false; break; } } }while(correcto == false); //--- Matricula m = new Matricula(provincia,numero,letra); return m; } }//FIN CLASE TestGestionPartes.java public class TestGestionPartes { /** * @param args */ //Atributos private static GestorPartesHMap gp = new GestorPartesHMap(); public static void main(String[] args) { // TODO Auto-generated method stub //MENÚ (SELECCIONAR OPCIÓN) int seleccion = 0; do{ System.out.println("SELECCIONA LA OPCIÓN DE MENÚ............"); System.out.println("[1] CREAR PARTE"); System.out.println("[2] LISTADO DE PARTES POR MATRICULA"); System.out.println("[3] LISTADO COMPLETO DE PARTES"); System.out.println("[4] ELIMINAR PARTE POR MATRICULA"); System.out.println("[5] ELIMINAR TODOS LOS PARTES ASOCIADOS A UNA MATRICULA"); System.out.println("[6] SALIR"); System.out.println("Selection: "); seleccion = Lector.leerInt(); //------------- switch (seleccion){ case 1: gp.crearParte(); break; case 2: gp.listarPartesPorCoche(); break; case 3: gp.listadoCompletoDePartes(); break; case 4: gp.eliminarPartePorMatricula(); break; case 5: gp.eliminarTodosLosPartesPorMatricula(); break; case 6: System.out.println("Fin del programa.");System.exit(0); default: System.out.println("Teclea una opción válida"); break; }//Fin switch }while(seleccion!=6);//Fin while }//Fin main }//Fin clase bitCoach::Juan Bautista Cascallar Lorenzo
  • 10. Diagrama de clases UML bitCoach::Juan Bautista Cascallar Lorenzo