[ Foro de Java ]

Agenda

26-Nov-2019 15:06
Gerardo Montagner
1 Respuestas

He conseguido este codigo para una agenda, compila bien sin errores, sin embargo al ejecutarlo no aparece ninguna informacion ni menu ni errores, alguien podria indicarme que le hace falta hacer?

package ControlUsuarios;

import javax.swing.JOptionPane;

public class VectorCadenas{

public static void main(String[] args)
{

String usuario[]=new String[20];
Boolean existe=false;

/* Hay que recordar que como éste vector se utilizará para todas las
* operaciones (Altas, bajas, consultas, modificaciones, ordenamiento)
* se tiene que declarar fuera de cualquier bloque de código de las opciones del menú.
   */

       int op=0;
       String menu="***** Control de usuarios  *****\n";
       menu+="1.- Registrar usuario\n";
       menu+="2.- Consultar usuario\n";
       menu+="3.- Eliminar usuario\n";
       menu+="4.- Modificar usuario\n";
       menu+="5.- Ordenamiento de datos\n";
       menu+="6.- Salir\n";
       menu+="Digita una opción";
do{   }while(op!=6);
       
  /*1.- Registrar usuario
La opción 1 corresponde a las altas o registro de nombres, lo haré pidiendo el nombre
con JOptionPane y guardarlo en el vector, pero por el momento nos falta algo muy
   importante para poder guardar en el vector que es una variable para llevar el índice
   a guardar en el vector, para ello declararé una variable entera en donde declaré mi
   vector para no perder el valor cuando salga de la opción 1. */

       int indice=0;
 
 /* Muestro mi menú, capturo la opción digitada y la compara con un switch case, en caso
  * de ser la opción 1 verifico primero que el vector no este lleno, si no lo está guardo el nombre.
  */

       op=Integer.parseInt(JOptionPane.showInputDialog(menu));
           switch (op){
           
   case 1:
  if(indice>usuario.length-1){
      JOptionPane.showMessageDialog(null, "Vector lleno, ya no puede registrar mas nombres");
      }else
      {
     String nom=JOptionPane.showInputDialog("Escribe el nombre de la persona");
     usuario[indice]=nom;
     indice++;
  }
     break;
             
 /* 2.- Consultar usuario
Las consultas se realizarán buscando cada elemento dentro del vector y comparando si es igual
a un dato digitado por el usuario, en nuestro programa solamente retornará un mensaje que diga
si está registrado o no, primeramente se verificará que existan usuarios registrados, de ser así
se pide el nombre del usuario a consultar y se procede con las comparaciónes en el vector. */
 
case 2: //Consultas
     if(indice>0){
     existe=false;
 String consulta=JOptionPane.showInputDialog("Escribe el nombre a consultar");
 for(int i=0;i<usuario.length;i++)
  {
      if(consulta.equalsIgnoreCase(usuario[i]))
         existe=true;
   }
      if(existe)
         JOptionPane.showMessageDialog(null, "El usuario "+consulta+" ya se encuentra registrado");
      else
         JOptionPane.showMessageDialog(null, "El usuario "+consulta+" no existe");        
   }
       else
       {
      JOptionPane.showMessageDialog(null, "No hay usuarios registrados");
}
break;

   /* 3.- Eliminar usuario
 La eliminación de usuarios corresponde al case 3 del menú, en esta ocación tenemos que hacer 2 cosas,
 buscar al usuario y eliminarlo, entonces para buscar al usuario podemos utilizar el código anterior
 de consultas.
 Cada vez que se quiera eliminar un usuario es importante verificar que existan usuarios registrados,
 para ello llevamos el control con la variable indice, lo verificamos haciendo un simple if. */

       case 3:
     if(indice>0){
               
     }
     else
        {
        JOptionPane.showMessageDialog(null, "No hay usuarios registrados");
        break;
        }
   
                   
                           
 /* En caso de que si hay usuarios registrados pedimos el nombre del usuario a eliminar, y lo buscamos
   * dentro del vector. */

       existe = false;

       String eliminar=JOptionPane.showInputDialog("Escribe el nombre de usuario a eliminar");
       for(int i=0;i<usuario.length;i++)
       {
           if(eliminar.equalsIgnoreCase(usuario[i]))
           {                
                      existe=true;
           }  

 /* Código para eliminar usuario            
    Como se observa en el código anterior se hace la misma consulta que en el case 2, busca en todo el
    vector un nombre igual a el nombre del usuario a eliminar, en caso de encontrarlo se hace la
    eliminación.
    Cuando se cumpla la condición se debe eliminar un registro hacemos lo siguiente: */

         for(int j=i;j<indice-1;j++)
         {
           usuario[j]=usuario[j+1];
         }
          indice--;
          JOptionPane.showMessageDialog(null, "El usuario de ha eliminado","Éxito al eliminar",JOptionPane.OK_OPTION);

/* Cuando encuentra un nombre a eliminar hacemos un corrimiento en el vector, es decir, el nombre que se
* va a eliminar simplemente lo sustituimos con el valor siguiente del vector así eliminamos el nombre actual en el vector, como hacemos una eliminación de un registro debemos decrementar nuestra variable indice, en esta ocación se ponen más parámetros en el JOptionPane que es "Éxito al eliminar" que vendrá siendo un título en la ventana donde se muestra el mensaje y JOptionPane.INFORMATION_MESSAGE que mostrará un icono de información.
  Si al terminar el ciclo no se encontró ningún nombre igual significa que no se existe el usuario,
  mandamos un mensaje de error si no se encontró el usuario: */

     if(!existe){
JOptionPane.showMessageDialog(null, "No se encontró el usuario","Error al eliminar",JOptionPane.ERROR_MESSAGE);
       }
               else
           {
        break;
           }
       }
/* 4.- Modificar usuario
* El case 4 corresponde a la modificación de un usuario, en este caso solo se cambiará el nombre,
* se sigue utilizando el código de las consultas para el proceso y solo se sobreescribe el valor del
* nombre del vector por uno nuevo, sin aumentar ni decrementar la variable indice.*/

case 4:

if(indice>0)
{
  existe=false;
  String cons=JOptionPane.showInputDialog("Escribe el nombre de usuario a modificar");
 
  for(int i=0;i<usuario.length;i++)
  {
        if(cons.equalsIgnoreCase(usuario[i]))
        {
              existe=true;
               String modificar=JOptionPane.showInputDialog("Escribe el nuevo nombre de usuario");
               usuario[i]=modificar;
        }
  }

  if(!existe)
         JOptionPane.showMessageDialog(null, "No se encontró el usuario","Error en "
          + "la consulta",JOptionPane.ERROR_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(null, "No hay usuarios registrados");
}    
   break;

                     
/* 5.- Ordenar Datos
  En esta opción ordenaremos los nombres en forma alfabéticamente y utilizaremos el método de burbuja
  previamente visto, no se notará ningún cambio en las opciones anteriores para ver que realmente se
  ordenan primero mostraré los datos sin ordenar y luego ordenados. */

 case 5: /* Ordenamiento */

 /* Imprimo los datos desordenados */
                       
    String datos="";
       
for(int i=0;i<indice;i++)
{
  datos+=usuario[i]+"\n";
}
          JOptionPane.showMessageDialog(null, datos);
                                       
         //Ordenación por orden alfabetico
                       
          for(int i=0;i<(indice-1);i++)
          {
                  for(int j=i+1;j<indice;j++)
                  {
                     String c1=usuario[i];
                     String c2=usuario[j];
                     
                     if(c1.compareTo(c2)>0)
                     {

         /*compareTO regresa un valor positivo si se cumple la condicion que c1 es mayor
          * que c2, 0 si son iguales y menor que 0 si no se cumple*/
         
                     String aux=usuario[j];
                     usuario[i]=usuario[j];
                     usuario[j]=aux;
                     }
                 }
           }
                                       
         /* Imprimo los datos ordenados */
                           
               datos="";
               for(int i=0;i<indice;i++){
               datos+=usuario[i]+"\n";
}
              JOptionPane.showMessageDialog(null, datos);
       
              break;

              default:
             
              JOptionPane.showMessageDialog(null, "Opción no válida");
             
              break;                        
}
}
}


26-Nov-2019 15:48
Nacho Cabanes (+84)

Efectivamente, parece estar incompleto: crea un menú pero se queda en un bucle sin fin, sin mostrarlo y sin tomar ninguna entrada del usuario:

do{   }while(op!=6);

Imagino que será un ejercicio de clase para que los alumnos lo completen.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)