







/*Si vuole gestire i servizi di un'agenzia di recapiti. Ogni agenzia denotata da nome e indirizzo e mantiene la
*collezione dei recapiti che devono essere effettuati. Le informazioni di interesse per ciascun recapito sono: un
*codice alfanumerico, il mittente, il destinatario, la data di consegna, e lo stato del recapito (che pu essere: '
*in giacenza', 'in consegna', 'consegnato', oppure 'sconosciuto').
* Per rappresentare le date scrivere una opportuna classe Data.
*/
//DA TESTARE ANCORA TUTTO
class NodoLista{
public String codice;
public String mittente;
public String destinatario;
public Data data;
public String stato;
public NodoLista next;
public NodoLista(){
codice=null;
mittente=null;
destinatario=null;
data=null;
stato=null;
next=null;
}
//un codice, un mittente, un destinatario e una data,
public NodoLista(String cod, String mit, String des, Data d){
codice=cod;
mittente=mit;
destinatario=des;
data=d;
stato="in giacenza";
next=null;
}
}
class Data{
public int giorno;
public String mese;
public int anno;
}
public class agRecapiti{
private String nome;
private String indirizzo;
private NodoLista nodoinit;
public agRecapiti(){
nome=null;
indirizzo=null;
nodoinit=null;
}
//crea: che, dati il nome e l'indirizzo di un'agenzia, crea un oggetto rappresentante l'agenzia,
//senza alcun recapito da consegare.
public agRecapiti(String n, String i){//OK
nome=n;
indirizzo=i;
}
//nome: che restituisce il nome dell'agenzia;
public String nome(){//OK
return this.nome;
}
//indirizzo: che restituisce l'indirizzo dell'agenzia;
public String indirizzo(){//OK
return this.indirizzo;
}
//quantiDaConsegnare: che restituisce il numero di recapiti da effettuare (cio quelli il cui stato 'in giacenza');
public int quantiDaConsegnare(){
int cont=0;
NodoLista p=new NodoLista();
p=nodoinit;
while(p!=null){
if(p.stato.equals("in giacenza")){
cont++;
p=p.next;
}
else p=p.next;
}
return cont;
}
//quantiConsegnati: che restituisce il numero di recapiti effettuati (cio quelli il cui stato 'consegnato') ;
public int quantiConsegnati(){
int cont=0;
NodoLista p=new NodoLista();
p=nodoinit;
while(p!=null){
if(p.stato.equals("consegnato")){
cont++;
p=p.next;
}
else p=p.next;
}
return cont;
}
//aggiungi: che, dati un codice, un mittente, un destinatario e una data, aggiunge un nuovo recapito
//con le informazioni date e con stato pari a 'in giacenza';
public void aggiungi(String cod, String mit, String des, Data d){
NodoLista a= new NodoLista(cod, mit, des, d);
a.next=nodoinit;
nodoinit=a;
}
//cambiaDestinatario: che, dati un codice e un nuovo destinatario, cambia il destinatario del recapito
//con il codice dato; se tale codice non esiste lancia un'eccezione;
public void cambiaDestinatario(String cod, String des)throws RuntimeException{
NodoLista p=new NodoLista();
p=nodoinit;
while(p!=null){
if(p.codice.equals(cod)){
p.destinatario=des;
return;
}
else p=p.next;
}
throw new RuntimeException("Il codice passato non esiste");
}
//inConsegna: che, dato il codice di un recapito, cambia lo stato in 'in consegna'; se non esiste un
//recapito con il codice dato o il recapito risulta gi consegnato, lancia un'eccezione;
public void inConsegna(String cod)throws RuntimeException{
NodoLista p=new NodoLista();
p=nodoinit;
while(p!=null){
if(p.codice.equals(cod)){
if(p.stato.equals("consegnato")){
throw new RuntimeException("Il pacco gi stato consegnato");
}
else p.stato="in consegna"; return;
}
else p=p.next;
}
throw new RuntimeException("Il codice passato non esiste");
}
//consegnato: che, dato il codice di un recapito, cambia lo stato in 'consegnato'; se non esiste
//un recapito con il codice dato o il recapito risulta gi consegnato, lancia un'eccezione;
public void consegnato(String cod)throws RuntimeException{
NodoLista p= new NodoLista();
p=nodoinit;
while(p!=null){
if(p.codice.equals(cod)){
if(p.stato.equals("consegnato")){
throw new RuntimeException("Il pacco risulta gi consegnato");
}
else p.stato="consegnato"; return;
}
else p=p.next;
}
throw new RuntimeException("Il codice non esiste");
}
//rientrato: che, dato il codice di un recapito, cambia lo stato in 'sconosciuto'; se non
//esiste un recapito con il codice dato o il recapito non risultava in consegna, lancia un'eccezione;
public void rientrato(String cod)throws RuntimeException{
NodoLista p=new NodoLista();
p=nodoinit;
while(p!=null){
if(p.codice.equals(cod)){
if(!p.stato.equals("in consegna")){
throw new RuntimeException("Il pacco non era in consegna");
}
else p.stato="sconosciuto"; return;
}
else p=p.next;
}
throw new RuntimeException("Il codice non esiste");
}
//eliminaConsegnati: che elimina tutti i recapiti il cui stato 'consegnato';
public void eliminaConsegnati(){
//Nodo Generatore, attenzione!!!
NodoLista p=new NodoLista();
p.next=nodoinit;
while(p.next!=null){
if(p.next.stato.equals("consegnato")){
p.next=p.next.next;
p=p.next;
}
else p=p.next;
}
nodoinit=p.next;
}
//tuttiConsegnatiDestinatario: che, dato il nome di un destinatario, restituisce un array di stringhe contenente
//tutte le informazioni dei recativi consegnati (cio il cui stato 'consegnato') a tale destinatario;
//ciascuna stringa deve riassumere tutti i dati del recapito.
public String[] tuttiConsegnatiDestinatario(String des){
int cont=0;
NodoLista p=new NodoLista();
p=nodoinit;
while(p!=null){
if(p.destinatario.equals(des)&&p.stato.equals("con segnato")){
cont ++; p=p.next;
}
else p=p.next;
}
String[] v=new String[cont];
p=nodoinit;
for(int i=0;i<v.length&&p!=null;i++){
if(p.destinatario.equals(des)&&p.stato.equals("con segnato")){
v[i]="Codice: "+p.codice+" Mittente: "+p.mittente+" Destinatario: "+p.destinatario;
p=p.next;
}
else p=p.next;
}
return v;
}
public void stampaAgenzia(){
System.out.println(this.nome+" "+this.indirizzo);
}
public void stampaLista(){
NodoLista p=new NodoLista();
p=nodoinit;
while(p!=null){
System.out.println("Codice: "+p.codice+" Mittente: "+p.mittente+" Destinatario: "+p.destinatario+" Stato: "+p.stato);
p=p.next;
}
}
}




haloa!!
minchia quanto avete scritto ieri sera...


we rexal!!
già arrivato in Kuwait??
beh come sta il baobabbo??ha avuto ripercussioni di cambiamento d'aria??![]()




Maduuuuuu ce call!
(Fa caldo!)


Qui in paese si sta benissimo, meno male che c'è la campagna