Foro de elhacker.net

Programación => Java => Mensaje iniciado por: GhostMati en 16 Octubre 2018, 15:34 pm



Título: Una ayudita
Publicado por: GhostMati en 16 Octubre 2018, 15:34 pm
Tengo que hacer un programa para mi escuela que permita entrar a un profesor y administrador

ya tengo gran parte echa pero tengo que hacer si el nombre y contraseña están bien,pase a otro menú con otras opciones y si es incorrecto te de 3 oportunidades para poder probar la contraseña o el nombre depende de en que se equivoque
(creo que es con un while o do while pero probé hacer de todo y no puedo)

dejo algo del código por favor alguna ayuda viene muy bien,Gracias.


import java.util.Scanner;

public class proyecto {
   public static void main(String[] args) {
      Scanner leer = new Scanner(System.in);
      String nom = new String("Docente2018");
      String contra = new String("Docente2018");
      String nom2 = new String("Administrador2018");
      String contra2 = new String("Administrador2018");
      System.out.println("1)Profesor");
      System.out.println("2)Administrador");
      int Opcion = leer.nextInt();
      switch (Opcion) {

      case 1:

         System.out.println("Ingrese su nombre de usuario: ");
         String nombre = leer.next();

         System.out.println("Ingrese su coantraseña: ");
         String contraseña = leer.next();

         if(nom.equals(nombre)){
            System.out.println();
         }else{
            System.out.println("Nombre incorrecto");
         }
            if(contra.equals(contraseña)){
               System.out.println();
            }else{
               System.out.println("Contraseña incorrecta");
            }
         
         break;
         
      case 2:
         System.out.println("Ingrese su nombre de usuario: ");
         String nombre2 = leer.next();
         System.out.println("Ingrese su contraseña: ");
         String contraseña2 = leer.next();
         if (contra2.equals(contraseña2)) {
            System.out.println();
         } else {
            System.out.println(" incorrecta");
         }
         if (nom2.equals(nombre2)) {
            System.out.println();

         } else {
            System.out.println("Nombre incorrecto");
            break;
         }
      }
   }
}


Título: Re: Una ayudita
Publicado por: srWhiteSkull en 16 Octubre 2018, 16:25 pm
creo que es con un while o do while pero probé hacer de todo y no puedo

y por qué no puedes? Inténtalo y comenta el error que te da y muestra el código, la porción.


Título: Re: Una ayudita
Publicado por: rub'n en 18 Octubre 2018, 16:54 pm

Hola,
La descripción de tu post no es adecuada "Una ayudita"  :-\ , y usa Código GeSHI


(http://3.bp.blogspot.com/-O6qDroNEzts/W8sWHPnV3MI/AAAAAAAADJw/mypp_PTYxbA_uKr7E-O-x0epDjSUdk3mwCK4BGAYYCw/s1600/geshi.gif)


Este es tu código algo modificado para que funcione pero se hacia largo y aun faltaba comparar  :-(

Código
  1. import java.util.Scanner;
  2.  
  3. public class ProfeAdmin {
  4.  
  5.    public static void main(String[] args) {
  6.  
  7.        Scanner leer = new Scanner(System.in);
  8.        String nom = new String("Docente2018");
  9.        String contra = new String("Docente2018");
  10.        String nom2 = new String("Administrador2018");
  11.        String contra2 = new String("Administrador2018");
  12.        System.out.println("1)Profesor");
  13.        System.out.println("2)Administrador");
  14.        int Opcion = leer.nextInt();
  15.  
  16.  
  17.        int count = 1; // uso de contador para contrar la oportunidades que son 3
  18.  
  19.        switch (Opcion) {
  20.  
  21.            case 1:
  22.  
  23.                System.out.println("Ingrese su nombre de usuario: ");
  24.                String nombre = leer.next();
  25.  
  26.                System.out.println("Ingrese su contraseña: ");
  27.                String contraseña = leer.next();
  28.  
  29.  
  30.                // establecer 3 oportunidades si se equivoca en el nombre o la contraseña
  31.  
  32.                if (nom.equals(nombre) && contra.equals(contraseña)) {
  33.                    mostrar("Correcto access granted");
  34.  
  35.                } else {
  36.                    if (!nom.equals(nombre)) { // se lee, "si nom no es igual a nombre" , dara true
  37.                        System.out.println("Nombre incorrecto");
  38.                        int countO = 3;
  39.                        while (count <= 3) {
  40.                            ShowData.showLn("Oportunidad " + (countO--));
  41.                            ShowData.showLn("Ingrese Nombre");
  42.                            final String newName = leer.next();
  43.  
  44.                            if (newName.equals(nom)) {
  45.                                ShowData.showLn("Nombre Correcto");
  46.                                break;
  47.                            } else {
  48.                                count++;
  49.                                continue;
  50.                            }
  51.  
  52.                        }
  53.                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  54.                                   // xq no entrara mas en el while
  55.  
  56.                    } else if (!contra.equals(contraseña)) { //si la contra no es igual a contraseña, dara true
  57.  
  58.                        System.out.println("Contraseña incorrecta");
  59.                        int countO = 3;
  60.                        while (count <= 3) {
  61.                            mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
  62.                            mostrar("Ingrese contraseña");
  63.                            final String newPass = leer.next();
  64.  
  65.                            if (newPass.equals(contra)) {
  66.                                mostrar("Contraseña correcta");
  67.  
  68.                                /*
  69.                                 Aqui introducir siguente menu
  70.                                  */
  71.  
  72.                                break;
  73.                            } else {
  74.                                count++;
  75.                                continue;
  76.                            }
  77.  
  78.                        }
  79.                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  80.                                    // xq no entrara mas en el while
  81.  
  82.                    }
  83.  
  84.                }
  85.  
  86.                break;
  87.  
  88.            case 2:
  89.                System.out.println("Ingrese su nombre de usuario: ");
  90.                String nombre2 = leer.next();
  91.                System.out.println("Ingrese su contraseña: ");
  92.                String contraseña2 = leer.next();
  93.  
  94.  
  95.                if (nom2.equals(nombre2) && contra2.equals(contraseña2)) {
  96.                    mostrar("Correcto access granted");
  97.                } else {
  98.                    if (!nom2.equals(nombre2)) { // se lee, "si nom no es igual a nombre" , dara true
  99.                        System.out.println("Nombre incorrecto");
  100.                        int countO = 3;
  101.                        while (count <= 3) {
  102.                            mostrar("Oportunidad " + (countO--));
  103.                            mostrar("Ingrese Nombre");
  104.                            final String newName = leer.next();
  105.  
  106.                            if (newName.equals(nom2)) {
  107.                                mostrar("Nombre Correcto");
  108.                                break;
  109.                            } else {
  110.                                count++;
  111.                                continue;
  112.                            }
  113.  
  114.                        }
  115.                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  116.                        // xq no entrara mas en el while
  117.  
  118.                    } else if (!contra2.equals(contraseña2)) { //se lee, la contra no es igual a contraseña, dara true
  119.  
  120.                        System.out.println("Contraseña incorrecta");
  121.                        int countO = 3;
  122.                        while (count <= 3) {
  123.                            mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
  124.                            mostrar("Ingrese contraseña");
  125.                            final String newPass = leer.next();
  126.  
  127.                            if (newPass.equals(contra2)) {
  128.                                mostrar("Contraseña correcta");
  129.  
  130.                                /*
  131.                                 Aqui introducir siguente menu
  132.                                  */
  133.  
  134.                                break;
  135.                            } else {
  136.                                count++;
  137.                                continue;
  138.                            }
  139.  
  140.                        }
  141.                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  142.                        // xq no entrara mas en el while
  143.  
  144.                    }
  145.  
  146.                }
  147.  
  148.                break;
  149.        }
  150.    }
  151.  
  152.    private static void mostrar(final String s) {
  153.        System.out.println(s);
  154.    }
  155.  
  156.    //establecer oportunidades, son 3, creamos un metodo
  157.    private void filtrar() {
  158.  
  159.    }
  160. }
  161.  
  162.  


tu código original carece de métodos, uso de contructor, de variables de instancia, variables de clase, es bueno que le des un vistazo y refactorises tu código con eso., y ahora con este codigo se nota algo de diferencia con respecto a la reducción de líneas, solo que usamos tipos enum aquí

para las sentencias switch puedes usar enum  >:D ver linea 50 el método
Código
  1. getUsersByID()




Código
  1. package foro;
  2.  
  3. import javax.swing.*;
  4. import java.util.EnumSet;
  5. import java.util.NoSuchElementException;
  6. import java.util.Scanner;
  7.  
  8. enum Users {
  9.  
  10.    DOCENTE(1),
  11.    ADMINISTRADOR(2);
  12.  
  13.    private Integer id;
  14.  
  15.    Users(final Integer id) {
  16.        this.id = id;
  17.    }
  18.    public Integer getId() {
  19.        return id;
  20.    }
  21.  
  22.    //buscando los usarios
  23.    public static Users getUsersByID(final Integer id) {
  24.        return EnumSet.allOf(Users.class)
  25.                .stream()
  26.                .filter(object -> id.equals(object.id))
  27.                .findFirst() //detienela busqueda de las lista con la primera conincidencia
  28.                .get(); // retorna un NoSuchElementException en caso que no exista dicho id
  29.    }
  30.  
  31. }
  32.  
  33.  
  34. public class ProfeAdmin2 {
  35.  
  36.    private static final Scanner LEER = new Scanner(System.in);
  37.    private static final String ACCESS_GRANTED = "Access Granted.";
  38.    private static final String DATOS_INCORRECTOS = "Datos incorrectos.";
  39.  
  40.    private String nom = new String("Docente2018");
  41.    private String contra = new String("Docente2018");
  42.    private String nom2 = new String("Administrador2018");
  43.    private String contra2 = new String("Administrador2018");
  44.  
  45.    public ProfeAdmin2() {
  46.        System.out.println("1)Profesor");
  47.        System.out.println("2)Administrador");
  48.        final int opcion = LEER.nextInt();
  49.        try {
  50.            final Users users = Users.getUsersByID(opcion);
  51.            switch (users) {
  52.                case DOCENTE:
  53.                    process(nom,contra); // pasando parametros correspondientes al metodo process para reutilizarlo
  54.                    break;
  55.                case ADMINISTRADOR:
  56.                    process(nom2,contra2); // pasando parametros correspondientes al metodo process para reutilizarlo
  57.                    break;
  58.            }
  59.        }catch (final NoSuchElementException ex) {
  60.            JOptionPane.showMessageDialog(null,"No se encuentra el usuario " + opcion);
  61.            mostrar("Saliendo de la aplicacion");
  62.            System.exit(0);
  63.        }
  64.  
  65.    }
  66.  
  67.    private void process(final String paramNom, final String paramPass) {
  68.        System.out.println("Ingrese su nombre de usuario: ");
  69.        final String nombre = LEER.next();
  70.  
  71.        System.out.println("Ingrese su contraseña: ");
  72.        final String contraseña = LEER.next();
  73.  
  74.        // establecer 3 oportunidades si se equivoca en el nombre o la contraseña
  75.        int count = 0;
  76.        if (nombre.equals(paramNom) && contraseña.equals(paramPass)) {
  77.            mostrar(ACCESS_GRANTED);
  78.            /*
  79.             Pasar a otro menu aqui
  80.              */
  81.        } else {
  82.  
  83.            if(!nombre.equals(paramNom) && !contraseña.equals(paramPass)) {
  84.                mostrar(DATOS_INCORRECTOS);
  85.                ingresarNombre("", paramNom);
  86.                ingresarPass("", paramPass);
  87.                mostrar(ACCESS_GRANTED);
  88.            }
  89.  
  90.            else if (!nombre.equals(paramNom)) { // se lee, "si nom no es igual a paramNom" , dara true
  91.                ingresarNombre("Nombre incorrecto",paramNom);
  92.            } else if (!contraseña.equals(paramPass)) { //si la contra no es igual a paramPass, dara true
  93.                ingresarPass("Contraseña incorrecta",paramPass);
  94.            }
  95.        }
  96.    }
  97.  
  98.    private void ingresarNombre(final String msg,final String paramNom) {
  99.        System.out.println(msg);
  100.        int countO = 3;
  101.        int count = 0;
  102.        while (count <= 3) {
  103.            mostrar("Oportunidad " + (countO--));
  104.            mostrar("Ingrese Nombre");
  105.            final String newName = LEER.next();
  106.            if (newName.equals(paramNom)) {
  107.                mostrar("Nombre Correcto");
  108.  
  109.                break;
  110.            } else {
  111.                count++;
  112.                continue;
  113.            }
  114.        }
  115.        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  116.        // xq no entrara mas en el while
  117.    }
  118.    private void ingresarPass(final String msg, final String paramPass) {
  119.        System.out.println(msg);
  120.        int countO = 3;
  121.        int count = 0;
  122.        while (count <= 3) {
  123.            mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
  124.            mostrar("Ingrese contraseña");
  125.            final String newPass = LEER.next();
  126.            if (newPass.equals(paramPass)) {
  127.                mostrar("Contraseña correcta");
  128.  
  129.                break;
  130.            } else {
  131.                count++;
  132.                continue;
  133.            }
  134.        }
  135.        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
  136.        // xq no entrara mas en el while
  137.    }
  138.  
  139.    private <T> void mostrar(final T s) {
  140.        System.out.println(s);
  141.    }
  142.    public static void main(String ..._0x52) {
  143.        new ProfeAdmin2();
  144.    }
  145.  
  146. }
  147.  

(http://3.bp.blogspot.com/-FivPD3F9Pg0/W8ilT0IZ32I/AAAAAAAADI0/U_HCBQ3Q53kyibva_f9odmkQ76yxl7bvACK4BGAYYCw/s1600/profeAdmin.gif)


Título: Re: Una ayudita
Publicado por: TonyHL en 23 Octubre 2018, 23:01 pm
Yo hice un proyecto parecido solo que el mío en el login ace confección con una base de datos mediante  xampp y SQL te lo podría enviar por si te sirve


Título: Re: Una ayudita
Publicado por: GhostMati en 24 Octubre 2018, 16:15 pm
Gracias por toda la ayuda y el como utilizar de mejor manera la pagina, lo agradezco.