Guarda (avendo un po' di tempo a disposizione) ho progettato una semplice applicazione simile a quella che vuoi fare tu.
Completamente progettata secondo un modello ad oggetti, dacci uno sguardo.
Riuscirai anche a risolvere il problema della data.
primo file:
Appuntamento.java
Codice: Seleziona tutto
package org.agenda;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Un appuntamento è il dato principale contenuto in un'agenda
* Ho cercato di seguire la tua descrizione ovviamente puoi aggiungere attributi come vuoi
* e puoi creare una agenda che gestisce più cose, ad esempio che funge anche da rubrica telefonica
*
*/
public class Appuntamento
{private Date data;
private String ora;
private String nome;
private String cognome;
private String descrizione;
private String priorita;
public Appuntamento(String data, String ora, String nome, String cognome, String descrizione, String priorita)
{try
{this.setData(data);
}
catch (ParseException e)
{e.printStackTrace();
}
this.setOra(ora);
this.setNome(nome);
this.setCognome(cognome);
this.setDescrizione(descrizione);
this.setPriorita(priorita);
}
public String getCognome()
{return this.cognome;
}
public void setCognome(String cognome)
{this.cognome = cognome;
}
public Date getData()
{return this.data;
}
/**
* @param dataString: Stringa di testo da trasformare in data
* @throws ParseException: eccezione lanciata se la stringa non è una data corretta
* ti ricordo che l'eccezione viene sollevata (in caso di errore) dal metodo SimpleDateFormat.parse
* e poichè non c'è un try catch l'eccezione viene rilanciata alla funzione di livello superiore.
*/
public void setData(String dataString) throws ParseException
{//System.out.println("setData("+dataString+");");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
this.data = sdf.parse(dataString);
//System.out.println("data="+this.data);
}
public String getDescrizione()
{return this.descrizione;
}
public void setDescrizione(String descrizione)
{this.descrizione = descrizione;
}
public String getNome()
{return nome;
}
public void setNome(String nome)
{this.nome = nome;
}
public String getOra()
{return ora;
}
public void setOra(String ora)
{this.ora = ora;
}
public String getPriorita()
{return priorita;
}
public void setPriorita(String priorita)
{this.priorita = priorita;
}
/**
* Oltre a tutte le funzioni di get e di set sugli attributi privati si può scrivere un funzione di
* stampa... in questo caso la stampa è fatta a riga di comando, ma potrebbe interagire con una classe
* visuale se stai progettando un'applicazione con interfaccia grafica.
* L'unica cosa da migliorare sarebbe la stampa della data... per fare in fretta ho utilizzato un metodo
* deprecato.
*/
public void stampa()
{System.out.println(this.getData().toLocaleString()+" ore: "+this.getOra());
System.out.println("Persona: "+this.getNome()+" "+this.getCognome());
System.out.println("Descrizione: "+this.getDescrizione());
System.out.println(" "+this.getPriorita()+"\n\n");
}
}
secondo file:
Agenda.java
Codice: Seleziona tutto
package org.agenda;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
/**
* L'agenda è una collezione di Appuntamenti
* Ho definito solo due funzioni, per la creazione di un appuntamento e per la lettura di uno di esso.
* Nel mondo del software sono almeno quattro i metodi base quindi se ne dovrebbero fare almeno altri due.
* Sto parlando dei metodi CRUD
* Create = creazione di una nuova risorsa;
* Read = lettura di una risorsa create;
* Update = modifica di una risorsa esistente;
* Delete = cancellazione di una risorsa.
*
*/
public class Agenda
{private Vector<Appuntamento> agenda;
public Agenda()
{this.agenda = new Vector<Appuntamento>();
}
void inserisciAppuntamento(Appuntamento a)
{this.agenda.add(a);
}
/**
* Questo metodo resitutisce (metodo READ dei quattto metodi CRUD) un elenco di Appuntamenti
* memorizzate nell'agenda (per data o tutte dipende dal parametro dataString).
* Se dataString è uguale a null restituisco tutti gli elementi...
* ... altrimenti solo quelli in cui la data è uguale
*/
public Vector<Appuntamento> getAppuntamenti(String dataString)
{Date data = null;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try
{if (dataString!=null)
{data = sdf.parse(dataString);
}
}
catch (ParseException e)
{System.out.println("Errore nell'inserire la data... ritorno tutti gli appuntamenti");
}
Vector risultato = new Vector<Appuntamento>();
for (int i=0;i<this.agenda.size(); i++)
{if (this.agenda.get(i).getData().equals(data) || data==null)
risultato.addElement(this.agenda.get(i));
}
return risultato;
}
}
terzo e ultimo file:
Main.java
Codice: Seleziona tutto
package org.agenda;
import java.util.Vector;
public class Main
{/** Il codice main non deve fare altro che gestire gli oggetti creati
* Il Java è un linguaggio di programmazione ad oggetti bisogna pensare ad oggetti
* Puoi migliorare il codice facendo delle azioni dinamicamente... consiglio non perdere
* molto tempo con il parsing da stringa di comando poiché esistono tante classi visuali
* che ti consentono di fare applicazioni grafiche che sono più semplici sia per il programmatore
* che per l'utente.
* Fare il parsing da stringhe è abbastanza complicato e inutile.
*/
public static void main(String[] args)
{System.out.println("Creo una nuova agenda\n\n\n");
Agenda agenda = new Agenda();
// inizializzo l'agenda
Appuntamento app1 = new Appuntamento("18/7/2008","12:00", "Antonio", "Alonzi", "In arte daemon_nio, fargli gli auguri di compleanno","massima priorità");
agenda.inserisciAppuntamento(app1);
Appuntamento app2 = new Appuntamento("1/1/2008","00:00","Mario","Rossi","veglione di capodanno","importante");
agenda.inserisciAppuntamento(app2);
Appuntamento app3 = new Appuntamento("13/3/2008","10:30","Pippo","Esposito","appuntamento dal dentista","importante");
agenda.inserisciAppuntamento(app3);
// stampo tutti gli appuntamenti
System.out.println("Stampo tutti gli appuntamenti \n\n");
Vector<Appuntamento> risultato = agenda.getAppuntamenti(null);
for (int i=0;i<risultato.size();i++)
{risultato.get(i).stampa();
}
// stampo tutti gli appuntamenti del primo gennaio 2008
System.out.println("Stampo tutti gli appuntamenti del primo gennaio 2008\n\n");
risultato = agenda.getAppuntamenti("1/1/2008");
for (int i=0;i<risultato.size();i++)
{risultato.get(i).stampa();
}
}
}
come vedi sono entrambi nello stesso package org.agenda
se hai problemi a farla girare chiedi pure... ma è veramente un'applicazione molto semplice.