ATM simulator

Asked

Viewed 1,269 times

1

I’m starting to build a program that simulates an ATM with 3 banking options and an option for the user to terminate the process. Only after the operation done by the user, I tried using the multiple decision command switch case within the loop of repetition while to return to the start menu do, but the method did not work very well:

  var opcao, vl_saq;
  var saldo = 0;
  var min = 0;
  var max = 2000;
  do {
    opcao = parseInt(prompt("Escolha uma opção:\n1 - Saque\n2 - Depósito\n3 - Saldo\n0 - Sair")); // MENU inicial
  }
  while (opcao != 0){
    switch (opcao) {
      case 1:
        vl_saq = parseInt(prompt("Digite o valor do saque:"));
        if (vl_saq > saldo) {
          if (vl_saq > 0 && vl_saq < max) {
            alert("O saque está sendo realizado...\nAperte em OK");
            saldo -= vl_saq;
            alert("Operação Realizada!");
          }
          else {
            alert("Só podem entrar no saque, valores que sejam entre R$0,00 e R$2.000,00");
          }
        }
        else{
          alert("Saldo insuficiente! Você pode sacar\nR$ "+saldo.toFixed(2));
        }
      break;
    }
  }

When executing the code, the script runs normally in the browser, but only that it always stays in the initial menu, not running the rest of the program.

In this way, which method would be more appropriate to solve this case?

2 answers

7

There are other problems, but the main problem is where the while. The block of do need to package all execution to come out only when 0 is typed. I’m actually surprised that this syntax was accepted because the while is closing the do and at the same time starting another block then.

One of the reasons to create confusion is not to worry about the most appropriate syntax. In general languages accept certain forms of writing code and give the impression of being something that is not. The correct syntax, and therefore the correct semantics would be like this:

var opcao, vl_saq;
var saldo = 0;
var min = 0;
var max = 2000;
do {
    opcao = parseInt(prompt("Escolha uma opção:\n1 - Saque\n2 - Depósito\n3 - Saldo\n0 - Sair")); // MENU inicial
    switch (opcao) {
    case 1:
        vl_saq = parseInt(prompt("Digite o valor do saque:"));
        if (vl_saq > saldo) {
            if (vl_saq > 0 && vl_saq < max) {
                alert("O saque está sendo realizado...\nAperte em OK");
                saldo -= vl_saq;
                alert("Operação Realizada!");
            } else alert("Só podem entrar no saque, valores que sejam entre R$0,00 e R$2.000,00");
        } else alert("Saldo insuficiente! Você pode sacar\nR$ " + saldo.toFixed(2));
        break;
    }
} while (opcao != 0);

I put in the Github for future reference.

  • 2

    Java doesn’t accept, does that make it a good language? And now Maniero? p

  • 2

    Certainly better than JS :) Great advantage... : D Note that the problem is only the lack of ; why the JS accepts, so it’s not so surprising, we know that the JS works without the ;.

1


I gave an improved code, enabled the functions that were missing, as balance and deposit.

    var opcao, vl_saq;
    var saldo = 0;
    var min = 0;
    var max = 2000;
    var deposito = 0;

do {
    opcao = parseInt(prompt("Escolha uma opção:\n1 - Saque\n2 - Depósito\n3 - Saldo\n0 - Sair")); // MENU inicial
    switch (opcao) {
    case 1:
        vl_saq = parseInt(prompt("Qual o valor do saque:"));
        if (vl_saq>saldo) {
            alert("O seu saldo não é suficiente para esse saque.")
        } else {
            saldo = saldo - vl_saq;
            alert("Saque sendo Processado");
            alert("....... Retire da bandeja");
            alert("Agradecemos por utilizar os nossos serviços.");
        }
        break;
    case 2:
        deposito = parseInt(prompt("Quanto você quer depositar?"))/*Opção pra saber o valor pra depositar*/
            alert("O valor de : R$ "+deposito+" foi depositado com sucesso,")
            saldo = saldo + deposito;
    case 3:

        alert("O seu saldo em conta é de : R$ "+saldo+" Deseja fazer mais alguma coisa? Espero o outro menu.")        

    }
} while (opcao != 0);

Browser other questions tagged

You are not signed in. Login or sign up in order to post.