Relojería 3: Clase "Principal"

 

La clase principal es nuestra interfaz de usuario, aunque todavía no manejamos gráficos podemos hacer un menú con JOptionPane, el menú incluirá una opción para cada operación a realizar.

Creando la clase

public class Principal {

        public static void main(String[] args) {
                

        }

}

 

Al crear la clase Principal primeramente debemos crear un objeto de tipo “Relojeria”, si no se específica no se podrá guardar ningún objeto de tipo “Reloj”. Para ello se puede pedir el tamaño del vector al usuario.

int tamano=Integer.parseInt(JOptionPane.showInputDialog("Tamaño del vector"));
Relojeria relojes=new Relojeria(tamano);

 

El vector relojes es que se utilizará en todo el programa.

Creando el menú

 

En la creación del menú no debe haber mayor problema pues se ha hecho ya muchos menús con un String y un switch case dentro de un ciclo do-while.

String menu="";
int op;
do{
    menu="******** Menú Relojería ********\n";
    menu+="1.- Registrar  \n";
    menu+="2.- Consultar \n";
    menu+="3.- Eliminar \n";
    menu+="4.- Modificar \n";
    menu+="5.- Salir \n";
    menu+="Elija una opción";
    op=Integer.parseInt(JOptionPane.showInputDialog(menu));
    switch(op){
        case 1:
            break;
        case 2:
            break;  
        case 3:
            break;  
        case 4:
            break;   
    }
}while(op!=5);  

Registrar reloj

Para registrar un reloj seleccionar el número 1 del menú.

 

Una vez digitada esa opción del menú empezaremos a pedir los datos del reloj, lo primera será la clave del reloj.

 

String claveReloj=JOptionPane.showInputDialog("Digite la clave del reloj");

 

 

Puede darse el caso de que el usuario quiera registrar un reloj con una clave que ya existe, entonces necesitamos validar que el reloj no exista para poderlo registrar.

case 1:
        claveReloj=JOptionPane.showInputDialog("Digite la clave del reloj");
        if(!relojes.existe(claveReloj)){
                String marca=JOptionPane.showInputDialog("Digita la marca del reloj");
                String tipo=JOptionPane.showInputDialog("Digita el tipo del reloj");
                String funcionamiento=JOptionPane.showInputDialog("Digita el funcionamiento del reloj");
                String material=JOptionPane.showInputDialog("Digita el material del reloj");
                Reloj reloj=new Reloj(claveReloj,marca,tipo,funcionamiento,material);
                relojes.registrarReloj(reloj);
                JOptionPane.showMessageDialog(null,"El reloj se ha registrado exitosamente");
        }else{
                JOptionPane.showMessageDialog(null,"hay un reloj con la misma clave");
        }
        break;

El método relojes.existe(claveReloj) nos retorna un booleano, true en caso de que exista el reloj, false en caso contrario, lo que nos interesa es saber que no exista el reloj, por eso negamos la condición.

 

Dentro de la parte verdadera de la condición if pedimos los datos restantes y guardamos en el vector.

Consultar Reloj

 

Entramos a las consultas digitando el número 2 en el menú, primeramente verifica que si haya datos registrados, después pediremos la clave del reloj y se mostraran los datos, caso contrario muestra un mensaje indicando que la clave no existe.

case 2:
        if(relojes.totalReloj()>0){
                claveReloj=JOptionPane.showInputDialog("Digita la clave del reloj");    
                if(relojes.existe(claveReloj)){
                        String datos=relojes.obtenerReloj(relojes.posicion(claveReloj)).datosReloj();
                        JOptionPane.showMessageDialog(null,datos);
                }else{
                        JOptionPane.showMessageDialog(null,"No se encontró el reloj");
                }               
        }else{
                JOptionPane.showMessageDialog(null,"No hay relojes registrados");
        }
        break;  

 

Para verificar que si existen relojes registrados se utiliza el método totalReloj(), y para obtener los datos del reloj primero se obtiene la posición del reloj con el método relojes.posicion(claveReloj), al mismo tiempo invocamos el método de relojes.obtenerReloj(), estos dos métodos actuan como una serie en cadena, primeramente se ejecuta el método que esta adentro de los paréntesis y posteriormente el de afuera. El método obtenerReloj() retorna un objeto tipo reloj, así que se puede ejecutar el método datosReloj(), éste último se ejecutara al final, una vez que se haya obtenido el reloj. 

Eliminar reloj

 

Para dar de baja un reloj se sigue los mismos pasos que el de consulta, a diferencia de que se llama el método eliminar en lugar de obtenerReloj.

case 3:
        if(relojes.totalReloj()>0){
                claveReloj=JOptionPane.showInputDialog("Digite la clave del reloj");
                if(relojes.existe(claveReloj)){
                        relojes.bajasReloj(relojes.posicion(claveReloj));
                        JOptionPane.showMessageDialog(null,"El reloj ha sido dado de baja");
                }else{
                        JOptionPane.showMessageDialog(null,"El reloj no existe");
                }
        }else{
                JOptionPane.showMessageDialog(null,"No hay relojes registrados");
        }
        break;  

Modificar reloj

 

Las modificaciones siguen la misma lógica, ésta vez llamando el método modificarReloj(), antes de modificar las propiedades de una reloj se muestran los datos, despues modificamos, para cerciorarnos de que el reloj fue modificado se puede hacer una consulta.

case 4:
        if(relojes.totalReloj()>0){
                claveReloj=JOptionPane.showInputDialog("Digite la clave del reloj");
                if(relojes.existe(claveReloj)){
                        
                        String datos=relojes.obtenerReloj(relojes.posicion(claveReloj)).datosReloj();
                        JOptionPane.showMessageDialog(null,datos);
                        
                        String marca=JOptionPane.showInputDialog("Digita la marca del reloj");
                        String tipo=JOptionPane.showInputDialog("Digita el tipo del reloj");
                        String funcionamiento=JOptionPane.showInputDialog("Digita el funcionamiento del reloj");
                        String material=JOptionPane.showInputDialog("Digita el material del reloj");
                        Reloj reloj=new Reloj(claveReloj,marca,tipo,funcionamiento,material);
                        relojes.modificarReloj(reloj, relojes.posicion(claveReloj));
                        JOptionPane.showMessageDialog(null,"El reloj ha sido modificado");
                }else{
                        JOptionPane.showMessageDialog(null,"El reloj no existe");
                }
        }else{
                JOptionPane.showMessageDialog(null,"No hay relojes registrados");
        }
        break;   

Código completo

package pqtRelojeria;

import javax.swing.JOptionPane;

public class Principal {

        public static void main(String[] args) {
                
                int tamano=Integer.parseInt(JOptionPane.showInputDialog("Tamaño del vector"));
                Relojeria relojes=new Relojeria(tamano);

                String menu="", claveReloj="";
                int op;
                do{
            menu="******** Menú Relojería ********\n";
            menu+="1.- Registrar  \n";
            menu+="2.- Consultar \n";
            menu+="3.- Eliminar \n";
            menu+="4.- Modificar \n";
            menu+="5.- Salir \n";
            menu+="Elija una opción";
            op=Integer.parseInt(JOptionPane.showInputDialog(menu));
                        switch(op){
                                case 1:
                                        claveReloj=JOptionPane.showInputDialog("Digite la clave del reloj");
                                if(!relojes.existe(claveReloj)){
                                        String marca=JOptionPane.showInputDialog("Digita la marca del reloj");
                                        String tipo=JOptionPane.showInputDialog("Digita el tipo del reloj");
                                        String funcionamiento=JOptionPane.showInputDialog("Digita el funcionamiento del reloj");
                                        String material=JOptionPane.showInputDialog("Digita el material del reloj");
                                        Reloj reloj=new Reloj(claveReloj,marca,tipo,funcionamiento,material);
                                        relojes.registrarReloj(reloj);
                                        JOptionPane.showMessageDialog(null,"El reloj se ha registrado exitosamente");
                                }else{
                                        JOptionPane.showMessageDialog(null,"hay un reloj con la misma clave");
                                }
                                        break;
                                case 2:
                                        if(relojes.totalReloj()>0){
                                                claveReloj=JOptionPane.showInputDialog("Digita la clave del reloj");    
                                                if(relojes.existe(claveReloj)){
                                                        String datos=relojes.obtenerReloj(relojes.posicion(claveReloj)).datosReloj();
                                                        JOptionPane.showMessageDialog(null,datos);
                                                }else{
                                                        JOptionPane.showMessageDialog(null,"No se encontró el reloj");
                                                }               
                                        }else{
                                                JOptionPane.showMessageDialog(null,"No hay relojes registrados");
                                        }
                                        break;  
                                case 3:
                                        if(relojes.totalReloj()>0){
                                                claveReloj=JOptionPane.showInputDialog("Digite la clave del reloj");
                                                if(relojes.existe(claveReloj)){
                                                        relojes.bajasReloj(relojes.posicion(claveReloj));
                                                        JOptionPane.showMessageDialog(null,"El reloj ha sido dado de baja");
                                                }else{
                                                        JOptionPane.showMessageDialog(null,"El reloj no existe");
                                                }
                                        }else{
                                                JOptionPane.showMessageDialog(null,"No hay relojes registrados");
                                        }
                                        break;  
                                case 4:
                                        if(relojes.totalReloj()>0){
                                                claveReloj=JOptionPane.showInputDialog("Digite la clave del reloj");
                                                if(relojes.existe(claveReloj)){
                                                        
                                                        String datos=relojes.obtenerReloj(relojes.posicion(claveReloj)).datosReloj();
                                                        JOptionPane.showMessageDialog(null,datos);
                                                        
                                                        String marca=JOptionPane.showInputDialog("Digita la marca del reloj");
                                                        String tipo=JOptionPane.showInputDialog("Digita el tipo del reloj");
                                                        String funcionamiento=JOptionPane.showInputDialog("Digita el funcionamiento del reloj");
                                                        String material=JOptionPane.showInputDialog("Digita el material del reloj");
                                                        Reloj reloj=new Reloj(claveReloj,marca,tipo,funcionamiento,material);
                                                        relojes.modificarReloj(reloj, relojes.posicion(claveReloj));
                                                        JOptionPane.showMessageDialog(null,"El reloj ha sido modificado");
                                                }else{
                                                        JOptionPane.showMessageDialog(null,"El reloj no existe");
                                                }
                                        }else{
                                                JOptionPane.showMessageDialog(null,"No hay relojes registrados");
                                        }
                                        break;   
                        }
        }while(op!=5);  
        }
}