Salve a tutti!
Ho un piccolo problema con questo esercizio di compito sulle classi.
Si progetti e si implementi una classe user che definisca cognome, login(penso sia il nickname) e password di un utente di un sistema.
Si richiede: un costruttore, un metodo che visualizzi le informazioni di un utente e un metodo che permetta il cambio di password di un utente.
Il problema è questo: quando inserisco un nuovo utente e poi lo vado a cercare, il programma va in loop e non riesco a capire dove sia l'errore.
Ringrazio in anticipo.
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
struct dati //lista
{
string cognome;
string nickname;
string password;
dati *next;
};
class user
{
public:
user();//costruttore
~user(); //distruttore
void aggiungi(string, string, string); //aggiunta utenti
void view(string);//visualizzazione
void password(string, string, string);//cambio password
protected:
dati *testa;
//private:
/*string cognome; //cognome
string nickname; //nome al login
string password; //password
*/
};
//
//costruttore di user
user::user()
{
testa=NULL;
}
//
//distruttore di user
user::~user()
{
dati *c;
while(testa!=NULL)
{
c=testa;
testa=testa->next;
delete c;
}
testa=NULL;
}
//
//metodo aggiungi
void user::aggiungi(string cogno,string nick,string pass)
{
dati* app = new dati;
app->cognome=cogno;
app->nickname=nick;
app->password=pass;
app->next=NULL;
if(testa==NULL)
testa=app;
else
{
dati* tmp=testa;
while(testa->next!=NULL)
testa=testa->next;
testa->next=app;
testa=tmp;
}
}
//
//visualizzazione
void user::view(string utente)
{
dati* temp=testa;
while(temp)
{
if(utente==temp->cognome)
{
cout<<"Utene trovato!"<<endl;
cout<<"Cognome: "<<temp->cognome<<endl;
cout<<"Nickname: "<<temp->nickname<<endl;
cout<<"Password: "<<temp->password<<endl;
}
else
temp=temp->next;
}
}
//
//Cambio password
void user::password(string utente,string oldpass,string newpass)
{
dati* temp=testa;
while(testa!=NULL)
{
if(testa->cognome==utente && testa->password==oldpass)
testa->password=newpass;
else
testa=testa->next;
}
testa=temp;
}
int main()
{
//const int DIM=10; //dimensione massima dell array di utenti
user User;
string scelta, cognome, nickname, oldpassword, newpassword;
int opzione;
while(1)
{
system("CLS");
cout<<"1 - inserimento utente"<<endl;
cout<<"2 - cerca utente"<<endl;
cout<<"3 - cambia password"<<endl;
cout<<"4 - esci"<<endl;
cout<<"-> ";
cin>>opzione;
if(opzione=='4')
break;
switch(opzione)
{
case 1:
{
while(1)
{
cout<<"Inserire dati - (q per terminare)"<<endl;
cout<<"Cognome: ";
cin>>cognome;
if(cognome=="q")
break;
cout<<"nickname: ";
cin>>nickname;
cout<<"password: ";
cin>>newpassword;
User.aggiungi(cognome, nickname, newpassword);
}
break;
}
case 2:
{
cout<<"Inserire il cognome dell'utente da cercare"<<endl;
cin>>cognome;
User.view(cognome);
system("PAUSE");
break;
}
case 3:
{
cout<<"Cambio password"<<endl;
cout<<"Inserire il cognome dell'utente: ";
cin>>cognome;
cout<<"Inserire la vecchia password: ";
cin>>oldpassword;
cout<<"Inserire la nuova password: ";
cin>>newpassword;
cout<<endl;
User.password(cognome,oldpassword,newpassword);
}
}//FINE DELLO SWITCH
}//FINE DEL MENU WHILE
return EXIT_SUCCESS;
}