Obiettivo
Realizzare un’applicazione Windows Form in C# che calcoli il prezzo di un biglietto del cinema considerando:
- Tipo di film (normale o 3D)
- Età dell’utente
- Sconti: studente e/o abbonato
- Giorno festivo o feriale
L’applicazione deve utilizzare i seguenti metodi:
String.IsNullOrEmpty()Convert.ToDouble()ToString()MessageBox.Show()
Funzionalità richieste
- L’utente inserisce la propria età nella TextBox.
- Se l’età non è stata inserita, viene mostrato un MessageBox di errore con MessageBox.Show().
- Il programma calcola il prezzo base:
- Film normale → 8 € (Feriale ) 10€ (Festivo)
- Film 3D → 10 € (Feriale ) 12€ (Festivo)
- Sconti:
- Età inferiore a 12 anni → -30%
- Studente (CheckBox) → -10%
- Abbonato (CheckBox) → -20%
- Il prezzo finale viene mostrato in una Label (lblRisultato) usando il metodo ToString() per formattarlo.
- Se l’utente sceglie Esci dal menù o clicca btnEsci, l’applicazione si chiude dopo la conferma di un MessageBox.
Interfaccia grafica e tag personalizzati
IMPORTANTE: Rinominare tutti i controlli e le variabili principali aggiungendo il proprio cognome o iniziali per evitare copie tra studenti.
Esempi:
Esempi:
btnCalcola_Rossi, txtEta_Rossi, lblRisul_Rossi double tot_Rossi = 0,int eta_rossi = 0.
| Controllo | Nome suggerito | Descrizione |
|---|---|---|
| Label | lblIstruzioni_Rossi, lblRisul_Rossi | Testo guida e risultato finale |
| TextBox | txtEta_Rossi | Inserimento età dell’utente |
| GroupBox | grpTipoFilm_Rossi | Contiene le RadioButton sul tipo di film |
| RadioButton | rdbNormale_Rossi, rdb3D_Rossi | Tipo di film (scelta unica, Normale selezionato di default) |
| RadioButton | rdbFeriale_Rossi, rdbFestivo_Rossi | Giorno della proiezione (Feriale selezionato di default) |
| CheckBox | ckStudente_Rossi, ckAbbonato_Rossi | Sconti selezionabili |
| PictureBox | picCinema_Rossi | Mostra un’immagine del cinema |
| Button | btnCalcola_Rossi, btnEsci_Rossi | Calcola prezzo e chiude programma |
| MenuStrip | menuMain_Rossi | File → Esci (con conferma), Nuovo calcolo (resetta tutti i campi) |
Funzionamento richiesto
- L’utente inserisce la propria età nella TextBox.
- Se il campo è vuoto o nullo, compare un MessageBox che avvisa di inserire l’età.
- Se l’utente clicca su “Esci” (button o menu), appare un MessageBox di conferma.
- Se viene inserito un carattere non numerico, la Label diventa visibile, testo in rosso e mostra un messaggio di errore.
- Se il calcolo è corretto, la Label diventa visibile, mostra il prezzo in euro formattato e colore di default.
- All’avvio della Form, la Label deve essere inizialmente invisibile (
Visible = false). - L’opzione “Nuovo calcolo” del MenuStrip deve resettare tutti i campi e lasciare selezionate di default le RadioButton “Normale” e “Feriale”.
Galleria Immagini Cinema
Metodi utili per gestire Label:
lblRisul.Visible = true / false→ mostra o nasconde la LabellblRisul.ForeColor = Color.Red→ colore rosso per errorilblRisul.ForeColor = DefaultForeColor→ colore di defaultlblRisul.Text = "Messaggio"→ testo della Labeltot.ToString("C")→ formato valuta per il prezzo
Gestire eccezioni
try { ... } catch (Exception ex) { ... }→ gestire eventuali errori
MessageBox:
MessageBox.Show()→ mostra un messaggio all’utente con opzioni complete.
Esempio 1 – avviso semplice per campo vuoto:
MessageBox.Show("Devi inserire l'età!", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Warning);Esempio 2 – conferma uscita dal programma:
if (MessageBox.Show("Sicuro vuoi abbandonare?", "Messaggio", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) {
Application.Exit();
}
Conversioni:
String.IsNullOrEmpty(txtEta.Text)→ controlla se TextBox è vuotaConvert.ToDouble(txtEta.Text)→ converte il testo in numeroToString()→ converte numero in stringa per Label
Criteri di valutazione
| Descrizione | Punti |
|---|---|
| Interfaccia completa con tutti i controlli richiesti | 4 |
| Uso corretto dei metodi richiesti | 4 |
| Gestione eccezioni | 4 |
| Gestione campo vuoto, MessageBox e Label errore/risultato | 3 |
| Gestione campo Label errore/risultato con colori richiesti | 1 |
| Funzionamento corretto logica di calcolo e sconti | 4 |
| MenuStrip funzionale con Esci (con conferma) e Nuovo calcolo (reset campi) | 1 |
| Senza controlli e nomi variabili con il proprio cognome | Voto 3 senza considerare la griglia |
| Totale | 21 |
⚠️ Copia non consentita
Per imparare davvero, digita manualmente il codice!
