Задание
Разработать приложение на C# используя Windows Forms для вывода и работы с данными из базы данных - ShopDB25.mdf. Для работы с БД выбрана - SSMS.
Функционал программы
- Учёт товаров
- Фильтрация товаров по названию и категории
- Учёт продаж
- Ведение статистики продаж с построением графика продаж
Фрагмент программного кода
using MaterialSkin;
using MaterialSkin.Controls;
using MetroFramework.Forms;
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ShopApp_2025
{
public partial class ProductsForm : MetroForm
{
public ProductsForm()
{
InitializeComponent();
//var materialSkinManager = MaterialSkinManager.Instance;
//materialSkinManager.AddFormToManage(this);
//materialSkinManager.Theme = MaterialSkinManager.Themes.DARK;
//materialSkinManager.ColorScheme = new ColorScheme(Primary.LightBlue800,
// Primary.LightBlue900,
// Primary.LightBlue500, Accent.LightBlue400, TextShade.BLACK);
}
private void productsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.productsBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.shopDB25DataSet);
}
private void ProductsForm_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "shopDB25DataSet.Products". При необходимости она может быть перемещена или удалена.
this.productsTableAdapter.Fill(this.shopDB25DataSet.Products);
// Настройка цветов DataGridView для тёмной темы
productsDataGridView.BackgroundColor = Color.FromArgb(38, 50, 56); // Dark Blue Grey
productsDataGridView.DefaultCellStyle.BackColor = Color.FromArgb(38, 50, 56);
productsDataGridView.DefaultCellStyle.ForeColor = Color.White;
productsDataGridView.DefaultCellStyle.SelectionBackColor = Color.FromArgb(55, 71, 79); // немного светлее
productsDataGridView.DefaultCellStyle.SelectionForeColor = Color.White;
productsDataGridView.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(38, 50, 56);
productsDataGridView.ColumnHeadersDefaultCellStyle.ForeColor = Color.White;
productsDataGridView.EnableHeadersVisualStyles = false;
}
private void UpBtn_Click(object sender, EventArgs e)
{
this.Validate(); // Проверяем корректность введённых данных в форме
this.productsBindingSource.EndEdit(); // Завершаем редактирование текущей записи в BindingSource
this.productsTableAdapter.Update(this.shopDB25DataSet.Products); // Сохраняем изменения в таблицу "Products" базы данных
}
private void button1_Click(object sender, EventArgs e)
{
int shp = productsDataGridView.CurrentCell.RowIndex; // Получаем индекс выбранной строки
// Получаем значение из колонки с индексом 1 (Name), приводим к строке с проверкой на null
string name = productsDataGridView[1, shp].Value?.ToString();
if (!string.IsNullOrEmpty(name))
{
// Экранируем одинарные кавычки в названии книги (если есть) для корректной работы фильтра
name = name.Replace("'", "''");
// Применяем фильтр по названию книги с использованием одинарных кавычек
productsBindingSource.Filter = $"Name = '{name}'";
}
else
{
// Если название пустое — предупреждаем пользователя
MessageBox.Show("Заголовок товара пустой. Фильтр не применён.");
}
}
private void button2_Click(object sender, EventArgs e)
{
int shp = productsDataGridView.CurrentCell.RowIndex; // Получаем индекс выбранной строки
// Получаем значение из колонки с индексом 1 (Category), приводим к строке с проверкой на null
string category = productsDataGridView[3, shp].Value?.ToString();
if (!string.IsNullOrEmpty(category))
{
// Экранируем одинарные кавычки в названии книги (если есть) для корректной работы фильтра
category = category.Replace("'", "''");
// Применяем фильтр по названию книги с использованием одинарных кавычек
productsBindingSource.Filter = $"Category = '{category}'";
}
else
{
// Если название пустое — предупреждаем пользователя
MessageBox.Show("Заголовок категории пустой. Фильтр не применён.");
}
}
private void button5_Click(object sender, EventArgs e)
{
productsBindingSource.Filter = ""; // Сбрасываем фильтр, показываем все записи
}
}
}
Скриншот архива с проектом

Пояснения по запуску программы
Для запуска приложения читаем приложенную инструкцию.
Телеграм
-