210 lines
7.9 KiB
C#
210 lines
7.9 KiB
C#
![]() |
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.Data;
|
|||
|
using System.Drawing;
|
|||
|
using System.Globalization;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using System.Windows.Forms;
|
|||
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
|||
|
|
|||
|
namespace ПРСТ
|
|||
|
{
|
|||
|
public partial class Form1 : Form
|
|||
|
{
|
|||
|
double marketplacePercent = 0;
|
|||
|
|
|||
|
public Form1()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
}
|
|||
|
|
|||
|
// Обработчик для формы загрузки
|
|||
|
private void Form1_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
// Проверяем состояние чекбоксов при запуске программы
|
|||
|
if (checkBox1.Checked)
|
|||
|
{
|
|||
|
textBox4.Text = "100";
|
|||
|
textBox4.ReadOnly = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
textBox4.ReadOnly = false;
|
|||
|
}
|
|||
|
|
|||
|
if (checkBox2.Checked)
|
|||
|
{
|
|||
|
textBox6.Text = "23.05";
|
|||
|
textBox6.ReadOnly = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
textBox6.ReadOnly = false;
|
|||
|
}
|
|||
|
|
|||
|
if (checkBox3.Checked)
|
|||
|
{
|
|||
|
textBox7.Text = "30";
|
|||
|
textBox7.ReadOnly = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
textBox7.ReadOnly = false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Обработчик изменений состояния чекбоксов
|
|||
|
private void checkBox1_CheckedChanged(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (checkBox1.Checked)
|
|||
|
{
|
|||
|
textBox4.Text = "100";
|
|||
|
textBox4.ReadOnly = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
textBox4.ReadOnly = false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void checkBox2_CheckedChanged(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (checkBox2.Checked)
|
|||
|
{
|
|||
|
textBox6.Text = "23.05";
|
|||
|
textBox6.ReadOnly = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
textBox6.ReadOnly = false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void checkBox3_CheckedChanged(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (checkBox3.Checked)
|
|||
|
{
|
|||
|
textBox7.Text = "30";
|
|||
|
textBox7.ReadOnly = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
textBox7.ReadOnly = false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
private void button1_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
double pricePerSpool, weightPerSpool, modelWeight, printTime, printCostPerHour, boxCost, pickupCost, tissueCost;
|
|||
|
|
|||
|
// Преобразуем запятую в точку, если это необходимо, и затем пытаемся преобразовать строку в число
|
|||
|
pricePerSpool = TryParseWithComma(textBox1.Text);
|
|||
|
weightPerSpool = TryParseWithComma(textBox2.Text);
|
|||
|
modelWeight = TryParseWithComma(textBox3.Text);
|
|||
|
printTime = TryParseWithComma(textBox5.Text);
|
|||
|
printCostPerHour = TryParseWithComma(textBox4.Text);
|
|||
|
boxCost = TryParseWithComma(textBox6.Text);
|
|||
|
pickupCost = TryParseWithComma(textBox7.Text);
|
|||
|
tissueCost = TryParseWithComma(textBox8.Text); // Добавляем обработку для бумаги тишью
|
|||
|
|
|||
|
// Проверяем, удалось ли успешно преобразовать все значения
|
|||
|
if (pricePerSpool == -1 || weightPerSpool == -1 || modelWeight == -1 || printTime == -1 ||
|
|||
|
printCostPerHour == -1 || boxCost == -1 || pickupCost == -1 || tissueCost == -1)
|
|||
|
{
|
|||
|
MessageBox.Show("Введите корректные числовые значения в поля.");
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// Чекбоксы: если они активированы, устанавливаем значения по умолчанию
|
|||
|
if (checkBox1.Checked)
|
|||
|
printCostPerHour = 100; // Значение по умолчанию для стоимости работы принтера
|
|||
|
if (checkBox2.Checked)
|
|||
|
boxCost = 23.05; // Значение по умолчанию для коробки
|
|||
|
if (checkBox3.Checked)
|
|||
|
pickupCost = 30; // Значение по умолчанию для приемки
|
|||
|
|
|||
|
// Расчет стоимости пластика для модели
|
|||
|
double plasticCost = (pricePerSpool / weightPerSpool) * modelWeight;
|
|||
|
|
|||
|
// Расчет стоимости работы принтера
|
|||
|
double printCost = printCostPerHour * printTime;
|
|||
|
|
|||
|
// Расчет общей стоимости (пластик + принтер + коробка + приемка + бумага тишью)
|
|||
|
double totalCost = plasticCost + printCost + boxCost + pickupCost + tissueCost;
|
|||
|
|
|||
|
// Расчет процента маркетплейса
|
|||
|
marketplacePercent = (plasticCost + printCost) * 0.5;
|
|||
|
|
|||
|
// Расчет финальной стоимости с учетом процента маркетплейса
|
|||
|
double finalCost = totalCost + plasticCost + marketplacePercent; // добавляем стоимость пластика еще раз
|
|||
|
|
|||
|
// Отображаем финальную стоимость в textBox9
|
|||
|
textBox9.Text = finalCost.ToString("F2", CultureInfo.InvariantCulture);
|
|||
|
|
|||
|
// Сбрасываем переменную marketplacePercent
|
|||
|
marketplacePercent = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// Метод для преобразования текста в число, учитывая возможную запятую
|
|||
|
private double TryParseWithComma(string input)
|
|||
|
{
|
|||
|
input = input.Replace(',', '.'); // Заменяем запятую на точку, если она есть
|
|||
|
double result;
|
|||
|
if (Double.TryParse(input, NumberStyles.Any, CultureInfo.InvariantCulture, out result))
|
|||
|
{
|
|||
|
return result;
|
|||
|
}
|
|||
|
return -1; // Если не удалось преобразовать, возвращаем -1
|
|||
|
}
|
|||
|
|
|||
|
private void buttonClear_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
ClearFields(); // Очистить поля для нового расчета
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
private void ClearFields()
|
|||
|
{
|
|||
|
// Сбрасываем переменную marketplacePercent
|
|||
|
marketplacePercent = 0;
|
|||
|
|
|||
|
// Проверяем каждый чекбокс и очищаем соответствующие текстовые поля
|
|||
|
if (!checkBox1.Checked)
|
|||
|
{
|
|||
|
textBox4.Clear(); // Очистить поле для стоимости работы принтера
|
|||
|
}
|
|||
|
|
|||
|
if (!checkBox2.Checked)
|
|||
|
{
|
|||
|
textBox6.Clear(); // Очистить поле для стоимости коробки
|
|||
|
}
|
|||
|
|
|||
|
if (!checkBox3.Checked)
|
|||
|
{
|
|||
|
textBox7.Clear(); // Очистить поле для приемки
|
|||
|
}
|
|||
|
|
|||
|
// Очистка остальных полей
|
|||
|
textBox1.Clear(); // Очистить поле для цены катушки
|
|||
|
textBox2.Clear(); // Очистить поле для граммов в катушке
|
|||
|
textBox3.Clear(); // Очистить поле для веса модели
|
|||
|
textBox5.Clear(); // Очистить поле для времени работы принтера
|
|||
|
textBox8.Clear(); // Очистить поле для бумаги тишью
|
|||
|
|
|||
|
// Очистить поле для финальной стоимости
|
|||
|
textBox9.Clear();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|