1
resposta

Controle de Saldo

<?php
$conta = [
    "titular" => "Gustavo",
    "saldo" => 500 
];
do {
    echo "************************** \n";
    echo "*** Titular: " . $conta['titular'] . "    \n";
    echo "*** Saldo: R$" . $conta['saldo'] . "          \n";
    echo "************************** \n\n\n";

    echo "1 - Consultar Saldo \n";
    echo "2 - Sacar Saldo \n";
    echo "3 - Depositar Saldo \n";
    echo "4 - Sair \n \n";
    $numero = fgets(STDIN);

    switch ($numero){
        case '1':
            #apenas coloquei aqui para não entrar no default do Switch
            break;
        case '2':
            echo "Quanto deseja sacar? \n";
            $saque = fgets(STDIN);
            if ($saque <= $conta['saldo']) {
                $conta['saldo'] -=  $saque;
            }  else {
                echo "Saldo indisponível! \n";
            }
            break;
        case '3':
            echo "Quanto deseja depositar? \n";
            $deposito = fgets(STDIN);
            $conta['saldo'] +=  $deposito;
            break;
        default:
            echo "Opção inválida! \n";
    }


} while ($numero != 4);
echo "Saindo...";



1 resposta

Oi Gustavo,

Seu código está funcionando bem para as operações básicas, mas podemos melhorá-lo em alguns pontos.

A principal melhoria é tratar a entrada do usuário (fgets(STDIN)) para garantir que ele esteja inserindo números e não strings, evitando erros.O fgets retorna uma string com um caractere de nova linha (\n) no final, o que pode causar problemas em comparações e cálculos. 💰

Aqui está uma versão melhorada:

<?php
$conta = [
    "titular" => "Gustavo",
    "saldo" => 500
];

do {
    // ... (seu código de exibição do menu permanece igual) ...

    $numero = trim(fgets(STDIN)); // Remove espaços em branco e \n

    switch ($numero) {
        case '1':
            // ... (seu código de consulta de saldo permanece igual) ...
            break;
        case '2':
            echo "Quanto deseja sacar? \n";
            $saque = (float) trim(fgets(STDIN)); // Converte para float
            if ($saque <= $conta['saldo']) {
                $conta['saldo'] -= $saque;
            } else {
                echo "Saldo indisponível! \n";
            }
            break;
        case '3':
            echo "Quanto deseja depositar? \n";
            $deposito = (float) trim(fgets(STDIN)); // Converte para float
            $conta['saldo'] += $deposito;
            break;
        default:
            echo "Opção inválida! \n";
    }


} while ($numero != 4);
echo "Saindo..." . &#128513;
?>

Adicionei trim() para remover espaços em branco e a quebra de linha, e (float) para converter a entrada para um número de ponto flutuante, permitindo valores decimais. Isso torna o código mais robusto e menos propenso a erros. 💻

Lembre-se de sempre validar as entradas do usuário para evitar problemas de segurança e garantir a integridade do seu programa. 😎

Para saber mais: Função trim()

Continue praticando e evoluindo seus conhecimentos! 🎓