4D SIA: C++ usare la struct, i void e il menu - Esercizio Rubrica

Esercizio rubrica con menu e singole opzioni collegate ai void.



#include<iostream>

#include<string>


using namespace std;

struct persone {

char cognome[50];

char nome[20];

char indirizzo[150];

char contatto[50];

char numtel[13];

char email[50];

};


persone rubrica[20];

  int n,i,trovato,pos,p ;

  string cerca;

 

void visualMenu (){ //--la funzione espone le possibili scelte

 cout<< "\n\nscegliere tra :\t i - creazione - inserimento\n";

 cout<< "\t\t s - stampa\n";

 cout<< "\t\t r - ricerca\n";

 cout<< "\t\t o - modifica\n";

 cout<< "\t\t c - cancella\n";

 cout<< "\t\t n - nuovo inserimento\n";

 cout<< "\t\t a - stampa aggiornata\n";

 cout<< "\t\t u - USCITA\n";

 cout<< "digitare scelta: ";

void creatabella(){

for(int i=0; i<n; i++){

cout<<"Inserisci il cognome :  "<<endl;

cin>>rubrica[i].cognome;

cout<<"Inserisci il nome :  "<<endl;

cin>>rubrica[i].nome;

cout<<"Inserisci l'indirizzo:  "<<endl;

cin>>rubrica[i].indirizzo;

cout<<"Inserisci il contatto :  "<<endl;

cin>>rubrica[i].contatto;

cout<<"Inserisci il numero di telefono:  "<<endl;

cin>>rubrica[i].numtel;

cout<<"Inserisci l'email:  "<<endl;

cin>>rubrica[i].email;

}

}


 void stampatabella (){


 cout<<"elenco degli utenti in rubrica  "<<endl;

   

for(i=0; i<n; i++){

cout<<"cognome :  "<<rubrica[i].cognome<<endl;

cout<<"nome :  "<<rubrica[i].nome<<endl;

cout<<"indirizzo :  "<<rubrica[i].indirizzo<<endl;

}

}


void ricerca_cognome() {

cout<<"Inserisci il cognome da cercare:   "<<endl;

cin>>cerca;

trovato=0;

for(i=0;i<n;i++){

if(rubrica[i].cognome==cerca) {

cout<<"persona cercata si trova in posizione    "<<i<< "  "<<rubrica[i].cognome << "  "<< rubrica[i].nome<<"  " <<rubrica[i].indirizzo<<" " <<rubrica[i].email<<endl;

trovato=1;

}

}


   if(trovato==0){

      cout<<"l'utente in rubrica non esiste " <<endl;

   

   }

}


void modifica () {


cout<<"Inserisci il cognome per cercare il record e modificarlo :   "<<endl;

cin>>cerca;

trovato=0;

for(i=0;i<n;i++){

if(rubrica[i].cognome==cerca) {

cout<<"Inserisci il cognome :  "<<endl;

cin>>rubrica[i].cognome;

cout<<"Inserisci il nome :  "<<endl;

cin>>rubrica[i].nome;

cout<<"Inserisci l'indirizzo:  "<<endl;

cin>>rubrica[i].indirizzo;

cout<<"Inserisci il contatto :  "<<endl;

cin>>rubrica[i].contatto;

cout<<"Inserisci il numero di telefono:  "<<endl;

cin>>rubrica[i].numtel;

cout<<"Inserisci l'email:  "<<endl;

cin>>rubrica[i].email;

trovato=1;

}

}


   if(trovato==0){

      cout<<"l'utente  da modificare in rubrica non esiste " <<endl;

   

   }  

}


void cancella_elemento (){


do {

 cout << "Indica la posizione da cancellare sul vettore: ";

 cin >> pos;

 if (pos >= n) cout << "Posizione non ammissibile." << endl;

 } while (pos >= n);

 // ciclo di spostamento degli elementi (shift verso sinistra di una posiz.)

 i = pos;

 while (i < (n - 1))

 {

 rubrica[i] = rubrica[i + 1];

 i++;


 }

  n--;


 }


void stampa_aggiornata (){


 // stampa del vettore - permette di monitorare il suo contenuto

 if (n > 0)

 

 {

  cout<<"rubrica aggiornata"<<endl;

 for (i = 0; i < n; i++) 

 {cout << rubrica[i].cognome <<endl;

 cout << rubrica[i].nome <<endl;

 }

 cout << endl;

 }

 else

 cout << "[vettore vuoto]" << endl;

 }

 

void inserimento_nuovo_record (){

 

 // inserimento nuovo elemento

 do {

 cout << "Indica la posizione da inserire sul vettore: ";

 cin >> pos;

 if (pos > n) {

cout << "Posizione non ammissibile." << endl;

 }

 } while (pos > n);

 // lettura del valore da inserire nella data posizione

 cout << "Inserisci il nuovo cognome in rubrica : ";

 cin >> rubrica[i].cognome;

 cout << "Inserisci il nuovo nome in rubrica : ";

 cin >> rubrica[i].nome;

 // shift a destra degli elementi da posizione (n - 1) a posizione pos

 i = n - 1;

 while (i >= pos)

 {

 rubrica[i + 1] = rubrica[i];

 i--;

 }

 n++;

 }

 

 void stampa_finale (){


 for (i = 0; i < n; i++) {

 cout << rubrica[i].cognome<< " ";

 cout << endl;

 }

  }

 


int main() {

 

    

  do{

  cout<<"Inserisci il numero massimo di persone in rubrica :   "<<endl;

cin>>n;  

    } while(n<1 || n>20);

    

    char sce;

 cout<< "---Gestione completa crea/INS/Stanp/CAN/RIC elementi array";

 

 do {

 visualMenu();

 cin >> sce;

switch (sce) {

case 'i': { creatabella(); break; }

case 's': { stampatabella(); break; }

case 'r': { ricerca_cognome(); break; }

case 'o': { modifica(); break; }

case 'c': { cancella_elemento(); break; }

case 'n': { inserimento_nuovo_record(); break; }

case 'a': { stampa_finale(); break; }

case 'u': return 0; //--chiusura del programma

 }

 } while (1); //--ciclo infinito

// stampa_aggiornata();

}

Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)