1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. Informação: Pela 0:30 desta Sexta-feira (9 de Dezembro, 23:30 de Quinta-feira nos Açores) o Fórum e restantes sites da ZWAME vão estar offline para manutenção durante cerca de 1h30.
    Se necessário faremos actualizações via Twitter e Facebook.
    Remover anúncio

Login em C++

Discussão em 'Programação' iniciada por OubeLa, 28 de Outubro de 2007. (Respostas: 15; Visualizações: 3690)

  1. OubeLa

    OubeLa Power Member

    Estou a fazer um projecto para gestão de cantinas e agora preciso de fazer um menu de login. O login é mais para ficar "bonito", porque basta ir ao ficheiro de texto e ver. Anyway, fora isso tenho o menu que pede o username e a password. O que eu quero é que ao escrever a password apareçam asteriscos ou em vez das letras que escrevo, ou então que não apareça nada no ecrã.

    Alguém tem alguma sugestão?
     
  2. hYpe

    hYpe [email protected] Member

    Lembro-me de ter feito algo do genero, mas deu TANTO trabalho a fazer que sinceramente nao recomendo a ninguem...

    Se for realmente necessario, muito bem...

    Caso contrario esquece isso.

    Era uma funçao qq q estava sempre a ler do teclado.. (num ciclo while acho eu), e por cada caracter q tu inserisses, que nao o ENTER (\n), escrevia a letra no ecran, apagava, guardava num array e metia no ecran um *.. Isto tão rapido que o utilizador nao tinha tempo de ler a letra..

    Cumps
     
  3. sapropel

    sapropel Power Member

    consegues fazer isso, mas só usando bibliotecas que não standard c++.
    em windows podes usar a conio.h (faz parte da familia de compiladores da borland, mas já está implementado em praticamente tudo o que é compiladores pra windows).

    getch() retorna o 1º char que existe no buffer do teclado.

    tentar o mais standard c++ possivel:

    Código:
    #include <iostream>
    #include <string>
    #include <conio.h> // deve estar na pasta include
    
    int main( int argc, char** argv )
    {
      char c = 0;
      std::string pass;
    
      while( (c = getch()) != '\r' ) // carriage return
      {
        pass += c;
        std::cout << "*";
      }
      (...)
    }
    
    basicamente é isso, se precisares para linux então tens de usar ncurses ou chamadas de sistema mesmo (conio usa chamadas da winapi, portanto é a mesma coisa).
    não sei se o codigo está correcto, não uso conio há anos! mas já dá para ter uma ideia.
     
    Última edição: 28 de Outubro de 2007
  4. aDoF96

    aDoF96 Power Member

    sir_atmc estou a fazer o mesmo trabalho que tu :hehehmn:
     
  5. OubeLa

    OubeLa Power Member

    E então, como é que isso vai? :lol: O meu está feito, agora estou a tratar de pormenores, melhorar a estetica (será que a consola tem alguma estetica? XD), e alguns bugs de ultima hora.

    EDIT: esqueci-me que ainda nao tenho a parte do relatorio completa, falta-me fazer o numero de pratos vendidos por menu e a taxa de desperdicio. Estou a pensar na maneira mais eficaz de apresentar o numero de pratos vendidos por menu, uma vez que se apagares um menu do vector foi-se a informação, e já não se pode apresentar esses dados no relatorio. Uma solução facil é criar outro vector com esses dados, mas ainda estou a pensar.
     
    Última edição: 28 de Outubro de 2007
  6. Consu

    Consu Power Member

    Se isso estiver a ser feito em ambiente Unix, e em modo de texto (usando a consola), não é assim tão complicado. A consola tem definidos atributos entre os quais se é para ser feito o "echo" no ecrã. Essas informações estão guardadas na estrutura termios, e podem ser alteradas usando tcsetattr. Neste caso como não à "echo" fica teu cargo a impressão de asteriscos no ecrã por cada caracter inserido.
     
  7. PJ

    PJ Power Member

    Nas propriedades da textbox tens uma que se chama "PasswordChar" que por defeito o seu valor é "#0".
    Se alterares este valor para um "*" qualquer caracter que escrevas aparece como *, tal como uma password ;).

    Cumps
     
  8. AliFromCairo

    AliFromCairo Power Member

    Penso que o que ele pretende é fazer isso na consola e não numa textbox :007:.
     
  9. PJ

    PJ Power Member

    Pois, e eu não sou bruxo nem adivinho :mad:
     
    Última edição: 29 de Outubro de 2007
  10. sapropel

    sapropel Power Member

    que é que OOP tem a ver com usar textboxes ou nao?
    resposta mais ridicula de sempre, parabens.
     
  11. PJ

    PJ Power Member

    Quote from Wikipedia :

    A orientação a objetos, também conhecida como Programação Orientada a Objetos (POO) ou ainda em inglês Object-Oriented Programming (OOP) é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos.

    Em alguns contextos, prefere-se usar modelagem orientada ao objeto, em vez de projeto.

    A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema de software. O funcionamento deste sistema se dá através do relacionamento e troca de mensagens entre estes objetos.

    Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definidos nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.



    Agora a meu ver tu vieste falar de um assunto que nem sabes o que é!
     
  12. AliFromCairo

    AliFromCairo Power Member

    Boas, caso possas utilizar bibliotecas auxiliares, podes optar pela solução do sapropel, que utiliza a biblioteca conio para windows. Para linux tens a biblioteca NCurses, que penso ter funcionalidades semelhantes, embora nunca a tenha usado.
     
    Última edição: 29 de Outubro de 2007
  13. OubeLa

    OubeLa Power Member

    Já consegui resolver:

    Código:
    
    #include <conio.h>
    (...)
    char c;
        string username, password;
    
        cout << endl << "E' necessario autenticar-se no sistema." << endl << endl;
        cout << "Username: ";    
        cin >> username;
        cout << "Password: ";
        
        while (c = getch()){
            if (c == 13) // 13 é o codigo ASCII do enter
                break;
            
            password += c;
            cout << "*";
        }
        cout << endl;(...)


    Só tem um senão, é que se nos enganarmos a escrever não dá para fazer backspace, uma vez que ele lê o codigo ASCII do backspace, mas isto serve.
     
  14. Consu

    Consu Power Member

    Assim já ficas com o backspace tratado.

    Código:
    #include <conio.h>
    (...)
    char c;
        string user, pass;
    
        cout << endl << "E' necessario autenticar-se no sistema." << endl << endl;
        cout << "Username: ";    
        cin >> username;
        cout << "Password: ";
        
        while (c = getch()){
            switch( c) {
                case 13: break; // 13 é o codigo ASCII do enter
                case  8: pass = pass.substr( 0, pass.size()-1 ); // Backspace
                default: pass += c;
            }
            
            cout << "*";
        }
        cout << endl;(...)
    
     
  15. sapropel

    sapropel Power Member

    ena, uma quote da wikipedia seguido de: "não sabes do que falas", bela maneira de marcar a tua posição.
    portanto basicamente mostraste-me uma quote da definição de OOP (num portugues que deixa um pouco a desejar TBH). muito bem, continuo a perguntar, o que é que isso têm a ver com texboxes ou qualquer tipo de UI development? se estás a tentar dizer que OOP é o que se usa nesse tipo de desenvolvimento de software, indico-te já N bibliotecas que dizem o contrario (win32 api, gtk+, etc).

    agora volta para o couter-strike e deixa este tipo de assuntos para os rapazes crescidos ok?
     
  16. jahred

    jahred Power Member

    e já somos 3 a fazer o mm trabalho :P
     

Partilhar esta Página