Ragazzi, ho un disperato bisogno del vostro aiuto.... ad un esame universitario bisogna presentare un progetto di programma java, ma io non ho mai fatto JAVA!
Ho cominciato a studiare da poco , sono arrivato all'uso di vettori, creazioni di classi diverse, programmazione ad oggetti(un po') , ma questo e' veramente "out of bound" :S nemmeno se studiassi altri 2 anni penso di riuscirci quindi vi prego aiutatemi , ogniuno come puo'
ecco la traccia del programma:
Si consideri il sistema informatico di gestione di una libreria on line. La libreria dispone di un
magazzino di libri che si suppongono per semplicità rappresentati tramite un codice identificativo
alfanumerico univoco ISBN (una stringa) associato al numero di copie presenti in magazzino. Il
singolo libro si suppone essere un’istanza della classe Java Libro avente come campi dati l’ISBN e
il numero di copie presenti in magazzino. Il contenuto del magazzino e’ mantenuto in un file di
testo come coppie <ISBN> <Numero Copie>:
I58603B452 100
I732A3B625 30
La libreria e’ un’istanza di una classe Libreria che mantiene aggiornato il file del magazzino. La
classe Libreria implementa metodi per:
1. aggiungere un libro dal catalogo (specificando ISBN e il numero di copie eventualmente
acquistate)
2. rifornire le giacenze di un libro già presente in catalogo (specificandone ISBN e numero di
copie acquistate)
3. vendere una certa quantità di libri ad un cliente previo controllo che la quantità richiesta sia
disponibile in magazzino (specificando ISBN del libro, codice fiscale del cliente e numero
di copie acquistate)
La libreria deve tenere traccia sia dell’anagrafica dei suoi clienti che della lista delle vendite
effettuate, al fine di poter calcolare un saldo delle vendite con scadenza periodica. Un cliente e’
istanza di una classe Cliente contenente codice fiscale, nome e cognome del cliente. L’anagrafica si
suppone mantenuta in un file di testo come n-ple <codice fiscale> <nome> <cognome>. Ad
esempio:
PNCPLN70U26H501R Pinco Pallino
SRDLBR20T26H501F Alberto Sordi
MNFSTN23R06H501I Nino Manfredi
Una vendita e’ un’istanza della classe Vendita e deve tener traccia della data in cui la vendita e’
stata effettuata (come giorno mese e anno), dell’ISBN del libro acquistato, del numero di copie e del
codice fiscale del cliente che ha fatto l’acquisto. La libreria registra tali informazioni in un file di
testo. La struttura di tale file e’ a scelta dello studente, purché contenga le informazioni sopra
indicate. Tale file e’ aggiornato dalla classe Libreria ogni volta che viene effettuata una vendita.
Si implementi una funzione saldo Periodico della classe Libreria che prepari i saldi di vendita di
un insieme di libri per un determinato periodo. La funzione prende in ingresso:
• Un vettore di istanze della classe Libro
• Una data di inizio periodo
• Una data di fine periodo
e calcola un insieme di vettori di istanze della classe Vendita (uno per ogni libro della lista)
contenente le vendite di ogni libro nel dato periodo (se ne sono state effettuate). Tali risultati
andranno poi scritti in un file di output che riporti ISBN di ogni libro, il totale di copie vendute e la
lista di vendite effettuate nel periodo con nome e cognome del compratore e numero di copie
acquistate.
Suggerimenti:
1) La classe Libreria implementa un metodo che legge i file di ingresso e crea strutture
dati interne che mantengono un elenco ordinato di classi create sulla base delle
informazioni presenti nei file. Le operazioni vengono effettuate sulle strutture dati
create in memoria, mentre un metodo simmetrico per scrivere i dati nei file di output
ricostruisce i file dopo che le operazioni sono state effettuate.
2) Dato che un cliente può comperare più libri, e’ opportuno mantenere separate le
gestioni dell’anagrafica clienti e delle vendite (si possono ad esempio implementare
funzioni specifiche per la creazione/cancellazione di un cliente e presupporre la
vendita solo per i clienti registrati).
3) Per rappresentare le date si possono usare classi specifiche che implementino i
metodi di confronto. Si sconsiglia l’uso delle classi di gestione delle date di Java,
piuttosto macchinose e poco intuitive.
4) Nel caso si volessero registrare nomi composti nell’anagrafica clienti, e’ opportuno
sostituire gli spazi con caratteri “_” onde evitare di complicare le funzioni di
gestione dei file (es. “De_Rossi” invece di “De Rossi”).
5) Ove necessario si consideri la classe Rubrica studiata a lezione come esempio
generale di implementazione di una classe per la gestione di un file di informazioni.
per favore , vi prego , vi supplico, aiutatemi come meglio potete, io sono riuscito a fare questo per adesso... nemmeno so utlizzare il block notes come database
Ecco le mie classi:
//classe creata per l'input:
import java.io.*;
class Leggi
{
private InputStreamReader a;
BufferedReader b;
String s;
public Leggi()
{ s="" ;
a= new InputStreamReader (System.in);
b= new BufferedReader (a);
}
public int Leggi_int()
{ int x;
try
{
s=b.readLine();
x=Integer.parseInt(s);
}
catch(Exception t)
{
x=0;
}
return x;
}
public String Leggi_String()
{
String str;
try
{
str=b.readLine();
}
catch(Exception t)
{
System.out.println("Input da tastiera errato");
}
return str;
}
}
//classe realizzata di prova...
import java.io.*;
class Libreria
{
private String ISBN;
private int ncopie=0;
private int controlloisbn=0;
private String codicefiscale;
public void aggiungilibro()
{ Leggi k= new Leggi();
System.out.println("Inserire l'ISBN del libro di cui si vogliono rifornire le giacenze (10 caratteri alfanumerici): ");
ISBN=k.Leggi_String();
controlloisbn=ISBN.length();
while(controlloisbn!=10)
{
System.out.println("Si e' inserito un numero ISBN non valido. Inserire un ISBN corretto (10 caratteri alfanumerici) :");
ISBN=k.Leggi_String();
controlloisbn=ISBN.length();
}
System.out.println("Inserire il numero di copie acquistate del libro: ");
ncopie=k.Leggi_int();
while(ncopie<0)
{
System.out.println("Si e' inserito un numero di copie non valido. Inserire un numero corretto di copie: ");
ncopie=k.Leggi_int();
}
return ;
}
public void riforniscicopie()
{ Leggi k= new Leggi();
System.out.println("Inserire l'ISBN del libro di cui si vogliono rifornire le giacenze (10 caratteri alfanumerici) : ");
ISBN=k.Leggi_String();
controlloisbn=ISBN.length();
while(controlloisbn!=10)
{
System.out.println("Si e' inserito un numero ISBN non valido. Inserire un ISBN corretto (10 caratteri alfanumerici) :");
ISBN=k.Leggi_String();
controlloisbn=ISBN.length();
}
System.out.println("Inserire il numero di copie da aggiungere al catalogo: ");
ncopie=k.Leggi_int();
while(ncopie<0)
{
System.out.println("Si e' inserito un numero di copie non valido. Inserire un numero corretto di copie: ");
ncopie=k.Leggi_int();
}
return ;
}
public void vendilibri()
{
Leggi k= new Leggi();
int copievendute=0;
System.out.println("Inserire il codice fiscale del cliente: ");
codicefiscale=k.Leggi_String();
System.out.println("Inserire l'ISBN del libro di cui si vogliono rifornire le giacenze (10 caratteri alfanumerici) : ");
ISBN=k.Leggi_String();
controlloisbn=ISBN.length();
while(controlloisbn!=10)
{
System.out.println("Si e' inserito un numero ISBN non valido. Inserire un ISBN corretto (10 caratteri alfanumerici) :");
ISBN=k.Leggi_String();
controlloisbn=ISBN.length();
}
System.out.println("Inserire il numero di copie vendute: ");
copievendute=k.Leggi_int();
while(copievendute>0)
{
System.out.println("Si e' inserito un numero di copie non valido. Inserire un numero di copie vendute corretto :");
copievendute=k.Leggi_int();
}
if(ncopie<copievendute)
{
System.out.println("Siamo spiacenti: il numero di copie inserito non e' disponibile ");
copievendute=0;
}
else
ncopie=ncopie-copievendute;
return ;
}
}
COME POSSO CONTINUARE?