Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Gestione delle date
Forum - C/C++ - Gestione delle date

Avatar
ilciolla (Normal User)
Newbie


Messaggi: 10
Iscritto: 24/02/2007

Segnala al moderatore
Postato alle 15:22
Giovedì, 01/03/2007
salve a tutti ho un piccolo problema riguardo a un progetto che sto facendo.

in pratica devo costruire una classe data per gestire i prestiti scaduti di una biblioteca.
in pratica deve funzionare in modo tale che quando vado a controllare (nella mia classe prestiti  con questi tre memri: cod_utente
cod_libro   data_prestito) la data di un certo prestito riceva come parametro questa data e mi dica inserendo la data di oggi quanti giorni sono passati dal prestito effettuato .


ho letto una discussione precedente dove vi era un argomento simile ma non riesco proprio ad adattarlo...

vi prego di aiutarmi perche sono nel panico grazie.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 1:29
Lunedì, 05/03/2007
Magari se posti il codice che hai già costruito e la parte in cui non riesci ad andare avanti possiamo risparmiare un po' di fatica e risponderti più velocemente e meno genericamente ;)


Il mio blog: https://piero.dev
PM Quote
Avatar
ilciolla (Normal User)
Newbie


Messaggi: 10
Iscritto: 24/02/2007

Segnala al moderatore
Postato alle 21:06
Venerdì, 09/03/2007
Queta e la mia classe data:

class data
{
    public:
friend ostream &operator<<(ostream &,const data&);    
        
friend istream &operator>>(istream &, data&);
        
         int giorno;
         int mese;
         int anno;  
         };
        
Ora devo creare delle funzioni le quali mi servono per agire sui prestiti scaduti dei libri.
Mi servira dunque una funzione che ritorna un int alla quale passo la data di oggi e mi faccia il confronto fra tutte le date dei prestiti contenute nell array elenco_prestiti , e mi ritorni (1) se il prestito e scaduto (cioe dopo 30 giorni dalla data in cui e stato preso il libro)oppure zero se invece il prestito non e ancora scaduto.
Poi mi serivira anche una funzione che mi controlli che la data inserita e giusta.            
Questa e la mia classe prestiti e il file .cpp per capire dove andranno utilizzate le funzioni della classe data.

using namespace std;

class prestiti{       friend ostream &operator<<(            ostream &,const prestiti &);        
                  
                   private:    int code_utente;
                               string code_libro;
                               data giorno;
                  
                  public :     void salva();
                               void carica();
                               void prestito();
                              void restituzione();
                               void ricerche();
                                                      
                            
              }; prestiti elenco_prestiti[1000];
                          


prestiti.cpp


void crediti::prestito()
{       bool g;
        int gg,mm,aa;
        int j;
        int k=0,n=0;
        int i;
        int ute;
        string lib;
        cout<<"Inserire il codice utente della persona a  cui viene prestato il libro...."<<endl;
        cin>>ute;
        while(elenco_prestiti.code_utente == 0)
        {   i++;  }
        
        if(ute=='?') {
        elenco_utenti[k].ricercau();    
                        
        }
       else
       {
        elenco_prestiti.code_utente=ute;
                                            
                                            
       }
        cout<<"inserisci ora il codice del libro  che l utente vuole in prestito....."<<endl;
        getline(cin,lib);
        while(elenco_prestiti[j].code_libro=="")
        {   j++;  }
        if(lib=="?")
        {
        elenco_libri[n].ricercal();          
        }
        else
        {
        elenco_prestiti[n].code_libro=lib;
        }
        do{
        cout<<"ora andremo ad inserire la data del prestito...."<<endl;
        
         cout<<"dammi il giorno...."<<endl;
         cin>>gg;
         cout<<"dammi il mese..."<<endl;
         cin>>mm;                                                                  
         cout<<"dammi l anno..."<<endl;
         cin>>aa;
                  
           g=.ins(gg,mm,aa);   //controllare qui l inserimento della data e il controllo del fatto che sia corretta che dovrebbe avvenire richiamando una funzione
                                // della classe data che ritorno false se e sbagliata e true se e giusta.
              
              if(g==false)
                
                cout<<"reinserire la data..."<<endl;  
        
        
          
           }while(g=true);
}  
    
    
    
void crediti::restituzione()    
{  
    int codu;
    string codl;
    int i=0,j=0,k=0;
    
    
                   cout<<"inserire perfavoreilcodice del libro...";
                   getline(cin,codl);
                   cout<<"ok inserisci allora il codice utente..."<<endl;        
                   cin>>codu;
                  
                   while((elenco_prestiti.code_utente==codu) && (elenco_prestiti.code_libro==codl))
                     {
                         i++;         }
                    
                   elenco_prestiti.code_utente=0;
                   elenco_prestiti.code_libro="";
                   elenco_prestiti.giorno.giorno=0;// controlla se e giusto utilizzare questo metodo cioe utilizzare l array[].giorno.giorno  
                   elenco_prestiti.giorno.mese=0;
                   elenco_prestiti.giorno.anno=0;                                              
                                                                          
                   while( elenco_utenti[j].codice==codu )
                     {   j++;   }
                  
                    if (elenco_utenti[j].prestiti > 0)
                      
                       elenco_utenti[j].prestiti=elenco_utenti[j].prestiti-1;
                  
                   while(elenco_libri[k].codice==codl)
    
                      {  k++;   }
                    
                    elenco_libri[k].prestito=false;
    
    }    

void crediti::ricerche()
{       data oggi;
        bool f;
       int scelta,i,j,k,codeu;
       string codl;
      
       cout<<"Che operazione vuoi effetuare?"<<endl;
       cout<<" 1. sapere se un libro e disponibile...."<<endl;
       cout<<" 2. dato codice utente sapere tutti i libri che egli ha in prestito..."<<endl;
       cout<<" 3. sapere i prestiti scaduti...."<<endl;
       cin>>scelta;
       switch(scelta){  
                        
                         case 1:{    
                                      cout<<"Dimme il codice del libro....."<<endl;
                                      cin>>codl;
                                      while(elenco_libri.codice==codl)
                                      {   i++; }
                                      
                                      if (elenco_libri.prestito==false)
                                          cout<<"Il libro e disponibile perche nessun utente lo ha in prestito";
                                          
                                          else
                                                    while (elenco_prestiti[j].code_libro==codl)
                                                    {    j++;    }
                              
                                               cout<<"il libro e in prestito all'utente numero"<<elenco_prestiti[j].code_utente<<endl;
                                               cout<<"dal giorno : "<<elenco_prestiti.giorno.giorno<<"/"<<elenco_prestiti.giorno.mese<<"/"<<elenco_prestiti.giorno.anno<<endl;                                   // devO ridefinire << per il tipo data!
                                               cout<<"la scheda relativa all'utente che ha in prestitoil libro e la seguente...:"<<endl;                                                    //COME FACCIO?
                                              
                                               while(elenco_utenti[k].codice==elenco_prestiti[j].code_utente)
                                               {   k++;  }
                                              
                                               cout<<elenco_utenti.cognome<<endl;
                                               cout<<elenco_utenti.recapito<<endl;
                                               cout<<elenco_utenti.mail<<endl;
                                               cout<<elenco_utenti.codice<<endl;
                                               cout<<elenco_utenti.prestiti<<endl;
                                    break;}
                                    
                            case 2:{   cout<<"Dammi il codice utente..."<<endl;
                                       cin>>codeu;
                                       for(int u=0;u<=1000;u++)
                                       {   if(elenco_prestiti.code_utente==codeu)
                                            {  
                                                 cout<<"L'utente ha in prestito il liro numero:  ";
                                                 cout<<elenco_prestiti.code_libro<<endl;
                                                 cout<<"dalla data  :";
                                                 cout<<elenco_prestiti.giorno.giorno<<"/"<<elenco_prestiti.giorno.mese<<"/"<<elenco_prestiti.giorno.anno<<endl;
                                                 }          
                                            }
                                                       break;}
                                  
                                  
                             case 3:{   cout<<"Dammi la data di oggi..."<<endl;   //credo sia sbagliata questo case serve per visualizzare
                                                                                 // tutti i prestiti scaduti e chiama una funzione della classe data
                                         f=data.ins();                           //la quale dovrebbe controllare la data e restituire treu se e giusta e false se e sbagliata
                                         if (f==true)
                                            
                                            for(int s=0;s<=1000;s++)
                                              {  
                                                     if (elenco_prestiti[s].giorno > oggi )  // qui dovrei chiamare una funzione della classe data
                                                                                            // per vedere se la data di oggi e inferiore a quella del prestito e quindi stampare i prestiti scaduti
                                                      {
                                                       cout<<elenco_prestiti[s].code_utente<<endl;
                                                       cout<<elenco_prestiti[s].code_libro<<endl;
                                                       cout<<elenco_prestiti[s].giorno<<endl;  
                                                       }
                                                      
                                               }      
                                  
                                     }
                                  
                                  
                                                
}}      
SCUSATE SPERO CHE RIUSCIRETE A CAPIRCI SONO NEL PANICO MARTEDI HO DA PRESENTARLO...
GRAZIE IN ANTICIPO A TUTTI                

PM Quote
Avatar
ilciolla (Normal User)
Newbie


Messaggi: 10
Iscritto: 24/02/2007

Segnala al moderatore
Postato alle 11:54
Lunedì, 12/03/2007
NON RISPONDE NESSUNO?

PM Quote