Verifica Pratica – Gestione Dati con Classi
👔 Gestionale Dipendenti Azienda
Gestione completa del personale: stipendi, ore lavorate e statistiche aziendali
🎯 Obiettivo della Verifica
Completare un’applicazione C# Windows Forms per la gestione del personale di un’azienda. L’applicazione permette di:
- ✅ Registrare nuovi dipendenti con tutti i dati anagrafici e contrattuali
- ✅ Calcolare automaticamente gli stipendi in base alle ore lavorate
- ✅ Visualizzare statistiche aziendali (costo totale del personale, stipendio medio)
- ✅ Gestire i dipartimenti e le posizioni lavorative
- ✅ Esportare i dati in formato CSV per la contabilità
📁 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 dipendente |
| TextBox | txtCognome |
Cognome dipendente |
| ComboBox | cmbDipartimento |
Dipartimento (Amministrazione, Produzione, Vendite) |
| ComboBox | cmbPosizione |
Posizione (Impiegato, Quadro, Dirigente) |
| TextBox | txtOreLavorate |
Ore lavorate nel mese (0-250) |
| TextBox | txtPagaOraria |
Paga oraria in € (8-100) |
| Label | lblStipendioCalcolato |
Mostra stipendio calcolato automaticamente |
| ListBox | lstDipendenti |
Elenco dipendenti |
| Button | btnAggiungi |
Aggiungi/Modifica dipendente |
| Label | lblTotaleStipendi |
Mostra costo totale mensile del personale |
⚙️ Parti da Completare
1
📋 CLASSE
📋 CLASSE Dipendente (DA CREARE COMPLETAMENTE)
Devi creare una classe Dipendente 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 - DataAssunzione (DateTime): non può essere nel futuro // 2. DATI CONTRATTUALI - Dipartimento (stringa): solo valori ammessi: "Amministrazione", "Produzione", "Vendite" - Posizione (stringa): solo valori: "Impiegato", "Quadro", "Dirigente" - OreLavorate (int): tra 0 e 250 ore/mese - PagaOraria (double): tra 8.00 e 100.00 €/ora // 3. PROPRIETÀ CALCOLATA (SOLO GET) - StipendioMensile (double): calcolato come OreLavorate × PagaOraria
🔑 Proprietà Calcolata – Esempio
public double StipendioMensile
{
get { return OreLavorate * PagaOraria; }
// NO set! Viene calcolata automaticamente
}
Metodi richiesti
// 1. Costruttore con parametri (usa le proprietà per validazione)
public Dipendente(string nome, string cognome, DateTime dataAssunzione,
string dipartimento, string posizione,
int oreLavorate, double pagaOraria)
// 2. Override del metodo ToString()
// Formato: "Cognome Nome - Dipartimento - Stipendio: €X.XXX,XX"
// Esempio: "Rossi Mario - Vendite - Stipendio: €2.500,00"
2
🖱️ METODO
🖱️ METODO btnAggiungi_Click (DA COMPLETARE NEL FORM)
Devi implementare il gestore evento per l’aggiunta/modifica dipendenti:
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 il dipendente esistente nella lista
// 4. Se in modalità aggiunta:
// - Crea nuova istanza di Dipendente con i valori inseriti
// - Aggiungila alla lista
// 5. Aggiornare lblStipendioCalcolato con lo stipendio calcolato
// 6. Aggiornare l'interfaccia e le statistiche
// 7. Gestire eccezioni dalla classe Dipendente
}
🎯 Punti Chiave da Implementare
- Calcolo automatico stipendio: OreLavorate × PagaOraria
- Validazione incrociata: Controlla che i valori siano numerici e nei range
- Gestione modalità: Stesso pulsante per aggiunta e modifica
- Aggiornamento statistiche: Somma di tutti gli stipendi mensili
📝 Istruzioni Dettagliate
1
STEP 1: Creare la classe Dipendente
- Aggiungi nuovo file
Dipendente.csal progetto - Implementa tutte le proprietà con validazione nei setter
- La proprietà
StipendioMensiledeve essere SOLO get (calcolata) - Crea il costruttore con tutti i parametri
- Overrida
ToString()per visualizzazione significativa
Esempio di validazione nella classe
public int OreLavorate
{
get { return _oreLavorate; }
set
{
if (value < 0 || value > 250)
{
MessageBox.Show("Ore lavorate devono essere tra 0 e 250!",
"ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
_oreLavorate = value;
}
}
2
STEP 2: Completare btnAggiungi_Click
Schema logico da seguire
SE i campi non sono validi → ESCI
CONVERTI i valori dalle TextBox:
- OreLavorate da stringa a int
- PagaOraria da stringa a double
- DataAssunzione (usa DateTime.Now per data corrente)
SE siamo in modalità MODIFICA:
Crea nuovo Dipendente con i valori
Sostituisci nella lista all'indice indiceModifica
Resetta indiceModifica a -1
Cambia testo bottone a "➕ Aggiungi Dipendente"
ALTRIMENTI (modalità AGGIUNTA):
Crea nuovo Dipendente con i valori
Aggiungi alla lista
CALCOLA e mostra stipendio in lblStipendioCalcolato
AGGIORNA ListBox e statistiche
PULISCI campi input
✅ Requisiti per il Punteggio
| Punteggio | Requisiti |
|---|---|
| 0-5 | Classe Dipendente basic (senza validazione) + btnAggiungi parziale |
| 6-7 | Classe corretta + validazione in 5+ proprietà + btnAggiungi funzionante |
| 8-9 | Classe completa + proprietà calcolata + tutte 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: Stipendio = Ore × PagaOraria
🔄 Gestione Modalità
- indiceModifica = -1 → Aggiungi
- indiceModifica = 0,1,2… → Modifica
- Ricordati di resettare!
🧮 Calcoli da Implementare
// Calcolo stipendio individuale
double stipendio = oreLavorate * pagaOraria;
// Calcolo costo totale personale (nelle statistiche)
double totaleStipendi = 0;
foreach (Dipendente d in listaDipendenti)
{
totaleStipendi += d.StipendioMensile;
}
// Calcolo stipendio medio
double medio = listaDipendenti.Count > 0 ?
totaleStipendi / listaDipendenti.Count : 0;
📤 Modalità di Consegna
Consegna due file:
- Dipendente.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 – Gestione Dipendenti Aziendali
Gestione Dati con Classi – Da Oggetti a File

