1
resposta

08 Desafio: hora da prática - 4°


 static void SistemaLogin()
 {
     Dictionary<string, int> nomeESenha = new Dictionary<string, int>();
     MenuInicial();
     void MenuInicial()
     {
         Console.Clear();
         Console.WriteLine("Pressione 1 para cadastrar um novo usuário");
         Console.WriteLine("Pressione 2 para fazer o login");
         int respostaUsuario = int.Parse(Console.ReadLine()!);

         switch (respostaUsuario)
         {
             case 1: CadastrarUsuarioESenha();
                 break;
             case 2: FazerLogin();
                 break;
         }
     }
     void CadastrarUsuarioESenha()
     {
         Console.Clear();
         Console.WriteLine("\nQual o nome do usuário?");
         string nomeNovoUsuario = Console.ReadLine()!;
         Console.WriteLine("\nDigite uma nova senha usando apenas números");
         int senhaNovoUsuario = int.Parse(Console.ReadLine()!);
         nomeESenha.Add(nomeNovoUsuario, senhaNovoUsuario);

         Console.WriteLine("\nNovo usuário cadastrado com sucesso");
         Thread.Sleep(2000);
         MenuInicial();
     }
     void FazerLogin()
     {
         
         Console.WriteLine("\nDigite o nome do usuario");
         string nomeDigitado = Console.ReadLine()!;

         if(nomeESenha.ContainsKey(nomeDigitado))
         {
             Console.WriteLine("\nDigite a senha");
             int senhaDigitada = int.Parse(Console.ReadLine()!);

             if (nomeESenha[nomeDigitado] == senhaDigitada)
             {
                 Console.WriteLine("\nLogin efetuado com sucesso");
                 Console.WriteLine("\nPressione qualquer tecla para voltar ai menu inicial");
                 Console.ReadKey();
                 MenuInicial();
             }
             else
             {
                 Console.WriteLine("\nSenha errada");
                 Console.WriteLine("\nPressione qualquer tecla para tentar novamente");
                 Console.ReadKey();
                 Console.Clear();
                 FazerLogin();

             }
             
         }
         else
         {
             Console.WriteLine("Usuario não encontrado");
             Console.WriteLine("Pressione qualquer tecla para voltar ao menu inicial");
             Console.ReadKey();
             MenuInicial();
         }
     }
 }
1 resposta

Olá, Rafael! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de Dictionary para armazenar usuários e senhas, utilizou muito bem funções locais para organizar o fluxo do sistema e ainda compreendeu a importância das estruturas condicionais para validar login e cadastro.

Uma dica interessante para o futuro é adicionar uma verificação para evitar que o mesmo usuário seja cadastrado mais de uma vez. Assim:

void CadastrarUsuarioESenha()
{
    Console.Clear();
    Console.WriteLine("\nQual o nome do usuário?");
    string nomeNovoUsuario = Console.ReadLine()!;
    
    if(nomeESenha.ContainsKey(nomeNovoUsuario))
    {
        Console.WriteLine("\nUsuário já existe. Escolha outro nome.");
        Thread.Sleep(2000);
        MenuInicial();
    }
    else
    {
        Console.WriteLine("\nDigite uma nova senha usando apenas números");
        int senhaNovoUsuario = int.Parse(Console.ReadLine()!);
        nomeESenha.Add(nomeNovoUsuario, senhaNovoUsuario);

        Console.WriteLine("\nNovo usuário cadastrado com sucesso");
        Thread.Sleep(2000);
        MenuInicial();
    }
}

Isso faz com que o sistema seja mais robusto e evite duplicidade de cadastros.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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