WPF-приложение для создания и анализа отчетов о продажах электронной техники. Позволяет:
- Формировать отчеты за различные периоды
- Анализировать динамику цен
- Сравнивать продажи разных типов устройств
- Аникин Семён
- Шубин Вадим
Проект соответствует всем критериям для оценки 5 (25 баллов):
- ✅ 2+ интерфейса (
IReportable,ISerializer) - ✅ 2+ абстрактных класса (
ITProduct,SerializerBase) - ✅ 5+ приведений типов (
PriceвLaptop,Smartphone,Tablet) - ✅ Перегрузка методов (
Report.AddDevices) - ✅ Перегруженные операторы (
+дляReport) - ✅ Делегаты (
Func<ITProduct, bool>[]) - ✅ Обобщенные типы (
List<ITProduct>) - ✅ 4+ элемента UI (Label, ComboBox, Button, CheckBox)
SalesReport/ ├── Model/ (библиотека) │ ├── Core/ # Бизнес-логика │ └── Data/ # Сериализация └── SalesReport/ # WPF-приложение
-
Выбор типа техники:
- Комбобокс с вариантами: "Все устройства", "Ноутбуки", "Смартфоны", "Планшеты"
-
Период отчета:
- Выбор из: "День", "Неделя", "Месяц", "Квартал", "Год"
-
Дата отчета:
- Календарь для выбора конкретной даты
-
Список отчетов:
- Чекбоксы для выбора доступных отчетов
- Активируются при выборе даты и периода
-
Кнопки:
- "Показать отчет" - становится активной при выборе ≥1 отчета
- "История цен" - активируется при выборе отчета и артикула
-
Таблица данных:
- Отображает все товары из выбранных отчетов
- Сортировка по клику на заголовки
-
Выбор артикула:
- Комбобокс для выбора конкретного товара
- При выборе активируется кнопка "История цен"
-
Сортировка:
- Радиокнопки "По возрастанию"/"По убыванию"
- График изменения цен:
- Синяя линия - средняя цена
- Пунктирные линии - минимальная/максимальная цена
- Ось X - даты продаж
- Ось Y - цена в рублях
- Инкапсуляция: приватные сеттеры, методы валидации
- Наследование:
Laptop→ITProduct - Полиморфизм: переопределение свойства
Price - Абстракция: интерфейс
IReportable
-
Single Responsibility:
Report- хранение данныхProductRegistry- проверка на уникальность
-
Open-Closed:
- Новые типы отчетов через наследование
-
Liskov Substitution:
- Все наследники
ITProductсовместимы
- Все наследники
-
Interface Segregation:
IReportableтолько для отчетовISerializerтолько для сериализации
-
Dependency Inversion:
- Зависимости от абстракций (
ISerializer)
- Зависимости от абстракций (
- Требуется библиотеки Newtonsoft.Json и LiveCharts.Wpf
- WPF
- JSON/XML сериализация
- LiveCharts для графиков


