#include <iostream>
#include <stdio.h>
#include <fstream>
#include <string>
#include <windows.h>
using namespace std;
//Funzione per spostarsi nella finestra di dialogo
void gotoxy(int x, int y) {
for (int i = 0; i < y; i++) {
cout<<"\n";
}
for (int i = 0; i < x; i++) {
cout<<" ";
}
}
int main ()
{
int i=0;
gotoxy(28,2);
cout<<"Rubrica telefonica v1.0"<<endl<<endl;
//Ciclo del menù
while (i==0) {
gotoxy(37,1);
cout<<"Menu'"<<endl;
gotoxy(24,0);
cout<<"1) Inserisci un nuovo contatto.\n";
gotoxy(24,0);
cout<<"2) Cerca.\n";
gotoxy(24,0);
cout<<"3) Cancella contatto.\n";
gotoxy(24,0);
cout<<"4) Esci.\n"<<endl;
cout<<"Cosa vuoi fare? ";
cin>>i;
while (i>4) {
cout<<"Errore...\n"<<"Scegli l'opzione 1,2,3 o 4";
i=0;
}
cout<<endl<<endl<<endl;
//Inserimento dati
if(i==1) {//Se i coincide con 1, altrimenti viene assegnato ad i il valore 1!!
ofstream myfile; //ofstream per scrivere su di un file
myfile.open ("Rubrica.txt", ios::app); //Crea-apre il file Rubrica.txt
//e parte a scrivere dalla fine
struct tiporec //Viene dichiarata la
{ char nome[30]; //struct e vengono
char cognome[30]; //inserite le variabili
char cell[11];
}rec; //rec è il nome adoperato per inserire i dati nella struct
//Inserimento dei dati
cout<<" Nome: ";
cin.getline(rec.nome,30);
cin.getline(rec.nome,30);
cout<<" Cognome: ";
cin.getline(rec.cognome,30);
cout<<" Numero telefono: ";
cin.getline(rec.cell,11);
cout<<endl<<endl;
//Stampa nel file i dati inseriti
myfile << rec.nome << " " << rec.cognome << " " << rec.cell << "\n";
cout<<"Contatto inserito: "<<rec.nome<<" "<<rec.cognome<<" "<<rec.cell
<<endl<<endl;
myfile.close();
i=0;
}
//Cerca contatto
if (i==2) {//Se i coincide con 2, altrimenti viene assegnato ad i il valore 1!!
string line, ricerca; //Diachiarazione delle due stringhe
size_t found; //Richiamo funzione "found" per trovare un testo
ifstream myfile; //ifstream per leggere da un file
myfile.open ("Rubrica.txt", ios::out); //File aperto per operazioni di
//output
cout<<"Inserire parametro di ricerca: ";
cin>>ricerca; //Ciò che si scrive viene salvato nella string ricerca
cout<<endl<<endl;
while (! myfile.eof() ) //.eof restituisce vero quando il file di testo
//è arrivato alla fine
{
getline (myfile,line); //Dà alla string line ciò che è scritto nella riga
found=line.find(ricerca); //Cerca in line ciò che scritto in ricerca
if (found!=string::npos) {//se lo trova stampa line. Controlla tutte le righe
//del file e se trova qualcosa lo stampa.
cout<<line<<endl<<endl;
}
}
cout<<"Ricerca terminata.\n";
myfile.close();
i=0;
}
//Cancellare un contatto
if (i==3) {
string line, ricerca;
size_t found;
ifstream myfile;
myfile.open ("Rubrica.txt", ios::out);
cout<<"Inserire parametro di ricerca: ";
cin>>ricerca;
cout<<endl<<endl;
while (! myfile.eof() ) //.eof restituisce vero quando il file di testo
//è arrivato alla fine
{
getline (myfile,line); //Dà alla string line ciò che è scritto nella riga
found=line.find(ricerca); //Cerca in line ciò che scritto in ricerca
/*Se lo trova stampa "Contatto cancellato: nome contatto". Altrimenti stampa
tutte le altre righe in un altro file ("file_trasf.txt"). Una volta letto tutto
il file Rubrica.txt e trascritto tutto tranne il contatto da cancellare in
file_trasf.txt, il programma cancella Rubrica.txt e rinomina file_trasf in
Rubrica.txt. Risultato: l'elenco è quello di prima, ma senza il contatto che si
voleva eliminare*/
if (found!=string::npos) {
cout<<"Contatto cancellato: "<<line<<endl<<endl;
}
else {
ofstream myfile;
myfile.open ("file_trasf.txt", ios::app);
myfile<<line<<"\n";
myfile.close();
}
}
myfile.close();
remove ("Rubrica.txt");
rename ("file_trasf.txt", "Rubrica.txt");
i=0;
}
//Uscita dal programma
if (i==4) {
}
}
return 0;
}