Verifica C# - Calcolatore Preventivo Fotovoltaico
Obiettivo
Completare il programma Windows Form in C# che calcola il preventivo per un impianto fotovoltaico. Il programma deve:
- Calcolare il prezzo base secondo il tipo di installazione
- Applicare eventuali sconti (Cliente Fedele / Bonus Ristrutturazione)
- Gestire errori di inserimento e campo vuoto
- Mostrare il prezzo finale nella Label
lblTot
Codice guidato da completare
// COSTRUTTORE del Form
public Form1()
{
InitializeComponent();
// 1. Rendere invisibile la Label del totale
lblTot.Visible = false;
// 2. Valori di default per i RadioButton e CheckBox
rdbTetto.Checked = true; // Installazione Tetto selezionata
ckFedele.Checked = false;
ckBonus.Checked = false;
// 3. Listino prezzi da mostrare all'avvio
txtMenu.Text =
"\tLISTINO PREZZI:\r\n" +
"INSTALLAZIONE A TETTO:\r\n" +
"\t1.200 € per kW\r\n" +
"INSTALLAZIONE A TERRA:\r\n" +
"\t1.500 € per kW\r\n" +
"INSTALLAZIONE IN FACCIATA:\r\n" +
"\t2.000 € per kW";
}
// EVENTO click Calcola
private void btnCalcola_Click(object sender, EventArgs e)
{
double tot = 0;
double kW = 0;
// COSTANTI - PREZZI PER kW
double PREZZO_TETTO = 1200;
double PREZZO_TERRENO = 1500;
double PREZZO_FACCIATA = 2000;
// 1. Controllo campo vuoto
if (String.IsNullOrEmpty(txtkW.Text))
{
MessageBox.Show("Inserisci la potenza in kW!", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
try
{
// 2. Converti testo in numero
kW = Convert.ToDouble(txtkW.Text);
// 3. CALCOLO PREZZO BASE
// --- COMPLETARE ---
// Se rdbTetto.Checked → prezzo base = kW * 1200
// Se rdbTerreno.Checked → prezzo base = kW * 1500
// Se rdbFacciaia.Checked → prezzo base = kW * 2000
if (rdbTetto.Checked)
{
tot = kW * PREZZO_TETTO;
}
else if (rdbTerreno.Checked)
{
// COMPLETARE
}
else if (rdbFacciaia.Checked)
{
// COMPLETARE
}
// 4. APPLICA SCONTO IMPIANTO GRANDE (se kW > 10)
if (kW > 10)
{
tot = tot * 0.92; // -8%
}
// 5. APPLICA SCONTO CLIENTE FEDELE
// --- COMPLETARE ---
if (ckFedele.Checked)
{
// APPLICA SCONTO 5%
}
// 6. APPLICA SCONTO BONUS RISTRUTTURAZIONE
// --- COMPLETARE ---
if (ckBonus.Checked)
{
// APPLICA SCONTO 15%
}
// 7. MOSTRA IL TOTALE NELLA LABEL
lblTot.Text = tot.ToString("C");
lblTot.ForeColor = DefaultForeColor;
lblTot.Visible = true;
}
catch (FormatException)
{
// 8. Gestione errore: campo non numerico
lblTot.Text = "Errore: inserire solo numeri!";
lblTot.ForeColor = Color.Red;
lblTot.Visible = true;
}
}
// EVENTO click Esci
private void btnEsci_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Vuoi uscire?", "Conferma", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Application.Exit();
}
}
// EVENTO Nuovo preventivo
private void nuovoPreventivoToolStripMenuItem_Click(object sender, EventArgs e)
{
// RESET dei controlli
txtkW.Text = "";
rdbTetto.Checked = true;
ckFedele.Checked = false;
ckBonus.Checked = false;
lblTot.Visible = false;
}
Supporto Step-by-Step
Passo 1: Calcolo Prezzo Base
Completare la parte mancante:
else if (rdbTerreno.Checked)
{
tot = kW * PREZZO_TERRENO; // kW * 1500
}
else if (rdbFacciaia.Checked)
{
tot = kW * PREZZO_FACCIATA; // kW * 2000
}
Passo 2: Applicazione Sconto Cliente Fedele
Completare la parte mancante:
if (ckFedele.Checked)
{
tot = tot * 0.95; // -5% (100% - 5% = 95% = 0.95)
}
Passo 3: Applicazione Sconto Bonus Ristrutturazione
Completare la parte mancante:
if (ckBonus.Checked)
{
tot = tot * 0.85; // -15% (100% - 15% = 85% = 0.85)
}
Istruzioni per l'alunno
- Completare la sezione "CALCOLO PREZZO BASE" con
if/elseusando le RadioButton - Completare le sezioni "APPLICA SCONTI" considerando le CheckBox
- Non modificare i nomi dei controlli
- Lasciare tutte le inizializzazioni nel costruttore
- Gestire gli errori di input con il
catch (FormatException)
Tabella prezzi di riferimento:
| Tipo Installazione | Prezzo per kW |
|---|---|
| Tetto | 1.200 €/kW |
| Terreno | 1.500 €/kW |
| Facciaia | 2.000 €/kW |
Sconti applicabili:
- Impianto > 10 kW → -8% (già implementato)
- Cliente Fedele → -5% (da completare)
- Bonus Ristrutturazione → -15% (da completare)
Criteri di valutazione semplificati
| Descrizione | Punti |
|---|---|
| Completamento calcolo prezzo base (punti 3 e 4) | 6 |
| Applicazione corretta sconti Cliente Fedele | 4 |
| Applicazione corretta sconto Bonus Ristrutturazione | 4 |
| Funzionamento generale e assenza di errori | 4 |
| Totale | 18 |
