948.86K

DispatchPro_Presentation_Practice_FINAL

1.

DispatchPro
WPF-приложение для диспетчеризации грузоперевозок
Кратко о проекте
Цель: автоматизация работы диспетчера (заказы, клиенты, рейсы, отчёты)
Технологии: WPF (.NET Framework 4.7.2), Entity Framework 6, SQL Server LocalDB
Формат: десктопное приложение с современным тёмным UI
Функции: CRUD, фильтрация, KPI, отчёты, экспорт CSV
DispatchPro • Практика • 2026

2.

областное государственное бюджетное профессиональное образовательное учреждение
«Смоленская академия профессионального образования»
(ОГБПОУ СмолАПО)
корпус № 1
ОТЧЁТ
по производственной практике
по профессиональному модулю
ПМ.03 Сопровождение и обслуживание программного обеспечения
компьютерных систем
Выполнил(а): студент(ка)
Жировой Александра Алексеевна
Руководитель практики:
Мунтяну К.В.
Смоленск 2026

3.

Практика: чем занималась и чему научилась
Опыт разработки реального приложения
Что делала
Чему научилась
Проектирование структуры приложения
WPF: стили, шаблоны, DataGrid
Разработка интерфейса WPF
Работа с базой данных через EF
Entity Framework: DbContext,
миграции/создание БД
Реализация логики заказов и рейсов
CRUD и валидация данных
Отчёты и экспорт данных
Работа с датами и статусами
Экспорт в CSV и обработка ошибок
DispatchPro • Практика • 2026

4.

Проблема и цель проекта
Проблема
Ручной учёт заявок и рейсов занимает много времени.
Сложно контролировать статус заказов и доход.
Нет единой базы клиентов и истории перевозок.
Цель
Создать удобную панель диспетчера с управлением заказами, клиентами и рейсами.
Добавить отчёты и аналитику (KPI) для контроля дохода.
Сделать современный UI и простую структуру данных.
DispatchPro • Практика • 2026

5.

Функциональные возможности DispatchPro
Основные функции
Заказы: создание, редактирование, удаление, статусы (Создан / В пути / Завершён)
Клиенты: база клиентов с контактными данными
Рейсы: водитель, машина, маршрут, даты старта/финиша, статус рейса
Назначение заказов на рейс и снятие заказов
KPI-панель: количество заказов, активные, доход за период
Отчёты: группировка по дням / неделям / месяцам
Экспорт отчётов и полного списка в CSV
DispatchPro • Практика • 2026

6.

Архитектура приложения
Структура проекта
Принципы
Models (Order, Client, Trip)
EF Code First + LocalDB
Data (DispatchContext, SeedData)
Разделение данных и интерфейса
Views (MainWindow, окна CRUD)
CollectionView фильтрация (поиск)
XAML стили и шаблоны UI
Минимальная логика в окнах редактирования
Единый дизайн через стили ресурсов
DispatchPro • Практика • 2026

7.

Entity Framework: подключение базы данных
DispatchContext (DbContext)
public class DispatchContext : DbContext
{
public DispatchContext() : base("DispatchDb") { }
public DbSet<Order> Orders { get; set; }
public DbSet<Client> Clients { get; set; }
public DbSet<Trip> Trips { get; set; }
}
DbContext управляет таблицами и выполняет сохранение изменений (SaveChanges).
DispatchPro • Практика • 2026

8.

Модели данных (пример: Order)
Класс Order
public class Order
{
public int Id { get; set; }
public string FromAddress { get; set; }
public string ToAddress { get; set; }
public string CargoName { get; set; }
public decimal WeightKg { get; set; }
public decimal DistanceKm { get; set; }
public decimal Price { get; set; }
public string Status { get; set; } // Created / OnRoute /
public DateTime CreatedAt { get; set; }
public DateTime? CompletedAt { get; set; }
public int ClientId { get; set; }
public virtual Client Client { get; set; }
DispatchPro • Практика • 2026

9.

Интерфейс WPF: современный UI
Пример XAML: кнопки и стили
<Style x:Key="BtnPrimary" TargetType="Button" BasedOn="{StaticResource BtnBase}">
<Setter Property="Background" Value="{StaticResource Accent}"/>
<Setter Property="BorderBrush" Value="{StaticResource Accent}"/>
<Setter Property="Foreground" Value="White"/>
</Style>
Особенности UI
Использование тёмной темы, карточек (Border), скруглений и акцентного цвета.
Единые стили позволяют быстро менять дизайн во всём приложении.
DispatchPro • Практика • 2026

10.

CRUD операции: добавление рейса
Пример: создание рейса (MainWindow)
private void BtnAddTrip_Click(object sender, RoutedEventArgs e)
{
var win = new TripWindow(db);
win.Owner = this;
if (win.ShowDialog() == true)
{
db.Trips.Add(win.Trip);
db.SaveChanges();
dgTrips.Items.Refresh();
}
}
Что происходит
Открывается окно TripWindow → пользователь вводит данные → объект сохраняется в БД через EF.
DispatchPro • Практика • 2026

11.

Поиск и фильтрация данных
CollectionView фильтрация
ordersView.Filter = obj =>
{
var o = obj as Order;
if (o == null) return false;
return o.FromAddress.ToLower().Contains(q)
|| o.ToAddress.ToLower().Contains(q)
|| o.CargoName.ToLower().Contains(q);
};
Результат
Поиск в верхней панели моментально фильтрует таблицу заказов/клиентов/рейсов.
DispatchPro • Практика • 2026

12.

Отчёты и аналитика (KPI)
KPI-панель
Отчёты
Всего заказов
Группировка дохода по дням
Заказы в пути
По неделям
Доход за период
По месяцам
Фильтр периода: день/неделя/месяц
Экспорт CSV
DispatchPro • Практика • 2026

13.

Экспорт данных в CSV
Пример экспорта (обработка ошибок)
try
{
using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
using (var sw = new StreamWriter(fs, Encoding.UTF8))
sw.Write(csvText);
}
catch (IOException)
{
MessageBox.Show("Файл уже открыт. Закройте Excel и попробуйте снова.");
}
Польза
Экспорт позволяет быстро отправить отчёты руководству или открыть их в Excel.
DispatchPro • Практика • 2026

14.

Сложности и решения
Основные проблемы в разработке
Ошибка datetime out-of-range (EF + SQL datetime) → нормализация дат и проверка nullable
UI WPF: стили ComboBox/DatePicker → переопределение шаблонов и цветов
Файл CSV занят Excel → try/catch и FileShare.ReadWrite
Связи Trip ↔ Orders → логика назначения и синхронизация статусов
DispatchPro • Практика • 2026

15.

Результат и выводы
Итоги
Разработано полноценное WPF приложение с базой данных и UI в едином стиле.
Реализованы ключевые функции диспетчера: заказы, клиенты, рейсы, отчёты.
Освоены навыки: EF6, LocalDB, работа с данными, UI/UX, обработка ошибок.
Проект можно расширять: авторизация, печать документов, карта маршрутов, роли пользователей.
DispatchPro • Практика • 2026

16.

Спасибо за внимание!
Вопросы?
Контакты / Демонстрация
Приложение готово к демонстрации: CRUD, рейсы, отчёты, экспорт CSV.
Можно показать работу на реальных данных.
DispatchPro • Практика • 2026

17.

Экран «Отчёты»
Скриншот интерфейса DispatchPro

18.

Экран «Рейсы»
Скриншот интерфейса DispatchPro

19.

Экран «Клиенты»
Скриншот интерфейса DispatchPro

20.

Экран «Заказы»
Скриншот интерфейса DispatchPro

21.

Почему название DispatchPro?
• Название DispatchPro происходит от английского слова
«dispatch» — «диспетчеризация, распределение».
• Это отражает главную цель приложения: помогать диспетчеру
быстро управлять заказами, клиентами и рейсами.
• Суффикс «Pro» означает профессиональный инструмент для
работы.
English     Русский Правила