[School]Ejercicios POO en Java

Iniciado por PabloPbl, 26 Abril 2015, 17:26 PM

0 Miembros y 2 Visitantes están viendo este tema.

PabloPbl

Hola. Pues acabo de ver tu código y desde mi punto de vista, lo veo bastante limpio. Sobre todo me gusta la parte en donde el usuario interactua con la consola  ;-).

Si nos metemos un poco mas en las funcionalidades del programa, pues estoy viendo que al darle a iniciar sesión, me pide el nombre de usuario y la password perfecto como debería ser, pero si ingreso algún usuario que no existe, no hace nada, me sigue preguntando. Pues hay si te animas, lo que podrías hacer es que al momento de que ponga el nombre de usuario que haga una validación, y si el usuario existe, que le pida la clave si no, no.

Pues otra cosa que estoy viendo, es que al crear el usuario, este lo hace bien, pero luego me vuelve a pedir el nombre de usuario y contraseña. Pues hay en vez de que te vuelva a pedir el nombre de usuario y contraseña, haz que aparezca el menú de vuelta.

Pues si te animas hazlo y después me cuentas que tal te fue.

Un saludo!  ;)

Lind L. Tailor

Hola...

Lo que pasa es que después de ingresar un nuevo usuario lo mando directamente al inicio de sesión ;D, pero si tienes razón, sería mas correcto en cuanto a funcionalidad mandarlo al menú nuevamente, así como validar primeramente el usuario y posteriormente la contraseña.

Estamos al pendiente de las nuevas actividades mientras arreglo esa parte.  :rolleyes:

PabloPbl

Pues como dije antes, en esta segunda actividad, seguiremos trabajando con el code de la actividad anterior, agregaremos nuevas funcionalidades a nuestro programa.

Hasta ahora solo teníamos 2 funcionalidades, creación de usuarios y inicio de sesión, en esta actividad agregaremos un par de funciones mas:

  • Cuando el usuario le de a iniciar sesión, que se fije si existe algún usuario, sino existe que le avise con un mensaje, que no hay ningún usuario registrado para iniciar sesión.
  • Agregaremos también para que el usuario pueda cambiar el nombre de usuario, el cual le pediremos el nombre de usuario viejo y el nuevo nombre de usuario que quiere cambiar. Entonces cuando nosotros tengamos que iniciar sesión, iniciaremos con el nuevo nombre.
  • Haremos lo mismo pero con la contraseña, pero acá lo haremos un poco mas real. Primero le pediremos el nombre de usuario al cual se quiere cambiar la contraseña, luego le pediremos la contraseña actual, y luego haremos una comprobación para ver si es que el usuario puso bien su contraseña actual y si es así, procedemos a pedirle su nueva contraseña.

Si saben usar bien los métodos y cuando hacerlos y usarlos, esto no les debería llevar mucho tiempo. Los métodos no muerden.

En la siguiente actividad que se sera la última con el código que llevamos, haremos que se parezca aún mas a un sistema de usuarios de verdad.

Bueno gente les deseo suerte. Mañana colgare lo que yo hice. Ya saben cualquier duda acá estoy.

Un saludo a todos!  ;)

PabloPbl

Buenas, pues creo que ya di bastante tiempo ayer, si aún no has terminado y sigues trabajando en el code, recomiendo no mirar este código hasta que termines o tengas una duda al respecto.

Pues lo único que he hecho, a sido modificar un poco la clase SistemaDeUsuarios, bueno mas que modificar diría agregar. Pues la clase me quedo de la siguiente manera:

Código (java) [Seleccionar]

import java.util.ArrayList;
import java.util.Scanner;

public class SistemaDeUsuarios {
   boolean sesionIniciada = false;
   ArrayList<Usuario> usuarios;
   
   public SistemaDeUsuarios() {
       usuarios = new ArrayList<Usuario>();
       
       Scanner scanner = new Scanner(System.in);
       
       while(true) {
           System.out.println("**********************************************Menu principal*******************************************************");
           System.out.println("¿Que deseas hacer?\n1)Crear usuario\n2)Iniciar sesión\n3)Cambiar nombre de usuario\n4)Cambiar contraseña\n5)Salir");
           String eleccion = scanner.nextLine();
           
           if(eleccion.equals("1")) {
               System.out.println("**********Creación de usuarios**********");
               System.out.println("Nombre de usuario:");
               String userName = scanner.nextLine();
               
               System.out.println("Contraseña:");
               String contrasenia = scanner.nextLine();
               
               this.usuarios.add(new Usuario(userName, contrasenia));
               System.out.println("Usuario creado correctamente");
           }
           else if(eleccion.equals("2")) {
               System.out.println("**********Inicio de sesión**********");
               int cantidadDeUsuarios = this.usuarios.size();
               if(cantidadDeUsuarios > 0) {
                   System.out.println("Nombre de usuario:");
                   String userName = scanner.nextLine();
                   boolean existeUsuario = existeUsuario(userName);

                   if(existeUsuario) {
                       System.out.println("Contraseña:");
                       String contrasenia = scanner.nextLine();
                       boolean contraseniaCorrecta = contraseniaCorrecta(userName, contrasenia);

                       if(contraseniaCorrecta) {
                           System.out.println("Bienvenido usuario");
                       }
                       else{
                           System.out.println("Contraseña incorrecta");
                       }
                   }
                   else{
                       System.out.println("No existe ningún usuario con ese nombre");
                   }
               }
               else{
                   System.out.println("No hay ningun usuario registrado");
               }
           }
           else if(eleccion.equals("3")) {
               System.out.println("**********cambio de nombre de usuario**********");
               System.out.println("Nombre de usuario:");
               String userName = scanner.nextLine();
               
               if(existeUsuario(userName)) {
                   System.out.println("Nombre de usuario nuevo:");
                   String newUserName = scanner.nextLine();
                   cambiarNombreUsuario(userName, newUserName);
               }
               else{
                   System.out.println("No existe ningún usuario con ese nombre");
               }
           }
           else if(eleccion.equals("4")) {
               System.out.println("**********Cambio de contraseña**********");
               System.out.println("Nombre de usuario:");
               String userName = scanner.nextLine();
               
               if(existeUsuario(userName)) {
                   System.out.println("Contraseña actual:");
                   String presentPassword = scanner.nextLine();
                   if(contraseniaCorrecta(userName, presentPassword)) {
                       System.out.println("Contraseña nueva:");
                       String newPassword = scanner.nextLine();
                       cambiarContrasenia(userName, presentPassword, newPassword);
                   }
                   else{
                       System.out.println("Contraseña incorrecta");
                   }
               }
               else{
                   System.out.println("No existe ningún usuario con ese nombre");
               }
           }
           else if(eleccion.equals("5")) {
               System.out.println("Vuelve pronto!");
               break;
           }
           else{
               System.out.println("Has ingresado un valor incorrecto, intentalo de nuevo");
           }
       }
   }

   public void sesionIniciada() {}
   
   private void cambiarNombreUsuario(String userName, String newUserName) {
       for(int i = 0; i < this.usuarios.size(); i++) {
           if(userName.equals(usuarios.get(i).getUserName())) {
               usuarios.get(i).setUserName(newUserName);
               System.out.println("Nombre de usuario cambiado correctamente");
               break;
           }
       }
   }
   
   private void cambiarContrasenia(String userName, String oldPassword, String newPassword) {
       for(int i = 0; i < this.usuarios.size(); i++) {
           if(userName.equals(usuarios.get(i).getUserName())) {
               if(oldPassword.equals(usuarios.get(i).getPassword())) {
                   usuarios.get(i).setPassword(newPassword);
                   System.out.println("Contraseña cambiada correctamente");
                   break;
               }
               else{
                   System.out.println("Contraseña incorrecta");
               }
           }
       }
   }
   
   private boolean existeUsuario(String userName) {
       boolean existe = false;
       
       for(int i = 0; i < this.usuarios.size(); i++) {
           System.out.println(usuarios.get(i).getUserName());
           if(userName.equals(usuarios.get(i).getUserName())) {
               existe = true;
               break;
           }
       }
       
       return existe;
   }
   
   private boolean contraseniaCorrecta(String userName, String password) {
       boolean correcta = false;
       
       int index = 0;
       
       for(int i = 0; i < this.usuarios.size(); i++) {
           if(userName.equals(usuarios.get(i).getUserName())) {
               index = i;
           }
       }
       
       String contrasenia = usuarios.get(index).getPassword();
       if(password.equals(contrasenia)) {
           correcta = true;
       }
       
       return correcta;
   }
}



En un rato subiré la última actividad con este código que llevamos. Se que había dicho que iba a hacer actividades de POO, pero creo que la lógica también es divertida e importante xD. Pues en siguientes actividades haré un par mas de POO, en donde practicaremos un poco mas la herencia, uno de los pilares fundamentales de la POO.

Ok gente, cualquier duda ya saben que hacer.

Un saludo a todos  ;)