Foro de elhacker.net

Programación => Java => Mensaje iniciado por: BackToTheFuture en 14 Abril 2015, 16:29 pm



Título: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: BackToTheFuture en 14 Abril 2015, 16:29 pm
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!



Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: Usuario Invitado en 14 Abril 2015, 17:14 pm
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.


Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: BackToTheFuture en 14 Abril 2015, 17:26 pm
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.


Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: Usuario Invitado en 14 Abril 2015, 18:29 pm
¿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.


Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: BackToTheFuture en 15 Abril 2015, 01:16 am
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)


Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: Usuario Invitado en 15 Abril 2015, 16:07 pm
Esa duda, la resuelves simplemente con Google, es muy trivial. Acostúmbrate a investigar.

Código
  1. public class Professional {
  2.    private Integer id;
  3.    private String names;
  4.    private String surnames;
  5.    private String speciality;
  6.    private String licenseNumber;
  7.  
  8.    public Professional() {
  9.  
  10.    }
  11.    public Professional(Integer id, String names, String surnames,
  12.        String speciality, String licenseNumber) {
  13.        this.id = id;
  14.        this.names = names;
  15.        this.surnames = surnames;
  16.        this.speciality = speciality;
  17.        this.licenseNumber = licenseNumber;
  18.    }
  19.    public Integer getId() {
  20.        return id;
  21.    }
  22.    public void setId(Integer id) {
  23.        this.id = id;
  24.    }
  25.    public String getNames() {
  26.        return names;
  27.    }
  28.    public void setNames(String names) {
  29.        this.names = names;
  30.    }
  31.    public String getSurnames() {
  32.        return surnames;
  33.    }
  34.    public void setSurnames(String surnames) {
  35.        this.surnames = surnames;
  36.    }
  37.    public String getSpeciality() {
  38.        return speciality;
  39.    }
  40.    public void setSpeciality(String speciality) {
  41.        this.speciality = speciality;
  42.    }
  43.    public String getLicenseNumber() {
  44.        return licenseNumber;
  45.    }
  46.    public void setlicenseNumber(String licenseNumber) {
  47.        this.licenseNumber = licenseNumber;
  48.    }
  49. }

Código
  1. public class ProfessionalService {
  2.    private static final List<Professional> professionals;
  3.    private static final ProfessionalService THIS = new ProfessionalService();    
  4.  
  5.    private ProfessionalService() {
  6.        professionals = new ArraList<>();
  7.    }
  8.    public static ProfessionalService getService() {
  9.        return THIS;
  10.    }
  11.    public void add(Professional p) {
  12.        professionals.add(p);
  13.    }
  14.    public void remove(Professional p) {
  15.        professionals.remove(p);
  16.    }
  17.    public void update(Professional p) {
  18.        for(Professional current : professionals) {
  19.            if(current.getId() == p.getId()) {
  20.                current = p;
  21.            }
  22.        }
  23.    }
  24. }
  25.  
Código
  1. public class Main {
  2.  
  3.   public static void main(String[] args) {
  4.       // ahora trabaja en ésto  
  5.   }
  6. }
  7.  


Saludos.


Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: BackToTheFuture en 16 Abril 2015, 17:24 pm
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.


Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: Usuario Invitado en 16 Abril 2015, 23:47 pm
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
  1.   final Scanner READER = new Scanner(System.in);
  2.  
  3.    System.out.println("Ingrese Apellido");
  4.    String apellido = READER.netxLine();
  5.    System.out.println("Ingrese Nombre");
  6.    String nombre = READER.nextLine();
  7.    nombre.readLine();
  8.    System.out.println("Ingrese Especialidad");
  9.    String especialidad = READER.nextLine();
  10.    System.out.println("Ingrese Número de Matrícula");
  11.    String nroMatricula = READER.nextLine();
  12.  
  13.    Professional newProfessional = new Professional(apellido, nombre, especialidad, nroMatricula);
  14.    // agregas el nuevo profesional a la lista


Saludos.


Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: BackToTheFuture en 18 Abril 2015, 16:41 pm
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.


Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: Usuario Invitado en 18 Abril 2015, 22:49 pm
Citar
El 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.


Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: BackToTheFuture en 19 Abril 2015, 02:23 am
Creo que no lo agregué, ¿cómo se hace?

Saludos.


Título: Re: Ingreso, almacenamiento y visualización de datos por pantalla
Publicado por: Usuario Invitado en 19 Abril 2015, 16:01 pm
Citar
Creo que no lo agregué, ¿cómo se hace?

¿Estudias Ing. Sistemas, Ing. Informática, Análisis y programación de sistemas, Ing. de Software o afines?

Si la respuesta es afirmativa. Olvida éste tema y ponte a estudiar de cero, por que primero debes entender las bases para seguir con temas más avanzados.

Si no eres informático y solo programas por diversión o por saber cómo se hacen las cosas:

Código
  1. List<Professional> professionals = new ArrayList<>();
  2. Professional newProfessional = new Professional();
  3. final Scanner READER = new Scanner(System.in);
  4.  
  5. System.out.println("Ingrese Apellido");
  6. newProfessional.setSurnames(READER.netxLine());
  7. System.out.println("Ingrese Nombre");
  8. newProfessional.setNames(READER.nextLine());
  9. System.out.println("Ingrese Especialidad");
  10. newProfessional.setSpeciality(READER.nextLine());
  11. System.out.println("Ingrese Número de Matrícula");
  12. newProfessional.setNroMat(READER.nextLine());
  13.  
  14. professionals.add(newProfessional);


Saludos.