Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    85

    [c++]creazione di una semplice rubrica

    dovrei realizzare una piccola rubrica che svolga tre funzioni:aggiungi,salva e richiama.
    la cosa si è dimostrata abbastanza complicata,ho provato a fare qualcosa per cercare di farvi avere un'idea ma qui ci vuole la manodopera di un'esperto:

    #include <iostream.h>
    #include <stdlib.h>
    #include <fstream.h>

    void aggiungi(int&);
    void salva(int&);
    void richiama(int&);

    int main()
    {
    void aggiungi
    {
    //il vero problema sta nel fatto che dopo che uno aggiunge un nome
    //dovrebbe dire al computer dove inserirlo
    }
    void salva
    {
    //qui la cosa è più difficile
    }
    void richiama
    {
    // qui dovrei richiamare la schermata per far visualizzare i dati memorizzati
    }
    }
    E SE TUTTO FOSSE SOLO UN RIFLESSO?

  2. #2
    Forse dovresti strutturare il programma in modo diverso. Per esempio,
    una tipica rubrica, contiene dati di nome, cognome, indirizzo, ecc.
    Allora o crei una classe con dati privati e metodi get e set, oppure
    usi lo stile C, cioe' struct e funzioni. Vedo che in quelle funzioni passi un riferimento ad un intero. L'intero non ho capito cosa ti rappresenta nel tuo caso.

    Ciao
    <| http://cikkox.altervista.org |>
    <| GNU/Linux Registered User #365929 |>
    <| GnuPG/OpenPGP key available |>

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Quest'esempio lo avevo fatto per un altro utente che chiedeva una cosa simile; è un punta da cui partire,

    Scaricalo da questo link perche qui sul forum si perde l'indentazione:

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

    (Per i moderatori: perkè si perde l'indenntazione del codice all'interno del tag code??? )




    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 qualche 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++;
    		
    		cout << "\n\nContatto inserito!";
    	}
    	
    	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;
    			}
    		}
    		//Se non è stato trovato il contatto...
    		cout << "\n\nNon e' stato trovato nessun contatto corrispondente a questo nome";
    		cout << "\nVuoi inserire un altro nome? [Digita s per SI e n per NO]: ";
    		char c = 'n';
    		cin >> c;
    		if((c == 'n') || (c == 'N'))
    			return;
    		cambiaTelefono();
    	}
    	
    	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;
    	cin.get();
    	return scelta;
    
    }
    
    int main(){
    		Rubrica rubrica;
    		bool continua = true;
    		int scelta = 5;
    		
    		while(continua){
    			scelta = menu();		
    			switch(scelta){
    				case 1: rubrica.aggiungiContatto();
    						cout << "\n\nPremere un tasto per continuare...";	
    						cin.get();
    						break;
    				case 2: rubrica.cambiaTelefono();
    						cout << "\n\nPremere un tasto per continuare...";	
    						cin.get();
    						break;
    				case 3: 
    						cout << "\n\nFunzione non ancora implementata...";
    						cout << "\n\nPremere invio per continuare...";	
    						cin.get();
    						break;
    				case 4: rubrica.stampa();
    						cout << "\n\nPremere un tasto per continuare...";	
    						cin.get();
    						break;
    				case 5: continua = false;
    				default: break;
    			}
    			cout << "\n\n\n";
    		}
    		
    		return 0;
    }

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.