как рассчитать, используя определенные требования от назначения - PullRequest
0 голосов
/ 24 апреля 2020
namespace PowerBill
{
    public partial class frmMain : Form
    {
        //give default values
        Customer c = new Customer();

        public frmMain()
        {
            InitializeComponent();
        }

        // user select Residential
        private void radResidential_CheckedChanged(object sender, EventArgs e)
        {
            HideSecondInput();
        }

        // user selects Commercial
        private void radCommercial_CheckedChanged(object sender, EventArgs e)
        {
            HideSecondInput();
        }

        // user selects Industrial
        private void radIndustrial_CheckedChanged(object sender, EventArgs e)
        {
            ShowSecondInput();
        }

        // hide second input prompt and txt box; 
        // adjust prompt for first input: generic kWh
        private void HideSecondInput()
        {
            lblkWh1Prompt.Text = "Used kWh:";
            lblkWh2Prompt.Visible = false;
            txtkWh2.Visible = false;
            txtkWh1.Focus(); // focus on first input box
        }

        // hide second input prompt and txt box; 
        // adjust prompt for first input: peak kWh
        private void ShowSecondInput()
        {
            lblkWh1Prompt.Text = "Peak kWh:";     
            lblkWh2Prompt.Visible = true;
            txtkWh2.Visible = true;
            txtkWh1.Focus(); // focus on first input box
        }



        // calculate customer charge
        private void btnCalculate_Click(object sender, EventArgs e)
        {
            int kWh = 0, peakKWh= 0, offPeaKWh = 0;
            decimal charge = 0; 
            if (radResidential.Checked)
            {
                kWh = Convert.ToInt32(txtkWh1.Text);
                charge = c.ResidentialCharge(kWh);
                lblCharge.Text = charge.ToString("c");
                //if(Validator.IsPresent(txtkWh1, "kWh") &&
                //   Validator.IsNonNegativeInteger(txtkWh1, "kWh"))
                {


                }
            }
            else if (radCommercial.Checked)
            {
                //if (Validator.IsPresent(txtkWh1, "Used kWh") &&
                //   Validator.IsNonNegativeInteger(txtkWh1, "kWh"))
                {
                    kWh = Convert.ToInt32(txtkWh1.Text);
                    charge = CommercialCharge(kWh);
                    lblCharge.Text = charge.ToString("c");
                }
            }
            else // must be industrial
            {
                //if (Validator.IsPresent(txtkWh1, "Peak kWh") &&
                //    Validator.IsNonNegativeInteger(txtkWh1, "Peak kWh") &&
                //    Validator.IsPresent(txtkWh2, "Off-peak kWh") &&
                //    Validator.IsNonNegativeInteger(txtkWh2, "Off-peak kWh"))
                {
                    peakKWh = Convert.ToInt32(txtkWh1.Text);
                    offPeaKWh = Convert.ToInt32(txtkWh2.Text);
                    charge = IndustrialCharge(peakKWh, offPeaKWh);
                    lblCharge.Text = charge.ToString("c");
                }
            }
            // display charge
            lblCharge.Text = charge.ToString("c");
        }

        // calculate charge for residential customer
        private decimal ResidentialCharge(int kWh)
        {
            const decimal BASE_CHARGE = 6;
            const decimal CHARGE_PER_kWh = 0.052m;
            decimal charge = BASE_CHARGE + kWh * CHARGE_PER_kWh;
            return charge;
        }

        // calculate charge for commercial customer
        private decimal CommercialCharge(int kWh)
        {
            const decimal BASE_CHARGE = 60;
            const int THRESHOLD = 1000;
            const decimal CHARGE_PER_kWh = 0.045m;
            decimal charge = BASE_CHARGE;
            if (kWh > THRESHOLD)
                charge += (kWh - THRESHOLD) * CHARGE_PER_kWh;
            return charge;
        }

        // calculate charge for industrial customer
        private decimal IndustrialCharge(int peakKWh, int offPeakKWh)
        {
            const decimal PEAK_BASE_CHARGE = 76;
            const decimal OFF_PEAK_BASE_CHARGE = 40;
            const int THRESHOLD = 1000;
            const decimal PEAK_CHARGE_PER_kWh = 0.065m;
            const decimal OFF_PEAK_CHARGE_PER_kWh = 0.028m;
            decimal charge, peakCharge, offPeakCharge;
            // calculate charge for peak kWh
            peakCharge = PEAK_BASE_CHARGE;
            if (peakKWh > THRESHOLD)
                peakCharge += (peakKWh - THRESHOLD) * PEAK_CHARGE_PER_kWh;
            // calculate charge for off-peak kWh
            offPeakCharge = OFF_PEAK_BASE_CHARGE;
            if (offPeakKWh > THRESHOLD)
                offPeakCharge += (offPeakKWh - THRESHOLD) * OFF_PEAK_CHARGE_PER_kWh;
            // add the two charges
            charge = peakCharge + offPeakCharge;
            return charge;
        }


        // to clear the textbox
        private void btnClear_Click(object sender, EventArgs e)
        {
            txtkWh1.Text = "";
            txtkWh1.Text = "";
            lblCharge.Text = "";
            radResidential.Checked = true;
            txtkWh1.Focus();
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit(); //Close(); 
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {

        }
    }
}

Привет

У меня есть это назначение, но я не уверен, как выполнить его следующим шагом. Я думаю, что назначение хочет выполнить какой-то другой метод вычисления, также использовать функцию чтения

есть ли подсказка для подсказки

Вот назначение

По мере добавления данных о новых клиентах или до закрытия приложения текущая коллекция клиентов данные должны быть записаны в файл. Когда приложение запустится в следующий раз, данные будут считаны из этого файла, чтобы можно было добавить больше клиентов. Ваша заявка должна постоянно отображать текущую коллекцию данных клиента, как указано выше. Кроме того, вас попросили рассчитать и отобразить следующую статистику:

  • общее количество клиентов
  • сумма сборов для каждого типа клиентов (три значения)
  • сумма всех расходов

Шаг первый: Определите class Customer

  1. Добавьте проект библиотеки классов с именем CustomerData в решение Lab 1. Сделайте этот проект в своем решении
  2. В проекте CustomerData определите класс Customer, который представляет клиента

Как минимум, класс должен иметь:

  • publi c свойства для данных, перечисленных выше
  • конструктор или конструкторы
  • метод CalculateCharge, который вычисляет сумму сбора для этого клиента в соответствии с правилами
  • ToString() метод, который возвращает отображаемую строку
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...