Verifica Pratica – Gestione Dati con Classi
🎮 Gestionale Collezione Videogiochi
Gestione completa della tua libreria gaming: prezzi, valutazioni e statistiche di gioco
🎯 Obiettivo della Verifica
Completare un’applicazione C# Windows Forms per la gestione di una collezione personale di videogiochi. L’applicazione permette di:
- ✅ Registrare nuovi videogiochi con tutti i dati (titolo, piattaforma, genere)
- ✅ Calcolare automaticamente il valore orario in base alle ore giocate
- ✅ Visualizzare statistiche (valore totale collezione, ore giocate, valutazione media)
- ✅ Gestire piattaforme e generi diversi
- ✅ Esportare i dati in formato CSV per backup
- ✅ Classe Videogioco: Creare completamente con campi privati e validazione
- ✅ Metodo btnAggiungi_Click: Implementare la logica di aggiunta/modifica con calcolo valore
- ✅ Integrazione: Far comunicare correttamente Form e Classe con calcoli automatici
📁 Materiale Fornito
| Controllo | Nome | Scopo |
|---|---|---|
| TextBox | txtTitolo |
Titolo del videogioco |
| TextBox | txtCasaProduttrice |
Casa produttrice |
| ComboBox | cmbPiattaforma |
Piattaforma (PC, PlayStation 5, Xbox Series X, Nintendo Switch) |
| ComboBox | cmbGenere |
Genere (Azione, RPG, Sportivo, Strategia, Avventura) |
| TextBox | txtOreGiocate |
Ore giocate (0-2000) |
| TextBox | txtPrezzo |
Prezzo pagato in € (5-120) |
| NumericUpDown | numValutazione |
Valutazione personale (1-10) |
| Label | lblValoreOrario |
Mostra valore orario calcolato |
| ListBox | lstVideogiochi |
Elenco videogiochi |
| Button | btnAggiungi |
Aggiungi/Modifica videogioco |
| Label | lblValoreTotale |
Mostra valore totale della collezione |
⚙️ Parti da Completare
1
📋 CLASSE Videogioco (DA CREARE COMPLETAMENTE)
Devi creare una classe Videogioco con le seguenti caratteristiche:
// 1. DATI IDENTIFICATIVI - Titolo (stringa): non vuoto, max 100 caratteri - CasaProduttrice (stringa): non vuoto, max 50 caratteri - DataAcquisto (DateTime): non può essere nel futuro // 2. DATI TECNICI E DI GIOCO - Piattaforma (stringa): solo valori: "PC", "PlayStation 5", "Xbox Series X", "Nintendo Switch" - Genere (stringa): solo valori: "Azione", "RPG", "Sportivo", "Strategia", "Avventura" - OreGiocate (int): tra 0 e 2000 ore - Prezzo (double): tra 5.00 e 120.00 € - Valutazione (int): tra 1 e 10 stelle // 3. PROPRIETÀ CALCOLATE (SOLO GET) - ValoreOrario (double): calcolato come Prezzo / OreGiocate (se ore > 0, altrimenti 0) - CategoriaGiocatore (string): * "Casual" se ore < 20 * "Appassionato" se ore tra 20 e 100 * "Hardcore" se ore > 100
public DateTime DataAcquisto
{
get { return _dataAcquisto; }
set
{
if (value > DateTime.Now)
{
MessageBox.Show("La data di acquisto non può essere nel futuro!",
"Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
return; }
_dataAcquisto = value;
}
}
// 1. Costruttore con parametri (usa le proprietà per validazione)
public Videogioco(string titolo, string casaProduttrice, DateTime dataAcquisto,
string piattaforma, string genere,
int oreGiocate, double prezzo, int valutazione)
// 2. Override del metodo ToString()
// Formato: "Titolo - Piattaforma - Valutazione: ★X - €XX.XX"
// Esempio: "Elden Ring - PC - Valutazione: ★9 - €59.99"
2
🖱️ METODO btnAggiungi_Click (DA COMPLETARE NEL FORM)
Devi implementare il gestore evento per l’aggiunta/modifica videogiochi:
private void btnAggiungi_Click(object sender, EventArgs e)
{
// DA COMPLETARE:
// 1. Validare tutti i campi (usa i metodi esistenti nel Form)
// 2. Convertire i valori dalle TextBox ai tipi corretti
// 3. Se in modalità modifica (indiceModifica != -1):
// - Modifica il videogioco esistente nella lista
// 4. Se in modalità aggiunta:
// - Crea nuova istanza di Videogioco con i valori inseriti
// - Aggiungila alla lista
// 5. Aggiornare lblValoreOrario con il valore calcolato
// 6. Aggiornare l'interfaccia e le statistiche
// 7. Gestire eccezioni dalla classe Videogioco
}
📝 Istruzioni Dettagliate
1
STEP 1: Creare la classe Videogioco
- Aggiungi nuovo file
Videogioco.csal progetto - Implementa tutte le proprietà con validazione nei setter
- Le proprietà
ValoreOrarioeCategoriaGiocatoredevono essere SOLO get (calcolate) - Crea il costruttore con tutti i parametri
- Overrida
ToString()per visualizzazione significativa
// Imposta la data di acquisto a oggi
DateTime dataAcquisto = DateTime.Now;
// Creazione oggetto Videogioco
Videogioco nuovoVideogioco = new Videogioco(
titolo, casaProduttrice, dataAcquisto,
piattaforma, genere,
oreGiocate, prezzo, valutazione
);
2
STEP 2: Completare btnAggiungi_Click
SE i campi non sono validi → ESCI
CONVERTI i valori dalle TextBox:
- OreGiocate da stringa a int
- Prezzo da stringa a double
- Valutazione da numValutazione.Value (già int)
- DataAcquisto (usa DateTime.Now per data corrente)
SE siamo in modalità MODIFICA:
Crea nuovo Videogioco con i valori
Sostituisci nella lista all'indice indiceModifica
Resetta indiceModifica a -1
Cambia testo bottone a "➕ Aggiungi Videogioco"
ALTRIMENTI (modalità AGGIUNTA):
Crea nuovo Videogioco con i valori
Aggiungi alla lista
CALCOLA e mostra valore orario in lblValoreOrario
AGGIORNA ListBox e statistiche
PULISCI campi input
✅ Requisiti per il Punteggio
| Punteggio | Requisiti |
|---|---|
| 0-5 | Classe Videogioco basic (senza validazione) + btnAggiungi parziale |
| 6-7 | Classe corretta + validazione in 5+ proprietà + btnAggiungi funzionante |
| 8-9 | Classe completa + proprietà calcolate + tutte validazioni + btnAggiungi perfetto |
| 10 |
|
Per ottenere il voto massimo, oltre a tutti gli altri requisiti, devi creare un file di testo “spiegazione_aggiornamento_realtime.txt” che spiega:
- Come viene calcolato il valore orario nella classe
Videogioco - Come il valore viene passato dal Form alla label
- In quale momento preciso viene aggiornata la label
lblValoreOrario - Come funziona il binding dei dati tra oggetto e interfaccia
📤 Modalità di Consegna
Consegna i seguenti file:
- PROGETTO COMPLETO (esclusi file obj/ e bin/):
- Videogioco.cs – La classe completa con tutte le proprietà e metodi
- Form1.cs – Solo il metodo
btnAggiungi_Clickcompletato (indicato con commento// DA COMPLETARE) - Tutti gli altri file del progetto (escluse cartelle obj e bin)
- SPIEGAZIONE_TECNICA.txt – File di testo che spiega come avviene l’aggiornamento in tempo reale della label del valore orario
⏰ Tempo a disposizione: 90 minuti
Verifica Pratica – Gestionale Collezione Videogiochi
Gestione Dati con Classi – Da Oggetti a File

