Thursday, September 19, 2024 9:16:03 PM
> settings

Customize


Authenticate

> Form1.cs
/*
 * 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;
            }
        }
    }
}
All opinions represented herein are my own
- © 2024 itsthedevman
- build 3c15a1b