1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ficheiros c++

Discussão em 'Programação' iniciada por PRodrigues, 16 de Dezembro de 2007. (Respostas: 8; Visualizações: 3234)

  1. PRodrigues

    PRodrigues Power Member

    Alo viva,

    Tenho aki um projecto para uma cadeira de programação por Objectos da faculdade e preciso de ajuda...ainda sou um pouco tenrinho nisto.

    Tou a implementar um tipo de login para um programa que genericamente vai gerir as presenças de alunos nas aulas.

    Nesta primeira parte pensei em fazer um login onde os docentes, regentes e o administrador façam a sua identificação no sistema e axo k o melhor seria que o programa gera-se um ficheiro .bin onde fica-se registados os logins (pass e username) bem como outra informação do utilizador tipo o nome.. etc!

    O meu problema eh k nao sei a melhor maneira de implementar isto em c++ e tambem nao sei como fazer o codigo para que qd o utilizador fizer o login, o programa faça a validação da pass com o username.

    preciso ainda que o programa não apague o esta no ficheiro sempre que se insere um novo registo.

    Genericamente, preciso que o ficheiro, à medida que o administrador vai adicionando um novo utilizador, vá adicionando um novo registo sem apagar os k jah existem e dp quando um utilizador fizer login o programa faça uma busca no ficheiro e faça a validação do username com a pass inserida.


    No codigo k a seguir exponho(em jeito de teste) o programa pede o nome e dp grava no ficheiro k esta em .txt(dp eh para por em .bin).


    #include<iostream>
    #include<fstream>
    usingnamespace std;


    int main ()
    {

    ofstream myfile;
    char user[50];
    cout << "insira o seu username: ";
    cin.getline(user,50);

    myfile.open ("loginTable.txt");
    myfile << user;

    myfile.close();


    }


    _________


    Aguem me pode ajudar?


    Obrigada!


    PRodrigues
     
  2. mj2p

    mj2p I'm Cool Cuz I Fold

    Bem, vou respondendo isoladamente a cada uma das tuas perguntas (avisa-me se faltar alguma).

    Para fazeres com que um ficheiro armazene informação sem que a anterior seja apagada, implementa este código:

    Código:
    myfile.open("LoginTable.txt", ios::app);
    
    O especificador de acesso ios::app permite que se guardem informações sem que se percam as anteriores.

    Agora, imaginando o teu ficheiro já preenchido. Por exemplo:

    Pedes então ao utilizador que indique um nome de utilizador e uma password. Abres então o teu ficheiro e recolhes uma linha completa para uma string (cin.getline() ). Verificas se nessa string se encontra o nome de utilizador inserido. Se sim, verificas a password. Se for igual à inserida, então informas que o registo foi efectuado com sucesso. Se não for igual (a password), indicas que houve erro na introdução dos dados.

    Por outro lado, pode acontecer que seja introduzido um nome de utilizador que não esteja contido no ficheiro. Para verificares isso, vais recolhendo as linhas do ficheiro na string, verificando sempre o nome de utilizador. Quando chegares ao fim do ficheiro e nenhum nome de utilizador corresponder, indicas que houve erro na introdução de dados.

    Só mais uma coisa. Evita o pitês nos teus posts (tipo, "k" em vez de "que"). Aqui na techzone não se gosta muito desse tipo de linguagem.

    Bom, espero ter-te respondido.

    Vá, cumps
     
  3. PRodrigues

    PRodrigues Power Member

    Sim, ajudaste bastante. Obrigada!

    Só mais uma pergunta, como é que faço para que a informação guardada no ficheiro fique guardada por cada registo numa linha e não sempre seguido?!

    Para fazer a verificação ao chamar a linha toda vai aparecer-me toda a informação guardada porque ele tá a guardar tudo seguido no ficheiro mesmo sendo outro registo.

    exemplo: PRodriguesPcostaJandrade .....

    Mais uma vez obrigada pela ajuda!

    Nota: desculpa, mas não sabia que não se podia fazer abreviaturas aqui no techzone.


    Cumprimentos,


    PRodrigues
     
  4. PRodrigues

    PRodrigues Power Member

    Já vi como é .... basico, é soh por um \n .. obrigada pela ajuda.

    PRodrigues
     
  5. mj2p

    mj2p I'm Cool Cuz I Fold

    Ya, basta introduzir uma quebra de linha. Isto é conseguido pelo caracter '\n'.

    Quantos às abreviaturas, não é uma questão de não se poder fazer. Aqui no forum gostamos de fazer as coisas limpinhas...:D

    Vá, cumps
     
  6. Tyran

    Tyran Power Member

    Pois é hehe :)
    Depois podes também começar a pensar em encriptar as passwords, mas deixa isso para o fim se calhar...
    cumpzz
     
  7. mj2p

    mj2p I'm Cool Cuz I Fold

    Encriptar. Andamos a usar termos caros.:D

    Agora a sério, o que entendes por encriptar? Eu acho que sei o que é, mas para ter a certeza...

    Vá, cumps
     
  8. Tyran

    Tyran Power Member

    Se calhar usei mal a palavra :) Tipo, fazer de forma a gravar a password de forma "encriptada", isto é de modo que qualquer pessoa que vá ler o ficheiro não consiga descobrir a password de outro user lol Pode ser de uma maneira simples com uma simples chave e trocar depois com um algoritmo fazeres trocas na palavra-chave pela chave, convem ter cuidado para não dar pass's iguais :P ou então algo mais complexo mas isso já nunca fiz lol

    cumpzz
     
  9. mj2p

    mj2p I'm Cool Cuz I Fold

    Tou a ver. É tipo os números de contribuintes. Até algum tempo atrás pensava que os numeros de contribuintes eram todos seguidos, mas esclareceram-me que este numeros são obtidos a partir de um algoritmo muito específico.

    Isso da encriptação faz-me lembrar aquele pessoal que consegue ler egipcío. Olham para aqueles símbolos todos e conseguem indicar palavras. Acho que até é uma analogia fixe.:D

    Vá, cumps
     

Partilhar esta Página