Autor Tema: Ejercicio resuelto Java Paciente Historial Clinico menú JOptionPane #codigoJava  (Leído 7586 veces)

xtnite

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola, soy principiante en programacion Java y tengo un proyecto del cual tengo muchos problemas para concluir. Si alguien pudiera ayudarme mandándome el proyecto, los códigos, como lo harían..., para poder comparar con el mío lo agradecería infinitamente. Les copio el proyecto para quien pueda ayudar:




CONSIGNA DEL EJERCICIO

Fuiste contratado por una institución de salud para desarrollar un software basado en Java y que permita gestionar la información de los historiales clínicos de sus pacientes.

Las entidades definidas para este software son:

Pacientes: Es la entidad que representa un paciente afiliado a la entidad de salud. Cada uno de los pacientes deberá estar asignado a su respectivo historial clínico.

Médicos: Es la entidad que representa un médico en la entidad de salud. Cada uno de los médicos deberá estar asignado a respectivos historiales clínicos.

Historiales Clínicos: Es la entidad que representa los historiales clínicos de la entidad de salud, en los cuales se asignan pacientes y médicos para su gestión.

El aplicativo deberá ser desarrollado en Java y deberá tener las siguientes características y funcionalidades:

El software permitirá registrar, consultar, modificar y eliminar los datos para los atributos de la entidad Paciente, es decir, debes desarrollar una clase “Paciente” donde definas los atributos para dicha entidad, los cuales son: identificación, nombres, apellidos, edad y género.

El software permitirá registrar, consultar, modificar y eliminar los datos para los atributos de la entidad Medico, es decir, debes desarrollar una clase “Medico” donde definas los atributos para dicha entidad, los cuales son: identificación, nombres, apellidos y especialidad.

El software permitirá registrar, consultar, modificar y eliminar los datos para los atributos de la entidad Historiales Clínicos, es decir, debes desarrollar una clase “HistorialClinico” donde definas los atributos para dicha entidad, los cuales son: código, fecha, idPaciente, idMedico y observaciones.

Para cada entidad, se deberá crear los distintos métodos para la manipulación (insertar, eliminar, consultar y modificar) de los atributos de cada entidad incluyendo Getters y Setters. Así como cualquier método que considere necesario.

Todos los datos de las entidades son cadena de textos excepto el atributo “edad” de la entidad “Paciente”, que es numérico de tipo entero.

El aplicativo debe mostrar un menú principal con las opciones:

Gestionar Pacientes.
Gestionar Médicos.
Gestionar Historial Clínico.
Salir

Luego al entrar a cada entidad se debe mostrar un submenú con las opciones de la entidad, por ejemplo para Pacientes:

Registrar Pacientes.
Mostrar Pacientes.
Modificar Pacientes.
Eliminar Pacientes.
Atrás

Luego al entrar se debe pedir o mostrar la información según la acción, por ejemplo:

Registrar Pacientes: Pedir los datos de un paciente a registrar.
Mostrar Pacientes: Mostrar todos los pacientes registrados con sus atributos.
Modificar Paciente: Modificar los atributos de un paciente a partir del IdPaciente (Si el idPaciente no existe decir paciente no encontrado.).
Eliminar Paciente: Pedir el IdPaciente y eliminarlo (Si el idPaciente no existe decir paciente no encontrado.).
Atrás
« Última modificación: 31 de Octubre 2020, 14:32 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 594
    • Ver Perfil
Re:Ayuda URGENTE
« Respuesta #1 en: 14 de Septiembre 2018, 01:49 »
Hola.
Quizás sería más interesante que mostraras lo que tienes hecho y donde te has atascado para poder ayudarte.
O bien volver a empezar desde el principio y rehacer el programa juntos..

En fin, vamos paso a paso.
Estas serían las clases básicas conforme a lo que pide el enunciado. No creo que aquí hayas tenido ningún problema.
Clase Paciente
Código: [Seleccionar]
package clinica;

public final class Paciente {

private String id;
private String nombre;
private String apellidos;
private int edad;
private String genero;

public Paciente(String id, String nombre, String apellidos, int edad, String genero) {
this.id = id;
this.nombre = nombre;
this.apellidos = apellidos;
this.edad = edad;
this.genero = genero;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}

public String getGenero() {
return genero;
}

public void setGenero(String genero) {
this.genero = genero;
}

/**
* Muestra por consola todos los datos del Paciente
*/
public void mostrar() {
System.out.println("\n\t---------------");
System.out.println("ID Paciente: " + id);
System.out.println("Nombre: " + nombre);
System.out.println("Apellidos: " + apellidos);
System.out.println("Edad: " + edad);
System.out.println("Genero: " + genero);
System.out.println("\t---------------");
}
}

Clase Medico
Código: [Seleccionar]
package clinica;

public final class Medico {

private String id;
private String nombre;
private String apellidos;
private String especialidad;

public Medico(String id, String nombre, String apellidos, String especialidad) {
this.id = id;
this.nombre = nombre;
this.apellidos = apellidos;
this.especialidad = especialidad;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public String getEspecialidad() {
return especialidad;
}

public void setEspecialidad(String especialidad) {
this.especialidad = especialidad;
}

/**
* Muestra por consola todos los datos del Medico
*/
public void mostrar() {
System.out.println("\n\t---------------");
System.out.println("ID Medico: " + id);
System.out.println("Nombre: " + nombre);
System.out.println("Apellidos: " + apellidos);
System.out.println("Especialidad: " + especialidad);
System.out.println("\t---------------");
}

}

Clase HistorialClinico
Código: [Seleccionar]
package clinica;

public final class HistorialClinico {

private String codigo;
private String fecha;
private String idPaciente;
private String idMedico;
private String observaciones;

public HistorialClinico(String codigo, String fecha, String idPaciente,
String idMedico, String observaciones) {
this.codigo = codigo;
this.fecha = fecha;
this.idPaciente = idPaciente;
this.idMedico = idMedico;
this.observaciones = observaciones;
}

public String getCodigo() {
return codigo;
}

public void setCodigo(String codigo) {
this.codigo = codigo;
}

public String getFecha() {
return fecha;
}

public void setFecha(String fecha) {
this.fecha = fecha;
}

public String getIdPaciente() {
return idPaciente;
}

public void setIdPaciente(String idPaciente) {
this.idPaciente = idPaciente;
}

public String getIdMedico() {
return idMedico;
}

public void setIdMedico(String idMedico) {
this.idMedico = idMedico;
}

public String getObservaciones() {
return observaciones;
}

public void setObservaciones(String observaciones) {
this.observaciones = observaciones;
}

/**
* Muestra por consola todos los datos del Historial Clinico
*/
public void mostrar() {
System.out.println("\n\t---------------");
System.out.println("Codigo Historial: " + codigo);
System.out.println("Fecha: " + fecha);
System.out.println("ID Pacielnte: " + idPaciente);
System.out.println("ID Medico: " + idMedico);
System.out.println("Observaciones:\n" + observaciones);
System.out.println("\t---------------");
}
}

Fíjate que en cada clase, les he creado un metodo llamado mostrar() que se encargaría de mostrar por pantalla todos los datos de la clase en cuestión.

Bueno, esta es la parte fácil.
La otra parte, en realidad no es nada difícil, pero si tiene el inconveniente de que requiere mucho código.
Hay que escribir un menu principal, un menu para las opciones del Paciente, Medico e Historial, submenus para crear y modificar Pacientes, Medicos e Historiales...

Repito que no es nada dificil, pero tantas líneas de código, si no se organizan correctamente, tendremos un código enooooorme, muy caótico, dificil de comprender y de mantener.. que solo mirarlo ya nos dará dolor de cabeza.

Y es entonces cuando yo te pregunto: ¿Sabes si hay que ceñirse únicamente a esas clases?
¿O podríamos crear otras clases que nos ayuden a facilitar la tarea?


De hecho, sería lo lógico y lo que cualquier programador haría para encarar este ejercicio.
Podríamos hacer tres nuevas clases, las cuáles cada una se encargaría de la gestión de cada una de las anteriores.
Por ejemplo, una clase llamada GestorPacientes, tendría como atributo un ArrayList                                                                                     donde se guardarían los Pacientes.
Y tendría unos métodos para cada una de las acciones necesarias para gestionar esta base de datos.
Un metodo para dar de alta un nuevo Paciente, otro para mostrar listado de pacientes, otro para modificar, otro para borrar...
De este modo, todo el código necesario para gestionar Pacientes, estaría concentrado en su propia clase y separado de todo el código necesario para gestionar Medicos y de todo el código necesario para gestionar Historiales, los cuáles estarían en sus respectivas clases de Gestion.

La clase GestorPacientes podría ser como la que pongo a continuación. Aunque no está completa, solo incluye los metodos para crear nuevo Paciente y para mostrar todo el listado de pacientes.
Faltarían los metodos para modificar y borrar pacientes.

Clase GestorPacientes
Código: [Seleccionar]
package clinica;

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

public final class GestorPacientes {

private ArrayList<Paciente> pacientes;
private Scanner teclado;

public GestorPacientes() {
pacientes = new ArrayList<Paciente>();
teclado = new Scanner(System.in);
}

/**
* Crea y registra un nuevo paciente.
* @return True si se pudo registrar con éxito el nuevo paciente.
* False si no fue posible registrarlo.
*/
public boolean nuevoPaciente() {
System.out.println("\n\tALTA NUEVO PACIENTE");
System.out.print("Introduzca Identificador: ");
String id = teclado.nextLine();
System.out.print("Nombre: ");
String nombre = teclado.nextLine();
System.out.print("Apellidos: ");
String apellidos = teclado.nextLine();
System.out.print("Genero: ");
String genero = teclado.nextLine();
System.out.print("Edad: ");
int edad = teclado.nextInt();
teclado.nextLine();//Tras leer un int, conviene "limpiar" el stream de entrada, para evitar problemas al querer leer luego datos String
Paciente nuevoPaciente = new Paciente(id, nombre, apellidos, edad, genero);
return pacientes.add(nuevoPaciente);//Devuelve TRUE si se insertó correctamente, FALSE si no se pudo insertar
}

/**
* Lista por pantalla los datos de todos los pacientes registrados.
*/
public void mostrarPacientes() {
for (Paciente p: pacientes)
p.mostrar();
}

}

Si crees que es posible enfocar el ejercicio de esta manera, podemos seguir adelante a partir de aquí.
Intenta completar los dos métodos que faltarían para esta clase y tomandola como ejemplo, intenta escribir las clases GestorMedicos y GestorHistoriales

Fíjate que tienen un segundo atributo, un Scanner para pedir datos por pantalla.
Cada clase tendrá su propio Scanner

He usado un Scanner porque es lo habitual para pedir datos por consola. Si estas acostumbrado a pedir datos al usuario usando otras formas como la clase JOptionPane que muestra pequeñas ventanas de dialogo para que el usuario meta datos, podemos modificarlo.


Insisto en que lo ideal e inteligente sería crear estas tres nuevas clases para separa la gestión de las tres entidades principales.
Crear estas tres nuevas clases no supone escribir más código. La cantidad de código será la misma, solo que de este modo está mejor organizado.
Si no usamos estas tres clases para la gestión, todo este código estará escrito en la clase donde pongamos el metodo main(), con lo cuál será una clases muy sobrecargada de código... :-\

Un saludo
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

xtnite

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Ayuda URGENTE
« Respuesta #2 en: 14 de Septiembre 2018, 05:31 »
Primero que todo, la ayuda es increible y lo agradezco bastante, pero en un dato tiene razon, este caso se trabaja con JOptionPane pues estan pidiendo un menu, segundo la parte de Paciente, Medico e Historial estan cubiertos en si el problema mas grande se me presenta en la clase main y en la programacion que se requiere para tener el menu principal y que lleva a cada menu secundario y el codigo para darle funcionalidad a cada operacion, registrar, MODIFICAR y ELIMINAR:

El aplicativo debe mostrar un menú principal con las opciones:

Gestionar Pacientes.
Gestionar Médicos.
Gestionar Historial Clínico.
Salir
Luego al entrar a cada entidad se debe mostrar un submenú con las opciones de la entidad, por ejemplo para Pacientes:

Registrar Pacientes.
Mostrar Pacientes.
Modificar Pacientes.
Eliminar Pacientes.
Atrás
Luego al entrar se debe pedir o mostrar la información según la acción, por ejemplo:

Registrar Pacientes: Pedir los datos de un paciente a registrar.
Mostrar Pacientes: Mostrar todos los pacientes registrados con sus atributos.
Modificar Paciente: Modificar los atributos de un paciente a partir del IdPaciente (Si el idPaciente no existe decir paciente no encontrado.).
Eliminar Paciente: Pedir el IdPaciente y eliminarlo (Si el idPaciente no existe decir paciente no encontrado.).
Atrás

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 594
    • Ver Perfil
Re:Ayuda URGENTE
« Respuesta #3 en: 15 de Septiembre 2018, 02:08 »
Vale.
Mira, te explico mi propuesta.
Para solucionar el ejercicio, de manera limpia y ordenada, propongo usar 7 clases.

Las 3 clases básicas: Paciente, Medico e HistorialClinico

Otras 3 clases, que se encargarán de gestionar las anteriores: GestorPacientes, GestorMedicos y GestorHistoriales

Y por ultimo, la clase con el metodo main() que mostrará los menus al usuario y según lo que este escoja, llamará a las clases "gestoras" para que hagan lo que el usuario haya solicitado.
Esta clase puede llamarse TestClinica

Bueno, a continuacion pongo las 3 clases básicas. Son las mismas que puse antes, solo he modifiado el metodo mostrar() que ahora muestra los datos en un panel de JOptionPane en lugar mostrarlos por consola.

Paciente
Código: [Seleccionar]
package clinica;

import javax.swing.JOptionPane;

public final class Paciente {

private String id;
private String nombre;
private String apellidos;
private int edad;
private String genero;

public Paciente(String id, String nombre, String apellidos, int edad, String genero) {
this.id = id;
this.nombre = nombre;
this.apellidos = apellidos;
this.edad = edad;
this.genero = genero;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}

public String getGenero() {
return genero;
}

public void setGenero(String genero) {
this.genero = genero;
}

/**
* Muestra en un panel todos los datos del Paciente
*/
public void mostrar() {
String mensaje = "ID Paciente: " + id + "\nNombre: " + nombre
+ "\nApellidos: " + apellidos + "\nEdad: " + edad
+ "\nGenero: " + genero;
JOptionPane.showMessageDialog(null, mensaje, "Mostrar Paciente", JOptionPane.INFORMATION_MESSAGE);
}

}

Medico
Código: [Seleccionar]
package clinica;

import javax.swing.JOptionPane;

public final class Medico {

private String id;
private String nombre;
private String apellidos;
private String especialidad;

public Medico(String id, String nombre, String apellidos, String especialidad) {
this.id = id;
this.nombre = nombre;
this.apellidos = apellidos;
this.especialidad = especialidad;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public String getEspecialidad() {
return especialidad;
}

public void setEspecialidad(String especialidad) {
this.especialidad = especialidad;
}

/**
* Muestra por panel todos los datos del Medico
*/
public void mostrar() {
String mensaje = "ID Medico: " + id + "\nNombre: " + nombre
+ "\nApellidos: " + apellidos + "\nEspecialidad: " + especialidad;
JOptionPane.showMessageDialog(null, mensaje, "Mostrar Medico", JOptionPane.INFORMATION_MESSAGE);
}

}

HistorialClinico
Código: [Seleccionar]
package clinica;

import javax.swing.JOptionPane;

public final class HistorialClinico {

private String codigo;
private String fecha;
private String idPaciente;
private String idMedico;
private String observaciones;

public HistorialClinico(String codigo, String fecha, String idPaciente,
String idMedico, String observaciones) {
this.codigo = codigo;
this.fecha = fecha;
this.idPaciente = idPaciente;
this.idMedico = idMedico;
this.observaciones = observaciones;
}

public String getCodigo() {
return codigo;
}

public void setCodigo(String codigo) {
this.codigo = codigo;
}

public String getFecha() {
return fecha;
}

public void setFecha(String fecha) {
this.fecha = fecha;
}

public String getIdPaciente() {
return idPaciente;
}

public void setIdPaciente(String idPaciente) {
this.idPaciente = idPaciente;
}

public String getIdMedico() {
return idMedico;
}

public void setIdMedico(String idMedico) {
this.idMedico = idMedico;
}

public String getObservaciones() {
return observaciones;
}

public void setObservaciones(String observaciones) {
this.observaciones = observaciones;
}

/**
* Muestra por panel todos los datos del Historial Clinico
*/
public void mostrar() {
String mensaje = "Codigo Historial: " + codigo + "\nFecha: " + fecha
+ "\nID Paciente: " + idPaciente + "\nID Medico: " + idMedico
+ "\nObservaciones:\n" + observaciones;
JOptionPane.showMessageDialog(null, mensaje, "Mostrar Medico", JOptionPane.INFORMATION_MESSAGE);
}
}

Ahora vendrían las clases "gestoras", solo he escrito la que gestiona los Pacientes.
Es similar a la que puse en el mensaje anterior, solo que ahora ya no usamos Scanner, sino que usamos la clase JOptionPane para mostrar y pedir datos.
Y además ahora ya si está completa. Tiene los cuatro metodos necesarios para hacer las operaciones que nos solicitan: nuevo Paciente, mostrar listado de pacientes, modificar un paciente y eliminar un paciente.

Te la pongo a continuación. Fíjate que tiene bastante código.
Imagina poner todo ese código, junto con el necesario para gestionar las otras dos clases, junto con el codigo necesario para mostrar menus, más un metodo main(), todo junto en una única clase... sería una locura. Por eso mejor dividir y separar el codigo en más clases.
 Revisala, intenta comprenderla, pregunta lo que no entiendas o que te parezca extraño. Y una vez la tengas clara, intenta escribir tu las clases GestorMedicos y GestorHistoriales
Estas dos clases serán prácticamente idénticas a la que yo he puesto, solo hay que cambiar los datos que se piden y muestran para que sean acordes a los atributos de las clases Medico e HistorialClinico

GestorPacientes
Código: [Seleccionar]
package clinica;

import java.util.ArrayList;

import javax.swing.JOptionPane;

public final class GestorPacientes {

private ArrayList<Paciente> pacientes;

public GestorPacientes() {
pacientes = new ArrayList<Paciente>();
}

/**
* Crea y registra un nuevo paciente.
* @return True si se pudo registrar con éxito el nuevo paciente.
* False si no fue posible registrarlo.
*/
public boolean nuevoPaciente() {
String id = JOptionPane.showInputDialog(null, "Introduzca Identificador:", "Nuevo Paciente", JOptionPane.QUESTION_MESSAGE);
String nombre = JOptionPane.showInputDialog(null, "Nombre:", "Nuevo Paciente", JOptionPane.QUESTION_MESSAGE);
String apellidos = JOptionPane.showInputDialog(null, "Apellidos:", "Nuevo Paciente", JOptionPane.QUESTION_MESSAGE);
String genero = JOptionPane.showInputDialog(null, "Genero:", "Nuevo Paciente", JOptionPane.QUESTION_MESSAGE);
int edad = 0;
try {
edad = Integer.parseInt(JOptionPane.showInputDialog(null, "Edad:", "Nuevo Paciente", JOptionPane.QUESTION_MESSAGE));
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Solo se admite introducir numeros para la edad\nNo se ha registrado el valor introducido",
"Error", JOptionPane.WARNING_MESSAGE);
}
Paciente nuevoPaciente = new Paciente(id, nombre, apellidos, edad, genero);
return pacientes.add(nuevoPaciente);//Devuelve TRUE si se insertó correctamente, FALSE si no se pudo insertar
}

/**
* Lista por pantalla los datos de todos los pacientes registrados.
*/
public void mostrarPacientes() {
for (Paciente p: pacientes)
p.mostrar();
}

/**
* Modifica el Paciente que el usuario solicite mediante el ID de Paciente.
* @return True al finalizar la modificacion correctamente.
* False si no se encontró ningun paciente con el ID indicado.
*/
public boolean modificarPaciente() {
String id = JOptionPane.showInputDialog(null, "Introduzca Identificador del paciente a modificar:",
"Modificar Paciente", JOptionPane.QUESTION_MESSAGE);
/*
* Ahora buscaremos el paciente en el ArrayList y si lo encontramos lo referenciaremos
* a otro objeto de la clase Paciente que incialmente tiene valor null.
* Si tras finalizar la búsqueda, este objeto sigue valiendo null significa que no hemos
* encontrado el Paciente que nos han pedido e informaremos al usuario.
*/
Paciente paciente = null;
for (int i = 0; i < pacientes.size(); i++){
if (pacientes.get(i).getId().equals(id)) {
paciente = pacientes.get(i);//Referenciamos a otro nombre de objeto
break;//No hace falta seguir buscando, "rompemos" el bucle for
}
}

if (paciente == null) {
JOptionPane.showMessageDialog(null, "No se encuentra Paciente con el ID:\n" + id,
"Paciente no encontrado", JOptionPane.WARNING_MESSAGE);
return false;
}
else {
//Comienza el proceso de modificacion
paciente.setId(JOptionPane.showInputDialog(null, "ID actual: " + paciente.getId()
+ "\nIntroduzca nuevo identificador:", "Modificar Paciente", JOptionPane.QUESTION_MESSAGE));
paciente.setNombre(JOptionPane.showInputDialog(null, "Nombre actual: " + paciente.getNombre()
+ "\nIntroduzca nuevo nombre:", "Modificar Paciente", JOptionPane.QUESTION_MESSAGE));
paciente.setApellidos(JOptionPane.showInputDialog(null, "Apellidos actuales: " + paciente.getApellidos()
+ "\nIntroduzca nuevos apellidos:", "Modificar Paciente", JOptionPane.QUESTION_MESSAGE));
paciente.setGenero(JOptionPane.showInputDialog(null, "Genero actual: " + paciente.getGenero()
+ "\nIntroduzca nuevo genero:", "Modificar Paciente", JOptionPane.QUESTION_MESSAGE));
try {
paciente.setEdad(Integer.parseInt(JOptionPane.showInputDialog(null, "Edad actual: " + paciente.getEdad()
+ "\nIntroduzca nueva edad:", "Modificar Paciente", JOptionPane.QUESTION_MESSAGE)));
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Solo se admite introducir numeros para la edad\nNo se ha registrado el valor introducido",
"Error", JOptionPane.WARNING_MESSAGE);
}
return true;
}
}

/**
* Elimina el Paciente indicado por el usuario mediante el ID del Paciente.
* @return True si tuvo éxito la eliminacion.
* False si no se encontró el Paciente indicado.
*/
public boolean borrarPaciente() {
String id = JOptionPane.showInputDialog(null, "Introduzca Identificador del paciente a borrar:",
"Borrar Paciente", JOptionPane.QUESTION_MESSAGE);

Paciente paciente = null;
for (int i = 0; i < pacientes.size(); i++){
if (pacientes.get(i).getId().equals(id))
paciente = pacientes.remove(i);//Al eliminar el objeto, el ArrayList nos lo devuelve y lo recogemos en "paciente"
}

if (paciente == null) {
JOptionPane.showMessageDialog(null, "No se encuentra Paciente con el ID:\n" + id,
"Paciente no encontrado", JOptionPane.WARNING_MESSAGE);
return false;
}
else {
JOptionPane.showMessageDialog(null, "Se elimino el paciente con ID:\n" + id,
"Paciente Eliminado", JOptionPane.INFORMATION_MESSAGE);
return false;
}
}

}


Por último, te dejo aquí una primera versión de la clase TestClinica.
Esta es una versión puramente de prueba, no hay menus todavía ni nada.
Es solo para que veas en funcionamiento la clase GestorPacientes
Cuando la ejecutes, lo que hace es:
- ofrece registrar dos pacientes nuevos.
- muestra los pacientes registrados.
- ofrece modificar un paciente.
- vuelve a mostrar los pacientes registrados, para que se vea la modificacion.
- ofrece eliminar un paciente.
- muestra una vez mas los pacientes registrados, para verificar que se ha eliminado el paciente indicado.

TestClinica
Código: [Seleccionar]
package clinica;

public final class TestClinica {

static GestorPacientes pacientes = new GestorPacientes();

public static void main(String[] args) {

pacientes.nuevoPaciente();
pacientes.nuevoPaciente();
pacientes.mostrarPacientes();
pacientes.modificarPaciente();
pacientes.mostrarPacientes();
pacientes.borrarPaciente();
pacientes.mostrarPacientes();

}

}

Cuando tengamos las clases "gestoras" terminadas, daremos forma a la clase TestClinica para que ya si muestre menus y podamos gestionar todo.
Pero esto lo dejamos para el final.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".