Exercício de Estrutura de dados Java – Fila Obs.: Esse projeto foi um exercício realizado em sala de aula da matéria de Estrutura de dados com o Profº Frederico Augusto Siqueira Gentil Aqui está sendo relatado um pequeno exemplo de Fila de espera de um consultório médico desenvolvido em Java, usando a ferramenta Eclipse. Foi levado em consideração que os pacientes são registrados na fila assim que chegam a sala de espera e ficam aguardando o chamado do médico, que obedece a ordem de chegada. O programa deve permitir: Inserir um paciente na fila de espera; Chamar o paciente para ser atendido; Verificar se a fila está cheia ou vazia; Verificar o próximo paciente a ser atendido; Informar quantos pacientes existem na fila de espera. Exemplo de Fila resolvido 1. Com o eclipse já aberto clique em File/new/Java project 2. Em Project name informe o nome do projeto. Nesse caso iremos colocar “Consultorio” e clique em finish. 3. Dentro do projeto consultório, existe uma pasta chamada de “src”, clique nela com o botão direito, new/Class. Informe o nome da classe, nesse caso informe “Menu” para que possamos criar o menu do projeto. Obs.: Lembre-se que o nome de classe sempre deve iniciar com letra maiúscula. 4. Depois que a classe estiver criada você irá adicionar o código abaixo. ************ MENU ****************** import javax.swing.JOptionPane; public class Menu { public static void main(String[] args) { int item; int codPaciente; // String nmPaciente; MetodosQueue metodosQueue = new MetodosQueue(10); do{ //inicio do enquanto item = Integer.parseInt(JOptionPane.showInputDialog(null,"******************************\n" + "** MENU DE OPÇÕES **\n" + "* 1 - Inserir Paciente*\n" + "* 2 - Chamar o Paciente p/ ser atendido *\n" + "* 3 - Fila cheia ou vazia?* \n"+ "* 4 - Próximo Paciente a ser atendido *\n" + "* 5 - Quantidade de Pacientes na fila*\n" + "* 6 - Sair *\n" + "******************************\n" + "Digite sua opção: \n", "Consultório Médico", JOptionPane.INFORMATION_MESSAGE)); switch (item) { //inicio do case case 1: { //cadastrar correspondencias if (!metodosQueue.isFull()) { codPaciente = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o Código do paciente", "Consultório Médico!", JOptionPane.INFORMATION_MESSAGE)); // nmPaciente = JOptionPane.showInputDialog("Informe o nome do paciente:"); metodosQueue.insert(codPaciente); }else{ JOptionPane.showMessageDialog(null, "Fila cheia! "); } } break; case 2: { //remover paciente // delete item from stack if (!metodosQueue.isEmpty()) { long value = metodosQueue.remove(); JOptionPane.showMessageDialog(null, "Paciente chamado para ser atendido: " + value); } } break; case 3: { if (metodosQueue.isEmpty()) { JOptionPane.showMessageDialog(null, "Fila vazia!"); }else{ if (metodosQueue.isFull()) { JOptionPane.showMessageDialog(null, "Fila cheia!"); }else{ JOptionPane.showMessageDialog(null, "A Fila não está cheia, mas também, não está vazia!"); } } } break; case 4: { if (!metodosQueue.isEmpty()) { long value = metodosQueue.peekFront(); // identificar o proximo. JOptionPane.showMessageDialog(null, "Proxima da fila: " + value); } } break; case 5: { long value = metodosQueue.size(); // qtd de pacientes na fila JOptionPane.showMessageDialog(null, "Quantidade de pacientes na fila: " + value); } break; default:{ if (item != 6) { JOptionPane.showMessageDialog(null, "Valor inválido, digite novamente!"); } else { if (item ==6) JOptionPane.showMessageDialog(null, "Você está saindo do programa!"); } } break; } } while (item != 6); } } 5. Crie mais uma classe usando o mesmo procedimento usado anteriormente, porém, dessa vez irá colocar o nome de “MetodosQueue”. *************** METODOS ********* class MetodosQueue { private int maxSize; private long[] queArray; private int front; private int rear; private int nItems; //-------------------------------------------------------------public MetodosQueue(int s) // constructor { maxSize = s; queArray = new long[maxSize]; front = 0; rear = -1; nItems = 0; } //-------------------------------------------------------------public void insert(long j) // put item at rear of queue { if(rear == maxSize-1) // deal with wraparound rear = -1; queArray[++rear] = j; // increment rear and insert nItems++; // one more item } //-------------------------------------------------------------public long remove() // take item from front of queue { long temp = queArray[front++]; // get value and incr front if(front == maxSize) // deal with wraparound front = 0; nItems--; // one less item return temp; } //-------------------------------------------------------------public long peekFront() // peek at front of queue { return queArray[front]; } //-------------------------------------------------------------public boolean isEmpty() // true if queue is empty { return (nItems==0); } //-------------------------------------------------------------public boolean isFull() // true if queue is full { return (nItems==maxSize); } //-------------------------------------------------------------public int size() // number of items in queue { return nItems; } } 6. Crie mais uma classe usando o mesmo procedimento usado anteriormente, porém, dessa vez irá colocar o nome de “Consultorio”. ************ CONSULTORIO ****************** import javax.swing.JOptionPane; public class Consultorio { // private Integer codPaciente; private String nmPaciente; // // // // // // public Integer getCodPaciente() { return codPaciente; } public void setCodPaciente(Integer codPaciente) { this.codPaciente = codPaciente; } public String getNmPaciente() { return nmPaciente; } public void setNmPaciente(String nmPaciente) { this.nmPaciente = nmPaciente; } public void displayConsultorio(){ JOptionPane.showMessageDialog(null, "Código do Paciente: "+ codPaciente); } } 7. Abra a classe Menu e clique na tecla “F11” e o seu projeto Consultorio em swing será executado. Bom trabalho!