SlideShare una empresa de Scribd logo
1 de 10
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

La actualidad más candente

Client side scripting using Javascript
Client side scripting using JavascriptClient side scripting using Javascript
Client side scripting using Javascript
Bansari Shah
 
7 client-state manipulation
7   client-state manipulation7   client-state manipulation
7 client-state manipulation
drewz lin
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing
Laura
 

La actualidad más candente (20)

Basics of JavaScript
Basics of JavaScriptBasics of JavaScript
Basics of JavaScript
 
Unit 3 (frames)
Unit 3 (frames)Unit 3 (frames)
Unit 3 (frames)
 
Method overriding
Method overridingMethod overriding
Method overriding
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
Web design - Working with forms in HTML
Web design - Working with forms in HTMLWeb design - Working with forms in HTML
Web design - Working with forms in HTML
 
Lecture 5 sorting and searching
Lecture 5   sorting and searchingLecture 5   sorting and searching
Lecture 5 sorting and searching
 
07 java collection
07 java collection07 java collection
07 java collection
 
Client side scripting using Javascript
Client side scripting using JavascriptClient side scripting using Javascript
Client side scripting using Javascript
 
Why shift from ETL to ELT?
Why shift from ETL to ELT?Why shift from ETL to ELT?
Why shift from ETL to ELT?
 
XML-Extensible Markup Language
XML-Extensible Markup Language XML-Extensible Markup Language
XML-Extensible Markup Language
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
 
Scrip de la base de datos cine
Scrip de la base de datos cineScrip de la base de datos cine
Scrip de la base de datos cine
 
jQuery
jQueryjQuery
jQuery
 
Php functions
Php functionsPhp functions
Php functions
 
7 client-state manipulation
7   client-state manipulation7   client-state manipulation
7 client-state manipulation
 
JAVA PROGRAMMING - The Collections Framework
JAVA PROGRAMMING - The Collections Framework JAVA PROGRAMMING - The Collections Framework
JAVA PROGRAMMING - The Collections Framework
 
Frames tables forms
Frames tables formsFrames tables forms
Frames tables forms
 
TIPOS DE METODOS EN PROGRAMACION
TIPOS DE METODOS EN PROGRAMACIONTIPOS DE METODOS EN PROGRAMACION
TIPOS DE METODOS EN PROGRAMACION
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing
 
Vectors in Java
Vectors in JavaVectors in Java
Vectors in Java
 

Destacado

Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.
jubacalo
 
Java ArrayList Iterator
Java ArrayList IteratorJava ArrayList Iterator
Java ArrayList Iterator
jubacalo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
jubacalo
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
jubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
jubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
jubacalo
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
jubacalo
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
jubacalo
 

Destacado (20)

jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 
Java ArrayList Iterator
Java ArrayList IteratorJava ArrayList Iterator
Java ArrayList Iterator
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Proyecto final
Proyecto finalProyecto final
Proyecto final
 

Similar a Java HashMap

Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
edgar muñoz
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
cursobeta
 
Unidad16 Codigof1
Unidad16 Codigof1Unidad16 Codigof1
Unidad16 Codigof1
martha leon
 
Ejemplos Importantisimo
Ejemplos  ImportantisimoEjemplos  Importantisimo
Ejemplos Importantisimo
martha leon
 

Similar a Java HashMap (20)

Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
 
Unidad iii pilas y colas
Unidad iii pilas y colasUnidad iii pilas y colas
Unidad iii pilas y colas
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 
Entrada De Datos
Entrada De DatosEntrada De Datos
Entrada De Datos
 
Comunicacion Java Envio De Datos Al Puerto Paralelo
Comunicacion Java Envio De Datos Al Puerto ParaleloComunicacion Java Envio De Datos Al Puerto Paralelo
Comunicacion Java Envio De Datos Al Puerto Paralelo
 
Ejercicios tema1
Ejercicios tema1Ejercicios tema1
Ejercicios tema1
 
Manejo de excepciones en Java
Manejo de excepciones en JavaManejo de excepciones en Java
Manejo de excepciones en Java
 
Unidad16 Codigof1
Unidad16 Codigof1Unidad16 Codigof1
Unidad16 Codigof1
 
Ejemplos Importantisimo
Ejemplos  ImportantisimoEjemplos  Importantisimo
Ejemplos Importantisimo
 
Practicas
PracticasPracticas
Practicas
 
Pila dinamica y pila estatica
Pila dinamica y pila estaticaPila dinamica y pila estatica
Pila dinamica y pila estatica
 
Unidad iii Pilas y colas
Unidad iii Pilas y colasUnidad iii Pilas y colas
Unidad iii Pilas y colas
 
Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01
 
Desarrollo de programas_ejemplos_01
Desarrollo de programas_ejemplos_01Desarrollo de programas_ejemplos_01
Desarrollo de programas_ejemplos_01
 
Ahorcado
AhorcadoAhorcado
Ahorcado
 
Ahorcado
AhorcadoAhorcado
Ahorcado
 
Creacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeansCreacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeans
 
Entrada Teclado
Entrada TecladoEntrada Teclado
Entrada Teclado
 
Java básico
Java  básicoJava  básico
Java básico
 

Más de jubacalo (16)

MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Escenarios
EscenariosEscenarios
Escenarios
 
Matrices02
Matrices02Matrices02
Matrices02
 
Gráficos
GráficosGráficos
Gráficos
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámica
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datos
 
Textura de agua
Textura de aguaTextura de agua
Textura de agua
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionales
 
Solver
SolverSolver
Solver
 
Word VBA
Word VBAWord VBA
Word VBA
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 

Último

6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 

Último (20)

SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Linea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docxLinea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docx
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 

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