/* * Bryan * Parking Ticket Quackulator */ using System; using System.Windows.Forms; namespace bryan_parkingTickets { public partial class Main_Form : Form { private const int MIN_SPEED = 35; private const float VISITOR_PRICE = 35f; private const float VIOLATION_PRICE = 75f; private const float FAC_SPEEDING_FEE = 30f; private const float STUD_SPEEDING_FEE = 37.50f; private const float SENIOR_FEE = 50f; private const float SENIOR_SPEEDING_FEE = 120f; private const float EVENING_FEE = 40f; private int currentSpeed = 0; private int totalDailyTickets = 0; private float totalDailyFees = 0f; /// <summary> /// Main /// </summary> public Main_Form() { InitializeComponent(); // Force this so our sel changed logic fires cb_Violator.SelectedIndex = 0; } /// <summary> /// Completely redundent button to exit /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_Exit_Click(object sender, EventArgs e) { Application.Exit(); } /// <summary> /// Clear all stuff /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_Clear_Click(object sender, EventArgs e) { cb_Violator.SelectedIndex = 0; chk_IsSenior.Checked = false; chk_IsAppealed.Checked = false; chk_IsEvening.Checked = false; tb_Price.Text = ""; tb_Speed.Text = ""; btn_Calculate.Enabled = false; lb_Appealed.Hide(); } /// <summary> /// Calculate the price of the ticket /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_Calculate_Click(object sender, EventArgs e) { // Quackulate the total price float totalPrice = CaclulateTotalPrice(); // Show it! tb_Price.Text = $"{totalPrice:c}"; // Adjust it totalDailyFees += totalPrice; // Show the appeal message if (chk_IsAppealed.Checked) lb_Appealed.Show(); else lb_Appealed.Hide(); // Add a ticket totalDailyTickets++; // Update the counter UpdateDailyCounter(); } /// <summary> /// Changes based on index selection /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cb_Violator_SelectedIndexChanged(object sender, EventArgs e) { bool enabled = cb_Violator.SelectedIndex != 0; // Disable or enable every based on index chk_IsAppealed.Enabled = enabled; chk_IsEvening.Enabled = enabled; chk_IsSenior.Enabled = cb_Violator.SelectedIndex == 2; // Only enable if index is 2 btn_Clear.Enabled = enabled; tb_Price.Enabled = enabled; tb_Speed.Enabled = enabled; } /// <summary> /// Disable or enable the calc button based on speed /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tb_Speed_TextChanged(object sender, EventArgs e) { int n; // Make sure it's all numeric if (Int32.TryParse(tb_Speed.Text, out n)) { btn_Calculate.Enabled = n > MIN_SPEED; currentSpeed = n; } } } }