1
resposta

[Projeto] Verificando o saldo da conta

Resolução:

var banco = new Dictionary<string, double>()
{
    {"Sunny", -26.75 }
};


void ExibirTitulo (string titulo)
{
    int quantidadeLetras = titulo.Length;
    string asterisco = string.Empty.PadLeft(quantidadeLetras, '*');
    Console.WriteLine(asterisco);
    Console.WriteLine(titulo);
    Console.WriteLine(asterisco);
}

void VoltarAoMenu()
{
    Console.WriteLine("\nAperte qualquer tecla para voltar ao menu");
    Console.ReadKey();
    Console.Clear();
    Menu();
}

void Menu()
{
    ExibirTitulo("Bem vindo ao banco A!!!");
    Console.WriteLine("\nSelecione uma das opções abaixo: \n");

    Console.WriteLine("Digite 1 para Ver o saldo atual");
    Console.WriteLine("Digite 2 para Depositar");
    Console.WriteLine("Digite 3 para Sacar");
    Console.WriteLine("Digite 4 para se Cadastrar");
    Console.WriteLine("Digite -1 para sair");

    Console.Write("\nDigite a opção que deseja navegar: ");
    int resposta = int.Parse(Console.ReadLine()!);

    switch (resposta)
    {
        case 1:
            SituacaoSaldo();
            break;
        case 2:
            Depositar();
            break;
        case 3:
            Sacar();
            break;
        case 4:
            Cadastrar();
            break;
        case -1:
            break;
        default:
            Console.Clear();
            Console.WriteLine("Opção inválida!");
            Thread.Sleep(4000);
            Console.Clear();
            Menu();
            break;
    }


}

void Depositar()
{
    Console.Clear();
    ExibirTitulo("Depositar");

    Console.Write("\nDigite o nome da conta: ");
    string nome = Console.ReadLine()!;

    if (banco.ContainsKey(nome))
    {
        Console.Write("Digite o valor que deseja depositar: ");
        double valor = double.Parse(Console.ReadLine()!);

        if (valor > 0)
        {
            banco[nome] += valor;
            Console.WriteLine($"\nDepósito realizado com sucesso!");
            Console.WriteLine($"Novo saldo de {nome}: R$ {banco[nome]:F2}");
        }
        else
        {
            Console.WriteLine("\nO valor precisa ser maior que zero.");
        }
    }
    else
    {
        Console.WriteLine($"\nA conta {nome} não foi encontrada.");
    }
    VoltarAoMenu();
}

void Sacar()
{
    Console.Clear();
    ExibirTitulo("Sacar");

    Console.Write("\nDigite o nome da conta: ");
    string nome = Console.ReadLine()!;

    if (banco.ContainsKey(nome))
    {
        Console.Write("Digite o valor que deseja sacar: ");
        double valor = double.Parse(Console.ReadLine()!);

        if (valor > 0)
        {
            if (banco[nome] >= valor)
            {
                banco[nome] -= valor;
                Console.WriteLine($"\nSaque realizado com sucesso!");
                Console.WriteLine($"Novo saldo de {nome}: R$ {banco[nome]:F2}");
            }
            else
            {
                Console.WriteLine("\nSaldo insuficiente para esse saque.");
            }
        }
        else
        {
            Console.WriteLine("\nO valor precisa ser maior que zero.");
        }
    }
    else
    {
        Console.WriteLine($"\nA conta {nome} não foi encontrada.");
    }
    VoltarAoMenu();
}

void SituacaoSaldo()
{
    Console.Clear();
    ExibirTitulo("Ver o saldo atual");

    Console.Write("\nDigite o seu nome: ");
    string nome = Console.ReadLine()!;

    if (banco.ContainsKey(nome))
    {
        Console.WriteLine($"\nSeu saldo atual é: {banco[nome]}");
        if (banco[nome] > 0)
        {
            Console.WriteLine("O saldo esta positivo!");
        }
        else if (banco[nome] == 0)
        {
            Console.WriteLine("O saldo esta zerado!");
        }
        else
        {
            Console.WriteLine("O saldo está negativo!");
        }
    }
    else
    {
        Console.WriteLine($"{nome} não foi encontrado nos registros!!");
    }
    VoltarAoMenu();
}

void Cadastrar()
{
    Console.Clear();
    ExibirTitulo("Cadastrar");

    Console.Write("\nInsira o nome para efetuar o cadastro:  ");
    string nome = Console.ReadLine()!;

    Console.Write("\nDeposite no minimo R$50,00 para criar a conta: ");
    double dinheiro = double.Parse(Console.ReadLine()!);

    if (banco.ContainsKey(nome))
    {
        Console.WriteLine($"Já existe alguém com o nome {nome} cadastrado");
        Console.WriteLine("Aperte qualquer tecla para voltar ao menu");
        Console.ReadKey();
        Console.Clear();
        Menu();
    }
    else if (dinheiro > 50.00)
    {
        banco.Add(nome, dinheiro);
        Console.WriteLine("Conta Cadastrada com sucesso!!");
        VoltarAoMenu();
    }
    else
    {
        Console.WriteLine("Erro!! Quantidade insuficiente!!!");
        return;
    }
}

Menu();
1 resposta

Oi, Christopher! Como vai?

Agradeço por compartilhar.

Curti bastante a forma como você organizou o fluxo com Menu() e separou bem as responsabilidades em métodos como Depositar, Sacar e SituacaoSaldo. Isso deixa o código mais legível e fácil de manter. Outro ponto interessante foi o uso do Dictionary<string, double> para simular as contas, ficou direto e funcional para o cenário.

Uma dica interessante para o futuro é usar o método TryParse para evitar erros ao converter valores digitados pelo usuário. Isso ajuda a deixar o programa mais seguro.


string entrada = Console.ReadLine();
double valor;

if (double.TryParse(entrada, out valor))
{
    Console.WriteLine("Valor valido: " + valor);
}
else
{
    Console.WriteLine("Entrada invalida");
}

Nesse código, o programa tenta converter o texto para número e evita que o sistema quebre caso o usuário digite algo inválido.

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