GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Dúvidas em um cadastro de pacientes!


#1

Olá pessoa, boa tarde!
Estou com dúvida em:
- como colocar os pacientes em ordem alfabética com o 'compare to'.
- como fazer os pacientes que estão depois de um determinado paciente (que deletei no meio do vetor), "cheguem para a esquerda" para ocupar seu lugar.
- como consultar os clientes pelo código de cada um (código que será informado pelo Scanner)

Aí está minha classe Principal:

import java.util.Scanner;
public class Principal {
	private static Scanner entrada = new Scanner(System.in);
	private static Paciente[] vetorPacientes;
	private static int menu() {
		System.out.println("[[[ REGISTRO DE PACIENTES ]]]");
		System.out.println("(1) Incluir Paciente");
		System.out.println("(2) Excluir Paciente");
		System.out.println("(3) Consultar Paciente");
		System.out.println("(4) Listar Pacientes");
		System.out.println("(5) Sair");
		System.out.print("Digite a opção desejada:");
		return entrada.nextInt();
	}
	private static Paciente criarPaciente() {
		Paciente p = new Paciente();
		System.out.print("Digite o nome do paciente:");
		p.setNome(entrada.next());
		System.out.println("Digite o sexo do paciente:");
		p.setSexo(entrada.next());
		System.out.println("Digite o idade do paciente:");
		p.setIdade(entrada.nextInt());
		System.out.println("Digite o CPF do paciente:");
		p.setCpf(entrada.next());
		System.out.println("Digite o endereço do paciente:");
		p.setEndereco(entrada.next());
		System.out.println("Digite o código do paciente:");
		p.setCodigo(entrada.nextInt());
		return p;
	}
	public static void main(String[]args){
		int qtdePacientes = 0;
		int indice = -1;
		System.out.println("[[[ REGISTRO DE PACIENTES ]]]");
		System.out.println("Informe a quantidade de pacientes:");
		qtdePacientes = entrada.nextInt();
		vetorPacientes = new Paciente [qtdePacientes];
		int retorno = menu();
			do{
				switch (retorno){
				case 1:
					if (indice >= vetorPacientes.length){
						System.out.print("Lista cheia!\n");
					}
					else{
							indice++;
							vetorPacientes[indice] = criarPaciente();
							System.out.println ("Paciente registrado com sucesso!");
					}
					retorno = menu();
					break;				
				case 2:
					if (indice<0)
						System.out.println ("Não há pacientes cadastrados!");
					else{
							vetorPacientes[indice] = null;
							System.out.println ("Paciente excluído com sucesso");
							indice--;
					}
					retorno = menu();
					break;
				case 3:
					int codigo;
					if (indice<0)
						System.out.println("Não há pacientes cadastrados!");
						else{
							System.out.print ("Informe o código do paciente:");
							codigo = entrada.nextInt();
							boolean pacienteEncontrado = false;
							for(int i = 0; i<indice; i++)	
								if(vetorPacientes[i].getCodigo() == codigo){
									System.out.println ("Paciente");
									System.out.println ("Código:"+vetorPacientes[i].getCodigo());
									System.out.println ("Nome:"+vetorPacientes[i].getNome());
									System.out.println ("Endereço:"+vetorPacientes[i].getEndereco());
									System.out.println ("Idade:"+vetorPacientes[i].getIdade());
									System.out.println ("CPF:"+vetorPacientes[i].getCpf());
									System.out.println ("Sexo:"+vetorPacientes[i].getSexo()+"\n");
									pacienteEncontrado = true;
								}
						if(!pacienteEncontrado)
							System.out.println ("Paciente não encontrado");
						}
					retorno = menu();
						break;
				case 4:
					if (indice< 0)
						System.out.println ("Não há pacientes cadastrados!");
					else
						for(Paciente paciente:vetorPacientes){
								System.out.println ("Paciente");
								System.out.println ("Código:"+paciente.getCodigo());
								System.out.println ("Nome:"+paciente.getNome());
								System.out.println ("Endereço:"+paciente.getEndereco());
								System.out.println ("Idade:"+paciente.getIdade());
								System.out.println ("CPF:"+paciente.getCpf());
								System.out.println ("Sexo:"+paciente.getSexo()+"\n");
						}
					retorno = menu();
						break;
				case 5: System.exit(0);
					break;
					default: break;
				}
			}while(retorno>0);
	}
}

#2

Vou fazer algumas sugestões:

1 - Mude o nome da variável vetorPacientes para algo como arrayPacientes. Um vetor no Java é diferente de um array, que exige, de antemão a informação da quantidade de níveis;

2 - Para fazer uma ordenação, pode-se converter esse array de pacientes para um ArrayList, e no caso, usar a interface Comparator para fazer a organização dos registros, e usar um Sort do Collections para fazer a arrumação.

Mas, talvez seja melhor, para aprendizado, criar sua própria rotina de organização.


#3