package clinica;
import javax.swing.JOptionPane;
public class doctor {
	public static void main(String[] args) {}
	
		private String id;
		private String nombre;
		private String apellidos;
		private String especialidad;
		
		public doctor(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 doctor
		 */
		public void mostrar() {
			String mensaje = "ID doctor: " + id + "\nNombre: " + nombre
					+ "\nApellidos: " + apellidos + "\nEspecialidad: " + especialidad;
			JOptionPane.showMessageDialog(null, mensaje, "Mostrar doctor", JOptionPane.INFORMATION_MESSAGE);
		}
}
			package clinica;
import javax.swing.JOptionPane;
public class Doctor {
public static void main(String[] args) {}
private String id;
private String nombre;
private String apellidos;
private String especialidad;
public Doctor(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 doctor
*/
public void mostrar() {
String mensaje = "ID doctor: " + id + "\nNombre: " + nombre
+ "\nApellidos: " + apellidos + "\nEspecialidad: " + especialidad;
JOptionPane.showMessageDialog(null, mensaje, "Mostrar doctor", JOptionPane.INFORMATION_MESSAGE);
}
}
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();
	}
}
			tambien podrias ayudarme con el codigo Tener control de acceso mediante administradores: solo ciertos usuarios podrán acceder al sistema mediante un identificador y una contraseña.
public class Administrador {
	
	private String nombre;
	private String password;
	
	public Administrador(String nom, String pass) {
		nombre = nom;
		password = pass;
	}
	
	@Override
	public boolean equals(Object objeto) {
		if (objeto instanceof Administrador) { //Objeto si es clase Administrador
			//Casteamos objeto a Administrador
			Administrador otroAdmin = (Administrador)objeto;
			//Comparamos si coinciden nombre y password
			if (nombre.equals(otroAdmin.nombre) && password.equals(otroAdmin.password))
				return true; //Coinciden ambos, los objetos representan al mismo Administrador
			else
				return false;//Nombre o contraseña no coinciden, son Administradores diferentes.
		}
		else //Objeto a comparar no es de clase Administrador
			return false;
	}
}public class Clinica {
	
	private static ArrayList<Administrador> administradores = new ArrayList<Administrador>();
	private static Scanner teclado = new Scanner(System.in);
	public static void main(String[] args) {
		crearAdmins();
		
		if (validarAcceso()) {
			System.out.println("\nUsuario autorizado\n");
			//Comienza el programa
			//...
			//...
			//...
			//...
		}
		else
			System.out.println("\nUsuario no autorizado.");
		
		System.out.println("\n\t\tFIN DE PROGRAMA");
	}
	
	private static void crearAdmins() {
		administradores.add(new Administrador("Kabuto", "1234"));
		administradores.add(new Administrador("jonatthan23", "5678"));
		administradores.add(new Administrador("Ogramar", "0000"));
	}
	
	private static boolean validarAcceso( ) {
		
		System.out.println("ACCESO AL SISTEMA");
		System.out.println("------ -- -------\n");
		System.out.print("Nombre: ");
		String nombre = teclado.nextLine();
		System.out.print("Password: ");
		String password = teclado.nextLine();
		
		Administrador admin = new Administrador(nombre, password);
		
		return administradores.contains(admin);
		
	}
}package clinica;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public final class TestClinica {
	
	private static ArrayList<Administrador> administradores = new ArrayList<Administrador>();
	private static Scanner teclado = new Scanner(System.in);
	static GestorPacientes pacientes = new GestorPacientes();
	static GestorCita citas = new GestorCita();
	static GestorDoctor doctores = new GestorDoctor();
	
	public static void main(String[] args) {
		
		crearAdmins();
		
		if (validarAcceso()) {
			System.out.println("\nUsuario autorizado\n");
			//Comienza el programa
			//...
			//...
			//...
			//...
		}
		else
			System.out.println("\nUsuario no autorizado.");
		
		System.out.println("\n\t\tFIN DE PROGRAMA");
	}
	
	private static void crearAdmins() {
		administradores.add(new Administrador("Kabuto", "1234"));
		administradores.add(new Administrador("jonatthan23", "5678"));
		administradores.add(new Administrador("Ogramar", "0000"));
	}
	
	private static boolean validarAcceso( ) {
		
		System.out.println("ACCESO AL SISTEMA");
		System.out.println("------ -- -------\n");
		System.out.print("Nombre: ");
		String nombre = teclado.nextLine();
		System.out.print("Password: ");
		String password = teclado.nextLine();
		
		Administrador admin = new Administrador(nombre, password);
		
		return administradores.contains(admin);
	}
	{
		doctores.nuevoDoctor();
		doctores.modificarDoctor();
		doctores.mostrarDoctores();
		pacientes.nuevoPaciente();
		pacientes.mostrarPacientes();
		pacientes.modificarPaciente();
		pacientes.borrarPaciente();
		citas.nuevoCita();
		citas.mostrarCitas();
	}
}
			public static void main(String[] args) {
crearAdmins();
if (validarAcceso()) {
System.out.println("\nUsuario autorizado\n");
doctores.nuevoDoctor();
doctores.modificarDoctor();
doctores.mostrarDoctores();
pacientes.nuevoPaciente();
pacientes.mostrarPacientes();
pacientes.modificarPaciente();
pacientes.borrarPaciente();
citas.nuevoCita();
citas.mostrarCitas();
}
else
System.out.println("\nUsuario no autorizado.");
System.out.println("\n\t\tFIN DE PROGRAMA");
}
	      
	      public String generaLineaCSV() {
	    	  return String.format("%s;%s;%s;%s\n", id, nombre, apellidos, especialidad);
	      }	
	public void crearCSV() {
		
		File archivo = new File("D:/csv/doctores.csv");
		
		try {
			//Si no existe archivo, intentamos crearlo
			if (!archivo.exists()) {
				File carpeta = archivo.getParentFile();
				carpeta.mkdirs();
				archivo.createNewFile();
			}
			
			FileWriter escritor = new FileWriter(archivo);
			//Cabecera para datos del CSV
			escritor.append("#ID;Nombre;Apellidos;Especialidad\n");
			
			//Datos de los doctores
			for (Doctor doc: doctores)
				escritor.append(doc.generaLineaCSV());//Insertamos linea CSV
			
			escritor.close();
		} catch (IOException e) {
			System.out.println("Error de acceso a: " + archivo.getAbsolutePath());
		}
	}	public static void main(String[] args) {
		crearAdmins();
		if (validarAcceso()) {
			System.out.println("\nUsuario autorizado\n");
			doctores.nuevoDoctor();
			doctores.nuevoDoctor();
			doctores.nuevoDoctor();
			doctores.crearCSV();
		}
		else
			System.out.println("\nUsuario no autorizado.");
		System.out.println("\n\t\tFIN DE PROGRAMA");
	}ACCESO AL SISTEMA
------ -- -------
Nombre: Kabuto
Password: 1234
Usuario autorizado
ALTA NUEVO DOCTOR
---- ----- ------
ID: ID001
Nombre: Ramon
Apellidos: Luna
Especialidad: Cardiologia
ALTA NUEVO DOCTOR
---- ----- ------
ID: ID002
Nombre: Susana
Apellidos: Lopez
Especialidad: Hematologia
ALTA NUEVO DOCTOR
---- ----- ------
ID: ID003
Nombre: Raul
Apellidos: Molino
Especialidad: Endoscopia
FIN DE PROGRAMA
package clinica;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public final class TestClinica {
	
	private static ArrayList<Administrador> administradores = new ArrayList<Administrador>();
	private static Scanner teclado = new Scanner(System.in);
	static GestorPacientes pacientes = new GestorPacientes();
	static GestorCita citas = new GestorCita();
	static GestorDoctor doctores = new GestorDoctor();
	
	public static void main(String[] args) {
		
		crearAdmins();
		
		if (validarAcceso()) {
	         System.out.println("\nUsuario autorizado\n");
	         doctores.nuevoDoctor();
	         doctores.modificarDoctor();
	         doctores.mostrarDoctores();
	         pacientes.nuevoPaciente();
	         pacientes.mostrarPacientes();
	         pacientes.modificarPaciente();
	         pacientes.borrarPaciente();
	         citas.nuevoCita();
	         citas.mostrarCitas();
	         doctores.crearCSV();
	         citas.crearCSV();
	         pacientes.crearCSV();
	      }
	      else
	         System.out.println("\nUsuario no autorizado.");
	      System.out.println("\t\tFIN DE PROGRAMA");
	   }
package clinica;
import javax.swing.JOptionPane;
public class Paciente {
	
		
		private String id;
		private String nombre;
		private String apellidos;
		
		public String generaLineaCSV() {
	    	  return String.format("%s;%s;%s;%s\n", id, nombre, apellidos);  
		}
		
		
		public Paciente(String id, String nombre, String apellidos) {
			this.id = id;
			this.nombre = nombre;
			this.apellidos = apellidos;
}
package clinica;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public final class GestorPacientes {
	
	private ArrayList<Paciente> pacientes;
	
public void crearCSV() {
		
		File archivo = new File("C:/csv/pacientes.csv");
		
		try {
			//Si no existe archivo, intentamos crearlo
			if (!archivo.exists()) {
				File carpeta = archivo.getParentFile();
				carpeta.mkdirs();
				archivo.createNewFile();
			}
			
			FileWriter escritor = new FileWriter(archivo);
			//Cabecera para datos del CSV
			escritor.append("#ID;Nombre;Apellidos\n");
			
			//Datos de los pacientes
			for (Paciente doc: pacientes)
				escritor.append(doc.generaLineaCSV());//Insertamos linea CSV
			
			escritor.close();
		} catch (IOException e) {
			System.out.println("Error de acceso a: " + archivo.getAbsolutePath());
		}
	}
			FileWriter escritor = new FileWriter(archivo, true);
public void crearCSV() {
File archivo = new File("D:/csv/doctores.csv");
try {
//Si no existe archivo, intentamos crearlo
boolean primeraVez = false;
if (!archivo.exists()) {
File carpeta = archivo.getParentFile();
carpeta.mkdirs();
archivo.createNewFile();
primeraVez = true; //Primera vez que trabajamos en este archivo
}
FileWriter escritor = new FileWriter(archivo, true);
//Cabecera para datos del CSV, solo si es la primera vez
if (primeraVez)
escritor.append("#ID;Nombre;Apellidos;Especialidad\n");
//Datos del último Doctor registrado
int ultimo = doctores.size() - 1;
escritor.append(doctores.get(ultimo).generaLineaCSV());//Insertamos linea CSV
escritor.close();
} catch (IOException e) {
System.out.println("Error de acceso a: " + archivo.getAbsolutePath());
}
}
public void nuevoDoctor() {
System.out.println("\nALTA NUEVO DOCTOR");
System.out.println("---- ----- ------\n");
System.out.print("ID: ");
String id = teclado.nextLine();
System.out.print("Nombre: ");
String nombre = teclado.nextLine();
System.out.print("Apellidos: ");
String apell = teclado.nextLine();
System.out.print("Especialidad: ");
String espe = teclado.nextLine();
doctores.add(new Doctor(id, nombre, apell, espe));
crearCSV(); //Añadimos nueva línea CSV al archivo en disco
}
public class Cita {
	
	private String id;
	private String fecha;
	private String hora;
	private String motivo;
	private Doctor doctor;
	private Paciente paciente;
	
	public Cita(String id, String fecha, String hora, String motivo,
			Doctor doctor, Paciente paciente) {
		this.id = id;
		this.fecha = fecha;
		this.hora = hora;
		this.motivo = motivo;
		this.doctor = doctor;
		this.paciente = paciente;
	}
	
	public Cita(String id, String fecha, String hora, String motivo) {
		this.id = id;
		this.fecha = fecha;
		this.hora = hora;
		this.motivo = motivo;
	}
	public String getMotivo() {
		return motivo;
	}
	public void setMotivo(String motivo) {
		this.motivo = motivo;
	}
	public Paciente getPaciente() {
		return paciente;
	}
	public void setPaciente(Paciente paciente) {
		this.paciente = paciente;
	}
	
}
			public boolean nuevoCita() {
		String id = JOptionPane.showInputDialog(null, "Introduzca Identificador:", "Nuevo Cita", JOptionPane.QUESTION_MESSAGE);
		String fecha = JOptionPane.showInputDialog(null, "Fecha:", "Nuevo Fecha", JOptionPane.QUESTION_MESSAGE);
		String hora = JOptionPane.showInputDialog(null, "Hora:", "Nuevo Hora", JOptionPane.QUESTION_MESSAGE);
		String motivo = JOptionPane.showInputDialog(null, "Motivo:", "Nuevo Motivo", JOptionPane.QUESTION_MESSAGE);
		Doctor doctor = JOptionPane.showInputDialog(null, "Doctor:", "Nuevo Doctor", JOptionPane.QUESTION_MESSAGE);
		Paciente paciente = JOptionPane.showInputDialog(null, "Paciente:", "Nuevo Paciente", JOptionPane.QUESTION_MESSAGE);
		
		Cita nuevoCita = new Cita(id, fecha, hora, motivo, doctor, paciente);
		return citas.add(nuevoCita);
			//Devuelve TRUE si se insertó correctamente, FALSE si no se pudo insertar
		}package clinica;
import javax.swing.JOptionPane;
public final class Cita {
	private String id;
	private String fecha;
	private String hora;
	private String motivo;
	private Doctor doctor;
	private Paciente paciente;
	
	public String generaLineaCSV() {
  	  return String.format("%s;%s;%s;%s;%s;%s\n", id, fecha, hora, motivo, doctor, paciente);  
	}
	
	public Cita(String id, String fecha, String hora, String motivo, Doctor doctor, Paciente paciente) {
		this.id = id;
		this.fecha = fecha;
		this.hora = hora;
		this.motivo = motivo;
		
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getFecha() {
		return fecha;
	}
	public void setFecha(String fecha) {
		this.fecha = fecha;
	}
	public String getHora() {
		return hora;
	}
	public void setHora(String hora) {
		this.hora = hora;
	}
	public String getMotivo() {
		return motivo;
	}
	public void setMotivo(String motivo) {
		this.motivo = motivo;
	}
	
	public Doctor getDoctor() {
		return doctor;
	}
	public void setDoctor(Doctor doctor) {
		this.doctor = doctor;
	}
	
	public Paciente getPaciente() {
		return paciente;
	}
	public void setPaciente(Paciente paciente) {
		this.paciente = paciente;
	}
	
	/**
	 * Muestra por panel todos los datos de la cita
	 */
	public void mostrar() {
		String mensaje = "\nid cita: " + id + "\nFecha: " + fecha
				+ "\nHora: " + hora + "\nMotivo: " + motivo;
		JOptionPane.showMessageDialog(null, mensaje, "Mostrar Cita", JOptionPane.INFORMATION_MESSAGE);
	}
}
			Doctor doctor = JOptionPane.showInputDialog(null, "Doctor:", "Nuevo Doctor", JOptionPane.QUESTION_MESSAGE);
Paciente paciente = JOptionPane.showInputDialog(null, "Paciente:", "Nuevo Paciente", JOptionPane.QUESTION_MESSAGE);
	
	public Doctor getDoctor(String id) {
		for (Doctor doc: doctores)
			if (doc.getId().equals(id))
				return doc; //Doctor encontrado
		//Si el bucle no ha retornado ningún Doctor, es que no existe ese ID
		return null;
	}public class GestorCita {
private ArrayList<Cita> citas;
//Referencias a las instancias de los gestores de doctores y pacientes
private GestorDoctor doctores;
private GestorPaciente pacientes;
public GestorCita(GestorDoctor gestDoc, GestorPaciente gestPaci) {
citas = new ArrayList<Cita>();
doctores = gestDoc;
pacientes = gestPaci;
}
public boolean nuevoCita() {
String id = JOptionPane.showInputDialog(null, "Introduzca Identificador:", "Nuevo Cita", JOptionPane.QUESTION_MESSAGE);
String fecha = JOptionPane.showInputDialog(null, "Fecha:", "Nuevo Fecha", JOptionPane.QUESTION_MESSAGE);
String hora = JOptionPane.showInputDialog(null, "Hora:", "Nuevo Hora", JOptionPane.QUESTION_MESSAGE);
String motivo = JOptionPane.showInputDialog(null, "Motivo:", "Nuevo Motivo", JOptionPane.QUESTION_MESSAGE);
String iDdoctor = JOptionPane.showInputDialog(null, "ID del Doctor:", "Nuevo Doctor", JOptionPane.QUESTION_MESSAGE);
String iDpaciente = JOptionPane.showInputDialog(null, "ID del Paciente:", "Nuevo Paciente", JOptionPane.QUESTION_MESSAGE);
//Pedimos los datos a los gestores que tenemos referenciados
Doctor doctor = doctores.getDoctor(iDdoctor);
Paciente paciente = pacientes.getPaciente(iDpaciente);
Cita nuevoCita = new Cita(id, fecha, hora, motivo, doctor, paciente);
return citas.add(nuevoCita);
//Devuelve TRUE si se insertó correctamente, FALSE si no se pudo insertar
}
}
public class Clinica {
private static ArrayList<Administrador> administradores = new ArrayList<Administrador>();
private static GestorDoctor doctores = new GestorDoctor();
private static GestorPaciente pacientes = new GestorPaciente();
private static GestorCita citas = new GestorCita(doctores, pacientes);//Pasamos referencias
private static Scanner teclado = new Scanner(System.in);
public static void main(String[] args) {
crearAdmins();
if (validarAcceso()) {
System.out.println("\nUsuario autorizado\n");
................
................
................
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public final class Clinica {
    private static ArrayList<Administrador> administradores = new ArrayList<Administrador>();
    private static Scanner teclado = new Scanner(System.in);
    static GestorPacientes pacientes = new GestorPacientes();
    static GestorCita citas = new GestorCita();
    static GestorDoctor doctores = new GestorDoctor();
    public static void main(String[] args) {
        crearAdmins();
        if (validarAcceso()) {
            System.out.println("\nUsuario autorizado\n");
            if (validarAcceso()) {
                System.out.println("\nUsuario autorizado\n");
                doctores.nuevoDoctor();
                doctores.modificarDoctor();
                doctores.mostrarDoctores();
                pacientes.nuevoPaciente();
                pacientes.mostrarPacientes();
                pacientes.modificarPaciente();
                pacientes.borrarPaciente();
                citas.nuevoCita();
                citas.mostrarCitas();
            }
            else
                System.out.println("\nUsuario no autorizado.");
            System.out.println("\n\t\tFIN DE PROGRAMA");
        }
        private static void crearAdmins() {
            administradores.add(new Administrador("Kabuto", "1234"));
            administradores.add(new Administrador("EmethP", "5678"));
            administradores.add(new Administrador("AnaT", "0000"));
        }
        private static boolean validarAcceso( ) {
            System.out.println("ACCESO AL SISTEMA");
            System.out.println("------ -- -------\n");
            System.out.print("Nombre: ");
            String nombre = teclado.nextLine();
            System.out.print("Password: ");
            String password = teclado.nextLine();
            Administrador admin = new Administrador(nombre, password);
            return administradores.contains(admin);
        }
    }
}package clinica;
import javax.swing.JOptionPane;
public class Doctor {
    private String id;
    private String nombre;
    private String apellidos;
    private String especialidad;
    public Doctor(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 doctor
     */
    public void mostrar() {
        String mensaje = "ID doctor: " + id + "\nNombre: " + nombre
                + "\nApellidos: " + apellidos + "\nEspecialidad: " + especialidad;
        JOptionPane.showMessageDialog(null, mensaje, "Mostrar doctor", JOptionPane.INFORMATION_MESSAGE);
    }
    public Doctor getDoctor(String id) {
        for (Doctor doc: doctores)
            if (doc.getId().equals(id))
                return doc; //Doctor encontrado
        //Si el bucle no ha retornado ningún Doctor, es que no existe ese ID
        return null;
    }
}import javax.swing.JOptionPane;
public class Paciente {
    private String id;
    private String nombre;
    private String apellidos;
    public String generaLineaCSV() {
        return String.format("%s;%s;%s;%s\n", id, nombre, apellidos);
    }
    public Paciente(String id, String nombre, String apellidos) {
        this.id = id;
        this.nombre = nombre;
        this.apellidos = apellidos;
    }
}public class Administrador {
    private String nombre;
    private String password;
    public Administrador(String nom, String pass) {
        nombre = nom;
        password = pass;
    }
    @Override
    public boolean equals(Object objeto) {
        if (objeto instanceof Administrador) { //Objeto si es clase Administrador
            //Casteamos objeto a Administrador
            Administrador otroAdmin = (Administrador)objeto;
            //Comparamos si coinciden nombre y password
            if (nombre.equals(otroAdmin.nombre) && password.equals(otroAdmin.password))
                return true; //Coinciden ambos, los objetos representan al mismo Administrador
            else
                return false;//Nombre o contraseña no coinciden, son Administradores diferentes.
        }
        else //Objeto a comparar no es de clase Administrador
            return false;
    }
}public class Cita {
    private String id;
    private String fecha;
    private String hora;
    private String motivo;
    private Doctor doctor;
    private Paciente paciente;
    public Cita(String id, String fecha, String hora, String motivo,
                Doctor doctor, Paciente paciente) {
        this.id = id;
        this.fecha = fecha;
        this.hora = hora;
        this.motivo = motivo;
        this.doctor = doctor;
        this.paciente = paciente;
    }
    public Cita(String id, String fecha, String hora, String motivo) {
        this.id = id;
        this.fecha = fecha;
        this.hora = hora;
        this.motivo = motivo;
    }
    public String getMotivo() {
        return motivo;
    }
    public void setMotivo(String motivo) {
        this.motivo = motivo;
    }
    public Paciente getPaciente() {
        return paciente;
    }
    public void setPaciente(Paciente paciente) {
        this.paciente = paciente;
    }
}import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public final class GestorPacientes {
    private ArrayList<Paciente> pacientes;
    public void crearCSV() {
        File archivo = new File("C:\\Users\\Emeth.Paredes\\IdeaProjects\\EvidenciaFinal\\src");
        try {
            //Si no existe archivo, intentamos crearlo
            boolean primeraVez = false;
            if (!archivo.exists()) {
                File carpeta = archivo.getParentFile();
                carpeta.mkdirs();
                archivo.createNewFile();
                primeraVez = true; //Primera vez que trabajamos en este archivo
            }
            FileWriter escritor = new FileWriter(archivo, true);
            //Cabecera para datos del CSV, solo si es la primera vez
            if (primeraVez)
                escritor.append("#ID;Nombre;Apellidos;Especialidad\n");
            //Datos del último Doctor registrado
            int ultimo = doctores.size() - 1;
            escritor.append(doctores.get(ultimo).generaLineaCSV());//Insertamos linea CSV
            escritor.close();
        } catch (IOException e) {
            System.out.println("Error de acceso a: " + archivo.getAbsolutePath());
        }
    }
}
public class GestorDoctor {
    public void crearCSV() {
        File archivo = new File("C:\\Users\\Emeth.Paredes\\IdeaProjects\\EvidenciaFinal\\src");
        try {
            //Si no existe archivo, intentamos crearlo
            boolean primeraVez = false;
            if (!archivo.exists()) {
                File carpeta = archivo.getParentFile();
                carpeta.mkdirs();
                archivo.createNewFile();
                primeraVez = true; //Primera vez que trabajamos en este archivo
            }
            FileWriter escritor = new FileWriter(archivo, true);
            //Cabecera para datos del CSV, solo si es la primera vez
            if (primeraVez)
                escritor.append("#ID;Nombre;Apellidos;Especialidad\n");
            //Datos del último Doctor registrado
            int ultimo = doctores.size() - 1;
            escritor.append(doctores.get(ultimo).generaLineaCSV());//Insertamos linea CSV
            escritor.close();
        } catch (IOException e) {
            System.out.println("Error de acceso a: " + archivo.getAbsolutePath());
        }
    }
}
public class GestorCita {
    private ArrayList<Cita> citas;
    //Referencias a las instancias de los gestores de doctores y pacientes
    private GestorDoctor doctores;
    private GestorPaciente pacientes;
    public GestorCita(GestorDoctor gestDoc, GestorPaciente gestPaci) {
        citas = new ArrayList<Cita>();
        doctores = gestDoc;
        pacientes = gestPaci;
    }
    public boolean nuevoCita() {
        String id = JOptionPane.showInputDialog(null, "Introduzca Identificador:", "Nuevo Cita", JOptionPane.QUESTION_MESSAGE);
        String fecha = JOptionPane.showInputDialog(null, "Fecha:", "Nuevo Fecha", JOptionPane.QUESTION_MESSAGE);
        String hora = JOptionPane.showInputDialog(null, "Hora:", "Nuevo Hora", JOptionPane.QUESTION_MESSAGE);
        String motivo = JOptionPane.showInputDialog(null, "Motivo:", "Nuevo Motivo", JOptionPane.QUESTION_MESSAGE);
        String iDdoctor = JOptionPane.showInputDialog(null, "ID del Doctor:", "Nuevo Doctor", JOptionPane.QUESTION_MESSAGE);
        String iDpaciente = JOptionPane.showInputDialog(null, "ID del Paciente:", "Nuevo Paciente", JOptionPane.QUESTION_MESSAGE);
        //Pedimos los datos a los gestores que tenemos referenciados
        Doctor doctor = doctores.getDoctor(iDdoctor);
        Paciente paciente = pacientes.getPaciente(iDpaciente);
        Cita nuevoCita = new Cita(id, fecha, hora, motivo, doctor, paciente);
        return citas.add(nuevoCita);
        //Devuelve TRUE si se insertó correctamente, FALSE si no se pudo insertar
    }
}public final class GestorPacientes {public class GestorCita {
private ArrayList<Cita> citas;
//Referencias a las instancias de los gestores de doctores y pacientes
private GestorDoctor doctores;
private GestorPaciente pacientes;
public GestorCita(GestorDoctor gestDoc, GestorPaciente gestPaci) {
citas = new ArrayList<Cita>();
doctores = gestDoc;
pacientes = gestPaci;
}
public final class Clinica {
private static ArrayList<Administrador> administradores = new ArrayList<Administrador>();
private static Scanner teclado = new Scanner(System.in);
static GestorPacientes pacientes = new GestorPacientes();
static GestorCita citas = new GestorCita();
static GestorDoctor doctores = new GestorDoctor();
public final class Clinica {
private static ArrayList<Administrador> administradores = new ArrayList<Administrador>();
private static Scanner teclado = new Scanner(System.in);
static GestorPacientes pacientes = new GestorPacientes();
static GestorDoctor doctores = new GestorDoctor();
static GestorCita citas = new GestorCita(doctores, pacientes);
public static void main(String[] args) {//Apertura de main
crearAdmins();
if (validarAcceso()) {
System.out.println("\nUsuario autorizado\n");
if (validarAcceso()) {
System.out.println("\nUsuario autorizado\n");
doctores.nuevoDoctor();
doctores.modificarDoctor();
doctores.mostrarDoctores();
pacientes.nuevoPaciente();
pacientes.mostrarPacientes();
pacientes.modificarPaciente();
pacientes.borrarPaciente();
citas.nuevoCita();
citas.mostrarCitas();
}
else
System.out.println("\nUsuario no autorizado.");
System.out.println("\n\t\tFIN DE PROGRAMA");
}
private static void crearAdmins() {
administradores.add(new Administrador("Kabuto", "1234"));
administradores.add(new Administrador("EmethP", "5678"));
administradores.add(new Administrador("AnaT", "0000"));
}
private static boolean validarAcceso( ) {
System.out.println("ACCESO AL SISTEMA");
System.out.println("------ -- -------\n");
System.out.print("Nombre: ");
String nombre = teclado.nextLine();
System.out.print("Password: ");
String password = teclado.nextLine();
Administrador admin = new Administrador(nombre, password);
return administradores.contains(admin);
}
}//Cierre de main
public static void main(String[] args) {//Apertura de main
crearAdmins();
if (validarAcceso()) {
System.out.println("\nUsuario autorizado\n");
if (validarAcceso()) {
System.out.println("\nUsuario autorizado\n");
doctores.nuevoDoctor();
doctores.modificarDoctor();
doctores.mostrarDoctores();
pacientes.nuevoPaciente();
pacientes.mostrarPacientes();
pacientes.modificarPaciente();
pacientes.borrarPaciente();
citas.nuevoCita();
citas.mostrarCitas();
}
else
System.out.println("\nUsuario no autorizado.");
System.out.println("\n\t\tFIN DE PROGRAMA");
}
}//Cierre de main
private static void crearAdmins() {
administradores.add(new Administrador("Kabuto", "1234"));
administradores.add(new Administrador("EmethP", "5678"));
administradores.add(new Administrador("AnaT", "0000"));
}
private static boolean validarAcceso( ) {
System.out.println("ACCESO AL SISTEMA");
System.out.println("------ -- -------\n");
System.out.print("Nombre: ");
String nombre = teclado.nextLine();
System.out.print("Password: ");
String password = teclado.nextLine();
Administrador admin = new Administrador(nombre, password);
return administradores.contains(admin);
}
if (validarAcceso()) {
System.out.println("\nUsuario autorizado\n");
if (validarAcceso()) {
System.out.println("\nUsuario autorizado\n");
doctores.nuevoDoctor();
doctores.modificarDoctor();
doctores.mostrarDoctores();
pacientes.nuevoPaciente();
pacientes.mostrarPacientes();
pacientes.modificarPaciente();
pacientes.borrarPaciente();
citas.nuevoCita();//Este es el único método que existe
citas.mostrarCitas();
}
//Pedimos los datos a los gestores que tenemos referenciados
Doctor doctor = doctores.getDoctor(iDdoctor);
Paciente paciente = pacientes.getPaciente(iDpaciente);
//Datos del último Doctor registrado
int ultimo = doctores.size() - 1;
escritor.append(doctores.get(ultimo).generaLineaCSV());//Insertamos linea CSV
public final class GestorPacientes {
private ArrayList<Paciente> pacientes;
FileWriter escritor = new FileWriter(archivo, true);
//Cabecera para datos del CSV, solo si es la primera vez
if (primeraVez)
escritor.append("#ID;Nombre;Apellidos;Especialidad\n");
//Datos del último Doctor registrado
int ultimo = doctores.size() - 1;
escritor.append(doctores.get(ultimo).generaLineaCSV());//Insertamos linea CSV