12+
Прикладные программы для выбора оптимального маршрута при транспортных перевозках

Бесплатный фрагмент - Прикладные программы для выбора оптимального маршрута при транспортных перевозках

Объем: 218 бумажных стр.

Формат: epub, fb2, pdfRead, mobi

Подробнее

Добро пожаловать в мир программирования!

Учебная инструкция

для опытных программистов

Прикладные программы

для выбора оптимального маршрута

при транспортных перевозках

Изучаем высокоуровневое программирование на C Sharp!

Это второе издание книги по C#

© Сергей Евдокимов, 2023

ОПРЕДЕЛЕНИЕ, ОБОЗНАЧЕНИЕ И СОКРАЩЕНИЕ

API — Application Programming Interface;

ASP — Active Server Pages;

ATI — Acronis True Image;

ADO — ActiveX Data Objects;

COM — COMmunication;

CMS — Content management system;

DB — DeciBel;

DVD — Digital Video Disc;

DFD — Data Flow Diagram;

EDIFACT — Electronic Data Interchange for Administration, Commerce and Transport;

GPS — Global Positioning System;

IBM — International Business Machines;

IP — Internet Protocol;

IP — The International Road Transport Union;

IoT — Internet of Things;

IDF0 — Icam DEFinition for Function Modeling;

JoL — Jaques of London;

JS — JavaScript;

LINQ — Language-Integrated Query;

LDA — Latent Dirichlet Allocation;

MS — Microsoft Studio;

MFC — Microsoft Foundation Classes;

MDF — Media Descriptor File;

MVS — Multiple Virtual Storage;

MVP — Minimum Viable Product;

MVC — Model-View-Controller;

NB — New B;

OS — Operating System;

OBS — Open Broadcaster Software;

ORM — Object-Relational Mapping;

OSPF — Open shortest path first;

PoE — Power over Ethernet;

LIFO — Last In First Out;

LINQ — Language-Integrated Quer;

SSMS — SQL Server Management Studio;

SPI — Serial Peripheral Interface;

SQL — Structured Query Language;

TV — TeleVision;

USB — Universal Serial Bus;

UIPAB — User Interface Process Application Block;

VB.Net — Visual Basic. NET;

VCC — Voltage of the CirCuit;

WF — Windows Form;

WBS — Work breakdown structure;

XML — eXtensible Markup Language;

WPF — Windows Presentation Foundation;


БД — База данных;

ВУЗ — Высшее учебное учреждение;

ГОСТ — ГОсударственный СТандарт;

ПО — Программное Обеспечение;

КИ — Конфиденциальная информация;

КНР — Китайская Народная Республика;

ИТ — Информационные технологии;

ООН — Организация Объединённых Наций;

ООП — Объектно-ориентированное Программирование;

ОС — Операционная система;

ПК — Персональный компьютер;

ПС — Программная Среда;

ПЗУ — Постоянное запоминающее устройство;

РБД — Реляционная база данных;

РФ — Российская Федерация;

ТС — Транспортное средство;

ТЗ — Техническое задание;

ТО — Транспортное обслуживание;

ТП — Транзитный пункт;

ТМ — Транспортный маршрут;

ЧП — Чрезвычайное положение;

ЭВМ — Электронная вычислительная машина;

ЯП — Язык программирования;


англ. — английский;

м. — метр;

др. — другие;

общ. — общий;

рис. — Рисунок;

стр. — страница;

см. — смотреть;

табл. — Таблица;

т. д. — так далее;

т. п. — тому подобное;

т.е. — то есть;

шт. — штука (штук).

эл. — элемент;

ВВЕДЕНИЕ

Данная книга посвящена разработке программного обеспечения для эффективного учета маршрута для предоставленных услуг транспортных перевозок, и сопутствующих товаров на территории страны.

Программа написана на языке программирования С# с использованием языка разметки HTML, языка программирования JS и СУБД MySQL. Разработанное ПО является кроссплатформенным и может функционировать под управлением любой операционной системы, например, Windows или Linux.

Работа содержит анализ деятельности перевозок (частных) по техническому обслуживанию, техническое задание, проект программного обеспечения, результаты разработки, раздел экономики, а также текст программы, инструкцию, методику и программы по испытаниям

Данный проект выполнен на 200 страницах, содержит 30 рисунков, 200 таблиц, 3 дополнений и список использованной литературы из 42 наименований.

ВСТУПЛЕНИЕ

Ключевым фактором при выборе программ для составления оптимальных маршрутов есть возможность своевременного выполнения всех необходимых задач при минимальных затратах. Использование правильного программного обеспечения решает ключевые задачи, стоящие перед этим сегментом.

Оптимизация маршрута — это задание, которое возникает перед государственными и коммерческими организациями в самых разных отраслях, характеризующихся наличием транспортной сети. Для экстренных служб целью оптимизации маршрутов является скорейшее прибытие на место происшествия, для коммерческих организаций — уменьшение финансовых и временных расходов. По мере развития экономики на международном рынке и в связи с повышением эффективности транспортных процессов необходимы новейшие подходы к организации перевозок. Таких показателей может быть достаточно много, и их все следует учитывать при построении оптимального маршрута.

Управление транспортом обычно включает в себя две мало связанные задачи — логистику и мониторинг. Таким способом предстоит проводить отчисления всех возможных маршрутов, но он не заточен под задачу конкретной компании (учреждения). Соответственно, дистрибьюторскими компаниями и интернет-магазинами необходимо найти автоматизированные и специализирующее программные решения, для качественного интегрирования с учетными системами.

Задача нахождения оптимального маршрута не нова, поэтому существует множество онлайн и офлайн сервисов решающих задачи построения оптимального маршрута. Но это очень дорого и имеет много ошибок. Поэтому задача разработки пакета программ для решения этого вопроса актуальна. Создание программ по поиску правильного маршрута является необходимым аспектом при работе и обслуживании транспортных перевозок. Исходя из этого, в данной дипломной работе разработан пакет прикладных программ, а именно: справка транспортировки, система оптимальных маршрутов и система построения кратчайшего маршрута. Все это важно при построении необходимого оптимального маршрута для транспортных перевозок для любого предприятия в сфере услуг доставки по месту и времени. Следовательно, тема дипломного проекта актуальна.

Целью этого проекта является разработка пакета программного обеспечения по улучшению работы транспортных перевозок за счет построения наиболее оптимальных маршрутов транспортного средства.

Объектом работы является отрасль транспортных перевозок разных типов.

Предметом работы является ПО в области транспортных перевозок почтового груза.

К задачам данного проекта отнесено:

— Проанализировать существующие виды деятельности транспортных предприятий.

— Развернуть особенности построения систем выбора оптимального маршрута для транспортных перевозок.

— Проанализировать существующее программное обеспечение аналогичного направления.

— Разработать проект и реализовать программное обеспечение для выбора оптимального маршрута транспортных перевозок.

РАЗДЕЛ 1. Анализ услуг и видов деятельности в сфере транспортных перевозок

Глава 1. Предоставление услуг в сфере транспортных перевозок

Планировка маршрута — это необходимый элемент любой перевозки, поездки, передвижения на ТЗ по стране и даже по миру. Так как время, которое было потрачено по оптимизации предстоящей поездки, трудный вопрос, например есть возможность сэкономить топливо и своё время. А часто можно ждать в постоянных «пробках» или временного перекрытия движения ТЗ. Рекордная конкуренция по транспортным услугам привела к тому, что учреждения, некоторые не используют сервисы с актуальным спросом, не имеют конкурентоспособности, и теряются в мире рынка. Актуальные транспортные услуги на сей день не ограничивают только транспортировкой. Это трудная работа, в которой каждому определённая роль за участок процесса.

Современная технология, высококвалифицированные специалисты, продуманная и спланированная работа, главные отличия высококачественной компанию-перевозчика от всех остальных. Сфера таких услуг должна работать таким образом, чтобы полностью удовлетворить требования клиента с малыми по возможности затратами. Показателем качества грузоперевозок на автотранспортных предприятиях является характеристика одного или нескольких потребительских свойств данной услуги, соединяющих ее качество. То есть, то есть качество перевозки оценивается по сборам параметров, которые определяют их пригодность к удовлетворению потребности клиента (грузоотправителя или грузополучателя) в соответствующей перевозке.

К транспортным услугам относится:

— перевозка пассажиров и грузов;

— погрузочные и разгрузочные работы;

— складское хранение любого груза;

— подготовка транспортного средства;

— предоставление ТС на условиях проката или аренды;

— доставка новых машин или отремонтированных;

— транспортные экспедиционные услуги.

Основная транспортная услуга компаний — это, конечно же, грузоперевозки. Обычно, данная услуга взаимосвязана с другими процессами такими как: погрузки, разгрузки, экспедирование и т. д.

К дополняющим транспортным услугам относятся: коммерческие, информационные, маркетинговые, услуги по страхованию.

Классификацировать виды транспортных услуг можно через конкретные образцы для этих услуг и идентифицировать особенности по формированию регионального рынка по транспортных услугам.

Возможна классификация транспортных организаций в зависимости от видов транспорта, функционирование которых является объектом их деятельности. Следует выделить пять классификационных групп транспортных организаций, представляющих следующие виды транспорта:

— автомобильный;

— железнодорожный;

— воздушный;

— морской;

— речной.

В рамках этих критерий нужно выделить общую концепцию всех видов транспортных услуг, которые используются для выполнения потребляемых в соотношении с договорённостями по контрактам, которые заключались между производителями данных услуг и их непосредственными потребителями. По виду объектов для перевозки (грузы или пассажиры) транспортные услуги имеют классификацию на грузовые и пассажирские (Табл. 1.1.1). К грузовым подвидам услуг относят: подготовка груза к перевозке, регулировка подвижных составов, погрузки грузов, оформление документов по перевозке, реализация процессов по перевозки, выгрузка груза и т. п. К пассажирским видам услуг относятся: подача пассажирского подвижного состава, обеспечение удобной посадки людей, перемещение пассажиров с необходимым комфортом, организация выхода пассажиров из подвижного состава по окончании поездки и др.

Таблица 1.1.1 — «Классификация транспортных услуг»

Потребность в услугах транспорта часто зависит от развития имеющихся в конкретном регионе видов автотранспорта, их интегрированности в единую систему, ассортимента и качества услуг потенциальным клиентам. С развитием рыночной экономики удельный вес услуг транспорта растет, данная ситуация характерна почти для всех стран.

Глава 2. Описание видов деятельности транспортных предприятий

По мере того, как развивается бизнес и торговля, растет необходимость перемещать товар, материалы и оборудование. Организация перевозок часто влечет множество трудностей и таит в себе немало подводных камней, обойти которые могут только профессионалы своего дела. Поэтому, чтобы облегчить себе задачи, руководители организаций обращаются за помощью к специалистам, работающим в таких предприятиях. На сегодняшний день в каждом городе есть предприятие. Итак, мы рассматриваем транспортную организацию, предлагающую услуги, связанные с перевозкой. Ее деятельность подразумевает выполнение множества задач, среди которых:

— подготовка груза;

— загрузка разгрузки;

— доставка;

— хранение;

— оформление документации и согласование тарифов;

— контроль за перемещением грузов;

— техническое обслуживание транспортных средств;

— логистика.

От уровня профессионализма транспортного предприятия зависит скорость перевозки и хранения товара. И в области организации грузоперевозок четко просматриваются два основных направления:

— Гибкость ассортимента услуг транспорта по различным требованиям клиентов. Для разных групп клиентов сервисы обязаны предоставляться в согласовании с их настоящими потребностями. Потребители должны сами выбрать услуги, их количество и способы реализации.

— Активное продвижение услуг транспорта с целью получения дополнительной прибыли.

Существует несколько способов организации таких компаний. Наиболее распространено линейное управление.

Глава 3. Эффективность ИT в сфере транспортных перевозок

ИТ предоставляют возможность повысить в значительной мере эффективность транспортных операций. ИТ предназначены для предоставления управленческой информации в целях решения проблем, касающихся транспортных перевозок и транспортных ресурсов. Эта действующая в режиме настоящего времени активная система предоставляет транспортным операторам надежную, полезную и оперативную информацию о транспортных операциях с указанием местонахождения товаров и транспортном оборудовании. Соответствующие показатели позволяют руководству устранять оперативные сбои и на национальном и субрегиональном уровнях предоставлять данные для макроэкономического планирования транспортного сектора.

По эффективности работы и для повышения качества транспортных перевозок необходимо разрабатывать дополнительные методы посредством использования информационной технологии и средств связи. Целью информационной технологии управления является удовлетворение информационных потребностей всех сотрудников организации, имеющих дело с принятием решений. Она может быть полезна на любом уровне управления. Эта технология ориентирована на работу, в среде информационной системы управления и используется при более плохой структурированности решаемых задач.

Большое значение в мульти- и интервокальных перевозках имеет информационно-компьютерная поддержка транспортного процесса. Для интеграции нашей страны в мировое информационное пространство (в том числе и в сфере транспортировки) необходимо использование современных инновационных технологий, в том числе программное обеспечение для электронного обмена данными EDI, EDIFACT, развитие безбумажного электронного документооборота и модификация электронной карты местности, в том числе построение маршрутов. Ключевую роль при транспортировке имеют международные телекоммуникационные сети как коммерческие (CompuServe, America Online, Relcom), так и некоммерческие (Internet), спутниковые системы связи и навигации для транспортных средств (GPS, Inmarsat-C и др.).

В последнее время, технологии транспортировки, особенно по интервокальным перевозкам, связанным с использованием в логистических цепях и каналах, если их сравнивать с заданиями, которые решаются, используя информационные технологии по обработки данных.

Глава 4. Общие принципы построения систем поиска оптимального маршрута для транспортных перевозок

Построение оптимального пути следования груза, как и выбор соответствующего ТС, определяется в первую очередь следующими факторами:

— географическое расположение начальной, конечной и промежуточных точек маршрута;

— специфика, характеристика и свойства перевозимого груза (количество, объем, габариты, степень опасности);

— срочность доставки;

— величина бюджета, отпущенного на транспортные расходы.

Определившись с основными приоритетами транспортных перевозок, как правило, получают несколько вариантов разных маршрутов. Отсеивание неперспективных происходит по схеме анализа возможных рисков и текущих условий. Корректировки вносятся исходя из климатических (сезонных, погодных), политических, экономических и других факторов. Грамотно составленная схема включает учет минимально-максимальных показателей времени и затрат, незначительных отклонений, степень рисков (актуально для страхования груза), вплоть до наступления форс-мажорных обстоятельств.

Базовый принцип, на котором строится весь алгоритм оптимального маршрута транспортных перевозок в транспортной сфере, носит название «точно в срок» (на английском — «just in time»). Согласно этому принципу поставки должны осуществляться в строго указанные сроки, не позднее и не ранее, для организации непрерывности производственного процесса и предотвращения переполнения складских помещений излишним сырьем или продукцией.

Второй принцип, который можно охарактеризовать как «непрерывную цепочку», заключается в максимальной эффективности использования транспортных средств (непрерывности транспортных потоков) — исключении всевозможных простоев и прогонов «порожняком». Идеальный пример — привоз сырья на производство и забор уже готовой продукции для доставки определенного потребителя. В результате чего, каждая отдельная транспортная единица вовлечена в непрерывный цикл, избегая запланированных простоев (время-деньги). По этой причине большинство перевозчиков не любят простаивать на местах нагрузок и загрузок — стоящая машина не приносит того дохода, который можно получить, используя ее для работы. Помните, что чем больше вероятность водителю, доставившему ваш груз, пойти обратно «порожняком», тем больше будет стоимость доставки («двойная цена» = доставка + «обработка»).

Элементы логистической цепи складываются в единую транспортную систему, являющуюся совокупностью самых разных направлений. Работая как единый слаженный механизм, широта логистической сети обратно пропорциональна затратам на транспортировку — продукция вывозится точно в срок, машины не простаивают, цикл производства не прекращается из-за нехватки материальных ресурсов, «холостые» пробеги отсутствуют — все это позволяет существенно снижать затраты.

Разработка маршрута — сложная многоступенчатая процедура, требующая достаточно высокой квалификации и являющаяся одним из основных элементов технологии транспортировки. При разработке оптимального маршрута следует руководствоваться «Правилами дорожного движения», «Уставом автомобильного транспорта», «Правилами перевозки пассажиров» и другими ведомственными нормативами. Объекты в зависимости от своей роли в экскурсии могут использоваться как основные и дополнительные. Основные объекты подвергаются более глубокому анализу, на них раскрываются темы экскурсии. Показ дополнительных объектов, как правило, производится при переездах (переходах) экскурсионной группы и он не занимает ведущего места.

Маршрут строится по принципу наиболее правильной последовательности осмотра объектов и намечается с учетом следующих требований:

— показ объектов следует проводить в определенной логической последовательности, не допуская ненужных повторных проездов по одному и тому же участку маршрута (улицы, площади, моста, шоссе), т. е. так называемых «петель»;

— наличие доступности объекта (площадки для его осмотра);

— переезд или переход между объектами не должен занимать 10—15 минут, чтобы не было слишком продолжительных пауз, в том числе санитарных и парковочных мест транспортных средств.

Рекомендуется к моменту проведения несколько вариантов движения транспортного средства. Необходимость смены маршрута в ряде случаев вызывается транспортными «пробками», ремонтными работами на городских магистралях. Все это должно быть учтено при создании разных вариантов маршрута. Разработка маршрута завершается согласованием и утверждением паспорта и схемы маршрута, расчета километража и времени использования автотранспорта.

Критерии оптимальности маршрута: минимальная длина маршрута, время или затраты на перевозку груза. Существует множество алгоритмов, которые могут применяться при определении оптимального маршрута. Больше всего значимыми можно считать те методы, которые основанные на использовании таких алгоритмов как Джонсона, Дейкстры, Флойда — УОР-Шелла, Левита и т. п. [1]. Многие из них имеют применение в практической плоскости и прекрасно за рекомендовались на мировой арене. Например, алгоритм Дейкстры эффективно ищет из вершин в неориентированном насыщенном графе, кратчайшие пути с неотъемлемыми элементами рёбер [2]. Поэтому на его использовании основано работающий в средних цифровых IP-сетях протокола OSPF, который определяет оптимальный маршрутки в этих сетях. Недостатками перечисленных алгоритмов является постепенное увеличение времени для оптимального маршрута с ростом количества вершин и ребер графа. К преимуществам данных алгоритмов являются гарантированное определение оптимального маршрута (если он существует), простота, невысокие требования к аппаратным ресурсам и, больше всего — минимальные затраты на реализацию. Надежность подтверждена длительным практическим использованием протоколов маршрутизации цифровых IP-сетей [3]. Существует ряд эвристических методов, которые образуют другой класс алгоритмов, первоначально разработанных для решения классической «задачи коммивояжера». Это алгоритмы самого быстрого спуска (градиентный метод и его модификации), оценочных (штрафных) санкций, мини-макса (Моргенштерна — фон Неймана), альфа-бета процедуры.

Глава 5. Функциональный анализ проекта построения оптимальных маршрутов для транспортных перевозок

Опираясь на анализ предметной отрасли, можно перейти к проектированию и реализации поставленных вопросов. На первых этапах по созданию ПО нужно понимать процесс работы в организации, автоматизацией работы которой нужно заниаматься [4]. По описанию иследования компании нужно выстроить модель. Такая модель должна быть адекватна предметной области; следовательно, она должна включать в себя знание всех участников бизнес-процессов организации.

Построим контекстную диаграмму (DFD), которая позволит выявить сущности, принимающие участие в функционировании работы программного продукта, в поисках оптимальных маршрутов для транспортных перевозок, происходящие в ней процессы и информацию, которая переходит от пользователей к программе и наоборот. На основании исследования предприятия была построена функциональная модель бизнес-процесса «Транспортные перевозки», представленная на рисунках 1.5.1 и 1.5.2. Диаграммы потоков данных (DFD) можно использовать в качестве дополнения к модели IDEF0 для более наглядного отображения текущих операций документооборота в корпоративных системах обработки информации.

При формализации предметной области «Грузовые перевозки» были обнаружены следующие объекты DFD:

Внешние сущности:

— заявка.

Процессы:

— формирование путевого листа;

— учет доставки груза;

— формирование оплаты водителю;

— формирование стоимости перевозки;

Рисунок 1.5.1 — Контекстная DFD-диаграмма процесса
планирования оптимальных маршрутов


Рисунок 1.5.2 — Диаграмма вариантов использования пакета
программ пользователем

Глава 6. Анализ существующего программного обеспечения

Сегодня каждому доступно немало программ и сервисов, позволяющих проложить оптимальный маршрут из точки А в точку Б. Вопрос лишь в том, какую программу предпочесть? Чтобы ответить на него проанализированы самые популярные из них, определив плюсы и минусы.

Таблица 1.6.1 — «Преимущества и недостатки существующего
программного обеспечения»

Подытоживая все вышеперечисленное можно подчеркнуть, что пока не существуют сервисы, которые строили бы оптимальные пешеходные маршруты внутри города и одновременно были удобными и понятными для пользователей при взаимодействии с ними. Популярные картографические сервисы типа Google Maps не предлагают пользователям возможность поиска оптимального маршрута. При заполнении значений некоторых координатных точек, платформа выстраивает маршрут по таком порядке, в котором эти данные были введены изначально. Пользователи утилит выбирают средства для передвижения, но все эти преднастройки имеют влияние исключительно на те варианты создания маршрута с его фиксированными точками. Анализ, который проводился путем сравнения десятков зарубежных картографических сервисов показывает, что среди самых популярных вариантов только у одного доступна функция построения оптимального пути, и далеко не всегда она работает корректно. Поэтому необходимо усовершенствовать существующие алгоритмы, на основе недостатков современных программ [6], построить пакет программного обеспечения для преодоления всех необходимых потребностей.

Глава 7. Критерии при подготовке

Зачастую появляется желание, чтобы усовершенствовать ПО для современных нужд, но нужно готовится к тому, что на начальной стадии продукт имеет много серьезных ошибок. Существует много случаев, когда для доработки небольшого Фреймворка проходят месяцы по исправлению, а иногда — годы. Поэтому, стоит учитывать, что разработка Фреймворков может быть даже приостановлена. Всегда нужно предпочитать проверенные временем продуктам. Как пример можно привести C# и SQL. Это стандарт для разработок в бизнес-сервисе. Поэтому, множество Баз знаний проводит вероятность столкнуться с неразрешимой проблемой к нулю.

Нужно учитывать современную архитектуру приложения, так как большинство используют микросервисный подход, который распределяет множество программного софта на множества небольших сервисов, что многократно снижает последствия неправильно выбора фреймворков. Всегда нужно учитывать прагматичный подход к решению проблем.

Например, выбор программного продукта, учитывая его преимущества и возможные последствия по дальнейшей разработке.

Размер и сложность проекта. В случае, когда это небольшой проект или MVP, то стоит в максимально короткий период выполнить задания проекта, выбирая язык и Фреймворк, нужный и эффективный. Проблемой является, особенно на аутсорсинге, когда решения принимают отдел, в место куда попадает проект.

Тип проекта. Различные типы проектов приспособлены к разным технологиям. Например: приложение с интенсивным использованием данных, потоковые приложения, IoT, приложения для социальных сетей, CMS приложения, простые MVP и торговые площадки.

Стоимость. Множество технологий, Фреймворков и для среды по разработке необходимо иметь лицензию, но также присутствует множество бесплатных вариантов. Практически, происходит выбор между платными инструментами (но с большей функциональностью) или бесплатным (но с некоторыми ограниченными функциями).

Востребованность технологии. Насколько много вакансий на рынке, какие в среднем зарплаты. Причём лучше посмотреть по разным странам. Например, С# очень популярен на Западе и сильно обгоняет своего конкурента Java, а значит, работу на нём будет находить значительно проще. А вот Рефал имеет некоторую популярность только на территории РФ, да и вакансий то очень мало.

Порог входа. От этого есть зависимость от скорости зарабатывания по этой технологии и решения поставленных заданий. К примеру, язык программирования С# [7] имеет высокий порог для входа.

Перспективность. Технологии, которые устаревают, со ремнем теряют востребованность, поэтому смотрите по динамике роста популярности языков программирования и фреймворков. К примеру, язык C# содержит позиции в счёт развития направлений машинного обучения [8], и развития в него точно имеет огромный перевес. Например, язык программирования Go используется для микросервисов в больших компаниях, но нет никаких гарантий, что это будет надолго.

Интерес. Не представляет возможности добиваться весомых результатов, не имея интереса. Поэтому это является важным пунктом. Но учитывая, что интересы по временем меняются — и это норма.

Глава 8. Требования к созданию 2D-приложений

Список требований, которые нужно стремительно развивать, совершенствовать, чтобы уметь создавать отличные 2D программы и приложения:

— усовить понятия: «переменные», «ветвления», «функции» и «циклы»;

— изучить консоль и методы работы с ней, будет вводить и считывать данные, форматировать строки, обрабатывать файлы;

— разобраться с синтаксическими конструкциями C#, вошедшего в список самых популярных языков программирования [9];

— познакомится с библиотеками и шаблонами, инструментами разработки и их возможностями;

— читать коды и управлять ими;

— создавать игровые объекты и классы, работать с ними, наделять их различными свойствами;

— работать со структурированными документами формата XML;

— добавлять в игру анимацию с графическим интерфейсом.

Глава 9. Статистика услуг для транспортных перевозок

Ссылаясь на информационный ресурс по грузоперевозкам ATI.SU, за 2022 год спрос по внутреннему рынку для автоперевозок вырос на 7%. Но к примеру, весной 2022 по август 2022 ещё увеличилось количество заявок, ускорившийся к концу 2022 года: в ноябре 2022 выросло на 28%, в декабре 2022 — на 22%. Синхронно изменились ставки по транспортных перевозках внутри страны, которые прибавились во втором полугодии на 29,7%, а в их итоговому росту на 3,9% за 2022 году. Импортные перевозки в 2022 году, за данными ATI.SU, имели прогресс по количеству заявок на 41%, но в основном весь рост был за третий и четвёртый квартал текущего года. А заявки на доставку грузов между РФ, РБ, и Казахстан заметно выросли — на 34 и 109% в соответствии по итогам 2022 года, отмечая, более впечатляющая динамика внутри страны Азербайджане (рост на 286%), Армения (на 265%), Турция

(на 244%) и Иран (на 204%). Также стоит отметить, что значительно вырос спрос на транспортные перевозки из Узбекистана, Киргизии, Грузии и Китайской Народной Республики по территории стран Евразии. Учитывая, что на европейских направлениях трудностей не произошло (ATI.SU), только даже выросло количество заявок на перевозки из Испании, Сербии, Эстонии. В этом случае, до 15%) потеряли страны: Италия, Польша, Франция и Литва, чуть больше имеют недостаток — на направлении Германии (23%). Заметно снизился спрос на доставку грузов сырья из Финляндии, а именно на 59% (отсыпаясь на ATI.SU). Учитывая целый комплекс различных факторов (расходов, мощность, изменения по регулированию, перегруженность, и трудной обстановки в первом квартале 2022 года, автомобильные грузоперевозки, которыми занимались крупные компании IRU, Upply, Ti, достигли исторического максимума. В сравнении с первым кварталом 2021 года индекс тарифов вырос на 7,5 пункта.

Относительно экспортных транспортных перевозок, почти в 2 раза вырос спрос на грузоперевозки в Германию, Италию, Финляндию, Латвию, Эстонию, Румынию. На прежнем уровне осталось количество заявок на перевозки в Польшу и Литву, а на доставку в Чехию спрос даже вырос на 38%, отмечая, что в целом спрос на экспортные перевозки остался на прошлогоднем уровне за счет дружественных стран.

Немного просела доставка в Иран (на 323%) и Турция (на 187%), а спрос на доставку грузов в КНР, Грузию и Армению, по оценкам вырос примерно в двое.

Рост объемов перевозок перевозок всеми видами транспорта будет увеличивается с каждым годом.

Рисунок 1.9.1 — Транспортные перевозки всеми
видами транспорта за 2022 год

Глава 10. Ситуационный анализ рынка транспортных перевозок

На современном этапе масштабы последствий пандемии COVID-19 имеют общемировой характер. В частности, рынок грузоперевозок в таких условиях подвергся особым изменениям. Как отмечает Bloomberg, в силу влияния части ограничений на деятельность транспортной отрасли, в отдельных регионах наблюдались трудности, связанные с разрывом цепочек поставок товаров. В частности, это касается деятельности компаний Европейского и Азиатского рынков. Это привело к некоторым рискам для деятельности ряда предприятий.

В свою очередь, правительства принимали ряд мер, нацеленных на минимизацию данных задержек; так со стороны Европейской комиссии были введены меры по внедрению «зелёных полос», предполагающих ряд механизмов по обеспечению функционирования железнодорожных, водных и авиаперевозок в рамках Единого рынка. Возвращаясь к рассмотрению ситуации в Азиатских странах, важно отметить, что в КНР за 2020 год наиболее подверженными влиянию пандемии оказались морские грузовые перевозки. При этом в работе Шань-Ю Хо и других отмечается гипотеза о том, что на макроуровне факторы влияния пандемии приведут к росту в сфере автомобильного или водного грузового транспорта, что обуславливается крайней склонностью физических и юридических лиц к накоплению запасов. Кроме того, изменения потребительского поведения по отношению к продуктам пищевой промышленности говорят о параллельном росте автомобильной транспортной отрасли (в части грузоперевозок) за счёт ускорения распространения пищевых продуктов через онлайн каналы связи/

Рисунок 1.10. 1 — Транспортные перевозки: проблем и перспективы
развития рынка за 2015–2022 гг. (млн. т.)

К Слабостям можно отнести угрозы высокая конкуренция и повышение стоимости топлива, рост тарифов за перевозки, могут стать факторами, снижающими общий спрос на услуги грузовых транспортных компаний (в частности, автомобильных) — это подчёркивает особую необходимость прогнозирования всех аспектов деятельности и высокую степень зависимости. Вместе с тем, многие компании в период пандемии стали расширять собственный автопарк грузовых автомобилей (общий рост составил 6,07%). Проблемными выступают вопросы, касающиеся отрасли морского транспорта, — продолжительное по времени снижение объёма перевозок говорит о снижении их конкурентоспособности; в то же время по состоянию на 2021 год прибыль при реализации мер стала возрастать, что формирует некоторую неопределённость ситуации.

В целом можно сделать вывод, что транспортная система и в частности сегмент грузоперевозок обладает достаточной адаптационной способностью для деятельности в условиях кризисных явлений, подобных пандемии, и способен достаточно оперативно настраивать инструменты развития под изменяющиеся обстоятельства.

Глава 11. Анализ мирового рынка транспортных услуг

Мировая транспортная система — это совокупность всех путей сообщения, транспортных предприятий и транспортных средств мирового сырья. Транспортный поток — это одна из базовых направлений финансового производства, которые осуществляют транспортные перевозки грузов и для пассажиров. Исходя из различия функций транспорт разделяется на пассажирский и грузовой. Рассмотрим структуру транспортного комплекса изображенного на рисунке 1.11.1

Рисунок 1.11.1– Структура транспортного комплекса

Для экономического развития любой страны важную роль играет транспортная система.

Структурные сдвиги, которые определяют прогресс/регресс в мировом производстве и на международной торговли, в определённой степени определяются за движущим мировом транспортных комплексах. Международная глобальная торговля и транспортный поток национальных организаций всегда учитывает свободные передвижения ресурсов и товаров, что в основному не предоставляет возможности осуществлять экспорт/импорт без транспортного комплекса.

Транспорт — это база по развитию внутренних и международных рынков, которая обеспечивает развитие стабильной рыночной экономики. Для развития мировой экономики нужно развитие транспортных услуг на международном рынке, по одной из этих причин данная проблема является актуальной в современном мире.

РАЗДЕЛ 2. Разработка проекта программного обеспечения

Глава 1. Постановка задания

Для создания пакета прикладных программ для выбора оптимального маршрута транспортных перевозок необходимо проанализировать потоки информации, циркулирующие внутри.

Ещё необходимо по мере возможностей минимизировать расходы на реализацию этого проекта, при том нужно учитывать качество и оборудование материалов, которое используется.

Цель данного проекта — это разработка пакета прикладных программ для транспортных перевозок предприятия и подготовить проект программного средства к реализации. Анализ уже существующих приложений, представленный в предыдущем подразделении, помогает сформулировать требования, которые можно предъявить к разрабатываемому приложению по оптимальному маршруту.

Задачи, которые должны решать программный продукт при выборе оптимального маршрута, следующие:

— Обрабатывать информацию из электронного справочника для транспортных перевозок.

— Получать электронные данные требуемой местности.

— Поиск оптимальных маршрутов по необходимой местности.

— Построить короткий маршрут за заданную местность.

— Поиск и планирование маршрутов.

— Функционал программы состоит в построении оптимального маршрута по заданным данным и выводе его на интерактивной карте.

— Сервис должен отвечать необходимым стандартам и быть удобным для использования.

— Приложение будет реализовано на английском языке для расширения аудитории веб-сервиса, в дальнейшем могут быть добавлены другие языки.

— Один из ключевых параметров сервиса это его доступность — наиболее удачным решением будет реализация программы в качестве веб-сайта.

— В связи с стремительностью развития науки и постоянным нахождением новых методов и оптимизации старых, сервис должен быть спроектирован таким образом, чтобы объем работ по изменению оптимизационного алгоритма был минимален.

Для достижения указанной цели необходимо выполнить разработку пакета программ, выполняющих поставленные требования:

— проанализировать предметную область и выделить перечень требований;

— провести обзор существующих программных продуктов;

— найти функциональность разрабатываемой системы;

— составить структуру программной части;

— построить алгоритм работы программы;

— выбрать программные средства разработки;

— разработка программного продукта;

— провести тестирование проекта.

Исходя из вышеуказанного, нужно разработать ПО, которое будет выполнять следующие задания:

— Электронная справка для транспортных перевозок.

— Электронная карта местности.

— Планирование оптимальных маршрутов.

— Поиск маршрутов.

— Поиск оптимального маршрута.

— Построение оптимального маршрута.

— Построение местности.

Ещё желательно минимизировать затраты на разработку компонентов данного проекта, но в то же момент не портить качеством используемые программные материалы и оборудования.

Глава 2. Особенности создания 2D-приложений на С#

С# («Си шарп») — это многофункциональный язык программирования, на котором пишутся разные программные продукты, начиная от небольших десктопы утилит до крупных WEB-порталов [9], WEB-сервисов, которые обслуживают каждый день больше миллиона пользователей. Для создания своей первой игры на языке С# не обязательно досконально знать этот язык. Так как для создания программного продукта необходимо владеть только набором несложных приемов, знать основные принципы по созданию игр, и так быстро достичь результата, создавая на С# свою 2D-игру. По написанию 2D нужно знать принципы объектно-ориентированного программирования [10], навыки написания игровых скриптов на C# станет базой и дадут возможность реализовать несложные проекты, игры и приложения собственной разработки.

Созданию игр с нуля на языке C# открывает для начинающих программистов новые горизонты, так как на одном этом языке можно создать любое приложение (для Windows, мобильное, веб, приложения для Android и iOS) и для любой платформы.

Cоздание игры в двумерной графике на C# (С Sharp) на базе современной среды разработки — это фундамент, позволяющий понять логику мощных, гибких и популярных языков программирования и перейти на более сложные уровни [11]. Освоить азы игровой разработки и создания игровых сценариев на этом современном, простом и удобном в использовании, можно любому человеку, имеющему базовые навыки пользователя ПК.

2D-игры используют плоскую графику, которая не имеет трехмерной геометрии. Спрайты в 2D-приложениях отображаются на экране в виде плоских изображений, а ортогональная проекция перспективы не имеет. 2D или двумерная графика взаимодействует с изображением, которое сформировано в двух измерениях — по высоте и по ширине. Изображение является объектом 3D, которое сформированное в трех измерениях: по высоте, по ширине, и по глубине. В 3D оценивается размер до объекта и расстояние. 2D-игры дают возможность сосредоточить на истории, деталях художества, и геймплее, не тратя много усилий на работу с моделями и трехмерной физикой.

Много игр были сделаны разработчиками за небольшое время, при этом они получают большую популярность за счет своей атмосферы и индивидуальных деталей. Если сделать программирование своей основной профессией, или просто попробовать себя в этом направлении, стоит остановиться на 2D, так как этот подход потребует меньше сил и ресурсов для реализации.

Еще немного о преимуществах С# в 2D: Асинхронное программирование, анонимные типы, лямбда выражения, функциональное программирование и ЦМО позволяют создавать легко поддерживаемый код, превращая в щедрое на ошибки программирование в простое и приятное занятие. С# сочетает простоту и выразительность современных объектно- ориентированных языков с богатством возможностей. Например, автоматическое управление памятью, тогда программисту не обязательно вручную управлять памятью, так как он имеет возможность сосредоточится на реальных задачах. С#-разработчики не ждут разрушений программы после её запуска, чтобы найти очевидные ошибки, так как это всё делает компилятор за них.

Глава 3. Выбор методов и способов решения задания

Для написания программного обеспечения по построению оптимального маршрута, ожидая транспортных перевозок была выбрана программа Visual Studio 2022 с интерфейсом Windows Forms (API), ориентированная на разработку привлекательного и удобного интерфейса (графического).

Microsoft Visual Studio — это линейка инструментов и служб по созданию разных приложений для платформы Microsoft, а также для других. Независимо от используемого средства разработки, есть возможность более гибко работать, и главное — где угодно [12].

Visual Studio 2022 — это передовое решение для разработки, позволяющее командам любого размера проектировать и создавать привлекательные программы, которые удовлетворят требования заказчиков.

Windows Forms — это такой интерфейс для программирования приложений (API), который отвечает за пользовательский интерфейс (графический), что является частью. NET Framework компании Microsoft. Этот интерфейс значительно упрощает возможность для получения доступа к элементам интерфейса ОС Windows, так как за счет создания обвертки API для уже существующего в управляемом коде Win32 [13]. Учитывая то, что этот код — это классы, которые реализуют API для библиотеки Windows Forms, не зависящие от языка разработки. То есть программист все равно использует Windows Forms в написании программного обеспечения на C Sharp, С++, также на VB.Net, J# и т. д.

Библиотека Windows Forms разрабатывалась как элемент к. NET Framework для облегчения разработки составляющих графического и пользовательского интерфейса [14]. Windows Forms построена на основе устаревшего Windows API и представляется как обвертка низкоуровневых компонентов ОС Windows.

С помощью библиотеки Windows Forms предоставляется возможность для разработки кроссплатформенных графических пользовательских интерфейсов. Но всё же, Windows Forms до сих пор является только обверткой для API-компонентов ОС Windows, и ряда ее методов, которые могут осуществлять прямой доступ к функциям Win32 и обратного вызова, что недоступны на других платформах [15].

Готовое приложение на Windows Forms представляет ориентированное программное обеспечение, поддерживающее. NET Framework. от компании Microsoft. Большая часть времени тратится на ожидания от пользователя любых действий, В отличие от пакетных программ. Например, в текстовом поле — ввод текста или по кнопке — щелчок мышкой.

С одной стороны, библиотеку Windows Forms можно рассматривать как замену с более старой и сложной библиотекой MFC, которая первоначально была написана на C++. С другой же стороны, WF не предпочитает парадигму, что сравнима с MVC. Для исправлений в этой ситуации и реализации функциональности в WF есть посторонние библиотеки. Такой одной, которая больше всего используются является UIPAB, которая была выпущена отдельной группой компании Microsoft, что занималась рекомендациями и образцами для бесплатного распространение. Данная библиотека ещё содержит сам исходный код, исходящее образцы для большего ускорения в обучении [16].

Windows Forms (внутри пространства.NET Framework) реализуется как System.Windows.Forms.

Объектно-ориентированное программирование — это парадигма из программирования, основу которой составляют три основные концепции: наследование, инкапсуляция и полиморфизм [9]. Инкапсуляция — сокрытие деталей о работе классов от объектов, использующих или отправляющих им сообщения [11]; наследование позволяет создать новый класс в основе родительского (уже существующего), при этом свойства и функциональность родительского класса заимствуются новым классом [12]; полиморфизм означает зависимость поведения от класса, в котором это поведение вызывается, то есть два или более классов могут реагировать по-разному на одинаковые сообщения [17].

Важной деталью механизма ООП является абстракция. В объектно-ориентированном программировании, абстракция — это придание объекту характеристик, отличающих его от всех остальных объектов, что четко определяются по его концептуальным границам [18].

MySQL для Visual Studio предоставляет доступ к объектам и данным MySQL, не заставляя разработчиков покидать Visual Studio.

Глава 4. Объектно-ориентированное программирование

Язык C Sharp — это объектно-ориентированный язык программирования, который позволяет разрабатывать на нём большие программные системы, с возможностью модульной заменой многократно используемого кода. В C# классы и объекты, а также их атрибуты и методы, являются базовыми инструментами для реализации ООП. Этот язык программирования был основан на компонентной архитектуре, реализуя современные механизмы для обеспечения безопасности кода.

Классическое определение — «способы моделирования настоящего мира». ‎ Можно предположить, что ООП делает код более простым и наглядным [19]. С таким подходом можно построить сложные системы просто и эффективно, и всё благодаря тому, что предметная область разбита на объекты, каждый из которых связан с другими объектами.

Главное отличие между Объектно-ориентированное программированием и Процедурным программированием, то что процедурное программирование заключается в написании кода с или без подпрограмм. ООП использует язык программирования более хорошему программному коду и для получений высокого уровня написания огромных проектов и производительность [20]. Плохая взаимосвязь может возникать после несоблюдения трех главных принципов: полиморфизма, инкапсуляции и наследования.

Рисунок 2.4.1 — Основные принципы ООП

«Сущность» и «объект» в человеческой ежедневной жизни можно считать: самолёты, ПК, транспортные средства, банковские счета. Все объекты обладают некоторыми параметрами и функциональностью. Объект, который представляется как завершенная функциональная единица, составляет все необходимые данные и полную функциональность, которая нужна для решений задач, и по которой он имеет назначение.

К примеру, рассмотрим такой объект как «велосипед». У него есть параметры (цвет, вес, стоимость) и поведение (мотоцикл может ехать, сигналить, потреблять топливо).

С вышеуказанного примера, можно считать, что Инкапсуляция — это сокрытие поведения объекта внутри него [22]. Этому объекту «водитель» нет такой необходимости владеть информацией о происходящем в объекте «мотоцикл», чтобы двухколёсный ехал. Это главный и ключевой принцип ООП.

Наследование. К примеру, возьмём объекты: «человек» и «водитель». У них есть что-то общее? Наследование даёт возможность выделить всё общее в один объект (в данном конкретном случае более общим — человек), а для водителя — определить как человека с дополнительными параметрами и поведением [22]. Так как у водителя обязательно есть водительские права, а у человека их присудствие является не обязательным.

Полиморфизм считается переопределением поведения.

К примеру, снова рассмотрим объекты «человек» и «водитель», но в этот раз добавим ещё один объект «пешеход». Объект «Человек» наделён способностью передвигаться, но как именно, это уже зависит от того, является он водителем, или пешеходом. Можно прдположить, что у пешехода и водителя похожее поведение [24], но реализация по-разному: первый перемещается с помощью ног, второй — на машине.

Реализация методов ООП происходит с помощью интерфейсов, определяет список методов класса, но ничего не говорит об их реализации. В объекте допустимо реализовать несколько интерфейсов, а один и тот же интерфейс можно реализовать в разных классах.

Рисунок 2.4.2 — ООП (Общее представление)

Объект представляет собой экземпляр определёного класса.

А класс — шаблон, в котором описаны: все параметры этого объекта, его методы. Учитывая то, что класс объекта «Воздушный шарик» определяется свойствами цвета, то экземпляр этого класса, можно создавать сколько угодно, и другие будут раскрашены в эти цвета [23].

Классы выстраиваются в витиеватые структуры. Поэтому, чем сама структура запутаней, тем утилита будет гибкой, и легче поддается с изменениями и внедрением новых видов функционала, но это не обязательно. Принципы ООП (наследование, полиморфизм, инкапсуляция) позволяют возможность для создания структур объектов еще еффектней, избавляя кодинг от дублирований и создают его интуитивно более допустимым, но это не всегда.

Для понимание принципа работы объектов нужно разобраться в сути мастерства ООП, и в умении создавать многоуровневую структуру по классам, оставляя программный код надежным, читаемым и гибким.

Глава 5. Ахлгоритмы и структуры данных

Алгоритм — это так называют последовательность действий, которые совершаются. Структуры данных имеют реализацию с помощью алгоритма, а вот алгоритмы — структуры данных [20]. Алгоритмы и структуры данных — это инструменты, которыми уверенно пользуются начинающее разработчики, создавая утилиты. Если знать этот инструментарий, можно создавать большое количество того, что уже в базах кодинга, а также и с которыми не редко встречаемся. Кроме этого, похожие данные решают сложные задания. Это нужно иметь ввиду, и при ограничениях алгоритмов (теоретических), о при том, какими оптимизациями их есть возможность подвергнуть. По итогу, понять решение, в котором, с учётами всех нужных компромиссов, оказывается настолько хорошими, насколько это предоставляет возможность.

Алгоритмы и структуры данных (в C#):


— Связный список

Связный список (с англ. Linked List) — это набор связанных узлов, в которых хранятся необходимые данные и указатели на постследующие узелы.


— Двусвязные списки

Двусвязный список — это соответствующая структура данных, определяющая узлами, в которых хранятся необходимые свойства, указываемые на предыдущие узлы и следующий узел, каждый из которых содержит информационную часть (данные) и два указателя на соседние элементы (на следующий и предыдущий элементы). В пространстве имен. NET C# System. Collections. В случае, когда в списке нет элементов, оба они равны нулю [18]. Если в списке один элемент, то оба указателя ссылаются на один и тот же элемент (соответственное, они равны).


— Стек на основе массива

Стек — это структура данных, работающая по принципу LIFO

(Как говорят: «кто последний пришел, тот первый вышел»). Графический стек представляется столбиками или стопками объектов:

Рисунок 2.5.1 — Стек из массива

Стек содержит вершину, что преобразовывает крайний элемент (добавленный последним). При добавлении нового элемента поверх вершины этого стека это создает ещё новую вершину. В случае удаления элемента, он исчезает из вершин стека, а последний элемент преобразовывается в новую вершину.


— Стек

Стек представляет собой коллекцию объектов, поступающих последними и выходящих первыми. Он используется, когда вам нужен доступ к товарам в порядке очереди. Когда вы добавляете элемент в список, это называется нажатием элемента, а когда вы удаляете его, это называется выталкиванием элемента.


— Очередь

Очередь (с англ. queue) — это коллекция, в которой элементы обрабатываются по схеме «первый вошел, первый вышел» (first in, first out — FIFO). Элемент, вставленный в очередь первым, первым же и читается. Отличие в том, что в стеке элемент устанавливаются, извлекаются с одного конца. В очереди элементы вставляются с одного конца, а извлекаются из другого. В программировании очередь используется, когда необходимо проделать какие-то действия по порядку их поступления, выполняя это последовательно. Примером служит организация событий семейства ОС Windows.


— Дек

Дек включает структуру данных, в которой есть возможность добавить и удалить элемент с двух сторон. Дек считают «двусторонней очередью», на которой элементы добавляют из самого начала, так и по самый конец. Процесс удаления также само происходит из начала, и с конца.


— Кольцевой односвязный список

Кольцевые (циклические, круговые) списки — разновидность связных списков. Поэтому, могут быть как односвязными, так и двусвязными. Их отличительной особенностью является то, что условной последний элемент хранит ссылку на первый элемент, поэтому список получается замкнутым или кольцевым.

Рисунок 2.5.2 — Структура данных
(Кольцевые, круговые, циклические списки)

— Кольцевой двусвязный список

Кольцевой двусвязный список — это замкнутый список, на основе указателя элемента перемещается вперед, и назад по кругу.

Каждый узел такого списка представляет элемент, который хранит указатели на предыдущий и следующий узел.

Также есть другие критерии по классификации типов. Например, встроенные типы и те, которые определяются программистом непосредственно. Встроенные типы принадлежат к языку программирования и составляют его основу [16]. В базисе системы типов языка программирования лежит главная система типов, которые встроенные в этот язык. На этой основе разработчик строит собственные, определенные типы данных.

Типы данных бывают динамические и статические. Для динамического типа данных размер в момент объявления неизвестен и память выделяется по запросу в процессе выполнения программы. Для статического типа данных память отводится в момент объявления, требуемый размер данных известен при их объявлении. Еще есть важная классификация типов — деление на ссылочные и значимые. Для значимых типов значение объекта неотъемлемая собственностью переменной. Для ссылочных типов значение служит ссылка на некий объект в памяти, который располагается в динамической памяти. Далее показано перечень основных встроенных типов в языке C Sharp, их основные характеристики.

Бесплатный фрагмент закончился.

Купите книгу, чтобы продолжить чтение.