SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

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

En vedette

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
 

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

Similaire à 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
 

Plus 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
 

Plus 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
 

Dernier

CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxroberthirigoinvasque
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 
🦄💫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.docxEliaHernndez7
 
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...JAVIER SOLIS NOYOLA
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfcarolinamartinezsev
 
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 ValoresJonathanCovena1
 
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.pdfMercedes Gonzalez
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfapunteshistoriamarmo
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
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 NOYOLAJAVIER SOLIS NOYOLA
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfGruberACaraballo
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 

Dernier (20)

CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
🦄💫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
 
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...
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
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
 
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
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
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
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
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
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.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