Verifica Pratica – Gestione Dati con Classi
🏋️ Gestionale Abbonati Palestra
Gestione completa degli iscritti: abbonamenti, sessioni mensili e statistiche del centro fitness
🎯 Obiettivo della Verifica
Completare un’applicazione C# Windows Forms per la gestione degli abbonati di un centro fitness. L’applicazione permette di:
- ✅ Registrare nuovi abbonati con tutti i dati anagrafici e contrattuali
- ✅ Calcolare automaticamente il costo mensile in base al tipo di abbonamento e alle sessioni
- ✅ Visualizzare statistiche del centro (incasso totale mensile, costo medio per abbonato)
- ✅ Gestire le discipline e le tipologie di abbonamento
- ✅ Esportare i dati in formato CSV per la segreteria
📋 Cosa Dovrai Completare
- ✅ Classe Abbonato: Creare completamente con campi privati e validazione
- ✅ Metodo btnAggiungi_Click: Implementare la logica di aggiunta/modifica con calcolo costo
- ✅ Integrazione: Far comunicare correttamente Form e Classe con calcoli automatici
📁 Materiale Fornito
1
File Form1.cs già implementato (tranne il metodo btnAggiungi_Click)
Riceverai un file Form1.cs completo di:
- ✅ Tutti i controlli dell’interfaccia grafica
- ✅ Metodi di validazione già implementati
- ✅ Gestori eventi per rimozione, ordinamento, salvataggio
- ✅ Metodi per aggiornamento visualizzazione e statistiche
- ❌ SOLO btnAggiungi_Click da completare
2
Struttura dell’interfaccia già pronta
| Controllo | Nome | Scopo |
|---|---|---|
| TextBox | txtNome |
Nome abbonato |
| TextBox | txtCognome |
Cognome abbonato |
| ComboBox | cmbDisciplina |
Disciplina praticata (Palestra, Nuoto, Pilates) |
| ComboBox | cmbTipoAbbonamento |
Tipo abbonamento (Base, Standard, Premium) |
| TextBox | txtSessioniMensili |
Numero sessioni al mese (1–30) |
| TextBox | txtCostoSessione |
Costo per singola sessione in € (5–80) |
| Label | lblCostoCalcolato |
Mostra costo mensile calcolato automaticamente |
| ListBox | lstAbbonati |
Elenco abbonati |
| Button | btnAggiungi |
Aggiungi/Modifica abbonato |
| Label | lblTotaleIncasso |
Mostra incasso totale mensile della palestra |
⚙️ Parti da Completare
1
📋 CLASSE
📋 CLASSE Abbonato (DA CREARE COMPLETAMENTE)
Devi creare una classe Abbonato con le seguenti caratteristiche:
Proprietà richieste (TUTTE con validazione nei setter)
// 1. DATI ANAGRAFICI - Nome (stringa): non vuoto, max 50 caratteri - Cognome (stringa): non vuoto, max 50 caratteri - DataIscrizione (DateTime): non può essere nel futuro // 2. DATI ABBONAMENTO - Disciplina (stringa): solo valori ammessi: "Palestra", "Nuoto", "Pilates" - TipoAbbonamento (stringa): solo valori: "Base", "Standard", "Premium" - SessioniMensili (int): tra 1 e 30 sessioni/mese - CostoSessione (double): tra 5.00 e 80.00 €/sessione // 3. PROPRIETÀ CALCOLATA (SOLO GET) - CostoMensile (double): calcolato come SessioniMensili × CostoSessione
🔑 Proprietà Calcolata – Esempio
public double CostoMensile
{
get { return SessioniMensili * CostoSessione; }
// NO set! Viene calcolata automaticamente
}
Metodi richiesti
// 1. Costruttore con parametri (usa le proprietà per validazione)
public Abbonato(string nome, string cognome, DateTime dataIscrizione,
string disciplina, string tipoAbbonamento,
int sessioniMensili, double costoSessione)
// 2. Override del metodo ToString()
// Formato: "Cognome Nome - Disciplina - Costo mensile: €X.XXX,XX"
// Esempio: "Bianchi Luca - Nuoto - Costo mensile: €480,00"
2
🖱️ METODO
🖱️ METODO btnAggiungi_Click (DA COMPLETARE NEL FORM)
Devi implementare il gestore evento per l’aggiunta/modifica abbonati:
Logica da implementare
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 l'abbonato esistente nella lista
// 4. Se in modalità aggiunta:
// - Crea nuova istanza di Abbonato con i valori inseriti
// - Aggiungila alla lista
// 5. Aggiornare lblCostoCalcolato con il costo mensile calcolato
// 6. Aggiornare l'interfaccia e le statistiche
// 7. Gestire eccezioni dalla classe Abbonato
}
🎯 Punti Chiave da Implementare
- Calcolo automatico costo: SessioniMensili × CostoSessione
- Validazione incrociata: Controlla che i valori siano numerici e nei range
- Gestione modalità: Stesso pulsante per aggiunta e modifica
- Aggiornamento statistiche: Somma di tutti i costi mensili degli abbonati
📝 Istruzioni Dettagliate
1
STEP 1: Creare la classe Abbonato
- Aggiungi nuovo file
Abbonato.csal progetto - Implementa tutte le proprietà con validazione nei setter
- La proprietà
CostoMensiledeve essere SOLO get (calcolata) - Crea il costruttore con tutti i parametri
- Overrida
ToString()per visualizzazione significativa
Esempio di validazione nella classe
public int SessioniMensili
{
get { return _sessioniMensili; }
set
{
if (value < 1 || value > 30)
{
MessageBox.Show("Le sessioni mensili devono essere tra 1 e 30!",
"ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
_sessioniMensili = value;
}
}
2
STEP 2: Completare btnAggiungi_Click
Schema logico da seguire
SE i campi non sono validi → ESCI
CONVERTI i valori dalle TextBox:
- SessioniMensili da stringa a int
- CostoSessione da stringa a double
- DataIscrizione (usa DateTime.Now per data corrente)
SE siamo in modalità MODIFICA:
Crea nuovo Abbonato con i valori
Sostituisci nella lista all'indice indiceModifica
Resetta indiceModifica a -1
Cambia testo bottone a "➕ Aggiungi Abbonato"
ALTRIMENTI (modalità AGGIUNTA):
Crea nuovo Abbonato con i valori
Aggiungi alla lista
CALCOLA e mostra costo in lblCostoCalcolato
AGGIORNA ListBox e statistiche
PULISCI campi input
✅ Requisiti per il Punteggio
| Punteggio | Requisiti |
|---|---|
| 0-5 | Classe Abbonato basic (senza validazione) + btnAggiungi parziale |
| 6-7 | Classe corretta + validazione in 5+ proprietà + btnAggiungi funzionante |
| 8-9 | Classe completa + proprietà calcolata + tutte le validazioni + btnAggiungi perfetto |
| 10 | Tutto perfetto + gestione eccezioni elegante + codice ben commentato + statistiche corrette |
💡 Suggerimenti
🔑 Concetti Chiave da Ricordare
🎯 Validazione Form vs Classe
- Form: Controlla campi vuoti e formato
- Classe: Controlla valori assurdi e limiti
- Entrambi necessari!
💾 Proprietà Calcolata
- Solo get, nessun set
- Calcolata automaticamente
- Esempio: Costo = Sessioni × CostoSessione
🔄 Gestione Modalità
- indiceModifica = -1 → Aggiungi
- indiceModifica = 0,1,2… → Modifica
- Ricordati di resettare!
🧮 Calcoli da Implementare
// Calcolo costo mensile individuale
double costo = sessioniMensili * costoSessione;
// Calcolo incasso totale mensile (nelle statistiche)
double totaleIncasso = 0;
foreach (Abbonato a in listaAbbonati)
{
totaleIncasso += a.CostoMensile;
}
// Calcolo costo medio per abbonato
double medio = listaAbbonati.Count > 0 ?
totaleIncasso / listaAbbonati.Count : 0;
📤 Modalità di Consegna
Consegna due file:
- Abbonato.cs – La classe completa con tutte le proprietà e metodi
- Form1.cs – Solo il metodo
btnAggiungi_Clickcompletato (indicato con commento// DA COMPLETARE)
⏰ Tempo a disposizione: 90 minuti
Verifica Pratica – Gestionale Abbonati Palestra
Gestione Dati con Classi – Da Oggetti a File