Buenas tardes, me están solicitando trabajar en este ejercicio, sin embargo no consigo que el programa ejecute.
Estas son las instrucciones:
El programa deberá poder realizar las siguientes acciones:
• Dar de alta doctores.
• Dar de alta pacientes.
• Crear una cita con fecha y hora.
• Relacionar una cita con un doctor y un paciente.
• Tener control de acceso mediante administradores, esto es, solo ciertos usuarios podrán acceder al sistema mediante un identificador y una contraseña.
El producto final será un programa que simulará un sistema de administración de citas con las siguientes funcionalidades:
• Dar de alta doctores: se deberán poder dar de alta los doctores del consultorio médico, los datos básicos serán:
• Identificador único.
• Nombre completo.
• Especialidad.
• Dar de alta pacientes: se deberán poder registrar los pacientes que acudan al consultorio médico, los datos básicos serán:
• Identificador único.
• Nombre completo.
• Crear una cita con fecha y hora: se deberán poder crear múltiples citas, los datos básicos serán:
• Identificador único.
• Fecha y hora de la cita.
• Motivo de la cita.
• Relacionar una cita con un doctor y un paciente: cada una de las citas creadas deberá estar relacionada con un doctor y un paciente.
• Tener control de acceso mediante administradores: solo ciertos usuarios podrán acceder al sistema mediante un identificador y una contraseña.
• Toda la información deberá ser almacenada en archivos de texto plano con formato CSV, o en su defecto utilizar algún formato más avanzado como JSON o XML.
La aplicación será totalmente portable, es decir, que se podrá ejecutar en cualquier sistema operativo que tenga instalado Java, para ello deberá ser configurada para compilarse como un archivo tipo FAT JAR y garantizar que todas las dependencias estarán incluidas.
La aplicación contará con el manejo correcto de recursos y excepciones, es decir, si ocurre una excepción, el programa no saldrá, sino que seguirá ejecutándose y mostrará el mensaje de error en la pantalla.
Estos son los errores de ejecucion que presento:
C:\Users\Emeth.Paredes\IdeaProjects\EvidenciaFinal\src\Clinica.java:39:9
java: illegal start of expression
C:\Users\Emeth.Paredes\IdeaProjects\EvidenciaFinal\src\Clinica.java:59
java: class, interface, enum, or record expected
Este es el codigo y las clases
Clase Main
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);
}
}
}
Clase Doctor
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;
}
}
Clase Paciente
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;
}
}
Clase Administrador
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;
}
}
Clase Cita
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;
}
}
Clase GestorPaciente
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());
}
}
}
Clase GestorDoctor
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());
}
}
}
Clase GestorCita
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
}
}
Podrian apoyarme por favor? No encuentro que es lo que puede estar mal.
Les agradezco de antemano, saludos!