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
|