2
respostas

Solução do desafio Saldo Bancário

Olá, boa tarde!

Poderia verificar se o meu código está de acordo? Tentei usar uma função:

<?php

$usuário = readline("Digite seu usuário: ");
$senha = readline("Digite sua senha: ");


function realizaSaque($saldoBanco){
    $digiteValor = readline("Qual valor deseja sacar?:");
    $digiteValor = (float)$digiteValor;
    if ($digiteValor > $saldoBanco) {
        echo "O valor é maior que o saldo de $saldoBanco";
        return $saldoBanco;
    } 
        $novoSaldo = (float)($saldoBanco - $digiteValor);
        echo "seu novo saldo é $novoSaldo\n";
        return $novoSaldo;
    
};

$saldoBanco = (float) 2000.0;


$loginAprovado = ($usuário == "breno" && $senha == "123456") ? "Login Aprovado!\n" :"Senha ou login inválidos\n";
echo $loginAprovado;

if ($loginAprovado == "Senha ou login inválidos\n") {
    echo "Não foi possível acessar, tente novamente mais tarde!";
} else {
    echo "--------------------\n";
    echo "Bem vindo, $usuário!\n";
    echo "Seu saldo é $saldoBanco\n";
    echo "--------------------\n";

    while (true) {
        echo "1 - Consultar Saldo\n";
        echo "2 - Realizar saque\n";
        echo "3 - Sair\n";
    
        $opcao = (float) fgets (STDIN);
        echo "você escolheu a opção $opcao\n";

        switch ($opcao){
            case 1:
                echo "Seu saldo é $saldoBanco\n";
                break;
            case 2:
                $saldoBanco = realizaSaque($saldoBanco);
                break;
            case 3:
                echo "Saindo...\n";
                exit;
            default:
                echo "opção inválida\n";
                break;  
        }
    }
};
2 respostas

Poderia me informar o que faz e o que não faz sentido na lógica?

Oi Breno, tudo bem? 😊

Seu código está bem estruturado e a lógica geral está correta! 👍

A função realizaSaque está clara e o uso do switch para as opções do menu é uma boa prática.

Para te ajudar a refinar ainda mais, separei alguns pontos que podem ser melhorados e algumas sugestões:

  1. Validação de entrada: Na função realizaSaque, seria interessante adicionar uma validação para garantir que o valor digitado para saque é um número positivo. 🤔
  2. Comparação de strings: Na comparação do login, você está comparando a string $loginAprovado. Uma forma mais direta seria verificar as credenciais diretamente no if.
  3. Formatação da saída: Para melhorar a experiência do usuário, você pode usar number_format para formatar o saldo com duas casas decimais.
  4. Refatoração do menu: O menu poderia ser refatorado em uma função para evitar repetição de código.

Veja um exemplo de como você poderia implementar algumas dessas sugestões:

<?php

$usuario = readline("Digite seu usuário: ");
$senha = readline("Digite sua senha: ");

function realizaSaque($saldoBanco) {
    $valorSaque = readline("Qual valor deseja sacar?: ");
    $valorSaque = (float)$valorSaque;

    if ($valorSaque <= 0) {
        echo "Por favor, digite um valor positivo para saque.\n";
        return $saldoBanco;
    }

    if ($valorSaque > $saldoBanco) {
        echo "O valor é maior que o saldo de " . number_format($saldoBanco, 2, ',', '.') . "\n";
        return $saldoBanco;
    }

    $novoSaldo = $saldoBanco - $valorSaque;
    echo "Seu novo saldo é " . number_format($novoSaldo, 2, ',', '.') . "\n";
    return $novoSaldo;
}

function exibirMenu() {
    echo "1 - Consultar Saldo\n";
    echo "2 - Realizar saque\n";
    echo "3 - Sair\n";
    echo "você escolheu a opção ";
}

$saldoBanco = (float)2000.0;

if ($usuario == "breno" && $senha == "123456") {
    echo "Login Aprovado!\n";
    echo "--------------------\n";
    echo "Bem vindo, $usuario!\n";
    echo "Seu saldo é " . number_format($saldoBanco, 2, ',', '.') . "\n";
    echo "--------------------\n";

    while (true) {
        exibirMenu();
        $opcao = (int)fgets(STDIN);

        switch ($opcao) {
            case 1:
                echo "Seu saldo é " . number_format($saldoBanco, 2, ',', '.') . "\n";
                break;
            case 2:
                $saldoBanco = realizaSaque($saldoBanco);
                break;
            case 3:
                echo "Saindo...\n";
                exit;
            default:
                echo "Opção inválida\n";
                break;
        }
    }
} else {
    echo "Senha ou login inválidos\n";
    echo "Não foi possível acessar, tente novamente mais tarde!\n";
}
?>

🎓 Para saber mais:

Espero que estas sugestões te ajudem a aprimorar seu código! 🧐