Ingreso, almacenamiento y visualización de datos por pantalla

Iniciado por BackToTheFuture, 14 Abril 2015, 16:29 PM

0 Miembros y 1 Visitante están viendo este tema.

BackToTheFuture

Hola, supongamos que tengo los siguientes datos, correspondientes a un profesional de la salud:

Apellido: xxxxxxx
Nombre: xxxxxxx
Especialidad: xxxxxxx
Número de matrícula: xxxxxx

(en las x puede ir un dato cualquiera)

Tengo que hacer un programa en Java que me permita ingresar esos datos por teclado, almacenarlos en alguna estructura de datos y luego mostrarlos por pantalla.

La verdad no sé muy bien por donde empezar y no sé que estructura de datos utilizar, soy novato en esto.

Agradezco enormemente la ayuda que me puedan brindar.

Muchas Gracias.

Saludos!


Usuario Invitado

Hola. Veamos qué escenarios tienes:

1) Tienes una base de datos.
2) No tienes base de datos.
3) Aplicación web.
4) Aplicación desktop.

Opción 1

Debes usar el paquete java.sql para poder interactuar con ella. Si quieres algo más práctico y funcional, puedes usar JPA (con Hibernate o EclipseLink).

Opción 2

Debes usar alguna objeto como NavigableMap/TreeMap o Map/HashMap y declararlo estático, ésto para simular una base de datos.

Opción 3:

Opciones:

  • Simple 1: JSP's y Servlets + JDBC estándar.
  • Simple 2: JSP's y Servlets + JPA y AJAX.
  • Avanzada 1: JSF + JPA (AJAX incluido).

    Opción 4:

    Opciones:

  • AWT: Obsoleto.
  • Swing: Obsoleto (hablo desde la perspectiva del desarrollo actual).
  • JavaFX: Presente y futuro.


    Elige la que más te convenga. Investiga y cuando tengas una duda puntual, la publicas.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

BackToTheFuture

Hola, esto sería para una aplicación desktop, pero quiero algo más sencillo, con arrays o algo por el estilo. Mientras tanto estuve investigando un poco y hasta ahora hice una clase datosProfesional con los atributos nombre, apellido, especialidad y nroMat y otra clase profesional con un atributo profesional cuyo tipo es un array de datosProfesional.

Usuario Invitado

¿Y qué duda tienes entonces? Veo que ya tienes una idea, entonces, aplícala o inténtalo. Si tienes alguna duda específica, crea un tema para recibir ayuda.


Un saludo.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

BackToTheFuture

Es que mientras esperaba tu respuesta me puse a investigar un poco y hasta ahora hice lo que ya te he dicho. Lo que me faltaría es saber cómo ingresar los datos a esa estructura de datos (sé ingresar por teclado pero en este caso particular no sé como meter los datos en la estructura)

Usuario Invitado

Esa duda, la resuelves simplemente con Google, es muy trivial. Acostúmbrate a investigar.

Código (java) [Seleccionar]
public class Professional {
    private Integer id;
    private String names;
    private String surnames;
    private String speciality;
    private String licenseNumber;
   
    public Professional() {
   
    }
    public Professional(Integer id, String names, String surnames,
        String speciality, String licenseNumber) {
        this.id = id;
        this.names = names;
        this.surnames = surnames;
        this.speciality = speciality;
        this.licenseNumber = licenseNumber;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getNames() {
        return names;
    }
    public void setNames(String names) {
        this.names = names;
    }
    public String getSurnames() {
        return surnames;
    }
    public void setSurnames(String surnames) {
        this.surnames = surnames;
    }
    public String getSpeciality() {
        return speciality;
    }
    public void setSpeciality(String speciality) {
        this.speciality = speciality;
    }
    public String getLicenseNumber() {
        return licenseNumber;
    }
    public void setlicenseNumber(String licenseNumber) {
        this.licenseNumber = licenseNumber;
    }
}


Código (java) [Seleccionar]
public class ProfessionalService {
    private static final List<Professional> professionals;
    private static final ProfessionalService THIS = new ProfessionalService();   
   
    private ProfessionalService() {
        professionals = new ArraList<>();
    }
    public static ProfessionalService getService() {
        return THIS;
    }
    public void add(Professional p) {
        professionals.add(p);
    }
    public void remove(Professional p) {
        professionals.remove(p);
    }
    public void update(Professional p) {
        for(Professional current : professionals) {
            if(current.getId() == p.getId()) {
                current = p;
            }
        }
    }
}

Código (java) [Seleccionar]
public class Main {
   
   public static void main(String[] args) {
       // ahora trabaja en ésto 
   }
}



Saludos.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

BackToTheFuture

Hola, te cuento lo que hice hasta ahora: mientras esperaba tu respuesta estuve investigando y luego adapté a mis necesidades el código que publicaste e intenté realizar la clase Main, que cito a continuación:

Código

Citar

public class Principal {
   
    public static void main (String[] args)throws IOException{
       
    System.out.println("Ingrese Apellido");
   
    BufferedReader apellido = new BufferedReader(new InputStreamReader(System.in));
    apellido.readLine();
   
    System.out.println("Ingrese Nombre");
   
    BufferedReader nombre = new BufferedReader(new InputStreamReader(System.in));
    nombre.readLine();
   
    System.out.println("Ingrese Especialidad");
   
    BufferedReader especialidad = new BufferedReader(new InputStreamReader(System.in));
    especialidad.readLine();
   
    System.out.println("Ingrese Número de Matrícula");
   
    BufferedReader nroMat = new BufferedReader(new InputStreamReader(System.in));
    nroMat.readLine();
   
       
    }
}


Tengo dudas de si esto está bien o no, en relación al propósito que quiero lograr. Si no está bien, te agradecería que me orientes sobre cómo hacerlo.

Muchas Gracias por tu ayuda.

Saludos.

Usuario Invitado

Con Scanner te basta. BufferedReader se usa más para lectura de archivos ya que provee una amplia API para ello. No entiendo por qué creas un BufferedReader nuevo para cada lectura. Es ineficiente y completamente innecesario.

Código (java) [Seleccionar]

   final Scanner READER = new Scanner(System.in);

    System.out.println("Ingrese Apellido");
    String apellido = READER.netxLine();
    System.out.println("Ingrese Nombre");
    String nombre = READER.nextLine();
    nombre.readLine();
    System.out.println("Ingrese Especialidad");
    String especialidad = READER.nextLine();
    System.out.println("Ingrese Número de Matrícula");
    String nroMatricula = READER.nextLine();

    Professional newProfessional = new Professional(apellido, nombre, especialidad, nroMatricula);
    // agregas el nuevo profesional a la lista



Saludos.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

BackToTheFuture

Hola, entonces quedaría el programa terminado, con tres clases: main, professionalServices y professional.

El IDE me dice que la variable newProfessional no está utilizada.

¿De esta manera quedan almacenados los profesionales que ingrese?

Saludos.

Usuario Invitado

CitarEl IDE me dice que la variable newProfessional no está utilizada.

¿Agregaste el objeto newProfessional a la lista?

Citar¿De esta manera quedan almacenados los profesionales que ingrese?

Sí. Si los guardas en la lista, quedarán guardadas mientras el programa esté levantado.


Saludos.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein