Corso di Laurea in Tecnologie Web e Multimediali
Esame di Programmazione e laboratorio, A.A. 2005/06
Progetto per il primo appello (20, 24/03/2006):
Visualizzazione in istogramma dei dati letti da file

Premessa

Leggete bene tutte le istruzioni! In particolare i paragrafi modalità e raccomandazioni.

Introduzione

Si richiede di implementare un programma che permetta di visualizzare in forma di istogramma i dati relativi ai punti realizzati dai giocatori di una squadra di basket, in modo semplificato.

Descrizione del lavoro

Il programma deve visualizzare un'interfaccia utente grafica contenente almeno 3 pulsanti e 2 aree di testo. La figura 1 illustra un possibile aspetto dell'interfaccia. La finestra del programma deve essere ridimensionabile e i componenti devono scalare automaticamente quando l'utente modifica le dimensioni della finestra.

La GUI
Figura 1

Quando l'utente clicca sul pulsante "Leggi Giocatori", il programma deve leggere da un file di testo il numero di giocatori che compongono la squadra, leggere da un altro file di testo il nome dei giocatori della squadra e visualizzare i nomi dei giocatori letti nell'area di testo a sinistra. Ad esempio, se il file con il numero dei giocatori contiene

10

e il file con i nomi dei giocatori contiene

Cino
Dino
Gino
Lino
Mino
Nino
Pino
Rino
Tino
Vino

l'interfaccia utente si presenta come illustrato in figura 2.

La GUI con i nomi dei giocatori
Figura 2

Quando poi l'utente clicca sul pulsante "Leggi Punti", il programma deve leggere da un terzo file di testo i punti segnati da ogni singolo giocatore e visualizzare un istogramma "verticale" (non orizzontale) con la somma dei punti segnati da ogni singolo giocatore. Anche il terzo file deve essere un file di testo (ossia visualizzabile da linea di comando e creabile/modificabile con un editor di testo), e deve avere un formato predefinito: su ogni linea, deve comparire il nome del giocatore, uno spazio e il tipo di canestro segnato (da 1, 2 o 3 punti).

Ad esempio, un possibile file di punti è il seguente:

Gino 1
Dino 1
Lino 2
Gino 1
Mino 3
Mino 1
Nino 2
Pino 1
Rino 1
Gino 3
Vino 1
Gino 2
Gino 2
Gino 1
Tino 2
Gino 1
Nino 2
Mino 2
Dino 2
Rino 3
Gino 1
Gino 1
Gino 1
Gino 1
Gino 1
Gino 1

che porta a un istogramma come quello illustrato in figura 3.

La GUI con l'istogramma
Figura 3

I nomi dei tre file vanno passati al programma sulla linea di comando secondo questa sintassi:

java NomeProgramma FileConNumeroGiocatori FileGiocatori FilePunti

Si noti che i singoli canestri rappresentati nel file dei punteggi vanno sommati giocatore per giocatore per ottenere i valori da visualizzare nell'istogramma; nell'esempio, questi valori sono:

Cino 0
Dino 3
Gino 17
Lino 2
Mino 6
Nino 4
Pino 1
Rino 4
Tino 2
Vino 1

Si noti anche l'area di testo a destra usa un font monospaziato per la visualizzazione corretta dell'istogramma. Fate riferimento alla classe java.awt.Font. Anche il metodo java.lang.Integer.parseInt(String) vi potrebbe essere molto utile…

Il pulsante "Esci" serve, ovviamente, a chiudere la finestra e terminare l'esecuzione del programma.

Il programma deve essere composto almeno delle seguenti classi:

L'interfaccia mostrata in figura è solo una delle molte possibili implementazioni, che viene fornita solo per esempio, e che quindi siete liberissimi di modificare. Potete anche apportare delle migliorie.

Modalità

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 (leggete bene le raccomandazioni!). 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 assolutamente in gruppi di 3 persone e tutti i componenti di un gruppo devono conoscere tutti i dettagli del progetto, come se l'avessero realizzato da soli.
Progetti realizzati da gruppi di meno o più persone non verranno valutati. In caso di difficoltà nel trovare compagni è possibile mandare una email ai docenti che provvederanno ad assegnare i compagni mancanti. L'unica eccezione a questa regola vale per gli studenti iscritti come lavoratori che devono comunque richiedere prima l'autorizzazione ai docenti via email. Senza autorizzazione il progetto non verrà valutato.

Va preparata una breve relazione, preferibilmente (ma non necessariamente) in XHTML + CSS, sul lavoro effettuato. La relazione deve contenere:

  1. Una breve analisi del problema ed una descrizione intuitiva delle specifiche (meno di 2 pagine!).
  2. Le eventuali semplificazioni apportate rispetto alla versione completa richiesta (poche righe). Ovviamente, le semplificazioni porteranno a valutazioni inferiori. Inoltre, le semplificazioni vanno adeguatamente motivate.
  3. Eventuali aggiunte (cose in più non richieste; ad esempio uso di componenti dell'AWT non spiegati a lezione, uso delle Swing, aggiunta di funzionalità non richieste, aggiunta di menu, ecc. ecc.).
  4. Le motivazioni di tutte le scelte effettuate (ad esempio, perché avete apportato una semplificazione, perché avete deciso di usare certi componenti grafici e non altri, perché avete fatto certe scelte di progetto piuttosto che altre, e così via).
  5. Il listato completo del programma, con commenti, scritto in font monospaziato, ossia non proporzionale (come questo: la "i" e la "m" occupano la stessa larghezza) e opportunamente incolonnato ("indentato").
  6. Una "prova di esecuzione" (di circa 3 pagine) che illustri il funzionamento del programma: una spiegazione con testo e figure del modo in cui il programma funziona (aspetto dell'interfaccia utente, esempio di esecuzione adeguatamente spiegato, ecc.)

Il progetto va consegnato inderogabilmente entro l'inizio della prova scritta dell'appello, ossia il 20 marzo 2006 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:

Il progetto in forma cartacea può essere consegnato a mano subito prima del compito scritto oppure può essere consegnato nei giorni precedenti lo scritto direttamente a uno dei docenti o nella casella della posta del dipartimento di matematica e informatica.

NOTA Questo progetto è valido per chi intende sostenere il primo appello (20, 24 marzo 2006), e va quindi consegnato entro la scadenza del 20 marzo ore 9:00 (inizio della prova scritta). Non si accetteranno ritardi per nessun motivo. Per gli appelli successivi saranno predisposti altri progetti.

Raccomandazioni

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:

Altre raccomandazioni:

Per eventuali dubbi rivolgersi ai docenti, o durante l'orario di ricevimento o per posta elettronica.