Si richiede di implementare un programma che, tramite un'interfaccia grafica, consenta di gestire alcune statistiche di una squadra di pallacanestro.
Il programma elabora una serie di file che contengono i dati delle singole partite, calcola e visualizza le classifiche marcatori, media punti e numero falli. Si invoca con
java Statistiche <nomeFileListaPartite>
Il file <nomeFileListaPartite>
contiene nella
prima riga il numero di partite, in quelle successive i nomi dei file
che contengono i dati delle partite. Ad esempio:
3 partita1.dat partita2.dat partita3.dat
Ogni file contenente i dati di una partita è composto da tre sezioni ed è fatto così:
//giocatori numgiocatori nomegiocatore1 numeromaglia nomegiocatore2 numeromaglia ... //falli numeromaglia numerofalli numeromaglia numerofallli ... //canestri numeromaglia punti numeromaglia punti
Ad esempio:
//giocatori 2 Mauro 4 Piero 5 //falli 4 2 5 3 //canestri 4 2 4 2 5 3 4 1 5 2 4 2
Questo file rappresenta una partita con 2 giocatori: Mauro con la maglia numero 4 e Piero con la maglia numero 5. Mauro (num. 4) ha fatto 2 falli e ha segnato 3 canestri da 2 punti ed uno da 1 punto. Piero ha 3 falli, un canestro da 3 e un canestro da 2. Osservate che mentre la somma del numero di falli è già indicata nel file (perché, possiamo immaginare, viene scritta a fine partita), la somma dei punti realizzati da ogni giocatore non lo è (perché viene aggiunta una riga ad ogni canestro realizzato), e quindi, ad esempio, per capire quanti falli ha commesso Piero basta leggere una riga mentre per capire quanti punti ha realizzato Piero bisogna leggere più righe e fare una somma.
Una volta invocato, il programma Statistiche
deve elaborare
tutti i file che contengono i dati delle partite e permettere di
visualizzare:
Un esempio di interfaccia del programma è visibile nelle figure seguenti. Nella prima è riportata la classifica dei marcatori (scelta dal menu corrispondente); nella seconda la media di punti realizzati per partita.
Le videate sono state ottenute usando questi file.
Ovviamente, questa è solo una delle molte possibili implementazioni, che viene fornita solo per esempio, e che quindi siete liberissimi di modificare. Potete anche apportare delle migliorie. Ad esempio, potete permettere il salvataggio della classifica in formato HTML, o la visualizzazione delle classifiche dopo una giornata, dopo 2 giornate, dopo 3 e così via; potete scrivere l'interfaccia che consente di scrivere i vari file; potete usare pulsanti e campi di testo per lettura da e salvataggio su file; ecc. ecc.
Il livello di complessità del programma prodotto può essere deciso liberamente dagli studenti; ovviamente, progetti più articolati e complessi otterranno una valutazione migliore di progetti più semplici, ma si consiglia di fare "poco e bene" piuttosto che "tanto e male": progetti semplici possono comunque ottenere il massimo punteggio, purché ben fatti. La durata prevista del lavoro, considerando un gruppo di 3 persone che lavorano a tempo pieno, è di una settimana al massimo.
Il progetto va realizzato in gruppi di 3 persone (a meno di accordi particolari con il docente, possibili solo in casi di reale e comprovata necessità), e tutti i componenti di un gruppo devono conoscere tutti i dettagli del progetto, come se l'avessero realizzato da soli.
Va preparata una breve relazione, preferibilmente (ma non necessariamente) in XHTML + CSS, sul lavoro effettuato. La relazione deve contenere:
come
questo: la "i" e la "m" occupano la stessa larghezza
) e
opportunamente incolonnato ("indentato").Il progetto va consegnato inderogabilmente entro l'inizio
della prova scritta dell'appello, ossia il 9 dicembre 2003 ore 9:00,
sia in forma cartacea (1 copia), sia via posta elettronica (2
copie, una per docente, indirizzi: coppola@dimi.uniud.it
e
mizzaro@dimi.uniud.it
). Si richiede un
unico messaggio:
NOTA Questo progetto è valido per chi intende sostenere l'esame nell'appello straordinario (9, 15 dicembre 2003), e va quindi consegnato entro la scadenza. Non si accetteranno ritardi per nessun motivo. Per gli appelli successivi saranno predisposti altri progetti.
Alla valutazione del progetto concorrono vari aspetti (rilevanza delle semplificazioni apportate, qualità della relazione, ecc.), ma è di prioritaria importanza la qualità del programma prodotto, soprattutto per quanto concerne le caratteristiche di leggibilità, modificabilità...Esempi di criteri per la valutazione:
setResizable(flase)
)? E quindi la si può
usare su schermi di varie dimensioni?Altre raccomandazioni:
setPreferredSize
. Piuttosto
pensate ad un layout che funzioni con qualsiasi dimensione
sensata.x = 2; //assegno 2 a x
:
qualunque programmatore sa cosa vuol dire x=2;
!!static
solo perché il compilatore dà
errore. Usatelo solo se serve veramente.public
solo perché il compilatore dà
errore. Usatelo solo se serve veramente.Per eventuali dubbi rivolgersi ai docenti, o durante l'orario di ricevimento o per posta elettronica.