Jump to content
odracir

Ficheiros

Recommended Posts

odracir

Olá, numa das minhas disciplinas de programação tenho que fazer um sistema de login em que tenho que guardar os usernames e password num ficheiro criado pelo programa.

O problema que estou a ter é o facto de não conseguir guardar mais do que uma conta, visto que ele volta sempre a criar o ficheiro do zero.

Eu sei que em c existe um directiva especifica que me abre o ficheiro para adicionar informação, também sei que existe em c++ uma classe apstring que me permite fazer o mesmo, contudo não consigo adicionar a classe ao dev c++, se souberem duma solução prática para o problema agradecia pois estou a ficar maluco.

Aqui vai o código que já tenho

#include<iostream>
#include <fstream>
#include<stdlib.h>
#include<fstream>
#include<string>
#include<conio.h>
using namespace std;

int dados_utilizador(char *username,char *password);
int compara();
char menu();
char username[21],password[21];
int main(){
           
           menu();
           }
char menu(){
           int n;
           cout<<"Are you registered\n";
           cout<<"1-Yes\n";
           cout<<"2-No\n";
           cin>>n;
           if(n==1){
                    cout<<"Good job";
                   
                    
                    }
           else{
               dados_utilizador(username,password);
               } 
           
           }
int dados_utilizador(char *username,char *password){
                       cout<<"Choose a username and a password\n";
                       
                       
                       cout<<"Write your username (use no more that 21 letters or numbers)\n";
                       cin>>username;
                       
                       cout<<"\nWrite your password\n";
                       cin>>password;
                       compara();
                       }
int compara(){
              ofstream makefile;
              
              makefile.open("Registation.txt");
              makefile<<"Registations"<<std::endl;
              makefile <<username<<" "<<std::endl; 
              makefile<<password<<" "<<std::endl;
              makefile.close();
              }

                                   

                                   

Obrigado e boa programação

Share this post


Link to post
Share on other sites
KTachyon

Simples:

makefile.open("Registration.txt", ios::app);

Mais info:

http://www.cplusplus.com/reference/iostream/ofstream/open/


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
odracir

Muitíssimo obrigado. Bem me parecia que a solução era bastante simples.

Share this post


Link to post
Share on other sites
KTachyon

No problem. Mas lembra-te de que vais estar a escrever sempre tudo. Ou seja, aquele "Registration" vai aparecer sempre que inserires alguma coisa no ficheiro.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
odracir

Sim é esse o objectivo do programa.

Mas agora estou com mais um problema que é o seguinte como podem ver o programa tem um sistema de criação de conta agora gostava de conseguir por o programa a com um sistema de login. A minha duvida é como é que eu o mando procurar um username introduzido e de seguida comparar a password dessa mesma conta.

Obrigado e boa programação

Share this post


Link to post
Share on other sites
luis7

Eu sugeria criares uma classe Utilizador, em que cada utilizador teria como dados o username e a password.

Depois de teres alojados todos os utilizadores numa estrutura qualquer (vector, list, whatever) seria mais fácil para comparar tudo.

Share this post


Link to post
Share on other sites
KTachyon

Faz com structs.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
luis7

Faz com structs.

Exacto. Fazes quase o mesmo que com uma classe e dado que não necessitas de grandes coisas, ainda é mais adequado :P

Share this post


Link to post
Share on other sites
odracir

Eu não estou a conseguir fazer isso, podem me dar um exemplo.

Obrigado e boa programação

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.