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();
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
}
|
||
}
|
||
|