1
resposta

[Dúvida] Faça como eu fiz: implementando um sistema de conta bancária

<?php

$titular = "Michael Knopacki";
$saldo = 1200;
$opcao = 0;
$continuar = true ;


while ($continuar == true){
  
    echo "
    ********************
    Titular:{$titular}
    Saldo atual: R$ {$saldo}
    *********************
    1. Consultar saldo atual
    2. Sacar valor
    3. Depositar valor
    4. Sair\n
    ";
    
    echo "Selecione uma opção: \n";
    $opcao = trim(fgets(STDIN));
    echo "A Opção selecionada é {$opcao} \n";
    
    if ($opcao == 1){
        echo "\n Boa tarde, Sr. {$titular}. Seu saldo é {$saldo}. \n";
    }elseif ($opcao == 2) {
        echo "Qual valor pretende sacar? \n";
        $saque = trim(fgets(STDIN));
        $saldo = $saldo - $saque;
        echo "\n Boa tarde, Sr. {$titular}. Você realizou um saque de R$ {$saque}, agora seu saldo é de R$ {$saldo}. \n";
    }elseif ($opcao == 3){
        echo "Qual valor pretende depositar? \n";
        $deposito = trim(fgets(STDIN));
        $saldo = $saldo + $deposito;
        echo "\n Boa tarde, Sr. {$titular}. Você realizou um depósito de R$ {$deposito}, agora seu saldo é de R$ {$saldo}. \n";
    }elseif ($opcao == 4){
        echo "\n Obrigado volte sempre \n";
        $continuar = false;
        break;
    }
}

?>
1 resposta

Olá, Michael.

Parabéns pela dedicação em resolver o desafio! O seu código tá muito bem estruturado, legível e cumpre o objetivo principal de simular as operações bancárias. É muito legal ver que você utilizou o trim() junto com o fgets(), isso ajuda muito a limpar espaços em branco e quebras de linha indesejadas na entrada de dados.

Tenho apenas algumas observações e sugestões.

  1. Validação de Saldo (Regra de Negócio)

No seu código atual, na opção 2 (Sacar), o sistema permite que o saldo fique negativo, pois ele subtrai o valor antes de verificar se há dinheiro suficiente.

Se o usuário tiver R$ 1200 e tentar sacar R$ 5000, o saldo vai para -3800. Pra evitar isso, podemos adicionar uma verificação simples com if:

} elseif ($opcao == 2) {
    echo "Qual valor pretende sacar? \n";
    $saque = (float) trim(fgets(STDIN)); // É bom forçar ser número (float)

    if ($saque > $saldo) {
        echo "Saldo insuficiente para este saque!\n";
    } else {
        $saldo -= $saque; // Equivalente a $saldo = $saldo - $saque;
        echo "\n Boa tarde, Sr. {$titular}. Você realizou um saque de R$ {$saque}, agora seu saldo é de R$ {$saldo}. \n";
    }
}

2. O Loop do-while vs while

O enunciado pedia o uso do do-while. Embora o while (que você usou) funcione perfeitamente, a diferença didática é interessante:

  • while: Verifica a condição antes de executar. Se $continuar começasse como false, o menu nunca apareceria.
  • do-while: Executa o bloco pelo menos uma vez e verifica a condição depois. Isso é ideal para menus, pois garantimos que as opções apareçam ao menos uma vez para o usuário antes de checar se ele quer sair.

3. Switch vs If/Else

Você usou if/elseif, o que está correto! Mas em estruturas de menu, onde testamos uma única variável ($opcao) contra vários valores fixos (1, 2, 3, 4), o switch costuma deixar o código um pouco mais limpo visualmente. Fica a dica para testar depois!

Você está no caminho certo!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!