Simulazione recupero Verifica C# – Calcolatore Biglietto Treno



Verifica C# – Calcolatore Biglietto Treno

Obiettivo

Realizzare un’applicazione Windows Form in C# che calcoli il prezzo di un biglietto del treno, in base a:

  • Tipo di treno (Regionale o Alta Velocità)
  • Giorno (Feriale o Festivo)
  • Numero di chilometri percorsi
  • Sconti per Studente e/o Abbonato

Il programma deve utilizzare e comprendere i seguenti concetti:

  • Controlli Windows Form (RadioButton, CheckBox, TextBox, Label, Button, MenuStrip)
  • Uso di String.IsNullOrEmpty(), Convert.ToDouble(), ToString(), MessageBox.Show()
  • Gestione eccezioni con try { ... } catch (FormatException)
  • Utilizzare costanti per le tariffe

Funzionalità richieste

  • Listino tariffe in una TextBox.
  • L’utente inserisce i chilometri da percorrere in una TextBox.
  • Se il campo è vuoto, appare un MessageBox di errore.
  • Se l’utente scrive caratteri non numerici, l’errore viene gestito nel blocco catch (FormatException) e viene mostrato un messaggio di errore in una Label (rossa).
  • Il prezzo base viene scelto in base al tipo di treno e al giorno:
Tipo di Treno Feriale Festivo
Regionale 0,10 €/km 0,12 €/km
Alta Velocità 0,25 €/km 0,30 €/km
  • Sconti:
    • KM > 300 → -10%
    • Studente → -10%
    • Abbonato → -20%
  • Il prezzo totale viene mostrato in una Label (lblTot) formattata come valuta.
  • La Label è inizialmente invisibile (Visible = false).
  • Dal menù o dal pulsante “Esci” l’applicazione si chiude dopo conferma (MessageBox con Yes/No).
  • L’opzione “Nuovo calcolo” resetta tutti i campi e ripristina i valori di default.

Indicazioni di progettazione

Nel costruttore del form (public Form1()) vanno inserite le inizializzazioni dei controlli:

lblTot.Visible = false;
rdbReg.Checked = true;
rdbFer.Checked = true;
ckStu.Checked = false;
ckAbb.Checked = false;
txtMenu.Text = "...";

Gestione eccezioni – Usare try { ... } catch (FormatException) per intercettare errori di formato (es. testo non numerico):

try {
    double km = Convert.ToDouble(txtKm.Text);
}
catch (FormatException) {
    lblTot.Visible = true;
    lblTot.ForeColor = Color.Red;
    lblTot.Text = "Errore: Inserire solo numeri!";
}

Metodi utili:

  • String.IsNullOrEmpty(txtKm.Text) → controlla se la TextBox è vuota
  • Convert.ToDouble(txtKm.Text) → converte il testo in numero
  • lblTot.Text = tot.ToString("C") → visualizza il totale in formato valuta
  • MessageBox.Show("Messaggio", "Titolo", MessageBoxButtons.OK, MessageBoxIcon.Warning) → avvisi o conferme

Interfaccia grafica e convenzioni sui nomi

IMPORTANTE: Tutti i controlli e le variabili principali devono includere il proprio cognome o iniziali per evitare copie tra studenti.

Esempi:

  • btnCalcola_Rossi, txtKm_Rossi, lblTot_Rossi
  • double tot_Rossi = 0;, int km_Rossi = 0;
Controllo Nome suggerito Descrizione
Label lblTitolo_Rossi, lblTot_Rossi Testo guida e risultato finale
TextBox txtKm_Rossi Inserimento chilometri
GroupBox grpTreno_Rossi Contiene le RadioButton del tipo di treno
RadioButton rdbReg_Rossi, rdbAV_Rossi Tipo treno (Regionale o Alta Velocità)
RadioButton rdbFer_Rossi, rdbFes_Rossi Tipo giorno (feriale o festivo)
CheckBox ckStu_Rossi, ckAbb_Rossi Selezione sconti
Button btnCalcola_Rossi, btnEsci_Rossi Calcola prezzo / Chiude il programma
MenuStrip menuMain_Rossi File → Esci (con conferma), Nuovo calcolo
Label lblMenu_Rossi Mostra il listino prezzi all’avvio

Criteri di valutazione

Descrizione Punti
Interfaccia completa con tutti i controlli richiesti 4
Inizializzazioni corrette nel costruttore del form 2
Uso corretto di try/catch con FormatException 3
Gestione campo vuoto e messaggi con MessageBox 2
Uso corretto dei metodi richiesti (ToString(), Convert.ToDouble(), String.IsNullOrEmpty()) 2
Funzionamento corretto della logica di calcolo e sconti 4
MenuStrip funzionale con “Esci” e “Nuovo calcolo” 1
Senza nomi personalizzati dei controlli/variabili Voto massimo 3
Totale 18
Torna in alto