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 :-(
import java.util.Scanner; public class ProfeAdmin { public static void main (String[] args ) { Scanner leer = new Scanner (System. in); System. out. println("1)Profesor"); System. out. println("2)Administrador"); int Opcion = leer.nextInt(); int count = 1; // uso de contador para contrar la oportunidades que son 3 switch (Opcion) { case 1: System. out. println("Ingrese su nombre de usuario: "); System. out. println("Ingrese su contraseña: "); String contraseña = leer. next(); // establecer 3 oportunidades si se equivoca en el nombre o la contraseña if (nom.equals(nombre) && contra.equals(contraseña)) { mostrar("Correcto access granted"); } else { if (!nom.equals(nombre)) { // se lee, "si nom no es igual a nombre" , dara true System. out. println("Nombre incorrecto"); int countO = 3; while (count <= 3) { ShowData.showLn("Oportunidad " + (countO--)); ShowData.showLn("Ingrese Nombre"); final String newName = leer. next(); if (newName.equals(nom)) { ShowData.showLn("Nombre Correcto"); break; } else { count++; continue; } } count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado // xq no entrara mas en el while } else if (!contra.equals(contraseña)) { //si la contra no es igual a contraseña, dara true System. out. println("Contraseña incorrecta"); int countO = 3; while (count <= 3) { mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1 mostrar("Ingrese contraseña"); final String newPass = leer. next(); if (newPass.equals(contra)) { mostrar("Contraseña correcta"); /* Aqui introducir siguente menu */ break; } else { count++; continue; } } count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado // xq no entrara mas en el while } } break; case 2: System. out. println("Ingrese su nombre de usuario: "); System. out. println("Ingrese su contraseña: "); String contraseña2 = leer. next(); if (nom2.equals(nombre2) && contra2.equals(contraseña2)) { mostrar("Correcto access granted"); } else { if (!nom2.equals(nombre2)) { // se lee, "si nom no es igual a nombre" , dara true System. out. println("Nombre incorrecto"); int countO = 3; while (count <= 3) { mostrar("Oportunidad " + (countO--)); mostrar("Ingrese Nombre"); final String newName = leer. next(); if (newName.equals(nom2)) { mostrar("Nombre Correcto"); break; } else { count++; continue; } } count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado // xq no entrara mas en el while } else if (!contra2.equals(contraseña2)) { //se lee, la contra no es igual a contraseña, dara true System. out. println("Contraseña incorrecta"); int countO = 3; while (count <= 3) { mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1 mostrar("Ingrese contraseña"); final String newPass = leer. next(); if (newPass.equals(contra2)) { mostrar("Contraseña correcta"); /* Aqui introducir siguente menu */ break; } else { count++; continue; } } count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado // xq no entrara mas en el while } } break; } } private static void mostrar (final String s ) { } //establecer oportunidades, son 3, creamos un metodo private void filtrar() { } }
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 getUsersByID()
package foro; import javax.swing.*; import java.util.EnumSet; import java.util.NoSuchElementException; import java.util.Scanner; enum Users { DOCENTE(1), ADMINISTRADOR(2); this.id = id; } return id; } //buscando los usarios public static Users getUsersByID (final Integer id ) { return EnumSet.allOf(Users.class) .stream() .filter(object -> id.equals(object.id)) .findFirst() //detienela busqueda de las lista con la primera conincidencia .get(); // retorna un NoSuchElementException en caso que no exista dicho id } } public class ProfeAdmin2 { private static final Scanner LEER = new Scanner (System. in); private static final String ACCESS_GRANTED = "Access Granted."; private static final String DATOS_INCORRECTOS = "Datos incorrectos."; public ProfeAdmin2() { System. out. println("1)Profesor"); System. out. println("2)Administrador"); final int opcion = LEER.nextInt(); try { final Users users = Users.getUsersByID(opcion); switch (users) { case DOCENTE: process(nom,contra); // pasando parametros correspondientes al metodo process para reutilizarlo break; case ADMINISTRADOR: process(nom2,contra2); // pasando parametros correspondientes al metodo process para reutilizarlo break; } JOptionPane. showMessageDialog(null, "No se encuentra el usuario " + opcion ); mostrar("Saliendo de la aplicacion"); } } private void process (final String paramNom, final String paramPass ) { System. out. println("Ingrese su nombre de usuario: "); final String nombre = LEER. next(); System. out. println("Ingrese su contraseña: "); final String contraseña = LEER. next(); // establecer 3 oportunidades si se equivoca en el nombre o la contraseña int count = 0; if (nombre.equals(paramNom) && contraseña.equals(paramPass)) { mostrar(ACCESS_GRANTED); /* Pasar a otro menu aqui */ } else { if(!nombre.equals(paramNom) && !contraseña.equals(paramPass)) { mostrar(DATOS_INCORRECTOS); ingresarNombre("", paramNom); ingresarPass("", paramPass); mostrar(ACCESS_GRANTED); } else if (!nombre.equals(paramNom)) { // se lee, "si nom no es igual a paramNom" , dara true ingresarNombre("Nombre incorrecto",paramNom); } else if (!contraseña.equals(paramPass)) { //si la contra no es igual a paramPass, dara true ingresarPass("Contraseña incorrecta",paramPass); } } } private void ingresarNombre (final String msg, final String paramNom ) { int countO = 3; int count = 0; while (count <= 3) { mostrar("Oportunidad " + (countO--)); mostrar("Ingrese Nombre"); final String newName = LEER. next(); if (newName.equals(paramNom)) { mostrar("Nombre Correcto"); break; } else { count++; continue; } } count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado // xq no entrara mas en el while } private void ingresarPass (final String msg, final String paramPass ) { int countO = 3; int count = 0; while (count <= 3) { mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1 mostrar("Ingrese contraseña"); final String newPass = LEER. next(); if (newPass.equals(paramPass)) { mostrar("Contraseña correcta"); break; } else { count++; continue; } } count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado // xq no entrara mas en el while } private <T> void mostrar(final T s) { } public static void main (String ..._0x52 ) { new ProfeAdmin2(); } }
(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.
|