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

20.4 Java interfaces and abstraction
20.4 Java interfaces and abstraction20.4 Java interfaces and abstraction
20.4 Java interfaces and abstractionIntro C# Book
 
Diagramas Analisis
Diagramas AnalisisDiagramas Analisis
Diagramas Analisisinnovalabcun
 
Wrapper class (130240116056)
Wrapper class (130240116056)Wrapper class (130240116056)
Wrapper class (130240116056)Akshay soni
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.David Gómez García
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםמורן אלקובי
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosMauro Pereira
 
Testing Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldTesting Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldYura Nosenko
 
Instalacion servicio e-mail Linux Mint
Instalacion servicio e-mail Linux MintInstalacion servicio e-mail Linux Mint
Instalacion servicio e-mail Linux MintGer Hernandez
 
Design Patterns: From STUPID to SOLID code
Design Patterns: From STUPID to SOLID codeDesign Patterns: From STUPID to SOLID code
Design Patterns: From STUPID to SOLID codePaulo Gandra de Sousa
 
Aulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosAulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosJocelma Rios
 
Java Collection framework
Java Collection frameworkJava Collection framework
Java Collection frameworkankitgarg_er
 
pl/sql Procedure
pl/sql Procedurepl/sql Procedure
pl/sql ProcedurePooja Dixit
 

La actualidad más candente (20)

20.4 Java interfaces and abstraction
20.4 Java interfaces and abstraction20.4 Java interfaces and abstraction
20.4 Java interfaces and abstraction
 
Diagramas Analisis
Diagramas AnalisisDiagramas Analisis
Diagramas Analisis
 
Pilas
PilasPilas
Pilas
 
Pilha e Fila Estática
Pilha e Fila EstáticaPilha e Fila Estática
Pilha e Fila Estática
 
Wrapper class (130240116056)
Wrapper class (130240116056)Wrapper class (130240116056)
Wrapper class (130240116056)
 
Inheritance
InheritanceInheritance
Inheritance
 
Oops in Java
Oops in JavaOops in Java
Oops in Java
 
Java collections
Java collectionsJava collections
Java collections
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתונים
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registros
 
Java strings
Java   stringsJava   strings
Java strings
 
Collections framework in java
Collections framework in javaCollections framework in java
Collections framework in java
 
Testing Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldTesting Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 world
 
Instalacion servicio e-mail Linux Mint
Instalacion servicio e-mail Linux MintInstalacion servicio e-mail Linux Mint
Instalacion servicio e-mail Linux Mint
 
Design Patterns: From STUPID to SOLID code
Design Patterns: From STUPID to SOLID codeDesign Patterns: From STUPID to SOLID code
Design Patterns: From STUPID to SOLID code
 
Aulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosAulas 13 e 14 - Algoritmos
Aulas 13 e 14 - Algoritmos
 
Java Collection framework
Java Collection frameworkJava Collection framework
Java Collection framework
 
pl/sql Procedure
pl/sql Procedurepl/sql Procedure
pl/sql Procedure
 

Destacado

jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojubacalo
 
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
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletjubacalo
 
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.jubacalo
 
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 viverosjubacalo
 
Java ArrayList Iterator
Java ArrayList IteratorJava ArrayList Iterator
Java ArrayList Iteratorjubacalo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSPjubacalo
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva pagejubacalo
 
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 HolaMundojubacalo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DBjubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSPjubacalo
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSPjubacalo
 
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 HTMLjubacalo
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadorajubacalo
 
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 Tomcatjubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datosjubacalo
 

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 (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

MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagenjubacalo
 
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 2jubacalo
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBancojubacalo
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oraclejubacalo
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajaxjubacalo
 
Escenarios
EscenariosEscenarios
Escenariosjubacalo
 
Matrices02
Matrices02Matrices02
Matrices02jubacalo
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámicajubacalo
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datosjubacalo
 
Textura de agua
Textura de aguaTextura de agua
Textura de aguajubacalo
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionalesjubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 

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

PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariamarco carlos cuyo
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIAAbelardoVelaAlbrecht1
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfNataliaMalky1
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)veganet
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docxAgustinaNuez21
 
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptAlberto Rubio
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 

Último (20)

PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundaria
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docx
 
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..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