PRST/ПРСТ/Form1.cs

210 lines
7.9 KiB
C#
Raw Permalink Normal View History

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