👔 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à
📚 Cosa Dovrai Completare

  • Classe Dipendente: Creare completamente con campi privati e validazione
  • Metodo btnAggiungi_Click: Implementare la logica di aggiunta/modifica con calcolo stipendio
  • 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 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 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 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

  1. Aggiungi nuovo file Dipendente.cs al progetto
  2. Implementa tutte le proprietà con validazione nei setter
  3. La proprietà StipendioMensile deve essere SOLO get (calcolata)
  4. Crea il costruttore con tutti i parametri
  5. 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:

  1. Dipendente.cs – La classe completa con tutte le proprietà e metodi
  2. Form1.cs – Solo il metodo btnAggiungi_Click completato (indicato con commento // DA COMPLETARE)

⏰ Tempo a disposizione: 90 minuti

Verifica Pratica – Gestione Dipendenti Aziendali
Gestione Dati con Classi – Da Oggetti a File

Torna in alto