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
- Добавьте проект библиотеки классов с именем
CustomerData
в решение Lab 1. Сделайте этот проект в своем решении - В проекте CustomerData определите класс
Customer
, который представляет клиента
Как минимум, класс должен иметь:
- publi c свойства для данных, перечисленных выше
- конструктор или конструкторы
- метод
CalculateCharge
, который вычисляет сумму сбора для этого клиента в соответствии с правилами ToString()
метод, который возвращает отображаемую строку