Scarica il file da qui:

http://xoomer.virgilio.it/world721/Rubrica.cpp

perche sul forum le righe con le stringhe vengono spezzate e non puoi fare copia - incolla

codice:
#include <cstdlib>
#include <iostream>
#include <cstring>

using namespace std;

typedef struct{ 
	char nome [30]; 
	char cognome [30]; 
	char telefono [15]; 
	char mail [20]; 
}Contatto; 

typedef struct Rubrica{ 
	Contatto *lista[100];
	
	//numero di contatti presenti nella rubrica
	int dimensione;

	//numero massimo di contatti presenti nella rubrica
	int dimensioneMassima;
	
	Rubrica(){
		dimensione = 0;
		dimensioneMassima = 100;
	}

	void aggiungiContatto(){
		if(dimensione == dimensioneMassima){
			cout << "La rubrica contiene già " << dimensioneMassima  << " contatti!";
			cout << "\nElimina qlche contatto prima di inserirne uno nuovo.";
			return;
		}
		lista[dimensione] = new Contatto();
			
		cout << "\n\n\nInserisci il nome: ";
		cin >> lista[dimensione] -> nome;
		cout << "Inserisci il cognome: ";
		cin >> lista[dimensione] -> cognome;
		cout << "Inserisci il telefono: ";
		cin >> lista[dimensione] -> telefono;
		cout << "Inserisci l'indirizzo e-mail: ";
		cin >> lista[dimensione] -> mail;
		
		dimensione++;
	}
	
	void eliminaContatto(){
		
	}
	
	
	void cambiaTelefono(){
		if(dimensione == 0){
			cout << "\n\nNon ci sono contatti da modificare nella rubrica!\n\n";
			return;
		}
		char nome[30];
		cout << "\n\nInserisci il nome del contatto da modificare: ";
		cin >> nome;
		for(int i = 0; i < dimensione; i++){
			if(strcmp(lista[i] -> nome, nome) == 0){
				cout << "\nInserisci il nuovo numero di telefono: ";
				cin >> lista[i] -> telefono;
				cout << "\nContatto modificato!";
				return;
			}
		}
	}
	
	void stampa(){
		cout << "\n\n********  ___  RUBRICA (" << dimensione << " contatti) ___  ********\n";
		for(int i = 0; i < dimensione; i++){
			cout << " \n\n |------ Contatto " << i << " --------\n |\n";
			cout << " | Nome:     \t" << lista[i] -> nome << "\n";
			cout << " | Cognome:  \t" << lista[i] -> cognome << "\n";
			cout << " | Telefono: \t" << lista[i] -> telefono << "\n";
			cout << " | Mail:     \t" << lista[i] -> mail << "\n";
			cout << " |\n |-------------------------\n\n";
		}

	}

}Rubrica;

int menu(){
//	cout << "\n\n\n";
	cout << " _______________________________________________________\n";
	cout << "|                                                       |\n";
	cout << "|                        Menu                           |\n";
	cout << "|_______________________________________________________|\n";
	cout << "|                                                       |\n";
	cout << "|    Per inserire un nuovo contatto                1    |\n";
	cout << "|    Per cambiare il telefono di un contatto       2    |\n";
	cout << "|    Per eliminare un contatto                     3    |\n";
	cout << "|    Per stampare la rubrica                       4    |\n";
	cout << "|    Per uscire dalla rubrica                      5    |\n";
	cout << "|_______________________________________________________|\n";
	
	cout << "\n     Inserisci la tua scelta: ";
	int scelta;
	cin >> scelta;
	return scelta;

}

int main(){
		Rubrica rubrica;
		bool continua = true;
		int scelta = 5;
		
		while(continua){
			scelta = menu();		
			switch(scelta){
				case 1: rubrica.aggiungiContatto();
						break;
				case 2: rubrica.cambiaTelefono();
						break;
				case 3: break;
				case 4: rubrica.stampa();
						break;
				case 5: continua = false;
				default:;
			}
			cout << "\n\n\n";
		}
		
		return 0;
}