[Java] Ejercicio Agenda [Java]

Pues lo dicho estoy tratando de hacer una "agenda", es un ejercicio para clase...

Anteriormente pregunte una pregunta la cual ya he conseguido solucionar por eso he editado el primer post..

Mi agenda ya esta casi hecha... Guarda Objetos en un ArrayList.
Ese ArrayList es las lista de contactos de mi agenda y cada objeto/entrada contiene un cojunto de strings que son los datos (nombre,apellido,telefono...)

He usado 2 Clases: Persona y Main (Aqui tengo el "Menu" del programa y el Main).

Mi Agenda tiene que hacer estas cosas:
1. Añadir Persona
2. Borrar Persona (Buscar Por DNI)
3. Buscar Persona (Busca Por DNI)
4. Mostras Agenda
0. Salir


SOLUCIONADO: ¡¡YA Funciona!!...

Obiamente la Agenda como tal es mejorable puesto que no usa ficheros, ni tampoco comprueba si ya existe alguien con ese DNI y se supone que el DNI seria como la Clave Principal Irrepetible...

Tampoco tiene Interface Grafica }:/

SOURCE CODE:

Clase Personas:
package agenda;
import java.util.*;

public class Persona
{
    String DNI="";
    String Nombre="";
    String Apellidos="";
    String Telefono="";
    String Email="";


    public static void MostrarPersona(ArrayList <Persona> Contactos)
    {
        int i=0;

        Iterator it = Contactos.iterator();
        if (!it.hasNext())
            System.out.println("No Hay Contactos en La Agenda."+"\n");
        else
         while (it.hasNext())
         {
            it.next();
            System.out.println("Entrada Nº" +(i+1)                      +"\n"+
                               "Dni:      " +Contactos.get(i).DNI       +"\n"+
                               "Nombre:   " +Contactos.get(i).Nombre    +"\n"+
                               "          " +Contactos.get(i).Apellidos +"\n"+
                               "Telefono: " +Contactos.get(i).Telefono  +"\n"+
                               "Email:    " +Contactos.get(i).Email     +"\n\n");
            i++;
         }
    }

    public static void AddPersona(ArrayList <Persona> Contactos)
    {
        Persona Datos;

        Datos=new Persona();

        Scanner leer = new Scanner(System.in);

        System.out.println("Ingrese su DNI: ");
        Datos.DNI=leer.nextLine().toUpperCase();
        System.out.println("Ingrese su Nombre: ");
        Datos.Nombre=leer.nextLine();
        System.out.println("Ingrese sus Apellidos: ");
        Datos.Apellidos=leer.nextLine();
        System.out.println("Ingrese su Telefono: ");
        Datos.Telefono=leer.nextLine();
        System.out.println("Ingrese su Email: ");
        Datos.Email=leer.nextLine();

        Contactos.add(Datos);
    }

    public static void BuscarPersona(ArrayList <Persona> Contactos)
    {
        int i=0,j=0;

        Scanner leer = new Scanner(System.in);

        System.out.println("Ingrese el Dni Para Buscar: ");
        String DNI=leer.nextLine().toUpperCase();

        Iterator it = Contactos.iterator();

        while (it.hasNext())
        {
            it.next();
            if(Contactos.get(i).DNI.equals(DNI))
            {
                j++;
                System.out.println("Entrada Nº" +(j)                      +"\n"+
                                   "Dni:      " +Contactos.get(i).DNI       +"\n"+
                                   "Nombre:   " +Contactos.get(i).Nombre    +"\n"+
                                   "          " +Contactos.get(i).Apellidos +"\n"+
                                   "Telefono: " +Contactos.get(i).Telefono  +"\n"+
                                   "Email:    " +Contactos.get(i).Email     +"\n\n");
            }
            i++;
        }
        if (j==0)
            System.out.println("No Hay Contactos con ese DNI en La Agenda."+"\n");

    }

    public static void BorrarPersona(ArrayList <Persona> Contactos)
    {
        int i=0,j=0;

        Scanner leer = new Scanner(System.in);

        System.out.println("Ingrese el Dni a Borrar: ");
        String DNI=leer.nextLine().toUpperCase();

        Iterator it = Contactos.iterator();
        while (it.hasNext())
        {
            it.next();
            if(Contactos.get(i).DNI.equals(DNI))
            {
                j++;
                System.out.println("Entrada Nº" +(j)                      +"\n"+
                                   "Dni:      " +Contactos.get(i).DNI       +"\n"+
                                   "Nombre:   " +Contactos.get(i).Nombre    +"\n"+
                                   "          " +Contactos.get(i).Apellidos +"\n"+
                                   "Telefono: " +Contactos.get(i).Telefono  +"\n"+
                                   "Email:    " +Contactos.get(i).Email     +"\n\n");
               
                System.out.println("\n"+"Desea Eliminarlo?? [S/N]: ");
                String confirmacion = leer.nextLine().toUpperCase();

                if (confirmacion.equals("S") || confirmacion.equals("SI") || confirmacion.equals("Y") || confirmacion.equals("YES"))
                {                   
                    it.remove();
                    break;
                }
            }
            i++;
        }

        if (j==0)
            System.out.println("No Hay Contactos con ese DNI en La Agenda."+"\n");

    }
}

La funcion/metodo de añadir persona la he llamado AddPersona envez de AñadirPersona por manias propias, ya que no me gusta usar caracteres raros como la "Ñ", aunque java si lo permita, yo provengo de "C" donde no es aceptado ni de coña y las manias son las manias :-| :-| :-|


Clase Main:
package agenda;
import java.util.*;

public class Main
{
    public static int Menu()
     {
         System.out.println("1.Añadir  Persona"+"\n");
         System.out.println("2.Borrar  Persona"+"\n");
         System.out.println("3.Buscar  Persona"+"\n");
         System.out.println("4.Mostrar Persona"+"\n");
         System.out.println("0.Salir"+"\n");

         Scanner leer = new Scanner(System.in);
         return leer.nextInt();
     }

    public static void main(String[] args)
    {
        ArrayList <Persona> Contactos = new  ArrayList <Persona>();

        int M=-1;
        while (M!=0)
        {
            System.out.println("--------------------"+"\n"+
                               "        Menu        "+"\n"+
                               "--------------------");
            M=Menu();


            System.out.println("\n\n\n");
            switch(M)
            {
                case 1: System.out.println("-.-.-.-.-.-.-.-.-.-.-"+"\n"+
                                           "    Añadir Persona   "+"\n"+
                                           "-.-.-.-.-.-.-.-.-.-.-");
                        Persona.AddPersona(Contactos);
                        break;

                case 2: System.out.println("-.-.-.-.-.-.-.-.-.-.-"+"\n"+
                                           "    Borrar Persona   "+"\n"+
                                           "-.-.-.-.-.-.-.-.-.-.-");
                        Persona.BorrarPersona(Contactos);
                        break;

                case 3: System.out.println("-.-.-.-.-.-.-.-.-.-.-"+"\n"+
                                           "    Buscar Persona   "+"\n"+
                                           "-.-.-.-.-.-.-.-.-.-.-");
                        Persona.BuscarPersona(Contactos);
                        break;

                case 4: System.out.println("-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-"+"\n"+
                                           "          Mostrar Agenda         "+"\n"+
                                           "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-");
                        Persona.MostrarPersona(Contactos);
                        break;

                case 0: System.out.println("-.-.-.-.-.-.-.-.-.-.-"+"\n"+
                                           "          FIN        "+"\n"+
                                           "-.-.-.-.-.-.-.-.-.-.-");
                        break;
            }
            System.out.println("\n\n\n");
        }
    }

}
Cuando tienes un array de objetos, basta con acceder al indice que te interesa imprimir de dicho array y consultar lo que necesites.
rintin escribió:Cuando tienes un array de objetos, basta con acceder al indice que te interesa imprimir de dicho array y consultar lo que necesites.


Entonces si creo un contador "i"... Luego como accedo??

        int i=0;
        Iterator it = Contactos.iterator();
        while (it.hasNext())
        {
            i++;
            it.next();
            System.out.println();
        }


¿Que falta dentro de prinln?

Nota: Corrigeme si me equivoco pero yo he creado un ArrayList al cual le embedo "objetos" no he creado una Array De Objetos... Creo que es diferente...
La putada esque en clase hicimos hace tiempo algo parecido a lo que busco (pero no lo tengo aqui el source T_T) y juraria que usabamos el metodo toString pero por mas que lo intente...
Para que te quede ordenadito crearía un metodo para imprimir, y luego lo emplearía con algo así así:

arrayObjetos[indice].metodoImprimir();
rintin escribió:Para que te quede ordenadito crearía un metodo para imprimir, y luego lo emplearía con algo así así:

arrayObjetos[indice].metodoImprimir();


El problema esque eso no puedo usarlo puesto que no tengo una array de Objetos...
Sino un "ArrayList" al cual se le pueden meter datos de cualquier tipo (int,char,strings,objetos...)

Al final el unico metodo que he encontrado y que funciona es:

NombreDelArrayList.get(i).NombreDeLaVariableoMetodo;

Ej:
Contactos.get(i).DNI;

Nota: Si lo que llamamos es una variable y no ningun metodo deberemos usarla directamente o asignarala ya que como dejes por ahi suelto "Contactos.get(i).DNI;" te tira un error tienes que imprimirlo en plan System.out.printl(Contactos.get(i).DNI); o aginarlo: VariableNueva=Contactos.get(i).DNI;
Al fin Me borra el jodido programa porculiano... Maldito API de java... Mira que no dejar borrar con el metodo remove del arraylist mientras recorres el propio arraylist... Tienes que usar el remove del iterator, vamos una tonteria pero que me ha costado adivinarlo 1 huevo y parte del otro... Ya tengo el programa al 99%, Solo quiero añadirle alguna pijada grafica :o


Vale Programa al 99% Acabado YA... Solo Me Falta Cambiar La interface por una Grafica ;)
He heditado el Post Inicial y Pegado el Source del Programa para que lo examineis si quereis, Por si os vale de ejemplo o para aprender.




frankKM escribió:holaaaaa?

hilo_hilo-oficial-ii-java_1305785

Preferi Crear un Hilo Propio puesto que tenia dudas que requerian ser solucionadas pronto y en el hilo de java podria aver tardado dias... Por ejemplo la ultima pregunta que se hizo fue hace unos 6 dias y nadie le ha contestado nada...

Por eso preferi crear mi propio hilo para preguntar unas preguntas muy especificas, las cuales ya estan resueltas y por eso he contribuido posteando el codigo de mi agenda por si a alguien le sirve de algo o por si quereis ver el codigo y despotricar contra el ;)
6 respuestas