Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Dúvida] Como adiciono no dicionário o login e senha cadastrados pelo novo usuário no meu programa?

// Criar um programa que simule um sistema de login utilizando
// um dicionário para armazenar nomes de usuário e senhas.

Dictionary<string, string> LoginSenha = new Dictionary<string, string>
{
    {"mariamaria123", "123mama123" },
    {"joaojoao321", "321joaozinho" },
    {"senhordosgames", "joguinho123" }
};
void MensagemInicial()
{
    Console.WriteLine("Bem vindo ao");
    Console.WriteLine(@"

███████████████████████████████████████████████████████████████████████████████████████████████████████
█▄─▄─▀█▄─▄▄─█▄─▀█▀─▄█▀▀▀▀▀██▄─█─▄█▄─▄█▄─▀█▄─▄█▄─▄▄▀█─▄▄─████▀▄─██─▄▄─███─▄▄▄─█▄─▄███▄─██─▄█▄─▄─▀█▄─▄▄─█
██─▄─▀██─▄█▀██─█▄█─██████████▄▀▄███─███─█▄▀─███─██─█─██─████─▀─██─██─███─███▀██─██▀██─██─███─▄─▀██─▄█▀█
▀▄▄▄▄▀▀▄▄▄▄▄▀▄▄▄▀▄▄▄▀▀▀▀▀▀▀▀▀▀▄▀▀▀▄▄▄▀▄▄▄▀▀▄▄▀▄▄▄▄▀▀▄▄▄▄▀▀▀▄▄▀▄▄▀▄▄▄▄▀▀▀▄▄▄▄▄▀▄▄▄▄▄▀▀▄▄▄▄▀▀▄▄▄▄▀▀▄▄▄▄▄▀
█████████████████████████████▀██████
█▄─▄▄▀█─▄▄─█████▄─▄█─▄▄─█─▄▄▄▄█─▄▄─█
██─██─█─██─███─▄█─██─██─█─██▄─█─██─█
▀▄▄▄▄▀▀▄▄▄▄▀▀▀▄▄▄▀▀▀▄▄▄▄▀▄▄▄▄▄▀▄▄▄▄▀");
}
void MenuPrincipal()
{
        Console.WriteLine("Se já possui cadastro digite 1");
    Console.WriteLine("Para cadastrar-se digite 2");
    Console.Write("Sua opção: ");
    int opcao = Convert.ToInt32(Console.ReadLine());
    switch (opcao)
    {

        case 1:
            Realizarlogin();
            break;
        case 2:
            Cadastrar();
            break;

    }
}
void Realizarlogin()
{
    Console.Clear();
    Console.WriteLine("Digite seu login: ");
    string login = Console.ReadLine()!;
        if (LoginSenha.ContainsKey(login))
    {
        Console.WriteLine("Digite sua senha: ");
        string senha = Console.ReadLine()!;
        if (LoginSenha.ContainsValue(senha))
        {
            MensagemInicial();
        }
        else
        {
            Console.WriteLine("Senha incorreta, tente novamente");
            Thread.Sleep(2000);
            Console.Clear();

            MenuPrincipal();
        }
    } else
    {
        Console.WriteLine("Usuário não encontrado");
        Thread.Sleep(2000);
        Console.Clear();

        MenuPrincipal();
    }
}
void Cadastrar()
{
    Console.Clear();
    Console.WriteLine("Digite seu login: ");
    string login = Console.ReadLine()!;
    if (LoginSenha.ContainsKey(login))
    {
        Console.WriteLine("Usuário já existe");
        Thread.Sleep(2000);
        Console.Clear();
        MenuPrincipal();
    }else
    {

        Console.WriteLine("Digite sua senha: ");
        string senha = Console.ReadLine()!;
        Thread.Sleep(2000);
        Console.WriteLine("Usuário cadastrado com sucesso!");
        Realizarlogin();

    }
}

MensagemInicial();
MenuPrincipal();
1 resposta

Olá, Giseli! Tudo bem?

Vi que você está desenvolvendo um sistema de login com dicionário para cadastrar usuários e senhas em C#, e sua estrutura está bem organizada. O ponto que falta é adicionar o novo login e a senha ao dicionário no momento do cadastro. Depois de ler os dados, basta usar LoginSenha.Add(login, senha); (ou LoginSenha[login] = senha;) antes de exibir a mensagem de sucesso.

Uma dica interessante para o futuro é utilizar o método TryGetValue, que busca a senha de um usuário sem precisar verificar a chave e o valor separadamente. Veja este exemplo:

<pre><code>
if (LoginSenha.TryGetValue(login, out string senhaSalva) && senhaSalva == senha)
{
    Console.WriteLine("Login realizado");
}
</code></pre>

Esse código procura o login no dicionário e compara a senha correspondente, evitando que uma senha de outro usuário seja aceita. Como você pretende tratar a situação em que um usuário deseja alterar a própria senha depois de cadastrado?

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