I have a problem with stl and class strem for I/O
Apr 1, 2014 at 6:04pm UTC
Practically I must create a phonebook that must add new contact on the phonebook,sends, receives call and messages. This information must be written on the file txt. The user can choose see the list of the sends, receives call and messages and see who has colled, the duration of the call and the date and time that are taken by the operating system. My problem is print on screen the contents of files such as files of incoming calls scrolling the file. I have tried to do so it is case 7 of the switch. But if I try to enter a new name and go back to the menu and try to relate the call list, the latter is not what it should be. Please please do not help me I can go on.
This is my code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
int main()
{
int scelta,maxNum;
char ritorno;
Rubrica r;
Chiamata c;
Messaggio s;
fstream rubrica;
char * cstr;
bool trovato = false ;
fstream chiamateEffettuate,chiamateRicevute,smsRicevuti,smsInviati;
string line;
chiamateEffettuate.open("ChiamateEffetuate.txt" );
chiamateRicevute.open("ChiamateRicevute.txt" );
smsRicevuti.open("SmsRicevuti.txt" );
smsInviati.open("SmsInviati.txt" );
rubrica.open("Rubrica.txt" );
//Variabili per la data
int * data = new int [3];
data = getData();
int giorno = data[0];
int mese = data[1]+1;
int anno = data[2]+1900;
int *ora=new int [2];
ora=getOra();
int h=ora[0];
int m=ora[1];
map<string,string> rubricaTelefonica;
map<string,string>::iterator it;
list<Chiamata>chiamateEff;
list<Chiamata>chiamateRic;
list<Messaggio>smsInv;
list<Messaggio>smsRic;
list<Chiamata>::iterator ce;
list<Messaggio>::iterator si;
vector<char *> info;
vector<char *>::iterator informazione;
vector<string> vettoreNumeri;
do { system("CLS" ); cout << "\t\t\t\t**Rubrica**" << endl; cout<<"1.Aggiungi contatto" <<endl; cout<<"2.Effettua Chiamata" <<endl;
cout<<"3.Ricevi Chiamata" <<endl; cout<<"4.Manda Sms" <<endl; cout<<"5.Ricevi Sms" <<endl; cout<<"6.Controlla Rubrica" <<endl; cout<<"7.Controlla chiamate effettuate" <<endl; cout<<"8.Controlla chiamate ricvute" <<endl; cout<<"9.Controlla sms ricevuti" <<endl;
cout<<"10.Controlla sms inviati" <<endl; cout<<"11.Esci" <<endl;
cin>>scelta;
switch (scelta){
case 1:
system("CLS" );
cout<<"\t\t\t**Aggiungi contatto**" <<endl<<endl;
cout<<"Nome: " ;
cin>>r.nome;
do {
cout<<endl<<"Numero di telefono: " ;
cin>>r.numero;
maxNum=r.controlloNumero();
}while (maxNum>10 || maxNum<10);
r.aggiungiNelFile();
rubricaTelefonica[r.nome]=r.numero;
cout<<"Vuoi tornare al menu'? y/n" ;
cin>>ritorno;
break ;
case 2:
system("CLS" );
cout<<"\t\t\t**Effettua Chiamata**" <<endl<<endl;
do {
cout<<"Inserisci il numero da chiamare: " ;
cin>>c.numero;
maxNum=c.controlloNumero();
}while (maxNum>10 || maxNum<10);
cout<<endl<<"Inserisci la durata della chiamata(in secondi): " ;
cin>>c.durata;
cout<<endl<<"La chiamata e' stata effettuata il " <<giorno << "/" << mese << "/" << anno << " alle ore " <<h<<":" <<m<<endl;
c.giorno=giorno;
c.mese=mese;
c.anno=anno;
c.ora=h;
c.minuti=m;
c.aggiungiChiamataEffettuata();
cout<<"Vuoi tornare al menu'? y/n" ;
cin>>ritorno;
break ;
case 7:
system("CLS" );
cout<<"\t\t\t**Chiamate Effettuate**" <<endl<<endl;
while (!rubrica.eof()){
rubrica>>r.nome;
rubrica>>r.numero;
rubricaTelefonica[r.nome]=r.numero;
}
while (!chiamateEffettuate.eof()){
getline(chiamateEffettuate,line);
cstr = new char [line.length()+1];
strcpy (cstr, line.c_str());
char * p = strtok (cstr,"\t\t/:" );
while (p!=NULL){
// cout << p << endl;
info.push_back(p);
p = strtok(NULL,"\t\t/:" );
}
}
for (int f=0;f!=info.size();f=f+7){
c.numero=info[f];
c.durata=info[f+1];
c.giorno=atoi(info[f+2]);
c.mese=atoi(info[f+3]);
c.anno=atoi(info[f+4]);
c.ora=atoi(info[f+5]);
c.minuti=atoi(info[f+6]);;
chiamateEff.push_back(c);
}
for (ce=chiamateEff.begin();ce!=chiamateEff.end();ce++){
trovato=false ;
for (it=rubricaTelefonica.begin();it!=rubricaTelefonica.end();it++){
if (ce->numero==it->second){
cout<< it->first<<" " <<ce->durata<<" " <<ce->giorno<<"/" <<ce->mese<<"/" <<ce->anno<<" " <<ce->ora<<":" <<ce->minuti<<endl;
trovato=true ;
break ;
}
}
if (!trovato){
cout<< ce->numero<<"(Sconosciuto)" <<" " <<ce->durata<<" " <<ce->giorno<<"/" <<ce->mese<<"/" <<ce->anno<<" " <<ce->ora<<":" <<ce->minuti<<endl;
}
}
delete [] cstr;
cout<<endl<<"Vuoi tornare al menu'? y/n" ;
cin>>ritorno;
break ;
}
There are the other case but don't enter in the space.
Topic archived. No new replies allowed.