Задание
Разработать приложение для аукциона на языке 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, поменять путь к базе данных(см. видео), запустить код на выполнение.
Телеграм
-