PRST/ПРСТ/Form1.cs
2025-02-02 01:56:07 +07:00

210 lines
7.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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