Oppure

Loading
24/02/07 11:19
ilciolla
edit by netarrow: cambiato il titolo, quello di prima era contro il regolamento

Ciao ragazzi sono nuovo e ho subito un bel problemino da porvi che magari per voi risultera banale....allora questo e un pogetto che devo realizzare:

Realizzare un programma C++ che offra funzioni di base per la gestione di una semplice biblioteca. In particolare si considerino i seguenti tre sottoproblemi:

1. Gestione schedario libri — Funzione di base:
(a) immissione nuovo libro. Per ogni libro vengono registrate le seguenti informazioni:
− cognome e nome del/degli autore/i
− titolo del libro
− casa editrice
− anno di pubblicazione
− codice collocazione (codice unico alfanumerico)
− argomenti (max. 3, di tipo stringa)
(b) ricerca di un libro in base a:
− codice collocazione
− cognome autore
− argomento
Se la ricerca ha esito positivo, viene visualizzata la scheda del libro trovato. Le ricerche relative agli ultimi due punti possono avvenire anche in base ad una sottostringa del cognome o dell'argomento da ricercare.
(a) cancellazione o modifica libro (individuato in base a codice collocazione). È possibile modificare soltanto le informazioni relative agli argomenti. La cancellazione di un libro non è possibile se il libro si trova in prestito.
2. Gestione schedario utenti — Funzione di base:
(a) immissione nuovo utente. Per ogni utente vengono registrate le seguenti informazioni:
− cognome e nome dell'utente
− categoria di utente (ad esempio, normale, speciale, …)
− recapito
− codice utente (codice unico numerico)
− indirizzo e-mail
(b) ricerca di un utente in base a:
− codice utente
− cognome
Se la ricerca ha esito positivo, viene visualizzata la scheda dell'utente trovato. Le ricerche relative all'ultimo punto possono avvenire anche in base ad una sottostringa del cognome da ricercare.
(c) cancellazione utente (individuato in base a codice utente). La cancellazione di un utente è possibile soltanto se l'utente non ha più libri in prestito.
3. Gestione prestiti — Funzione di base:
(a) prestito. Per ogni prestito effettuato vengono registrate le seguenti informazioni:
− utente (codice utente)
− libro (codice collocazione)
− data prestito
Nel caso in cui si digiti il carattere '?' al posto del codice collocazione o del codice utente viene attivato, rispettivamente, il menù di ricerca libro (punto 1.b) o di ricerca utente (punto 2.b).
(b) restituzione (= cancellazione prestito): libro e utente individuati in base a codice collocazione e codice utente.
(c) ricerche:
− libro in prestito? (dato codice libro, se il libro è in prestito determina codice utente e data del prestito; altrimenti comunica "libro disponibile";)
− prestiti attivi per un utente? (dato codice utente, determina codice libro e data prestito di tutti i libri in prestito all'utente)
− prestiti scaduti (determina codice libro e codice utente relativi a prestiti che hanno superato il limite max. (di norma, 1 mese; eventualmente variabile in base al tipo di utente)).


Tutti i dati relativi a libri, utenti e prestiti vengono memorizzati su file. Il programma provvede a caricare i dati da file in memoria principale e viceversa su esplicita richiesta dell'operatore. L'interazione con l'operatore avviene tramite menù a più livelli. Il sistema provvede anche ad effettuare controlli di base sulla correttezza dei dati immessi (ad esempio, validità codici, validità delle date, ecc.). Nelle funzioni di ricerca qualora vengano individuati più oggetti soddisfacenti i criteri di ricerca, vengono mostrate, una alla volta, le schede di tutti gli oggetti individuati.

Vincoli di implementazione (obbligatori). Realizzare i tipi di dato libro e utente come classi. In particolare, definire utente come classe derivata dalla classe persona. Realizzare anche la nozione di data_del_giorno come classe. Realizzare la gestione di situazioni anomale tramite i meccanismi di gestione eccezioni del C++.


:d:d:d:d:d:d

allora io ho creato la classe utente che deriva dalla classe persona e i suoi relativi metodi, la classe libro e i suoi relativi metodi, ho creato due array di oggetti delle classi (es: elenco_utenti [1000]) dove inserisco gli utenti e un altro per i libri.
ora le mie domande sono:
1)come posso salvare l intero array all interno di un file , e poi come faccio per poterlo caricare ad ogni apertura del programma?
2)come facccio a gestire i prestiti ( ho pensato di fare una classe a parte con tre campi : cod_utente cod_liro e data)
ma proprio non so come fare per la data per inserirla e sapere cosi se i presiti sono scaduti..

vi prego rispondete e di vitale importanza vi ringrazio tutti
Ultima modifica effettuata da netarrow 25/02/07 13:01
aaa
25/02/07 12:52
netarrow
Per il primo problema leggi qui(salvare/caricare array):

pierotofy.it/pages/extras/forum/2/11566-esportare_ed_importare_array_in_un_file/

Dove ho messo questo esempietto:

#include <fstream>
#include <iostream>

using namespace std;

int main() {
int v[3];
ofstream off("back.txt");
v[0] = 3;
v[1] = 5;
v[2] = 7;
off.write(reinterpret_cast<const char *>(&v), sizeof (v));
off.close();


int importati[3];
ifstream iff("back.txt");
iff.read(reinterpret_cast<char *>(&importati), sizeof (importati));
iff.close();

cout << importati[0] << " " << importati[1] << " " << importati[2] << endl;
} 


Per il resto basta che disegni la realtà, fatti qualche diagramma UML magari prima di scrivere il codice.

Ah, visto che sei nuovo leggi il regolamento :k:
Ultima modifica effettuata da netarrow 25/02/07 13:02
aaa
27/02/07 11:48
ilciolla
ok il piu lo ho fatto diciamo quasi tutto solo che venerdi questo devo cnsegnare e non riesco agestire i prestiti ma non l funzioni quelle si, quello che mi manca e la classe data con la quale devo riuscire paticamente ad inserire la data di oggi e sapere da quanto tempo i libri sono in prestito.....tu hai qualche consiglio ti prego sono agli sgoccioli grazie in anticipo....

void prestiti::prestito()
{
int i;
char ute;
char lib;
cout<<"Inserire il codice utente della persona a cui viene prestato il libro...."<<endl;
cin>>ute;
if(ute=='?')
utente.ricercau();


else

elenco_prestiti[i].code_utente=ute;

cout<<"inserisci ora il codice del libro che l utente vuole in prestito....."<<endl;
cin>>lib;

if(lib=='?')

libro.ricercal();

else

elenco_prestiti[i].code_libro=lib;
cout<<"ora andremo ad inserire la data del prestito....";// CONTROLLARE


}



void prestiti::restituzione()
{
int codu;
char codl;
int i=0,j=0,k=0;


cout<<"inserire perfavoreilcodice del libro...";
cin>>codl;
cout<<"ok inserisci allora il codice utente..."<<endl;
cin>>codu;

while((elenco_prestiti[i].code_utente==codu) && (elenco_prestiti[i].code_libro==codl))
{
i++; }

elenco_prestiti[i].code_utente=0;
elenco_prestiti[i].code_libro=0;
elenco_prestiti[i].giorno=""; // CONTROLLARE
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 prestiti::ricerche()
{
int scelta,i,j,k;
char codl;

cout<<"Che operazione vuoi effetuare?"<<endl;
cout<<" 1. sapere se un libro e disponibile...."<<endl;
cout<<" 2. dato codice tente sapere tutti i libri che egli ha in prestito..."<<endl;
cout<<" 3. sapere i prestiti scaduti...."<<endl;
cin>>scelta;
switch(scelta){

case 1:{
cout<<"Dimmi il codice del libro....."<<endl;
cin>>codl;
while(elenco_libri[i].codice==codl)
{ i++; }

if (elenco_libri[i].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<<"dal giorno"<<giorno; //CONTROLLARE DATA
cout<<"la scheda relativa all'utente che ha in prestitoil libro e la seguente...:"<<endl;

while(elenco_utenti[k].codice==elenco_prestiti[j].code_utente)
{ k++; }

cout<<elenco_utenti[i].cognome<<endl;
cout<<elenco_utenti[i].recapito<<endl;
cout<<elenco_utenti[i].mail<<endl;
cout<<elenco_utenti[i].codice<<endl;
cout<<elenco_utenti[i].prestiti<<endl;

}


qui e la funzione prestiti dove sono arrivato sino ad ora mi blocco sulla variabile GIORNO nella quale dovrebe esserci la data del prestito che pensavo di mettere string che dici?
aaa
09/03/07 14:17
corey891
veramente io lo farei con gli archivi. crei un record dove metti i dati che ti interessando, li inserisci in input e fai un menù (nel main) dove puoi scegliere le funzioni da usare (con un case break)
aaa
06/01/10 12:40
gianlu666
Ciao!
Sono nuovo iscritto del forum.
Mi è stato assegnato lo stesso progetto e non ho conoscienze specifiche in merito a classi oggetti e gestione degli stessi.
Puoi mandarmi un PM, se possibile vorrei avere i file del programma da te creato in allegato?
Mi sarebbero davvero di grandissimo aiuto!
Ti ringrazio anticipatamente!
Devo consegnare il tutto entro una settimana.
Ciao!
aaa
06/01/10 13:10
nessuno
Però, un forum di programmazione non è un posto dove trovi i compiti fatti e tanti saluti.

Posta il tuo specifico problema, con il codice che hai scritto e ti viene dato un aiuto ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
06/01/10 13:47
netarrow
Postato originariamente da gianlu666:
Mi è stato assegnato lo stesso progetto e non ho conoscienze specifiche in merito a classi oggetti e gestione degli stessi.


il progetto magari ti è stato assegnato proprio per darti le conoscienze specifiche in merito a classi, oggetti e gestione degli stessi :D
aaa
06/01/10 16:56
gianlu666
Postato originariamente da netarrow:

Postato originariamente da gianlu666:
Mi è stato assegnato lo stesso progetto e non ho conoscienze specifiche in merito a classi oggetti e gestione degli stessi.


il progetto magari ti è stato assegnato proprio per darti le conoscienze specifiche in merito a classi, oggetti e gestione degli stessi :D


So in linea di massima come procedere.
Devo inizializzare la classe libro con all'interno tutte le info necessarie (autore titolo data), per avere la possibilità di aggiungere i libri come oggetti.
Devo inizzializzare una classe utenti, per inizializzare tutti coloro i quali hanno accesso ai prestiti, con le relative informazioni (nome cognome telefono mail).
Per collegare i libri all'utente che li ha in prestito pensavo di munire ogni libro di un codice. Resta il fatto che se un utente ha più libri in prestito dovrei cambiare il formato della classe utente per aggiungere più numeri corrispondenti ai libri (se un utente nno ha libri in prestito pensavo di utilizzare lo 0 che non verrà assegnato a nessun libro). Se un libro è in prestito deve poter essere collegato ad un solo utente. Mi viene richiesto di memorizzare la lista libri ed utenti in un file, tale da poter esssere riaperto successivamente(per aggiungere nuovi prestiti, eliminare libri dalla lista). Ora, so in teoria come si fa a salvare su file in output, ma come faccio a fare riconoscere al programma che quello che è stato salvato all'apertura precedente dell'eseguibile su file formato txt è una lista di oggetti? Per eliminare gli oggetti devo imparare la teoria su costruttori e distruttori?


Non voglio il compito fatto e butterò in nottata giù qualcosa, ma sono consapevole di non essere all'altezza di quanto richiesto!

Grazie!
aaa