ficheiros c++

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
 
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

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:

mj2p password
PRodrigues password2
Heckel password 3

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
 
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
 
Já vi como é .... basico, é soh por um \n .. obrigada pela ajuda.

PRodrigues

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
 
Pois é hehe :)
Depois podes também começar a pensar em encriptar as passwords, mas deixa isso para o fim se calhar...
cumpzz

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
 
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
 
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

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
 
Back
Topo