Boa tarde pessoal, tudo bem? Estou desenvolvendo um projeto de uma aplicação simples em Java, com listas encadeadas para a faculdade, sem armazenamento em banco de dados, onde preciso desenvolver um sistema que:
- Cadastre Pacientes; OK
- Cadastre Médicos; OK
- Agende uma consulta, onde na hora de selecionar o médico (única parte do agendamento que necessita de filtro), eu informe uma especialidade médica e esta busca busque todos os médicos com aquela especialidade e liste eles para mim, onde eu possa selecioná-lo (ou não, caso não exista a especialidade, retorne alguma mensagem de aviso) e seguir no preenchimento dos dados;
- Listas todos os pacientes cadastrados; OK
- Listas todos os médicos cadastrados; OK
- Listas todas as consultas cadastradas; OK
- Listas as consultas cadastradas por paciente;
- Listas as consultas cadastradas por médico;
Todos os itens com OK eu consegui desenvolver, só não consegui aplicar os filtros nas listagens e na seleção do médico na hora de agendar a consulta. Também não consegui fazer com que cada consulta gerada, ao invés de eu preencher o ID, ele gere um ID sozinho que seja incrementado a cada novo agendamento, afim de evitar conflito de numeração de ID’s. E também não consegui gerar um método de inserir Consultas no início da ListaDeConsultas.
Vocês conseguiriam me dar uma luz em como solucionar isto, pois como estou no início da graduação em ADS estou bem cru nestes processos. Obrigado pela atenção!
OBS: caso queiram, deixo um link com o meu projeto feito no Eclipse para download
mas vou postar aqui também o código para todos verem:
*** CLASSE: Principal ***
package SistemaConsultas;
public class Principal {
public static void main(String[] args) {
InterfaceDeUsuario interacao ;
interacao = new InterfaceDeUsuario();
interacao.apresentarInterface();
}
}
*** CLASSE: Consulta ***
package SistemaConsultas;
public class Consulta {
//ATRIBUTOS
private String id;
private String medico;
private String paciente;
private String dia;
private String mes;
private String ano;
private String hora;
public Consulta(String id, String medico, String paciente, String dia, String mes, String ano, String hora) {
//MÉTODO CONSTRUTOR
this.id = id;
this.medico = medico;
this.paciente = paciente;
this.dia = dia;
this.mes = mes;
this.ano = ano;
this.hora = hora;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getMedico() {
return medico;
}
public void setMedico(String medico) {
this.medico = medico;
}
public String getPaciente() {
return paciente;
}
public void setPaciente(String paciente) {
this.paciente = paciente;
}
public String getDia() {
return dia;
}
public void setDia(String dia) {
this.dia = dia;
}
public String getMes() {
return mes;
}
public void setMes(String mes) {
this.mes = mes;
}
public String getAno() {
return ano;
}
public void setAno(String ano) {
this.ano = ano;
}
public String getHora() {
return hora;
}
public void setHora(String hora) {
this.hora = hora;
}
}
*** CLASSE: ExcecaoDeIndiceInexistente ***
package SistemaConsultas;
public class ExcecaoDeIndiceInexistente extends Exception {
}
*** CLASSE: InterfaceDeUsuario ***
package SistemaConsultas;
import java.util.Scanner;
import SistemaConsultas.ExcecaoDeIndiceInexistente;
import java.util.ArrayList;
public class InterfaceDeUsuario {
private ArrayList <Paciente> pacientesDoEstabelecimento = new ArrayList <Paciente>();
private ArrayList <Medico> medicosDoEstabelecimento = new ArrayList <Medico>();
private ListaDeConsultas consultasDoEstabelecimento = new ListaDeConsultas ();
public void apresentarInterface() {
Scanner entrada = new Scanner(System.in);
this.mostrarMenuOpcoes();
int opcao = entrada.nextInt();
while(opcao != 0) {
switch(opcao) {
case 1: // CADASTRAR PACIENTE
System.out.println("Nome: ");
entrada.nextLine();
String nome = entrada.nextLine();
System.out.println("CPF: ");
String cpf = entrada.nextLine();
System.out.println("Endereço: ");
String endereco = entrada.nextLine();
Paciente tempPaciente = new Paciente(nome, cpf, endereco);
pacientesDoEstabelecimento.add(tempPaciente);
break;
case 2: // CADASTRAR MEDICO
System.out.println("Nome: ");
entrada.nextLine();
String nomeM = entrada.nextLine();
System.out.println("CPF: ");
String cpfM = entrada.nextLine();
System.out.println("Especialidade: ");
String especialidadeM = entrada.nextLine();
Medico tempMedico = new Medico(nomeM, cpfM, especialidadeM);
medicosDoEstabelecimento.add(tempMedico);
break;
case 3: // AGENDAR CONSULTA
System.out.println("ID: ");
entrada.nextLine();
String id = entrada.nextLine();
System.out.println("Médico: ");
String medico = entrada.nextLine();
System.out.println("Paciente: ");
String paciente = entrada.nextLine();
System.out.println("Dia: ");
String dia = entrada.nextLine();
System.out.println("Mês: ");
String mes = entrada.nextLine();
System.out.println("Ano: ");
String ano = entrada.nextLine();
System.out.println("Hora: ");
String hora = entrada.nextLine();
Consulta tempConsulta = new Consulta(id, medico, paciente, dia, mes, ano, hora);
consultasDoEstabelecimento.incluirNoFinal(tempConsulta);
break;
case 4: // LISTAR PACIENTES CADASTRADOS
for(int p=0 ; p<pacientesDoEstabelecimento.size() ; p++ ) {
tempPaciente = pacientesDoEstabelecimento.get(p);
System.out.println("Nome: "+tempPaciente.getNome());
System.out.println("CPF: "+tempPaciente.getCpf());
System.out.println("Endereço: "+tempPaciente.getEndereco());
}
break;
case 5: // LISTAR MÉDICOS CADASTRADOS
for(int m=0 ; m<medicosDoEstabelecimento.size() ; m++ ) {
tempMedico = medicosDoEstabelecimento.get(m);
System.out.println("Nome: "+tempMedico.getNomeM());
System.out.println("CPF: "+tempMedico.getCpfM());
System.out.println("Especialidade: "+tempMedico.getEspecialidadeM());
}
break;
case 6: // LISTAR TODAS AS CONSULTAS AGENDADAS
try {
for(int c=0; c<consultasDoEstabelecimento.getQuantasConsultas() ; c++) {
tempConsulta = consultasDoEstabelecimento.getConsulta(c);
System.out.println("ID: "+tempConsulta.getId());
System.out.println("Paciente: "+tempConsulta.getPaciente());
System.out.println("Medico: "+tempConsulta.getMedico());
System.out.println("Data e Horário: "+tempConsulta.getDia()+"/"+tempConsulta.getMes()+"/"+tempConsulta.getAno()+" - "+tempConsulta.getHora()+":00");
}
}
catch(ExcecaoDeIndiceInexistente erro) {
System.out.println("Índice fora dos limites!");
}
break;
//case 7: // LISTAR CONSULTAS AGENDADAS POR PACIENTE
//case 8: // LISTAR CONSULTAS AGENDADAS POR MÉDICO
}
this.mostrarMenuOpcoes();
opcao = entrada.nextInt();
}
}
private void mostrarMenuOpcoes() {
System.out.println("1 - Cadastrar Paciente");
System.out.println("2 - Cadastrar Médico");
System.out.println("3 - Agendar Consulta");
System.out.println("4 - Listar Pacientes cadastrados");
System.out.println("5 - Listar Médicos cadastrados");
System.out.println("6 - Listar todas Consultas agendadas");
//System.out.println("7 - Listar Consultas agendadas por Paciente");
//System.out.println("8 - Listar Consultas agendadas por médico");
System.out.println("0 - Sair");
}
}
*** CLASSE: ListaDeConsultas ***
package SistemaConsultas;
public class ListaDeConsultas {
private Consulta[] asConsultas = new Consulta [1000];
private int quantasConsultas = 0;
//INCLUI UMA CONSULTA NO FIM DA LISTA
public void incluirNoFinal (Consulta consulta) {
this.asConsultas[quantasConsultas] = consulta;
quantasConsultas++;
}
//INCLUI UMA CONSULTA NO INÍCIO DA LISTA ********************************************************
public void incluirNoInicio (Consulta consulta) {
}
//REMOVE UMA CONSULTA DO FIM DA LISTA
public void removerNoFim (Consulta consulta) {
this.asConsultas[quantasConsultas] = consulta;
quantasConsultas--;
}
//INDICA O TAMANHO DA LISTA
public int getQuantasConsultas() {
return quantasConsultas;
}
//RETORNA A CONSULTA QUE ESTÁ NA POSIÇÃO DA LISTA INDICADA NO ARGUMENTO "ÍNDICE"
public Consulta getConsulta(int indice) throws ExcecaoDeIndiceInexistente {
if(indice>=0 && indice<quantasConsultas) {
return asConsultas[indice];
}
throw new ExcecaoDeIndiceInexistente();
}
}
*** CLASSE: Medico ***
package SistemaConsultas;
public class Medico {
//ATRIBUTOS
private String nomeM;
private String cpfM;
private String especialidadeM;
public Medico (String nomeM, String cpfM, String especialidadeM) {
//MÉTODO CONSTRUTOR
this.nomeM = nomeM;
this.cpfM = cpfM;
this.especialidadeM = especialidadeM;
}
public String getNomeM() {
return nomeM;
}
public void setNomeM(String nomeM) {
this.nomeM = nomeM;
}
public String getCpfM() {
return cpfM;
}
public void setCpfM(String cpfM) {
this.cpfM = cpfM;
}
public String getEspecialidadeM() {
return especialidadeM;
}
public void setEspecialidadeM(String especialidadeM) {
this.especialidadeM = especialidadeM;
}
}
*** CLASSE: Paciente ***
package SistemaConsultas;
public class Paciente {
//ATRIBUTOS
private String nome;
private String cpf;
private String endereco;
public Paciente (String nome, String cpf, String endereco) {
//MÉTODO CONSTRUTOR
this.nome = nome;
this.cpf = cpf;
this.endereco = endereco;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}