CaixaEletronico

3 respostas
E
Eu ja tenho isso pronto, alguem pode me ajudar a implememntar o restante (reposicaoCedulas(Integer cedula, Integer quantidade){se alcançar o  mi nimo de notas no caixa imprimir msg caixa vazio  E no saque informar quamtas notas de de cada valor serão entergues no saque

public boolean login(Integer conta, String senha) {

public String pegaSaldo() {

public String pegaSaldo() {

public String transferir(Integer contaDestino, Double valor) {

Obrigado.

Caixa eletrônico

Desenvolva um programa para controlar um caixa eletrônico. Existem 6 tipos de notas: de 2, de 5, de 10, de 20, de 50, de 100. O programa deve inicialmente ler uma quantidade de notas de cada tipo, simulando o abastecimento inicial do caixa eletrônico. Depois disto, o caixa entra em operação e contínua atendendo um cliente após o outro. Para sacar, o cliente fornece o valor do saque a ser efetuado e como resultado da operação, o programa deverá então escrever na tela a quantidade de notas de cada tipo que será dada ao cliente a fim de atender ao seu saque.  Sempre que um saque for efetuado por um cliente, a q­­­uantidade inicial de dinheiro que foi colocada no caixa é decrementada. O programa deve pagar sempre com as maiores notas possíveis. Sempre que não for possível pagar somente com notas de 100, então o programa tentará complementar com notas de 50, depois com notas de 20, 10, 5  e 2. Antes de efetuar um saque para um cliente, ou seja, escrever na tela as notas que ele irá receber, o programa deve ter certeza que é possível pagá-lo, senão emitirá uma mensagem o motivo da não realização do saque. Caso o caixa fique abaixo de um certo valor mínimo de notas, o algoritmo deverá parar de atender (os saques) aos clientes e emitir uma mensagem do tipo ?Caixa Vazio: Chame o Operador!?.

        A interface gráfica com usuário (figura 1) do caixa eletrônico já é fornecido para você, juntamente com um contrato (figura 2) para utilização da interface gráfica, que segue abaixo.

Figura 1 ? interface de utilização do caixa eletrônico

/**

  • Interface (contrato) para utilizacao da interface grafica.

  • Nesse contrato e definido as operacoes de entrada e saida de dinheiro do caixa eletronico

*/

public interface ICaixaEletronico{

/**

 * Pega o valor total disponivel no caixa eletronico

 * @retorna uma string formatada com o valor total disponivel

 */

public String pegaValorTotalDisponivel();



/**

 * Efetua o saque

 * @param valor a ser sacado

 * @retorna uma string formatada informando o resultado da operacao

 */

public String sacar(Integer valor);



/**

 * Pega um relatorio informando as celulas e a quantidade de celula disponivel

 * @retorna uma string formatada com as celula e suas quantidades

 */

public String pegaRelatorioCedulas();



/**

 * Efetua a reposicao de cedulas

 * @param cedula de reposicao

 * @param quantidade de cedulas para reposicao

 * @retorna uma string formatada informando o resultado da operacao

 */

public String reposicaoCedulas(Integer cedula, Integer quantidade);



/**

 * Efetua a leitura da cota minima de atendimento

 * @param minimo

 * @retorna uma string formatada informando o resultado da operacao

 */

public String armazenaCotaMinima(Integer minimo);





/**

 * Verifica se o usuario tem acesso ao sistema

 * @param conta - numero da conta do cliente

 * @param senha - senha da conta

 * @returna true caso a conta e a senha seja valido e false caso contrario

 */

public boolean login(Integer conta, String senha);





/**

 * Pega o saldo do cliente

 * @retorna uma string formatada com o saldo da conta do cliente

 */

public String pegaSaldo();



/**

 * Efetua a transferencia da conta do cliente para uma outra conta

 * @param conta - numero da conta do destinatario

 * @param valor - valor a ser transferido

 * @retorna uma string formatada informando o resultado da operacao

 */

public String transferir(Integer conta, Double valor);



/**

 * Efetua o deposito na conta do cliente

 * @param conta - numero da conta do destinatario

 * @param valor a ser depositado

 * @retorna uma string formatada informando o resultado da operacao

 */

public String depositar(Integer conta, Double valor);

}

Figura 2 - contrato de utilização da interface gráfica

Seu programa deve criar um classe chamado CaixaEletronico e implementar o contrato definido em ICaixaEletronico, como segue abaixo:

public class CaixaEletronico implements ICaixaEletronico{

public CaixaEletronico(){

    //construtor

}



public String pegaRelatorioCedulas() {

    String resposta = "";

    //logica de pega o relatorio de cedulas

    return resposta;

}



public String pegaValorTotalDisponivel() {

    String resposta = "";

    //logica de pega o valor total disponivel no caixa eletronio

    return resposta;

}



public String reposicaoCedulas(Integer cedula, Integer quantidade) {

    String resposta = "";

    //logica de fazer a reposicao de cedulas e criar uma mensagem (resposta) ao usuario

    return resposta;



}



public String sacar(Integer valor) {

    String resposta = "";

    //logica de sacar do caixa eletronico e criar um mensagem(resposta) ao usuario

    return resposta;



}



public String armazenaCotaMinima(Integer minimo) {

    String resposta = "";

    //logica de armazenar a cota minima para saque e criar um mensagem(resposta) ao usuario

    return resposta;

}



public boolean login(Integer conta, String senha) {

    //verifica se o conta e a senha sao validos no banco de dados

    return true;

}



public String pegaSaldo() {

    String resposta = "";

    //consulta no banco de dados o saldo do cliente

    return resposta;

}



public String transferir(Integer contaDestino, Double valor) {

    String resposta = "";

    //efetua a transferencia da conta logada para conta do destinatario

    return resposta;

}



public String depositar(Integer conta, Double valor) {

    String resposta = "";

    //efetua o deposito para conta

    return resposta;

}

public static void main(String arg[]){

    GUI janela = new GUI(new CaixaEletronico());

    janela.show();

}

}

public String depositar(Integer conta, Double valor) {  )

3 Respostas

drsmachado

1 - Imagem não carrega.
2 - Por que não usa as tags [code] para postar seu código?
3 - O que precisa, exatamente? Está bem confuso, nem mesmo formatando adequadamente o tópico fica claro.

E

o q eu ja fiz:

import static javax.swing.JOptionPane.showInputDialog;

  1. import static javax.swing.JOptionPane.showMessageDialog;

  2. public class Caixa {

  3. private int[][] notasDisponiveis;
    
  4. public final String MENSAGEM_OPCAO = "digite: \n" +
    
  5. "1 para abastecer o caixa; \n" +
    
  6. "2 para sacar; \n" +
    
  7. "3 para verificar quantidade de notas disponíveis \n" +
    
  8. "4 para sair";
    
  9. public final String MENSAGEM_ENTRADA_INVALIDA = "Entrada inválida, ";
    
  10. public final String MENSAGEM_QUANTIDADE_NOTAS_ENTRADA = "Digite a quantidade de notas de ";
    
  11. public final String SUCESSO_DEPOSITO = "Deposito de notas realizado com sucesso ";
    
  12. public final String SUCESSO_SAQUE = "Saque realizado com sucesso ";
    
  13. public final String PEDIR_VALOR = "Digite o valor à ser sacado ";
    
  14. public final String TCHAU = "Obrigado por utilizar nosso caixa eletronico ";
    
  15. public Caixa() {
    
  16. super();
    
  17. this.notasDisponiveis = new int[6][2];
    
  18. this.notasDisponiveis[0][0] = 100;
    
  19. this.notasDisponiveis[1][0] = 50;
    
  20. this.notasDisponiveis[2][0] = 20;
    
  21. this.notasDisponiveis[3][0] = 10;
    
  22. this.notasDisponiveis[4][0] = 5;
    
  23. this.notasDisponiveis[5][0] = 2;
    
  24. }
    
  25. public void executa(){
    
  26. while(true){
    
  27. String opcaoString = null, proximaMensagem = MENSAGEM_OPCAO;
    
  28. int opcao = -1;
    
  29. while(true){
    
  30. try {
    
  31. opcaoString = showInputDialog(null,proximaMensagem);
    
  32. opcao = Integer.parseInt(opcaoString);
    
  33. } catch (NumberFormatException e) {
    
  34. //se entrar aqui é por que o usuário não digitou um número
    
  35. proximaMensagem = MENSAGEM_ENTRADA_INVALIDA + MENSAGEM_OPCAO;
    
  36. continue;
    
  37. }
    
  38. /**
    
  39. * se a opção estiver errada, prepara a mensagem para avisar o erro e pedir o valor,
    
  40. * senão ja pegou um valor correto então sai do loop
    
  41. */
    
  42. if (opcao < 1 || opcao > 4){
    
  43. proximaMensagem = MENSAGEM_ENTRADA_INVALIDA + MENSAGEM_OPCAO;
    
  44. continue;
    
  45. }else{
    
  46. break;
    
  47. }
    
  48. }
    
  49. switch(opcao){
    
  50. case 1: abastecerCaixa();           break;
    
  51. case 2: sacar();                    break;
    
  52. case 3: exibirNotasDisponiveis();   break;
    
  53. case 4: forcarSaida();              break;
    
  54. }
    
  55. }
    
  56. }
    
  57. private void abastecerCaixa(){
    
  58. int quantidadeTiposNotas = this.notasDisponiveis.length;
    
  59. String proximaMensagem = null;
    
  60. int quantidadeNotas = -1;
    
  61. String quantidadeNotasString = null;
    
  62. for(int i=0;i<quantidadeTiposNotas;i++){
    
  63. proximaMensagem = MENSAGEM_QUANTIDADE_NOTAS_ENTRADA+ this.notasDisponiveis[i][0];
    
  64. while(true){
    
  65. try {
    
  66. quantidadeNotasString = showInputDialog(null, proximaMensagem);
    
  67. //foi clicado no cancelar se entrar neste if, entãoestou voltando para a parte inicial
    
  68. if (quantidadeNotasString == null) return;
    
  69. quantidadeNotas = Integer.parseInt(quantidadeNotasString);
    
  70. if (quantidadeNotas < 0){
    
  71. proximaMensagem = MENSAGEM_ENTRADA_INVALIDA + MENSAGEM_QUANTIDADE_NOTAS_ENTRADA+ this.notasDisponiveis[i][0];
    
  72. continue;
    
  73. }
    
  74. } catch (NumberFormatException e) {
    
  75. proximaMensagem = MENSAGEM_ENTRADA_INVALIDA + MENSAGEM_QUANTIDADE_NOTAS_ENTRADA+ this.notasDisponiveis[i][0];
    
  76. continue;
    
  77. }
    
  78. break;
    
  79. }
    
  80. this.notasDisponiveis[i][1] += quantidadeNotas;
    
  81. }
    
  82. showMessageDialog(null, SUCESSO_DEPOSITO);
    
  83. }
    
  84. private void sacar(){
    
  85. String valorString = null, proximaMensagem = PEDIR_VALOR;
    
  86. int valor = -1;
    
  87. while(true){
    
  88. try {
    
  89. valorString = showInputDialog(null,proximaMensagem);
    
  90. //foi clicado no cancelar se estiver nulo
    
  91. if (valorString == null) return;
    
  92. valor = Integer.parseInt(valorString);
    
  93. if (valor < 0){
    
  94. proximaMensagem = MENSAGEM_ENTRADA_INVALIDA + PEDIR_VALOR;
    
  95. continue;
    
  96. }else{
    
  97. int[][] notasSacar = calcularNotasSacadas(valor);
    
  98. int quantidadeTiposNotas = this.notasDisponiveis.length;
    
  99. for (int i = 0; i < quantidadeTiposNotas; i++){
    
  100. this.notasDisponiveis[i][1] -= notasSacar[i][1];
    
  101. }
    
  102. showMessageDialog(null, SUCESSO_SAQUE);
    
  103. break;
    
  104. }
    
  105. } catch (NumberFormatException e) {
    
  106. //se entrar aqui é por que o usuário não digitou um número
    
  107. proximaMensagem = MENSAGEM_ENTRADA_INVALIDA + PEDIR_VALOR;
    
  108. continue;
    
  109. } catch (IllegalArgumentException e) {
    
  110. //se entrar aqui é por que o usuário digitou um valor o qual não deu para sacar com as notas disponíveis
    
  111. proximaMensagem = e.getMessage() + PEDIR_VALOR;
    
  112. continue;
    
  113. }
    
  114. }
    
  115. }
    
  116. private int[][] calcularNotasSacadas(int valor){
    
  117. int valorFaltante = valor;
    
  118. int[][] sacadas = new int[6][2];
    
  119. int quantidadeTiposNotas = this.notasDisponiveis.length;
    
  120. for (int i = 0; i < quantidadeTiposNotas; i++){
    
  121. //valor que ainda falta calcular é menor que o valor desta nota
    
  122. if (valorFaltante < this.notasDisponiveis[i][0]){
    
  123. continue;
    
  124. }else{
    
  125. int disponiveis = this.notasDisponiveis[i][1];
    
  126. int quantidadeUsarSePossivel = valorFaltante / this.notasDisponiveis[i][0];
    
  127. sacadas[i][1] = disponiveis < quantidadeUsarSePossivel?disponiveis:quantidadeUsarSePossivel;
    
  128. valorFaltante -= sacadas[i][1] * this.notasDisponiveis[i][0];
    
  129. }
    
  130. if (valorFaltante < 1) break;
    
  131. }
    
  132. if (valorFaltante > 0) throw new IllegalArgumentException(" O valor informado não é possivel com as notas disponíveis ");
    
  133. return sacadas;
    
  134. }
    
  135. private void exibirNotasDisponiveis(){
    
  136. String mensagem = "";
    
  137. int quantidadeTiposNotas = this.notasDisponiveis.length;
    
  138. for (int i = 0; i < quantidadeTiposNotas; i++){
    
  139. mensagem += "\nQuantidade de notas de " + this.notasDisponiveis[i][0] + ": " + this.notasDisponiveis[i][1];
    
  140. }
    
  141. showMessageDialog(null, mensagem);
    
  142. }
    
  143. private void forcarSaida(){
    
  144. showMessageDialog(null, TCHAU);
    
  145. System.exit(0);
    
  146. }
    
  147. public static void main(String[] args) {
    
  148. new Caixa().executa();
    
  149. }
    
  150. }
    
Jhonatan1090

Cara pelo amor de Deus… coloca isso em Tags CODE

olha a diferença:

SEM TAGS

public static void main(string[] bla)

{

System.out.println(teste);

}

COM TAGS

public static void main(string[] bla) { System.out.println("teste"); }

De qualquer forma, se quiser falar comigo aqui vai meus contatos, estou de ferias se quiser posso te ajudar:

google talk : [email removido]
MSN: [email removido]
Skype: jhonatan1090
Facebook: facebook.com/jhonatan1090

Criado 20 de junho de 2012
Ultima resposta 20 de jun. de 2012
Respostas 3
Participantes 3