Concetti Chiave
- Il programma gestisce una rubrica telefonica, consentendo inserimento, modifica e ricerca di contatti.
- La funzione `inserimento()` permette di aggiungere nuovi contatti richiedendo nome e numero di telefono.
- È possibile cercare contatti tramite nome con la funzione `ricercanome()`, che confronta i dati inseriti dall'utente.
- La funzione `ricercarecord()` consente di trovare un contatto specifico utilizzando il numero di record nel file.
- La funzione `modifica()` permette di aggiornare i dati di un contatto esistente, previa conferma dell'utente.
#include
#include
#include
#include
using namespace std;
struct utenti{
char nome[21];
char telefono[11];
};
void inserimento();
void modifica();
void ricercanome();
void ricercarecord();
void visualizza();
int main(){
int scelta;
do{
system("cls");
coutEsercizio Rubrica"
cout
cout
cout
cout
cout
do{
cout
cin>>scelta;
}while(scelta 4);
switch(scelta){
case 1:
inserimento();
break;
case 2:
modifica();
break;
case 3:
ricercanome();
break;
case 4:
ricercarecord();
break;
case 0:
cout
return 0;
break;
}
}while(scelta != 0);
return 0;
}
void inserimento(){
utenti utente;
cout
cin.getline(utente.nome,21);
cin.ignore();
cout
cin.getline(utente.telefono,11);
cin.ignore();
ofstream rubrica("rubrica.dat", ios::in);
rubrica.write((char*)& utente, sizeof(utente));
rubrica.close();
system("PAUSE");
}
void ricercanome(){
utenti utente;
char nomecercato[21];
cout
cin.getline(nomecercato, 21);
cin.ignore();
ifstream rubrica("rubrica.dat", ios::in);
rubrica.read((char*)& utente, sizeof(utente));
while(!rubrica.eof()){
if(strcmp(nomecercato, utente.nome) ==0){
cout
cout
}
rubrica.read((char*)& utente, sizeof(utente));
}
rubrica.close();
system("PAUSE");
}
void ricercarecord(){
utenti utente;
int nrec;
cout
cin>>nrec;
ifstream rubrica("rubrica.dat", ios::in);
rubrica.seekg(nrec*sizeof(utenti));
rubrica.read((char*)&utente, sizeof(utenti));
rubrica.close();
cout
cout
system("PAUSE");
}
void modifica(){
cout
char risp;
int n;
utenti utente;
cout
cin>>n;
ifstream rubrica("rubrica.dat", ios::in);
rubrica.seekg(n*sizeof(utenti));
rubrica.read((char*) & utente , sizeof(utente));
cout
cout
cout
cin>>risp;
if(risp == 's' or risp == 'S'){
cout
cout
cin>>utente.nome;
cin.ignore();
cout
cin>>utente.telefono;
cin.ignore();
ofstream rubrica("rubrica.dat", ios::binary);
rubrica.seekp(n*sizeof(utente));
rubrica.write((char*)& utente, sizeof(utente));
rubrica.close();
system("PAUSE");
}
}
Domande da interrogazione
- Qual è la funzione principale del programma descritto nel codice?
- Come viene gestito l'inserimento di nuovi contatti nella rubrica?
- In che modo il programma permette di modificare un contatto esistente?
Il programma è progettato per gestire una rubrica telefonica, consentendo l'inserimento, la modifica e la ricerca di contatti tramite nome o numero di record.
L'inserimento di nuovi contatti avviene tramite la funzione `inserimento()`, che richiede all'utente di inserire il nome e il numero di telefono, salvandoli poi in un file binario chiamato "rubrica.dat".
La modifica di un contatto esistente è gestita dalla funzione `modifica()`, che consente di cercare un contatto tramite il numero di record, visualizzarlo e, se confermato dall'utente, modificarne i dati salvati nel file.