Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

La gestione delle date

Come ultimo esempio svilupperemo la classe data introducendo dei controlli sull'immissione dei dati.
Tali controlli si devono effettuare poichè un utente potrebbe inserire sbadatamente la data 32/13/23000 la quale non può esistere per svariati motivi, innanzitutto è impossibile che vi sia un giorno con data 32, poi non esiste il tredicesimo mese inoltre l'anno 23000 è un pò troppo distante per essere preso in considerazione. Vediamo come realizzare tali controlli.

File di dichiarazione di classe data.h:

(L'articolo continua più sotto...)

class data
{
    public:
       //costruttore
       data(int =0,int = 0,int = 0);
       void setData();
       void getData();
       void stampaMese();
        
    private:
      int giorno;
      int mese;
      int anno;    
};
File di definizione di classe data.cpp:

#include "data.h"
#include <iostream>

using namespace std;

data::data(int gg,int mm, int aa)
{
giorno = gg;
mese = mm; 
anno = aa;   
}

void data::setData()
{
int g,m,a;

do
 {
  cout << "Inserire il giorno: ";
  cin >> g;    
 }
 while ( !(g >0 && g < 32))   ;        
 giorno = g;

do
 {
  do
  {
  cout << "Inserire il mese: ";
  cin >> m;    
  }  
  while( (m == 2 && giorno > 28) ||
    (m==4||m==6||m==9 ||m==11 && giorno == 31));
 }
 while ( !(m >0 && m < 13))   ;        
 mese = m;


do
 {
  cout << "Inserire l'anno: ";
  cin >> a;    
 }
 while ( !(a >1000 && a < 9999))   ;        
 anno = a;}

void data::getData()
{
cout << "la data selezionata corrisponde a " << giorno 
      << '/' << mese << '/' << anno << endl;    
}

void data::stampaMese()
{
cout << "la data selezionata corrisponde a " << giorno ;
switch(mese)
{
   case 1:
      cout << " Gennaio ";    
      break;
   case 2:
      cout << " Febbraio ";    
      break;
   case 3:
      cout << " Marzo ";    
      break;
   case 4:
      cout << " Aprile ";    
      break;
   case 5:
      cout << " Maggio ";    
      break;
   case 6:
      cout << " Giugno ";    
      break;
   case 7:
      cout << " Luglio ";    
      break;
   case 8:
      cout << " Agosto ";    
      break;
   case 9:
      cout << " Settembre ";    
      break;
   case 10:
      cout << " Ottobre ";    
      break;
   case 11:
      cout << " Novembre ";    
      break;
   case 12:
      cout << " Dicembre ";    
      break;                                    
}
cout << anno << endl;
    
}
Esempio di uso della classe main.cpp:

#include <iostream>
#include "data.h"

using namespace std;

int main()
{
  //inizializza una data con valori di default
  data d;
  //setta la data
  d.setData();
  //mostra la data in formato xx/xx/xxxx
  d.getData();
  //mostra la data in formato xx mese xxxx
  d.stampaMese();    
    
    
system("PAUSE");
return 0;
Vediamo insieme esclusivamente i controlli effettuati sull'immissione dei dati:

do{...} while ( !(g >0 && g < 32));
indica che ciò che c'è scritto nel do viene ripetuto sino a che non si immette un valore comprese fra 1 e 30 da assegnare alla variabile privata giorno.

Il controllo successivo può sembrare molto complesso ma basta analizzarlo per parti per capire come funziona.
Il do...while esterno controlla che venga immesso un valore per il mese accettabile ovvero compreso fra 1 e 12, quello interno approfondisce tale controllo ed impedisce, ad esempio, di inserire il mese di giugno se era stato immesso come giorno il valore 31. Quei controlli sono uniti tramite degli OR (||), ricordo che una espressione con degli OR risulta vera anche se uno solo dei predicati lo è.

Corsi
Corso ASPCorso ASP
Corso completo per la creazione di siti Web dinamici. A partire da 39 €.
Corso Web DesignCorso Web Design
Disegno di siti Web con HTML, CSS e Dynamic HTML. A partire da 39 €.
Corso Web MarketingCorso Web Marketing
Promozione siti, motori di ricerca e Marketing. A partire da 39 €.
Sommario
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122