Задание
Разработать приложение для аукциона на языке C#. В качестве графического интерфейса рекомендуется использовать WPF, также должна быть реализована логика приложения.
Функционал программы
- добавление / удаление / редактирование товаров
- рассчет суммы на которую был продан товар
- регистрация / авторизация пользователя
- кабинет пользователя
Фрагмент программного кода
using System; using System.Linq; using System.Windows; using Auction.BL.Models; using Auction.BL.Interfaces; namespace Auction.UI.Windows { /// <summary> /// Логика взаимодействия для AddProductsWindow.xaml /// </summary> public partial class AddProductsWindow : Window { /// <summary> /// Список допустимых товаров /// </summary> private static readonly string[] Categories = { "Дома", "Яхты", "Картины", "Ювелирка" }; /// <summary> /// Поле хранит идентификатор товара /// </summary> private int _id; public AddProductsWindow() { InitializeComponent(); //Передаем допустимые значения cbCategory.ItemsSource = Categories; //Задаем начальное значение cbCategory.SelectedIndex = 0; } private void BtnCancel_Click(object sender, RoutedEventArgs e) { Close(); } private void BtnCalc_Click(object sender, RoutedEventArgs e) { double quantity; double price; quantity = Convert.ToDouble(tbQuantity.Text); price = Convert.ToDouble(tbPrice.Text); switch (CbCalc.Text) { case "*": tbAmount.Text = Convert.ToString(quantity * price); break; default: break; } } private void BtnClear_Click(object sender, RoutedEventArgs e) { tbProductName.Text = ""; tbQuantity.Text = ""; tbPrice.Text = ""; tbAmount.Text = ""; CbCalc.Items.Clear(); } private void BtnSave_Click(object sender, RoutedEventArgs e) { int? auctionDate = null; if (string.IsNullOrEmpty(tbProductName.Text)) { MessageBox.Show("Поле наименование товара не может быть пустым", "Проверка"); return; } if (string.IsNullOrEmpty(tbQuantity.Text)) { MessageBox.Show("Поле количество не может быть пустым", "Проверка"); return; } if (string.IsNullOrEmpty(tbPrice.Text)) { MessageBox.Show("Поле цена не может быть пустым", "Проверка"); return; } if (string.IsNullOrEmpty(tbAmount.Text)) { MessageBox.Show("Поле сумма не может быть пустым", "Проверка"); return; } if (!int.TryParse(tbPlannedDate.Text, out int plannedDate)) { MessageBox.Show("Дата плановая должена быть целым числом", "Проверка"); return; } if (!string.IsNullOrEmpty(tbAuctionDate.Text)) { if (!int.TryParse(tbAuctionDate.Text, out int intAuction)) { MessageBox.Show("Дата аукциона должена быть целым числом", "Проверка"); return; } if (intAuction < plannedDate) { MessageBox.Show("Дата аукциона должна быть больше плановой даты", "Проверка"); return; } auctionDate = intAuction; } //Создаем объект для передачи данных ProductDto product = new ProductDto { //Заполняем объект данными ProductName = tbProductName.Text, PlannedDate = plannedDate, AuctionDate = auctionDate, Category = cbCategory.SelectedItem.ToString(), Quantity = tbQuantity.Text, Price = tbPrice.Text, Amount = tbAmount.Text }; //Именно тут запрашиваем реализованную ранее задачу по работе с товарами IProductProcess productProcess = ProcessFactory.GetProductProcess(); //если это новый объект - сохраняем его if (_id == 0) { // Сохраняем сотрудника productProcess.Add(product); } else //иначе обновляем { //копируем обратно идентификатор объекта product.Id = _id; //обновляем productProcess.Update(product); } //и закрываем форму Close(); } public void Load(ProductDto product) { //если объект не существует, или его статус не в списке допустимых, выходим if (product == null || !Categories.Contains(product.Category)) { return; } //сохраняем id сотрудника _id = product.Id; //заполняем визуальные компоненты для отображения данных tbProductName.Text = product.ProductName; tbPlannedDate.Text = product.PlannedDate.ToString(); if (product.AuctionDate.HasValue) { tbAuctionDate.Text = product.AuctionDate.Value.ToString(); } cbCategory.SelectedItem = product.Category; tbQuantity.Text = product.Quantity; tbPrice.Text = product.Price; tbAmount.Text = product.Amount; } } }
Структура проекта
Скриншот архива с проектом
Пояснения по запуску программы
Запустить Visual Studio 2019, поменять путь к базе данных(см. видео), запустить код на выполнение.
admin