Написати програму з використанням додатку Windows Forms для
обчислення заробітної плати. Ставка 300$ + відсотки. Продаж до
500$ - 3%, від 500 до 1000$ - 5%, понад 1000 – 8%.
Вимоги:
Мінімум для трьох співробітників
перевірка на помилки введення;
створити кнопку для генерації випадкових продажів
знайти найкращий результат та зафарбувати його кольором + премія
200$
передбачити однакові результати
створити кнопку для очищення значень
Ответы
Ответ:
```csharp
using System;
using System.Windows.Forms;
namespace SalaryCalculator
{
public partial class Form1 : Form
{
private Random random = new Random();
public Form1()
{
InitializeComponent();
}
private void btnCalculate_Click(object sender, EventArgs e)
{
double rate = 300;
double highestSale = 0;
int count = 0;
double totalSalary = 0;
foreach (TextBox textBox in Controls)
{
if (double.TryParse(textBox.Text, out double saleAmount))
{
double commissionRate;
if (saleAmount <= 500)
{
commissionRate = 0.03;
}
else if (saleAmount <= 1000)
{
commissionRate = 0.05;
}
else
{
commissionRate = 0.08;
}
double commission = saleAmount * commissionRate;
double salary = rate + commission;
totalSalary += salary;
if (saleAmount > highestSale)
{
highestSale = saleAmount;
}
count++;
}
else
{
MessageBox.Show("Введено некоректне значення. Будь ласка, введіть числове значення для продажу.", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
double averageSalary = totalSalary / count;
// Очищення попередньо зафарбованих текстових полів
foreach (TextBox textBox in Controls)
{
textBox.BackColor = default;
}
// Зафарбування найкращого результату
foreach (TextBox textBox in Controls)
{
if (double.TryParse(textBox.Text, out double saleAmount))
{
if (saleAmount == highestSale)
{
textBox.BackColor = System.Drawing.Color.Green;
double salary = rate + saleAmount * GetCommissionRate(saleAmount);
salary += 200;
textBox.Text = salary.ToString();
}
}
}
txtTotalSalary.Text = totalSalary.ToString();
txtAverageSalary.Text = averageSalary.ToString();
}
private void btnClear_Click(object sender, EventArgs e)
{
foreach (TextBox textBox in Controls)
{
textBox.Text = string.Empty;
}
txtTotalSalary.Text = string.Empty;
txtAverageSalary.Text = string.Empty;
// Очищення зафарбованих текстових полів
foreach (TextBox textBox in Controls)
{
textBox.BackColor = default;
}
}
private void btnGenerate_Click(object sender, EventArgs e)
{
foreach (TextBox textBox in Controls)
{
textBox.Text = random.Next(100, 2000).ToString();
}
}
private double GetCommissionRate(double saleAmount)
{
if (saleAmount <= 500)
{
return 0.03;
}
else if (saleAmount <= 1000)
{
return 0.05;
}
else
{
return 0.08;
}
}
}
}
```