Задание
Разработать приложение на 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 = ""; // Сбрасываем фильтр, показываем все записи } } }
Скриншот архива с проектом
Пояснения по запуску программы
Для запуска приложения читаем приложенную инструкцию.
-