Informática, perguntado por mandinhalisboa, 8 meses atrás

A Orientação a Objetos está presente em diversos programas que utilizamos em nosso cotidiano. Muitas vezes, nem a percebermos. Você viu no estudo da disciplina Programação II que podemos modelar diversos problemas em termos de classes e objetos.
Nesta Atividade Mapa, você deve desenvolver um sistema de controle de filas de um banco fictício utilizando a linguagem Java. Considere que neste banco há apenas uma agência e, esta agência, possui 4 caixas de atendimento.

Os atendimentos a clientes podem ser divididos em 3 categorias: -

Preferencial: para pessoas que possuem atendimento prioritário assegurado por lei;
- Rápido: para pessoas que farão até 3 operações no caixa;
- Comum: para os demais atendimentos.

O trabalho que você deve desenvolver terá 3 etapas:

1. Construção da interface, de acordo com o modelo abaixo. Não precisa ficar igual, mas precisa ter os mesmos elementos.

2. Criação da fila de atendimento.

Semelhante às máquinas de geração de senhas, há três botões para os clientes: Preferencial, Rápido e Comum. O cliente aperta o botão de acordo com o seu atendimento, sua senha é gerada e colocada em uma fila.

A senha deve ter a letra do tipo do atendimento (P, R ou C), seguida de um número sequencial. A sequência é a mesma para os diferentes tipos.

Por exemplo, se chegarem 4 clientes, 1 sendo preferencial, 2 comuns e 1 atendimento rápido, nesta ordem, a fila será:

P-1, C-2, C-3, R-4.

Haverá uma única fila que será implementada com ArrayList, contendo todas as senhas geradas, que serão objetos da classe Senha, que você irá criar.

A classe senha precisa apenas de dois atributos: o tipo e o número.

3. Realização dos atendimentos.

Haverá 4 caixas para atendimentos, que atenderão da seguinte forma:

- Caixa 1: realiza os atendimentos preferenciais. Se não houver atendimentos preferenciais na fila, atende o próximo (rápido ou comum).

- Caixas 2 e 3: atendem primeiro as senhas de atendimento rápido. Se não houver atendimento rápido, atendem o próximo da fila (prioritário ou comum).

- Caixa 4: realiza os atendimentos comum. Se não houver atendimentos comuns na fila, atende o próximo (rápido ou prioritário).

Cada caixa, tem o seu botão. Ao clicar no seu respectivo botão, este, deverá buscar a próxima senha a ser atendida. Na sequência, deverá exibir no painel a senha e o caixa. Por fim, o caixa deverá retirar a senha da fila. Se não houver nenhuma senha na fila, não faz nada.




Soluções para a tarefa

Respondido por msorigotti23
16

Resposta:

public class Senha {

   private String tipo;

   private int numero;

   public String getTipo() {

       return tipo;

   }

   public void setTipo(String tipo) {

       this.tipo = tipo;

   }

   public int getNumero() {

       return numero;

   }

   public void setNumero(int numero) {

       this.numero = numero;

   }

   

}

public class Painel extends javax.swing.JFrame {

   

   //Cria a lista com o objeto senha

   private int num = 1;

   private List<Senha> senhas = new ArrayList<>();

   //Cadastra uma nova senha com o tipo

   private void NovaSenha(String t){

       Senha s = new Senha();

       s.setNumero(num++);

       s.setTipo(t);

       senhas.add(s);

       lblSuaSenha.setText(s.getTipo() + "-" + s.getNumero());

   }

   private void AtendeSenha(int c, String t){

       

       //Procura o tipo, se achar atende, remove e sai

       for(int i=0; i<senhas.size();i++){

           if (senhas.get(i).getTipo().equals(t)){

               lblSenha.setText(senhas.get(i).getTipo() + "-" + senhas.get(i).getNumero());

               lblCaixa.setText("Caixa " + c);

               senhas.remove(i);

               return;

           }

       }

       

       //Se não encontrado atende o primeiro da lista

       if (senhas.size() > 0){

           lblSenha.setText(senhas.get(0).getTipo() + "-" + senhas.get(0).getNumero());

           lblCaixa.setText("Caixa "+ c);

           senhas.remove(0);

       }

   }

private void butComumActionPerformed(java.awt.event.ActionEvent evt) {                                          

       NovaSenha("C");

   }                                        

   private void butRapidoActionPerformed(java.awt.event.ActionEvent evt) {                                          

       NovaSenha("R");

   }                                          

   private void butPrioritarioActionPerformed(java.awt.event.ActionEvent evt) {                                                

       NovaSenha("P");

   }                                              

   private void butCaixa1ActionPerformed(java.awt.event.ActionEvent evt) {                                          

       AtendeSenha(1, "P");

   }                                          

   private void butCaixa2ActionPerformed(java.awt.event.ActionEvent evt) {                                          

       AtendeSenha(2, "R");

   }                                          

   private void butCaixa3ActionPerformed(java.awt.event.ActionEvent evt) {                                          

       AtendeSenha(3, "R");

   }                                          

   private void butCaixa4ActionPerformed(java.awt.event.ActionEvent evt) {                                          

       AtendeSenha(4, "C");

   }                                          


dsccabral: renanhenriquesf Não está funcionando como deveria. Pegando o exemplo que dei acima, o caixa 1 deveria chamar na seguinte ordem: P-3, C-1, C-2, R-4, C-5. Ao invés disso, chama P-3, R-4, C-5 e as senhas C-1 e C-2 ficam no limbo. Tá faltando "zerar" o contador do número da senha e acho que tá faltando também um ajuste na lógica dos 4 caixas. Caixa 1, se não tiver senha "P" chamar "R" ou "C"; e assim sucessivamente. Só não estou sabendo transpor isso pra código Java.
renanhenriquesf: Entendi, tbm estou com esse problema!
antocarlo33: msorigotti23 boa tarde meu amigo, será que vc poderia disponibilizar um bloco de notas pra baixar, pois o código esta sem o main e por isso da erro.
fabiojms: Boa tarde! Teria como mostrar o código de forma ordenada, tipo, em qual local fica cada bloco?
jonesbengala: tbm to na duvida , nao consegui ordenar as classes no lugar correto
dsccabral: putz grila, o prazo tá acabando e nada... ainda com esse problema na lógica de prioridades nos caixas... sei q é besteira, mas não tô conseguindo
jonesbengala: dsccabral tem como compartilhar seu codigo comigo ? nao to chegando nem nessa parte me ajudaria muito
Respondido por dimasmycafe3
16

Resposta:

Estarei colocando o código e ensinando como você ira adiciona-lo ao netbeans.

Explicação:

Crie um novo projeto Aplicação Java, coloque o nome que desejar no projeto e não esqueça de desmarcar a opção "Criar Classe Principal".

Clique com o botão direito em cima pacotes de código fonte > Novo > Classe Java coloque o nome: "Senha" , apague tudo e insira o código a seguir:

public class Senha {

   private String tipo;

   private int numero;

   public String getTipo() {

       return tipo;

   }

   public void setTipo(String tipo) {

       this.tipo = tipo;

   }

   public int getNumero() {

       return numero;

   }

   public void setNumero(int numero) {

       this.numero = numero;

   }

}

Feito isso, clique novamente com o botão direito em cima pacotes de código fonte > Novo > Form JFrame.... Coloque o nome de Painel, Depois COLOQUE AS SEGUINTES PARTES DO CÓDIGO EM SEUS RESPECTIVOS LUGARES (em negrito estão as partes que são criadas automaticamente pelo netbeans para vc usar como referencia) Lembrando que você terá que montar a parte gráfica:

import java.util.ArrayList;

import java.util.List;

public class Painel extends javax.swing.JFrame {

   

  private int num = 1;

  private List<Senha> senhas = new ArrayList<>();

   

  private void ProximaSenha(String t){

      Senha s1 = new Senha();

      s1.setNumero(num++);

      s1.setTipo(t);

      senhas.add(s1);

      txtSuaSenha.setText(s1.getTipo() + "-" + s1.getNumero());

  }

  private void AtendeSenha(int c, String t){

      for(int i=0; i<senhas.size(); i++){

          if (senhas.get(i).getTipo().equals(t)){

              lblSenha.setText(senhas.get(i).getTipo() + "-" + senhas.get(i).getNumero());

              lblCaixa.setText("Caixa " + c);

              senhas.remove(i);

              return;

          }

      }

      if (senhas.size() > 0){

          lblSenha.setText(senhas.get(0).getTipo() + "-" + senhas.get(0).getNumero());

          lblCaixa.setText("Caixa "+ c);

          senhas.remove(0);

      }

  }

public Painel() {

       initComponents();

   }

@SuppressWarnings("unchecked")

Generated Code

private void btComumActionPerformed(java.awt.event.ActionEvent evt) {                                        

       ProximaSenha("C");

   }                                        

   private void btRapidoActionPerformed(java.awt.event.ActionEvent evt) {                                          

       ProximaSenha("R");

   }                                        

   private void btPrioritarioActionPerformed(java.awt.event.ActionEvent evt) {                                              

       ProximaSenha("P");

   }                                              

  private void btCaixa1ActionPerformed(java.awt.event.ActionEvent evt) {                                          

       AtendeSenha(1, "P");

   }                                        

  private void btCaixa2ActionPerformed(java.awt.event.ActionEvent evt) {                                          

       AtendeSenha(2, "R");

   }                                        

  private void btCaixa3ActionPerformed(java.awt.event.ActionEvent evt) {                                          

       AtendeSenha(3, "R");

   }                                        

  private void btCaixa4ActionPerformed(java.awt.event.ActionEvent evt) {                                          

       AtendeSenha(4, "C");

   }

CRIE A INTERFACE DO PROGRAMA E ALTERE OS NOMES CONFORME A LISTA ABAIXO

// Variables declaration - do not modify                      

   private javax.swing.JButton btCaixa1;

   private javax.swing.JButton btCaixa2;

   private javax.swing.JButton btCaixa3;

   private javax.swing.JButton btCaixa4;

   private javax.swing.JButton btComum;

   private javax.swing.JButton btPrioritario;

   private javax.swing.JButton btRapido;

   private javax.swing.JLabel jLabel1;

   private javax.swing.JLabel jLabel2;

   private javax.swing.JLabel jLabel3;

   private javax.swing.JLabel jLabel4;

   private javax.swing.JLabel jLabel5;

   private javax.swing.JPanel jPanel1;

   private javax.swing.JPanel jPanel2;

   private javax.swing.JPanel jPanel4;

   private javax.swing.JLabel lblCaixa;

   private javax.swing.JLabel lblSenha;

   private javax.swing.JTextField txtSuaSenha;

   // End of variables declaration

caso precise, mande uma msg q envio por email pronto.


bruno2011rael: Alguém poderia me enviar por gentileza. Não estou conseguindo criar a interface. [email protected]
lukeplima: Muito obrigado!!
moraesfelipealves: poderia me enviar por email? desk.phillip@gmail. com
GTurcato: Olá, poderia me enviar no email guturcato@gmail. com por favor? Muito obrigado!
raro123: Olá, pode me enviar no email rafael.rs27@gmail. com por gentileza? Muito obrigado!
walljunior2011: Olá, poderia me enviar no email [email protected] por favor? Muito obrigado!
rrraissaleoncio: Olá, poderia me enviar no email raissaleonciobert@gmail. com por favor? Muito obrigado!
thiagoleopardo: thiago_leopardo@hotmail .com oi tudo bem poderia me enviar o mapa. grato.
Perguntas interessantes