Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Login e senha em C

Boa tarde amigos, tudo bem? Eu estou trabalhando em um projeto para a minha faculdade, estou no segundo semestre e estou tendo algumas dúvidas.

Como eu faço para criar uma tela de Login e Senha Simples? Eu fiz o seguinte código;

#include<stdio.h>
#include<locale.h>
#include<string.h>

int opcao = 0;



void TelaLogin(){

    char login[15] = "teste";
    char login1[15];
    char senha[15] = "teste";
    char senha1[15];        


    printf("Digite o Login: ");
    scanf("%s", login1);

    printf("Digite a Senha: ");
    scanf("%s", senha1);

    if (strcmp(login, login1) == 0 && strcmp(senha, senha1) == 0)

        printf("\n\nLOGADO!\n\n");

    else

        printf("\n\nDADOS INVALIDOS!\n\n");    



}

void MostrarMenu(){

    printf("*************************************\n\n");
    printf("******SEJA BEM VINDO AO IMOBNIP******\n\n");
    printf("*************************************\n\n");

    printf("1) - CADASTRO DE CLIENTES\n");
    printf("2) - CADASTRO DE CORRETORES\n");
    printf("3) - SAIR DO SISTEMA\n\n");    
    printf("DIGITE A OPÇÃO DESEJADA: ");
    scanf("%d", &opcao);

    getchar();    

}

void CadastroClientes(){

    printf("\n\nAdicione os dados do Cliente\n");

}

void CadastroCorretores(){

    printf("\n\nAdicione os dados do Corretor\n");

}

int main(){

    setlocale(LC_ALL, "");

    TelaLogin();

    MostrarMenu();

        switch (opcao)

        {

            case 1 : // Gravar Clientes

                CadastroClientes();

            break;

            case 2 : // Gravar Corretores

                CadastroCorretores();

            break;

            default :

                printf("Opção Invalida!");

            break;    
        }

        getchar();



    return 0;
}

No caso essa autenticação até funciona, porém o programa deixa entrar no sistema assim mesmo, alguém poderia me ajudar?

Agradeço amigos.

1 resposta
solução!

Olá Mateus, tudo bem ? Espero que sim.

O que faltou no seu código foi salvar a informação de se o login foi efetuado ou não e tambem decidir o que fazer caso o login não tenha sido feito.

Por exemplo, modifiquei a sua função TelaLogin e inclui a variável login_efetuado que inicialmente vai estar com o valor 0, que representa que o login não foi feito e a abordagem que escolhi foi continuar pedindo o login e senha até eles estarem corretos, isso através do while, então enquanto a variável login_efetuado for diferente de 1 ele vai continuar perguntando.

void TelaLogin(){

    char login[15] = "teste";
    char login1[15];
    char senha[15] = "teste";
    char senha1[15];        
    int login_efetuado = 0; //0 - Falso e  1 - Verdadeiro

    while(!login_efetuado){
        printf("Digite o Login: ");
        scanf("%s", login1);

        printf("Digite a Senha: ");
        scanf("%s", senha1);

        if (strcmp(login, login1) == 0 && strcmp(senha, senha1) == 0){
            printf("\n\nLOGADO!\n\n");
            login_efetuado = 1;
        }
        else
            printf("\n\nDADOS INVALIDOS!\n\n");    
    }

}

Veja que o único momento que a nossa variável login_efetuado vai mudar, vai ser quando entrar no if de validação.

Dessa maneira para encerrar o programa sem efetuar o login devemos usar o comando CTRL + C.

Essa foi a solução que eu pensei, então pense em como quer que se programa se comporte e depois criei um código que correspondente.

Bons estudos, abraço.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software