Salve a tutti, ho un problema con il seguente esercizio:
"Un mobilificio vuole informatizzare la gestione dei clienti e dei preventivi. I dati relativi ai clienti sono memorizzari in un file "clienti.txt", organizzato come segue:
Codice Fiscale
Nome
Cognome
Indirizzo

Codice Fiscale
Nome
Cognome
Indirizzo

.....
I preventivi sono memorizzati in un file "preventivi.txt". Ogni preventivo contiene i seguenti dati organizzati nel seguente modo:
Identificativo preventivo
Data
Codice Fiscale richiedente
Sconto applicato
Mobile1
TipoMobile1
Quantit�Mobile1
PrezzoMobile1
Mobile2
TipoMobile2
Quantit�Mobile2
PrezzoMobile2
....
#
Identificativo preventivo
Data
Codice Fiscale richiedente
Sconto applicato
Mobile1
TipoMobile1
Quantit�Mobile1
PrezzoMobile1
Mobile2
TipoMobile2
Quantit�Mobile2
PrezzoMobile2
....
Scrivere un programma che:
  • implementi le classi necessarie per la gestione dei preventivi
  • stampi l'elenco di tutti i preventivi con il costo previsto prima e dopo l'applicazione dello sconto
  • dato il nome ed il cognome di un cliente, stampi i dati di tutti i preventivi richiesti da tale cliente con il costo di ciascuno di essi al netto dello sconto"


per ora ho scritto le seguenti classi:
  • La classe clienti

codice:
import java.util.Scanner;

public class clienti 
{
	public clienti(String CodiceFiscale, String Nome, String Cognome, String Indirizzo)
	{
		this.CodiceFiscale = CodiceFiscale;
		this.Nome = Nome;
		this.Cognome = Cognome;
		this.Indirizzo = Indirizzo;
	}
	
	public static clienti read(Scanner s)
	{
		if(!s.hasNextLine())
			return null;
					
		String CodiceFiscale = s.nextLine();
		String Nome = s.nextLine();
		String Cognome = s.nextLine();
		String Indirizzo = s.nextLine();	
		
		return new clienti(CodiceFiscale,Nome,Cognome,Indirizzo);
	}
	
	public String getCf()
	{
		return this.CodiceFiscale;
	}
	
	public String getName()
	{
		return this.Nome;
	}
	
	public String getCognome()
	{
		return this.Cognome;
	}
	
	public String getIndirizzo()
	{
		return this.Indirizzo;
	}
	public String toString()
	{
		return "Codice Fiscale: " + this.CodiceFiscale + "\nNome: " + this.Nome + "\nCognome: " + this.Cognome + "\nIndirizzo: " + this.Indirizzo;
	}
	
	private String CodiceFiscale;
	private String Nome;
	private String Cognome;
	private String Indirizzo;
}
  • La classe mobile

codice:
import java.util.Scanner;

public class Mobile 
{
	private String tipo;
	private String quantita;
	private String prezzo;
	private String valore;


	public Mobile(String tipo, String valore, String quantita, String prezzo)
	{
		this.tipo = tipo;
		this.valore = valore;
		this.quantita = quantita;
		this.prezzo = prezzo;
	}
	
	public static Mobile read(Scanner s)
	{
		if(!s.hasNextLine())
			return null;
					
		String tipo = s.nextLine();
		String valore = s.nextLine();
		String quantita = s.nextLine();
		String prezzo = s.nextLine();	
		
		return new Mobile(tipo,valore,quantita,prezzo);
	}
	
	public String getTipo()
	{
		return this.tipo;
	}
	
	public String getValore()
	{
		return this.valore;
	}
	public String getQuantita()
	{
		return this.quantita;
	}
	
	public String getPrezzo()
	{
		return this.prezzo;
	}
	
	public String toString()
	{
		return "Mobile: " + tipo + "\nTipo: " + valore + "\nQuantit�: " + quantita + "\nPrezzo: " + prezzo;
	}


}
  • La classe preventivi

codice:
import java.util.ArrayList;import java.util.Scanner;


public class preventivi 
{
	private String PP;
	private String data;
	private String cf;
	private String sconto;
	private ArrayList<Mobile> mobili;


	public preventivi(String PP, String data, String cf, String sconto, ArrayList<Mobile> mobili)
	{
		this.PP = PP;
		this.data = data;
		this.cf = cf;
		this.sconto = sconto;
		this.mobili = mobili;
	}
	
	public static preventivi read(Scanner s)
	{
		if(!s.hasNextLine())
			return null;
				
		String PP = s.nextLine();
		String data = s.nextLine();
		String cf = s.nextLine();
		String sconto = s.nextLine();
		ArrayList mobili = new ArrayList<Mobile>();
		mobili.add(Mobile.read(s));
		
		return new preventivi(PP, data,cf, sconto, mobili);
	}
	
	public String toString()
	{
		return "Identificativo di preventivo: " + PP + "\nData: " + data + "\ncf: " + cf + "\nsconto: " + sconto + "\n" + mobili;
	}


}
I problemi che sto riscontrando sono:
  1. Nel metodo "read" delle diverse classi non so che condizione mettere affinch� possa leggere tutti i mobili, tutti i clienti e tutti i preventivi che sono nei file perch� ora come ora ne legge solo uno per file
  2. Nell'ultimo punto dell'esercizio, per associare nomi e preventivi, mi conviene usare una mappa?

Grazie in anticipo