ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
(НИУ «БелГУ»)
ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК
КАФЕДРА МАТЕМАТИЧЕСКОГО И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
ИНФОРМАЦИОННЫХ СИСТЕМ
АВТОМАТИЗИРОВАННАЯ СИСТЕМА ОПТИМИЗАЦИИ ПОСТАВОК
НА СКЛАД ООО "ЕВРОПА"
Выпускная квалификационная работа
обучающейся по направлению подготовки 02.03.02 Фундаментальная
информатика и информационные технологии
очной формы обучения, группы 07001301
Звягинцевой Анастасии Сергеевны
Научный руководитель
к.т.н., доцент
Муромцев В.В.
БЕЛГОРОД 2017
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ .............................................................................................................. 3
ГЛАВА 1 ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ ...................................................... 4
1.1 Технико-экономическая характеристика предприятия ООО «Европа» ...... 5
1.2 Техническое и программное обеспечение ТПК «ЕВРОПА» ...................... 10
1.3 Анализ складского технологического процесса для разработки
предложений по оптимизации склада ................................................................. 13
1.4 Процессы управления по оптимизации склада ............................................ 14
1.5 Обоснование использования методов автоматизации для решения
задачи оптимизации .............................................................................................. 18
ГЛАВА 2 КОНСТРУКТОРСКАЯ ЧАСТЬ.......................................................... 23
2.1 Транспортная задача и ее описание .............................................................. 23
2.2 Постановка задачи........................................................................................... 23
2.3 Симплекс-алгоритм ......................................................................................... 25
2.4 Построение инфологической модели БД ...................................................... 30
2.5 Проектирование программного обеспечение задачи .................................. 36
2.6 Алгоритм написания программы……….…………………………………..38
2.7 Описание процедур и программ ................................................................... 37
2.8 Руководство пользователей............................................................................ 40
ГЛАВА 3 ТЕСТИРОВАНИЕ АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ…....43
ЗАКЛЮЧЕНИЕ ..................................................................................................... 47
СПИСОК ЛИТЕРАТУРЫ..................................................................................... 48
ПРИЛОЖЕНИЕ ..................................................................................................... 50
3
ВВЕДЕНИЕ
Тема
данной
выпускной
квалификационной
работы
«Автоматизированная система оптимизации поставок на склад».
Актуальность работы заключается в том, что в настоящее время
уделяется усиленное внимание к проблеме максимального удовлетворения
потребностей клиентов с приемлемыми для них затратами по сравнению с
конкурентами.
Сохранение
качественных
параметров
продукции
в
значительной степени зависит от логистических процессов, которые
существенно влияют также на себестоимость и цену товара.
Значение
предприятий
логистического
считается
процесса
неоспоримым,
для
конкурентной
поскольку
он
-
позиции
инструмент
рационализации и снижения расходов предприятия. Однако стоит заметить,
что глобальные расходы логистики составляют от 10 до 40% стоимости
продаваемых товаров.
Функционирование логистической цепи начинается с составления
заказа клиентом и заканчивается, когда покупатель заплатит за товар,
который ему предоставили.
Логистическая цепь показывает движение продукта от поставщика
через производителя и посредников к конечному потребителю. Одной из
основных его частей считается состав, который есть практически на каждом
его уровне.
Состав (в значении состава сырья и материалов для производства, и в
значении склада для готовой продукции) считается интегральной частью
цепи поставок, которую целесообразно рассматривать, с одной стороны, как
место возникновения затрат, с другой - как элемент, который формирует
доверие покупателя к продукту.
Если принимаем, что товаром считается то, что перемещается в
логистической цепи, а транспорт считается тем, как товар перемещается, то
4
составом считается то, где он перемещается, т.е. это место, к которому и из
которого перевозится товар. Следовательно, можно утверждать, что состав
выполняет четыре главные функции: организацию приема, формирования,
складирования, и организацию поставок. Эти функции позволяют содержать
запасы на складе. Благодаря этому предприятие может обеспечить
производство, а также фиксировать разницу между предложением и спросом
как сырья и материалов, так и готовых продуктов.
При неудовлетворительной работе склада к основным рискам можно
отнести повреждения товара, его потерю, долгое время загрузки и разгрузки,
время подготовки поставки, большая трудоемкость, отсутствие места на
складе, задержка производства или поставок по причине отсутствия
соответствующей продукции. Поэтому оптимизация складских процессов
позволяет обеспечить наличие необходимых для потребителей продуктов
соответствующего качества по приемлемой цене.
Целью данной работы является разработка автоматизированной
системы оптимизации логистических процессов и поставок на склад.
Объектом исследования данной выпускной квалификационной работы
считается процесс поставки товаров на склад.
Предметом исследования считается оптимизация процесса поставки
продукции на склады с помощью методов решения транспортной задачи.
В данной работе рассматриваются следующие задачи:
1.
Изучение и исследование предметной области;
2.
Разработка алгоритма оптимизации поставок;
3.
Разработка моделей базы данных
4.
Выбор инструментальных средств;
5.
Реализация автоматизированной системы;
6.
Тестирование разработанной системы.
Данная выпускная квалифицированная работа содержит 49 страниц, 18
рисунков, 6 таблиц и приложение с листингом программы.
5
ГЛАВА 1 ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ
1.1 Технико-экономическая характеристика предприятия ООО
«Европа»
Торгово-производственная
компания
ведет
«Европа»
свою
деятельность на рынке России с 2008 года.
Торговая сеть «Европа» включает в себя пятьдесят торговых
предприятий и объектов в городах Черноземья, более 8000 рабочих мест и
квалифицированных кадров, это более 500 000 покупателей в день.
Группа
торговлю
Компаний
через
«Промресурс»,
магазины
ответственная
торговой
сети
за
розничную
«Европа»,
занимается
благотворительной деятельностью, регулярно выделяя денежные средства на
ремонт больниц, школ и других социально-значимых объектов порядка 20
миллионов рублей в год.
Торговая сеть «Европа» находится в списке самых динамичных
компаний центральной России. Организационно – правовая форма компании
– индивидуальный предприниматель.
За время своего существования компания:
o
Заключила
долговременные
договора
с
ведущими
производителями, за счет постоянного роста ассортимента поставляемых
товаров;
o
Заработала
авторитет
на
рынке
реализации
продукции
промышленного и бытового назначения;
o
Наладила сотрудничество с крупнейшими перевозчиками.
Расширение своего ассортимента - одно из главных направлений
компании. Идя навстречу своим покупателям, она предлагает к продаже всё
больший выбор востребованных на рынке товаров.
6
Основная задача оптово-розничной торговли заключается в снабжении
товарами торговой розничной сети. Решение этой задачи связано с
реализацией ряда торговых и технологических функций. К числу торговых
функций, составляющих основу коммерческой деятельности оптовых
предприятий, относятся:
o
Изучение спроса населения и покупателей на товары;
o
Заключение договоров поставки и контроль их исполнения;
o
Взаимодействие
с
поставщиками
с
целью
расширения
ассортимента и увеличения выпуска высококачественных товаров, а так же
производство новых;
o
Формирование товарного ассортимента и управление запасами
товаров;
o
Заключение договоров купли-продажи с оптовыми покупателями
и обеспечение контроля их исполнения;
o
Оказание товарных услуг, связанных с оптовой продажей
товаров;
o
Организация и проведение рекламных мероприятий.
Технологические функции оптовых предприятий включают:
o
Планомерный и бесперебойный завоз товаров на склады;
o
Приёмку товаров по количеству и качеству;
o
Хранение товаров в надлежащих условиях;
o
Подготовка товаров к продаже (фасовку, упаковку, маркировку и
o
Обеспечение бесперебойного снабжения товарами розничной
т.п.);
торговой сети.
Каждый сотрудник, участвующий в деятельности ТПК «Европа» на
основе трудового договора, относится к тому или иному структурному
подразделению [19].
7
При структуризации компании, ее деятельность рассматривается как
совокупность бизнес-процессов. Бизнес-процесс подразделяется на четыре
большие группы: основные, обеспечивающие, управление и развитие.
Организационная структура предприятия приведена на Рис.1.1.1.
Рис.1.1. Организационная структура управления в компании
«Европа»
Существующая организационная структура ТПК «Европа» имеет ряд
проблем, как уже было сказано выше.
1. Решения представляются непоследовательными и произвольными,
не соотнесенными со стандартами, правилами и критериями.
2. Сотрудники не понимают, чего от них хотят и каким образом
определяется их вклад.
3. Отдельные
работники
становятся
объектом
конкурентного
давления других сотрудников из-за отсутствия стандартных правил
определения приоритетов.
4. Имеются сотрудники, слишком сильно нагруженные из-за того, что
8
они выполняют работы, которые следовало бы выполнять другим
исполнителям.
5. Важная информация поступает с опозданием к сотрудникам,
принимающим решения.
6. Наблюдается изолированность лиц, принимающих решения, в
своих структурных подразделениях, что связано с отсутствием адекватных
средств координации их деятельности.
7. отмечается перегруженность сотрудников, принимающих решения,
из-за их неспособности передать другим часть своих полномочий.
8. Отдельные
сотрудники
или
группы
сотрудников
имеют
конфликтные цели, не связанные с общей политикой организации и ее
приоритетов.
9. В организации слишком много руководителей по сравнению с
числом рядовых сотрудников.
10. Вышестоящие органы не поддерживают нововведения и изменения.
11. Отмечается
недостаточная
или
неправильная
координация
деятельности сотрудников.
Проблемы структурного характера влекут за собой необходимость
находить компромисс между справедливыми, но противоречащими друг
другу требованиями:
•
Потребность в надежности и контроле в ущерб гибкости и
инициативе;
•
ущерб
Четкое разграничение полномочий и сфер ответственности в
необходимости
принимать
во
внимание
информацию
ряда
заинтересованных лиц и штатных специалистов.
На данный момент уделяется усиленное внимание к проблеме
максимального удовлетворения потребностей клиентов с приемлемыми для
них затратами по сравнению с конкурентами. Сохранение качественных
параметров продукции в значительной степени зависит от логистических
9
процессов, которые существенно влияют также на себестоимость и цену
товара.
Необходимо воздействовать на факторы результативной работы членов
трудового коллектива:
✓
разнообразие работы по содержанию;
✓
рост и расширение профессиональной квалификации
работников;
✓
удобные графики работы;
✓
возможности проявления инициативы и осуществления
самоконтроля;
✓
повышение ответственности сотрудников;
✓
продвижение по службе и т.д.
Компенсационный пакет предприятия включает:
1) базовые выплаты в виде оклада или тарифной ставки;
2) премия за качественное выполнение должностных обязанностей;
3) премия за достижение финансовых результатов;
4) доплаты за вредные условия труда;
Социальный пакет предприятия включает:
1) обязательное медицинское страхование;
2) обучения (повышение квалификации);
3) служебная машина;
4) мобильный телефон;
5) компенсация расходов, связанных с использованием личного
автомобиля в служебных целях;
Действия по мотивации на предприятии ТПК «Европа» должны
включать экономическое и моральное стимулирование для реализации
потенциала сотрудников.
10
1.2 Техническое и программное обеспечение ТПК «ЕВРОПА»
В локальной вычислительной сети ТПК «ЕВРОПА» используется
клиент-серверная архитектура, показанная на рис.1.2. [6,10].
Рис.1.2. Техническая архитектура ТПК «ЕВРОПА»
В качестве активного оборудования ЛВС используется управляемый
коммутатор 2-го уровня DES-1210-28 фирмы D-Link, представленный на
рис.1.3.
Рис.1.3. Коммутатор D-Link , вид спереди
Коммутатор поддерживает полнодуплексный режим передачи данных
и ориентирован на применение в топологии «звезда».
Серия
коммутаторов
D-Link
DES-1210
включает
в
себя
11
модернизированные коммутаторы семейства Web Smart, объединяющие
функции
расширенного
управления
и
безопасности,
хорошую
масштабируемость и производительность. Данные коммутаторы просты в
использовании, оптимальны в плане соотношения цена/качество, являются
недорогим и законченным решением для сетей малого и среднего бизнеса
(SMB). Коммутатор DES-1210-28 управляется как с помощью протокола
SNMP, так и на основе удобного Web-интерфейса
Модель DES-1210-28 поддерживает функцию Auto Voice VLAN,
позволяющую
устанавливать первоочередной
приоритет для
пакетов
голосовой связи и обеспечивать бесперебойную работу приложения VoIP
(передача голоса по сети), автоматическое определение MDI/MDIX, что
исключает проблему применения кроссированных кабелей или портов
UpLink и делает подключение коммутатора весьма необременительным.
Расширение стандартных функций 2-го уровня включает в себя IGMP
Snooping, Spanning Tree (алгоритм отставного дерева), Port Mirroring и Link
Aggregation Control Protocol (LACP), а управление потоком IEEE 802.3x
позволяет напрямую подключить коммутатор к серверу для быстрой и
надежной передачи данных.
Коммутатор
поддерживает
функцию
D-Link
Safeguard
Engine,
защищающую сеть от вирусного трафика, cписки управления доступом
(ACL) для повышения безопасности, аутентификацию на основе стандарта
802.1X, функцию предотвращения атак ARP Spoofing, а также DHCP Server
Screening, запрещающую доступ неавторизованным DHCP-серверам.
Модель коммутатора выполнена в металлическом корпусе для
установки в стандартную 19-дюймовую стойку и оснащена действенной
пассивной системой охлаждения.
Для предоставления связи с интернетом в ЛВС организации
используется
ADSL-роутер
известной
фирмы
TP-LINK
модели
TL-
WR1043ND – устройство, сочетающее в себе модем, маршрутизатор (роутер)
и беспроводную точку доступа (рис.1.4.).
12
Рис.1.4. Модем-роутер TP-LINK TL-WR1043ND
Соединенный напрямую с сервером и настроенный на автоматическое
PPPoE-подключение, модем-роутер соединяется с телефонной линией через
DSL-порт, при этом предоставляется постоянно активный высокоскоростной
DSL-доступ в Интернет для всей сети. Данная модель имеет WAN-порт для
подключения Ethernet-кабеля от Интернет-провайдера.
На
персональных
компьютерах
пользователей
установлена
операционная система Microsoft Windows 7 (F2C-00545); 64-bit; Русский; 1
пользователь, DVD; BOX.
В своей работе сотрудники ТПК «ЕВРОПА» используют [4]:
- прикладное и офисное программное обеспечение: Программный
пакет Microsoft Office 2013; Русский; 32-bit/64-bit; DVD; Retail (BOX);
- антивирусное программное обеспечение Kaspersky Lab Internet
Security 2013 (KL1849LUBFS); Русский; 2 ПК; 1 год; диск В;
- в бухгалтерии установлена автоматизированная бухгалтерская
система 1С: Предприятие 8.
Генеральный директор и главный бухгалтер контролируют обновление
законодательных документов и статической информации полученных путем
изучения Интерне источников и от органов государственной статистики.
Как было установлено, процессы ТПК «ЕВРОПА» автоматизированы.
Для формирования заявок менеджер использует табличный процессор MS
Excel 2013 [16].
13
1.3 Анализ складского технологического процесса для разработки
предложений по оптимизации склада
Складской
технологический
процесс
—
это
совокупность
последовательно выполняемых операций, связанных с подготовкой к приему
продукции по количеству и качеству, поступлением, перемещением,
распаковкой, размещением на хранение, укладкой, отборкой, комплектацией,
подготовкой к отправлению продукции потребителю.
Стратегии достижения конкурентных преимуществ предприятия на
рынке достаточно полно освещены в научной литературе [5]. В частности, М.
Портер
[3]
выделяет
следующие
стратегии
достижения
успеха
в
конкурентной борьбе: ценовое лидерство (по расходам), дифференциации и
концентрации.
В [4] авторы рассматривают пять сил конкуренции и стратегии
достижения преимуществ в зависимости от роли фирмы в конкурентной
борьбе. В [2, с. 207] Е.В. Крикавский выделяет такие разновидности
стратегий достижения конкурентных преимуществ, как лидерство по
издержкам, развитие ключевых компетенций, кооперации и стратегии,
ориентированные на время. К основным логистическим стратегиям автор
относит стратегии минимизации логистических затрат, покупку (или
продажу) логистических услуг, совершенствования логистической системы в
масштабе многих фирм и быстрый цикл.
Сегодня, в условиях экономического кризиса, актуальной считается
стратегия достижения лидерства по издержкам, которой соответствует
стратегия снижения логистических затрат. В перспективе будет расти роль и
стратегии дифференциации за счет улучшения уровня обслуживания
клиентов.
Однако в научной литературе недостаточно внимания уделяется
усилению конкурентных преимуществ предприятия за счет оптимизации
14
складских процессов в рамках реализации двух вышеупомянутых стратегий:
лидерства по расходам и дифференциации.
Для разработки предложений по оптимизации складских процессов
необходимо установить методы улучшения качественных показателей
деятельности
состава,
определиться
с
выбором
месторасположения
распределительного центра в определенном регионе с целью оптимизации
выполнения заказа потребителей и уменьшения количества торговых
запасов.
1.4 Процессы управления по оптимизации склада
Управление складом настолько сложный процесс, что появилось много
показателей, характеризующих деятельность состава.
Это показатели складских расходов, использование складской ротации
товара, эффективности работников. Качественные показатели деятельности
состава касаются убытков, которые возникли в результате плохого качества
труда.
Внедрение системы управления качеством позволяет лучше понять
факторы, связанные с качеством на складе. По этому подходу можно не
только ограничить расходы состава, но и получить длительные конкурентные
преимущества предприятия. Качественные факторы на складе можно
разделить
на
характеризующие
три
группы:
изменчивость
факторы,
процесса,
связанные
факторы,
со
временем,
связанные
с
компетенцией работников, факторы, связанные с появлением убытков.
Нахождение методов измерения и улучшение этих трех групп качественных
факторов поможет управлять составом и в результате уменьшить расходы и
получить конкурентное преимущество.
Большинство методов измерения факторов, связанных со временем,
ограничивается определением средней величины, но она не характеризует
изменчивость процесса, поэтому целесообразно применять методологию SPC
15
(Statistical Process Control), которая по своей сути предполагает изменчивость
процесса.
Также
под
предотвращающих
этим
подразумевается
возникновение
потерь.
проведение
На
основании
действий,
данных,
полученных в текущем режиме, можно сделать выводы о предстоящем
поведении процесса. Это преимуществом SPC над другими инструментами
обработки данных.
Применение SPC позволяет:
o
Лучше узнать процессы и влияние различных факторов на их ход,
что помогает отслеживать стабильность этих процессов;
o
Результативнее диагностировать наличие ошибок еще до их
проявления;
o
Неоднократно улучшать системы управления без дорогостоящих
инвестиций;
o
Быстро принимать рациональные решения;
o
Реально оценивать понесенные расходы;
o
Управлять процессами в реальном времени;
Опыт показывает, что примерно 85% всех проблем основывается на
системе управления. Остальные - это причины объективные (аварии, случаи
и т.д.).
Эти 85% вызваны случайной переменой процесса системы, которая
возникает из его природы, общего уровня технологии, организации,
используемых методов деятельности и управления системой.
Следующим фактором, который влияет на качество складских
процессов - а, следовательно, и на расходы – есть профессионализм
работников.
Этот аспект очень важен, но часто его недооценивают. Одним из
инструментов управления им считается "Система управления компетенциями
работников" (SZKP). Этот инструмент позволяет планировать и оптимально
подбирать людей на конкретные рабочие места. SZKP усиливает роль
16
руководителей самого низкого уровня в системе управления, делает текущий
надзор за процессами, имеет решающее значение для результативности,
эффективности и эластичности управления. Ведь чем результативнее
является текущий надзор за процессом, тем меньше системных недочетов.
В результате внедрения SZKP растет эффективность использования
потенциала работников. Дополнительным преимуществом этого метода
считается то, что можно охватить всё предприятие. Риск можно исключить,
контролировать, акцептовать или передать другой организации.
Процессный подход к риску позволяет рассматривать эту проблему в
три этапа: угроза, непосредственно риск и потери. Угроза - фактор или
ситуация, которая может привести к потере. Риск
наступления
события,
влекущего
возникновение
-
это вероятность
ущерба.
Потеря
-
повреждения товара, ошибочная поставка, производственный простой.
По такому делению можно создать карту рисков для принятия
оптимального решения. Сущность метода заключается в сознательном
принятии или исключении риска еще до возникновения негативных
последствий.
Кроме понимания значения состава (узлового объекта) как прямого
источника затрат, необходимо понимать его значение как прямого источника
мультипликаций
других
логистических
расходов
(транспортных,
информационных, риска и т.д.).
Поэтому одной из задач распределения, которую необходимо решить в
целях улучшения уровня обслуживания клиентов, считается разработка
моделей, связанных с выбором места расположения распределительного
склада в регионе сбыта. Необходимость создания распределительного центра
обуславливается, прежде всего, возможностью формирования "пакета
заказов", причем поставлять товар после 100% заполнения автотранспорта.
Таким образом, посчитается возможность сократить затраты поставки
единицы товара.
17
Во-вторых, можно регулировать сроки заказов товара. Предприятие производитель не требует создания больших запасов и ожидания отгрузки
товара.
Имея
свой
распределительный
склад, производитель
может
организовать окончательный контроль продукции и поставлять покупателям
только качественный товар.
И, наконец, в- третьих, можно организовать рецикл тары и сэкономить
средства.
Различают два типа реализации складских проектов. Первый способ компаниями, которые работают на рынке складской недвижимости, строят
целый комплекс и ищут арендатора. Второй способ - это реализация
складского проекта под заказчика, который может его брать в аренду и даже
со временем выкупить, причем проект выполняется с учетом потребностей
заказчика. Предыдущие переговоры между исполнителем и заказчиком очень
важны, потому что не всегда клиент понимает, что именно он хочет
получить.
Поэтому при разработке проекта состава необходимо учитывать
долгосрочную стратегию заказчика. Для решения вопроса, где именно
должен быть построен распределительный состав, необходимо учесть
возможность покупки участка земли, которая не всегда доступна с точки
зрения
ее
стоимости,
существующей
транспортной
инфраструктуры,
месторасположения и т.д.
Рынок складской недвижимости только развивается, и сегодня в России
мало распределительных центров, которые бы предоставляли качественный
сервис.
Требования клиентов к операторам на рынке логистических услуг, как
показывает международный опыт, который касается: обработки большого
количества наименований продукции, комплектации единицами, времени
выполнения заказа (2-3 часа), количества повреждений (не более 0,01% в
месяц), загрузки и разгрузки продукции (в пределах 0,5 часа), возможности
адаптации информационной системы к системе заказчика. Такое качество
18
мало кто может обеспечить, поэтому сегодня многие производственные и
посреднические предприятия занимаются непрофильным бизнесом - сами
создают, оборудуют и обслуживают склады, имеют свой персонал и систему
учета.
В западных странах уже почти отказались от непрофильного бизнеса,
чтобы все свои усилия направить на основной вид деятельности производство.
Главные проблемы, которые существуют у российских производителей
и посредников, связанных со складированием, это: низкий уровень
обслуживания; несовершенный учет; низкий контроль за товародвижением;
устаревшая механизация и автоматизация; большой процент повреждений
товара и ухудшения его качества; низкая скорость обработки грузов;
отсутствие
современной
информационной
системы,
совместимой
с
системами всех субъектов логистической цепи [13].
1.5 Обоснование использования методов автоматизации для
решения задачи оптимизации
Существует много внешних параметров и факторов, влияющих на
выбор места локализации дистрибьюторского центра. Большинство авторов
предметной
литературы
обращают
особое
внимание
на
величину
перемещения товаров, места предоставления и приема грузов, а также длину
трассы, которую преодолевает транспортное средство.
Кроме того, важным фактором, влияющим на локализацию такого
центра, считается требование очень хорошего качества связи с сетью
автомобильных и железных дорог.
Методы, свидетельствуют об отсутствии конкретных инструментов
расчетов, необходимых при проектировании локализации дистрибьюторских
центров.
19
Локализация такого центра должна быть подробно продумана, так как
строительство такого объекта связано со значительными затратами, которые
часто превосходят финансовые возможности.
Определенную исходную пользу составляет метод рангов при
локализации дистрибьюторского центра.
Его
целесообразно
использовать
стратегического
развития
производителей.
Суть
для
обоснования
дистрибьюторских
этого
метода
сетей
заключается
поэтапного
национальных
в
том,
что
систематизируются отдельные регионы (области) в отношении трех
факторов, влияющих на логистику данного региона.
К этим факторам относятся: объем промышленного производства в
регионе; численность населения; общее количество торговых заведений.
Метод установления рангов считается простым и быстрым методом, но
его следует трактовать как один из вступительных при проектировании
локализации логистических (дистрибьюторских) центров, где в равной
степени уровень производства, как и население, а также количество
магазинов являются важными параметрами, которые принимаются во
внимание при локализации центра, но ими не следует ограничиваться.
К примененному методу после вступительной селекции следовало бы
применить методы, которые учитывают величину перемещения грузов на
трассах,
расходы
на
транспортировку
грузов,
расстояния,
которые
преодолеваются транспортом, срок доступности товара и т.д.
Среди методов локализации складских объектов, учитывающих
линейную функцию затрат, математическая запись имеет следующую форму:
ПВ = КВ + kn+ Mt ,
(1.1)
где ПВ - полные затраты; kn - переменные удельные затраты на
единицу продукции; Mt - величина продаж единиц продукции; KВ постоянные расходы.
20
Этот метод можно применить только для простых подсчетов. Над
постоянными и переменными затратами можно полемизировать, так как не
удастся точно оценить эти параметры в момент начальной локализации
определенного складского объекта.
Поскольку предметная область, выбранная для дипломного проекта,
затрагивает закупочно-продажную и учетную функцию данной компании,
перечень входных и выходных документов будет достаточно велик.
Автоматизация данных задач позволит ускорить документооборот, сократить
ручные операции.
В таблице 1.1 представлены перечни и источники используемых
входных документов.
Таблица 1.1
Перечни и источники используемых входных документов.
№ п/п
Перечень входных документов
Источники входных документов
1
Заказы
Покупатели
2
Приходные накладные
Поставщики
При условии, что клиент сделал заказ и хочет расплатиться
наличными денежными средствами, менеджер проверяет наличие товаров,
внесенных в список заказов, на розничном складе. Если товар имеется, то
происходит процесс оформления расходной накладной или товарного чека.
Если же от клиента, который желает вести безналичный расчет,
поступил заказ менеджеру, то он распечатывает счет на оплату и отдает его в
бухгалтерию на хранение до момента оплаты. Затем
оплаченный счет
перенаправляется менеджеру с пометкой оплаты, после чего сотрудник
сравнивает суммы заказа и оплаты.
Иногда клиент вносит сумму неравную сумме заказа. В таких случаях
выясняется в бухгалтерии баланс клиента, и если он не совпадает с суммой
заказа, то менеджер связывается с клиентом и выясняет причину. При этом
21
возможна корректировка заказа. Кроме того менеджер проверяет наличие
товара, включенного в список заказов, на складе. А отдел поставок
группирует полученные от клиентов заказы.
В отдел поставок приходные накладные по электронной почте
присылаются поставщиками, откуда их пересылают в отдел продаж. После
этого менеджер формирует поступление на оптовый склад товара путем его
копирования из электронных накладных в таблицы Excel.
При условии возврата товара от клиента на склад, составляется
приходная накладная. В таком случае происходит неверный расчет таких
показателей результата, как выручка или прибыль, так как возврат товара
приравнивается к его поступлению.
В Таблица 1. 2 1.2 представлены перечни и адресаты используемых
результативных документов.
Таблица 1. 2
Перечни и адресаты результатных документов.
№ п/п
Перечень результатных
Адресаты результатных
документов
документов
1
Расходная накладная
Склад, бухгалтерия
2
Приходная накладная
Склад, бухгалтерия
2
Товарный чек
Покупатель
3
Счет на получение
Бухгалтерия
Расходная накладная оформляется менеджерами при отгрузке товара со
склада. Распечатанный экземпляр отдается на склад для набора товара, после
чего кладовщик приносит товар в торговый зал. Распечатанный экземпляр
расходной накладной отдается в бухгалтерию только в том случае, если
покупатель осуществил оплату безналичным расчетом. Он необходим для
формирования бухгалтерских документов – накладных и счетов-фактур.
22
Счет на получение выдается покупателю при необеспеченном заказе
для получения товара в оговоренный срок (если необходимого товара нет в
настоящее время ни на одном из складов), только при покупке за наличный
расчет. К нему прилагается кассовый чек, который подтверждает оплату
заказа. Товарный чек выдается только по просьбе покупателя при отгрузке
товара.
Некоторая
информация, которая хранится в хранилищах, в
дальнейшем подлежит обработке и выводу в информационной системе, в
данном случае такой информацией являются входные показатели и
результатные показатели, представленные в
Таблица и Таблица 1. соответственно.
Таблица 1.3
Входные показатели
№ п\п
Наименование
Идентификатор
1
Закупочная цена
Цз
2
Процент скидки
С%
3
Процент наценки
Н%
4
Процент НДС
НДС%
5
Розничная цена
Цр
6
Оптовая цена
Цо
Таблица 1.4
Результатные показатели
№ п\п
1
2
3
Наименование
Идентификатор
Расчет розничной цены
Цр = Цз * (1 + Н% / 100) * (1 + НДС% /
товара без скидки
100)
Расчет розничной цены
товара со скидкой
Расчет оптовой цены
Цр = Цр – (С% / 100) * Цр
Цо = Цз – (C% / 100) * Цз
23
ГЛАВА 2 КОНСТРУКТОРСКАЯ ЧАСТЬ
2.1 Транспортная задача и ее описание
Основная задача транспортной логистики — перемещение требуемого
количества товара в нужную точку оптимальным маршрутом за требуемое
время и с наименьшими издержками. Различаются два варианта задачи:
закрытая (или сбалансированная) и открытая модель (задачи с избытком или
с дефицитом). В случае закрытой модели весь имеющийся в наличии груз
развозится без остатка, что полностью удовлетворяет все потребности
заказчиков (количество груза равно сумме заказов). В случае открытой
модели либо все заказчики удовлетворены и при этом на некоторых складах
могут остаться излишки груза (количество груза больше суммы заказов),
либо весь груз оказывается израсходованным, хотя не все потребности
полностью удовлетворены (количество груза меньше суммы заказов).
2.2 Постановка задачи
Известны сij , i=1,2,...m; j=1,2,...n — стоимости перевозки единиц груза
от каждого i-го поставщика каждому j-му потребителю. Переменными
(неизвестными) транспортной задачи являются xij , i=1,2,...,m j=1,2,...,n —
объемы перевозок от i-го поставщика каждому j-му потребителю.
Рассмотрим транспортную задачу:
Однородный груз сосредоточен у m поставщиков в объемах a1 , a 2 , ..., am .
Данный груз необходимо доставить n потребителям в объемах b1 , b 2 , ..., bn .
Известны с ij ( i 1,..., m , j 1,..., n ) — стоимости перевозки единицы груза от
каждого i-го поставщика каждому j-му потребителю.
24
Требуется составить такой план перевозок, при котором запасы всех
поставщиков
вывозятся
удовлетворяются
и
полностью,
суммарные
запросы
затраты
на
всех
перевозку
потребителей
всех
грузов
минимальны.
Исходные данные транспортной задачи представлены в таблице 2.1:
Таблица 2.1
Данные транспортной задачи
b1
b2
…
bn
a1
с11
с12
…
с1n
a2
с21
с 22
…
с2n
…
…
…
…
…
am
с m1
сm 2
…
с mn
b1
a1
Неизвестными транспортной задачи являются x ij ( i 1,..., m , j 1,..., n ) это объемы перевозок от каждого i-го поставщика каждому j-му
потребителю. Они могут быть представлены в виде матрицы перевозок.
Составим математическую модель транспортной задачи в общем
случае:
m
n
Z ( x) cij xij min
(2.1)
i 1 j 1
n
x
j 1
ij
ai , i 1,..., m
(2.2)
ij
b j , j 1,..., n .
(2.3)
m
x
i 1
xij 0 , i 1,..., m , j 1,..., n (2.4)
Целевая функция задачи (2.1) определяет требование обеспечить
минимум суммарных затрат на перевозку всех грузов.
25
Первая группа из т уравнений (2.2) описывает тот факт, что запасы
всех т поставщиков вывозятся полностью. Вторая группа из п уравнений
(2.3) выражает требование полностью удовлетворить запросы всех п
потребителей.
Неравенства (2.4) являются условиями неотрицательности всех
переменных задачи.
Таким образом, математическая формулировка транспортной задачи
состоит
в
следующем:
удовлетворяющие
найти
системе
переменные
ограничений
(2.2),
задачи
(2.3),
X ( xij ) ,
условиям
неотрицательности (2.4) и обеспечивающие минимум целевой функции
(2.1).
В рассмотренной модели транспортной задачи предполагается, что
суммарные запасы поставщиков равны суммарным запросам потребителей,
т.е.
m
n
a b
i 1
i
j 1
j
(2.5)
2.3 Симплекс-алгоритм
Геометрическая интерпретация, которая использовалась при решении
задач линейного программирования (ЛП), перестает быть пригодной для этой
цели при числе свободных переменных n – m >= 3. Для нахождения решения
задачи ЛП в общем случае (при произвольном числе свободных переменных)
применяются не геометрические, а вычислительные методы. Из них наиболее
универсальным является симплекс-метод.
Идея симплекс-метода относительно проста. Пусть в задаче ЛП имеется
n переменных и m независимых линейных ограничений, заданных в форме
уравнений, т.е. задача ЛП сформулирована в канонической форме.
26
Оптимальное решение, при условии его существования, достигается в одной
из угловых точек, где k = n – m из переменных равных нулю. Возьмем какиелибо k - переменных в качестве свободных и выразим через них остальные
m - базисных переменных. Допустим, в качестве свободных выбраны первые
k = n – m переменных x1 , x2 , … xk , а остальные m выражены через них:
xk+1 = ak+1,1x1 + ak+1,2x2 + … + ak+1,kxk + bk+1
xk+2 = ak+2,1x1 + ak+2,2x2 + … + ak+2,kxk + bk+2
…
(2.6)
xn = an,1x1 + an,2x2 + … + an,kxk + bn
Предположим, что все свободные переменные x1 , x2 , … xk равны
нулю, то решение будет называться базисным и иметь следующий вид:
x1 = 0, x2 = 0, … xk = 0, xk+1 = bk+1, xk+2 = bk+2, … , xn = b.
Это решение может быть допустимым или недопустимым. Оно
допустимо в том случае, если все свободные члены bk+1, bk+2, … , bn
неотрицательны. Если это условие выполняется, то полученное решение
называется допустимым базисным решением или опорным решением.
Допустимое базисное решение соответствует одной из угловых точек ОДР
(вершин ОДР). Предположим, что условие не отрицательности свободных
членов выполнено. Тогда получится
допустимое базисное решение, но
является ли оно оптимальным? Чтобы проверить это, нужно выразить
целевую функцию
z = c1x1 + c2x2 + … + cnxn ,
(2.7)
которую требуется минимизировать, через свободные переменные x1 ,
x2 , … xk:
z = d0 + d1x1 + … + dkxk ,
(2.8)
27
Для этого надо в (2.2) подставить (2.1), чтобы выразить базисные
переменные через свободные и привести подобные члены. Очевидно, что при
x1 = 0, x2 = 0, … xk = 0 z = d0 , т.е. d0 – это значение целевой функции при
допустимом базисном решении. Следует проверить, возможно ли улучшить
решение, т.е. уменьшить целевую функцию z, увеличивая какие-нибудь из
переменных x1, x2, … xk (уменьшать их невозможно, т.к. все они равны нулю,
а
отрицательные
значения
переменных
недопустимы).
Если
все
коэффициенты d1, d2 , … dk в формуле (2.3) положительны, то, увеличивая
какие-то из переменных x1, x2 , … xk сверх нуля, нельзя уменьшить целевую
функцию z; следовательно, найденное допустимое базисное решение
является оптимальным.
Если же среди коэффициентов d1, d2 , … dk в формуле (2.3) есть
отрицательные, то, увеличивая некоторые из переменных x1, x2 , … xk , а
именно – те, коэффициенты при которых отрицательны, возможно улучшить
решение, т.е. уменьшить z.
Пусть, например, коэффициент d1 в формуле (2.7) отрицателен.
Значит, есть смысл увеличить х1, т.е. перейти от данного допустимого
базисного решения (опорного решения) к другому, где переменная х 1 не
равна нулю, а вместо нее равна нулю какая-то другая, т.е. перейти от одной
вершины ОДР к другой вершине.
Увеличение х1 “полезно” для целевой функции z, делает ее меньше.
Однако увеличивать х1 надо аккуратно, так чтобы не стали
отрицательными другие переменные xk+1, xk+2 , … , xn , выраженные через
свободные переменные, в частности, через х1 формулами (2.6).
Так как остальные свободные переменные x2 , … xk остаются равными
нулю, то изменения базисных переменных xk+1, xk+2 , … , xn от увеличения х1
выражаются формулами:
28
xk+1 = ak+1,1x1 + b1
xk+2 = ak+2,1x1 + b2
…
(2.9)
xn = an,1 x1 + bn
Следует проверить, опасно ли для переменных xk+1, xk+2 , … , xn
увеличение х1 , т.е. может ли оно делать их отрицательными? Да, опасно,
если коэффициент при х1 в соответствующем уравнении отрицателен. Если
среди уравнений (2.8) нет уравнения с отрицательным коэффициентом при х1
, то величину х1 можно увеличивать беспредельно, а, значит, целевая
функция z не ограничена снизу и оптимального решения задачи ЛП не
существует.
Допустим, что это не так и что среди уравнений (2.9) есть такие, в
которых коэффициент при х1 отрицателен. Для переменных, стоящих в левых
частях уравнений, увеличение х1 опасно – оно может сделать их
отрицательными. Необходимо взять одну из таких переменных хl и
посмотреть, до какой степени можно все же увеличить х1, пока переменная хl
не станет отрицательной?
l–ое уравнение из системы преобразуется в следующее (2.9).
xl = al,1x1 + bl
Здесь свободный член bl >= 0, а коэффициент al,1 отрицателен. Легко
понять, что можно увеличивать х1 только до значения, равного - bl / al,1 , а при
дальнейшем увеличении х1 переменная хl станет отрицательной.
Берется из переменных xk+1, xk+2 , … , xn та , которая раньше всех
обратиться в нуль при увеличении х1 , т.е. ту, для которой величина - bl / al,1
меньше всего. Пусть этой переменной будет хr . Тогда имеет смысл
“переразрешить”
систему
уравнений
(2.7)
относительно
базисных
29
переменных, выведя из числа свободных переменных х1 и переведя вместо
нее в группу свободных переменных хr.
Действительно, нужно перейти от допустимого базисного решения,
задаваемого равенствами x1 = 0, x2 = 0, … xk = 0, к допустимому базисному
решению, в котором уже x1 <> 0, а x2 = 0, … xk = 0,хr = 0.
Первое допустимое базисное решение получится, если обратить в нуль
все новые свободные переменные x1, x2, … xk ; второе - если обратить в нуль
прежние переменные x2, … xk, хr . Базисными переменными при этом будут
x1,xk+1 , … ,хr-1, хr+1, … , хn .
Предположим, уравнения типа (2.1) для нового набора базисных и
свободных переменных составлены. Тогда можно выразить через новые
свободные переменные и целевую функцию z.
Если
все
коэффициенты
при
переменных
в
этой
формуле
положительны, то в итоге получилось относительное решение (в нем все
свободные переменные положены равными нулю).
Если среди коэффициентов при переменных есть отрицательные, то
процедура
улучшения
решения
продолжается:
система
вновь
переразрешается относительно других базисных переменных, и так далее,
пока не будет найдено оптимальное решение, обращающее целевую
функцию z в минимум, или не будет установлено, что целевая функция не
ограничена снизу, т.е. задача ЛП не имеет решения.
Изложенное выше является содержанием симплекс-алгоритма. Суть
симплекс-алгоритма состоит в установлении является ли
допустимое
базисное решение оптимальным. Если нет, то в указании как перейти к
новому допустимому базисному решению, в котором
функции будет не больше, чем в предыдущем решении.
значение целевой
30
2.4 Построение инфологической модели БД
Построение инфологической модели БД следует начать с реализации
диаграммы потоков данных (DFD). Стандарт описания бизнес-процессов
DFD — Data Flow Diagram переводится как диаграмма потоков данных и
используется для описания процессов верхнего уровня и для реально
существующих в организации потоков данных. Созданные модели потоков
данных компании могут быть использованы при решении таких задач, как:
1.
определение
существующих
хранилищ данных
(текстовые
документы, файлы, система управления базой данных — СУБД);
2.
определение и анализ данных, необходимых для выполнения
каждой функции процесса;
3.
подготовка к созданию модели структуры данных организации,
так называемая ERD-модель (IDEF1X);
4.
выделение
основных
и
вспомогательных
бизнес-процессов
организации.
Диаграммы потоков данных показывают, как каждый процесс
преобразует свои входные данные в выходные, и выявляют отношения
между этими процессами. DFD представляет моделируемую систему как
сеть связанных работ.
Существуют две нотации диаграмм: графические нотации Йордана Де
Марко и Гейна-Сарсона. Различие заключается в графических формах
объектов. [2]
Главные объекты нотации рис.2.1.:
Процессы
(Activities).
Отображают
процессы
обработки
и
изменения информации;
Стрелки (Arrows). Отображают информационные потоки;
Хранилища данных (Data Store). Отображают данные, к которым
осуществляется
изменяются;
доступ,
эти
данные
используются,
создаются
или
31
Внешние сущности (External References). Отображают объекты, с
которыми происходит взаимодействие.
Рис.2.1. Главные объекты DFD в нотации Йордана Де Марко
На
Error! Reference source not found.показана
диаграмма потоков данных в
рамках рассматриваемой предметной области компании.
Рис.2.2. Диаграмма потоков данных
Цель инфологического моделирования
– обеспечение наиболее
естественных для человека способов сбора и представление той информации,
которую предполагается хранить в создаваемой базе данных.
Поэтому инфологическую модель данных пытаются строить по
аналогии с естественным языком, однако он не может быть использован в
32
чистом
виде
из-за
сложности
компьютерной
обработки
текстов
и
неоднозначности любого естественного языка. Основными конструктивными
элементами инфологических моделей являются сущности, связи между ними
и их свойства (атрибуты) [3].
Разгрузка товара. Это первый этап поступления товара на склад. Для
того чтобы реализовать поставку на склад, необходимо знать кому нужно
сделать заказ на нужный товар, следовательно, можно определить сущность
«Поставщики», хранящую в себе в качестве атрибутов информацию о
предприятии (наименование предприятия, адрес, телефон, электронная почта,
а также различные банковские и юридические реквизиты). Так как
поставщики поставляют нам товар, то определяется сущность «Приход»,
атрибуты сущности хранят информацию о поставке (наименование товара,
дата поставки, количество товара и цена товара).
На рис.2.3. показана инфологическая модель, включающая в себя
сущности
и атрибуты сущностей. Инфологическая модель базы данных
представляет собой описание объектов (сущностей), с набором атрибутов и
связей между ними, которые выявляются в процессе исследования как
входных, так и выходных данных.
Она предназначается для структурного образования предметной
области, с ориентированием на информационное внимание пользователей,
разрабатываемой системы. Так же инфологическая модель должна быть как
стабильной, так и неизменной, и являться представлением аспекта
пользователя на описанную предметную область.
Однако,
при
проектировании
инфологической
модели,
должна
присутствовать возможность для её увеличения и вставки вспомогательных
данных [1]
33
Рис.2.3. Инфологическая модель данных
Сегодня наиболее распространены реляционные модели данных.
Любая система данных какой- либо сложности может быть сведена к набору
таблиц (или "отношений" в терминологии СУБД). Каждое отношение
(таблица) может быть представлено в виде прямоугольного массива со
следующими свойствами:
1.
Каждая ячейка в таблице представляет точно один элемент
данных;
2.
Каждая таблица имеет однородные столбцы,
все элементы в
любом из столбцов одного и того же вида;
3.
Каждому столбцу назначено определенное имя;
4.
Все строки различны, дублировать строки не разрешается;
5.
Строки, и столбцы не зависят от последовательности, просмотр в
различной
последовательности
не
может
изменить
информационное
содержание отношения;
6.
Каждая строка олицетворяет уникальный элемент данных,
который ею и описывается;
7.
Столбцы представляют собой отдельные куски информации
(атрибуты данных), которые известны о данном элементе.
Вообще, лишь немногие реальные базы данных могут быть описаны
при помощи единственной таблицы. Большинство приложений используют
множество таблиц, которые содержат столбцы (поля) с одинаковым именем.
Эти общие данные позволяют, объединяя две (или несколько) таблицы,
строить осмысленные ассоциации.
34
Нормализация — это процесс организации данных в базе данных,
включающий создание таблиц и установление отношений между ними в
соответствии с правилами, которые обеспечивают защиту данных и делают
базу данных более гибкой, устраняя избыточность и несогласованные
зависимости.
Существует несколько правил нормализации баз данных. Каждое
правило называется «нормальной формой».
Сущность первой нормальной формы:
o
Устранение повторяющихся групп в отдельных таблицах;
o
Создание отдельной таблицы для каждого набора связанных
данных.
o
Идентификация каждого набора связанных данных с помощью
первичного ключа.
Если выполняется первое правило, говорят, что база данных
представлена в «первой нормальной форме».
Сущность второй нормальной формы:
o
Создание отдельных таблиц для наборов значений, относящихся
к нескольким записям.
o
Связка данной таблицы с помощью внешнего ключа.
Если выполняется второе
правило, говорят, что база данных
представлена во «второй нормальной форме».
o
Третья нормальная форма
o
Устранение поля, не зависящие от ключа.
Если выполняются три первых правила, считается, что база данных
представлена в «третьей нормальной форме».
35
Разрабатываемая БД нормализована до 3НФ и представлена наError!
Reference source not found. рис.2.4.
Рис.2.4. Этапы формирования оптимального заказа
К подготовительным мероприятиям по приему товаров на складе
относится:
установление
места
разгрузки
транспортных
средств,
максимально приближенного к помещению для хранения;
определение необходимого количества работников для разгрузки
и распределение работ между ними;
определение необходимого количества и видов подъемно-
транспортного оборудования и подготовка его к прибытию товаров;
заблаговременное определение мест хранения;
подготовка документации, связанной с оформлением приемки-
сдачи товаров.
Прежде чем приступить к непосредственному приему товара,
необходимо его разгрузить. При разгрузке осуществляется передвижение
товаров с автотранспорта на товарную платформу.
36
Разгрузку
осуществляют
работники
того
предприятия,
чьим
автотранспортом был доставлен товар на склад, то есть это могут быть
работники
фирмы
поставщика,
транспортной
организации,
фирмы
покупателя. Если товар доставлен собственным автотранспортом фирмы
покупателя или железной дорогой, разгрузку осуществляют работники
склада.
2.5 Проектирование программного обеспечения задачи
Схемы "Дерево функций" и "Сценарий диалога" по своей сути
непосредственно
позволяют
наглядно
показать
иерархию
функций
управления оптимизацией и обработки данных, которые автоматизированы в
разработанном программном продукте.
Рис.2.5. Сценарий диалога
37
Рис.2.6. Дерево функций
2.6 Описание процедур и программ
Краткое описание программных модулей представлено в таблице 2.1
Структурную схему пакета удобно непосредственно представить в
виде рис.2.6.
38
Рис.2.6. Структурная схема пакета
Таблица 2.1
Описание программных модулей
AuthorizationP1
Окно входа в систему ПО
ActionProduct1
Окно добавления, изменения товара ПО
AboutU1
Окно информации «О программе» ПО
ExpenseU1
Окно просмотра расходов ПО
AddExpenseU1
Окно добавления расхода ПО
ParishU1
Окно просмотра приходов ПО
AddParishU1
Окно добавления прихода ПО
ClientU1
Окно для работы с покупателями ПО
CompanyU1
Окно для работы с данными о компании ПО
DataModule1
Контейнер для хранения элементов ПО соединения
проекта программного приложения с хранилищем
данных
FullSum1
Модуль для перевода денежных значений в пропись
ПО
MainU1
Главное окно приложения ПО
ProviderU1
Окно для работы с поставщиками ПО
ReportGraphU1
Окно вывода графика продаж ПО
39
Продолжение. Таблица 2.1
Описание программных модулей
ReportU1
Окно отчета о продажах ПО
SettingPriceU1
Окно изменения наценки, НДС ПО
TemplateU1
Окно для работы с шаблонами ПО
UsersAppU1
Окно для работы с пользователями и должностями ПО
WareObU1
Окно для работы с отделами, группами и ед. изм. ПО
2.7 Алгоритм работы программы
После запуска программы вводятся данные, затем происходит проверка
задачи
на
закрытость/открытость.
После
чего
начинается
поиск
оптимального решения задачи, если задача не оптимальна, производится
поиск ключевого элемента, ключевой строки и ключевого столбца в матрице,
затем - нахождение новых элементов задачи и построение таблицы. Далее
возвращаемся к поиску оптимального решения, если задача вновь не
оптимальна, то повторяются проделанные ранее шаги, если оптимальна, то
происходит останов. Ниже представлен алгоритм в виде блок-схемы (см.
рис.2.7.).
40
Рис.2.7. Алгоритм работы програмного комплекса
2.8 Руководство пользователей
Руководство пользователя предназначено для того, чтобы научить
пользователя программы работать с ней. При этом предполагается, что
пользователь имеет некоторый начальный навык работы с компьютером, т.е.
умеет работать с клавиатурой и мышью, ориентируется в сообщениях
выдаваемых компьютером, знает, что такое Windows, окно и т.п.
Информационная система разработана с использованием программного
средства визуальной разработки – С++.
Схема работы программы представлена на рис.2.8.:
41
Рис.2.8. Схема работы програмного комплекса
База данных FireBird разработана при помощи программы IBExpert.
Информационная система рассчитана на работу под управлением ОС
XP, Vista, Seven. Для работы программы, необходимо чтобы на компьютере
были установлены сервер Firebird версии 2.5, IBExpert, а также клиентское
приложение (разработанная ИС).
Необходимость создания распределительного центра обуславливается
прежде всего возможностью формирования "пакета заказов", причем
поставлять товар после 100% заполнение автотранспорта.
42
Таким образом, посчитается возможность сократить затраты поставки
единицы товара.
При установке системы необходимо зарегистрировать пользователей
системы, назначить права и установить пароль.
Регистрация пользователей, назначение прав и ролей происходит в
IBExpert, после этого нужно прописать путь к базе данных в файле
конфигурации
необходимо
(это
должен
данного
делать
пользователя
администратор
зарегистрировать
системы),
в
ИС,
далее
добавив
должность сотрудника в компании.
Поэтому одной из задач распределения, которую необходимо решить в
целях улучшения уровня обслуживания клиентов, считается разработка
моделей, связанных с выбором места расположение распределительного
склада в регионе сбыта.
После этого заполнить справочники в системе, добавить пути к
шаблонам документов и отчетов, установить необходимые цены, и можно
приступать к работе.
Вверху окна размещено меню. Внизу информационная панель с датой,
временем и именем пользователя работающего с программой.
Ниже, на рис.2.9, приведена логическая модель базы данных.
Рис.2.9. Логическая модель БД
43
ГЛАВА 3 ТЕСТИРОВАНИЕ АВТОМАТИЗИРОВАННОЙ
СИСТЕМЫ
После запуска приложения открывается начальное окно
программы с возможностью введения данных адресов массивов.
Данное окно представлено на рис. 3.1.
Рис.3.1. Начальное окно приложения
На рис.3.2. представлен пример простого окна загрузки данных, с
помощью которого, имея данные адреса массивов в текстовом виде, можно
загрузить эти данные в программу (Файл → Открыть).
44
Рис.3.2. Окно добавления данных
После заполнения полей данными и нажатия на кнопку «Рассчитать»,
определяется состояние транспортной задачи, после чего появляется окно,
оповещающее об этом состоянии, показанное на рис.3.3. и рис.3.4.
Рис.3.3. Состояние закрытой транспортной задачи
45
Рис.3.4. Состояне открытой транспортной задачи
В случае, если транспортная задача оказалась открытой, программа
преобразует ее в закрытую путем добавления фиктивного потребителя.
Данный случай представлен на рис.3.5.
Рис.3.5. Преобразование транспортной задачи
46
Затем программа производит расчёты для нахождения оптимального
плана, т.е. для нахождения минимальных транспортных затрат. Пример
данных расчетов представлен на рис. 3.6.
Рис.3.6. Окно расчета
При решении данной задачи было необходимо использовать теорию
размытых множеств, так как она считается альтернативной другим методам,
которые поддерживают решение в ситуации выбора.
Эта процедура предполагает умение сравнивать парами альтернативы
или критерии. Вычислять ее можно в калькуляционной таблицы Excel,
определяя нужные значения, что облегчает анализ выбора в зависимости от
изменений значений отдельных критериев или отношений важности
критериев.
47
ЗАКЛЮЧЕНИЕ
В процессе выполнения выпускной квалифицированной работы была
реализована
автоматизированная
информационная
система
для
автоматизации процессов деятельности сотрудников оптово-розничной базы
компании «Европа». Задачи, которые были поставлены, реализованы.
Разработанная
автоматизированная
система
имеет
большую
практическую ценность, данная система делает более быстрой обработку
информации, улучшает качество обработки информации, автоматизирует
ввод и вывод информации.
В ходе выполнения работы была доказана актуальность выбранной
темы, проанализирована предметная область.
Рассмотрен
максимизировать
алгоритм
оптимизации
ожидаемую
прибыль
заказов,
путём
который
изменения
позволяет
количества
закупаемых товаров и минимизировать стоимость закупки путём выбора
поставщиков.
Реализованная
автоматизированная
система
оптимизации
была
успешно протестирована и внедрена на предприятие ООО «Европа».
В результате выполнения дипломного проекта были приобретены
навыки работы с учебной, справочной и методической литературой, что
помогло реализовать цель проекта и выполнить все поставленные задачи.
48
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1.
А. Шкрыл. Разработка клиент-серверных приложений в С++.,
изд. - БХВ-Петербург, 2016. – 480 с.
2.
Архангельский П.Я. «Программирование в С++ 7»: ООО «Бином
- Пресс», Москва, 2015.
3.
Гофман Г.Э., Хомоненко А.Д. // Работа с базами данных в С++. – 2-е
изд. - СПб.: БХВ-Петербург, 2012.- 824 с.:ил.
4.
Змитрович Л.И. Базы данных. - Минск.: Университетское, 2013.
5.
Конноли О., Бегг К., Страчан О. Базы данных: проектирование,
реализация, сопровождение ПО. Пер. с англ. – М.: издательский дом
«Вильямс», 2010, 110 с.
6.
Мейер Л. Теория реляционных баз данных (БД). - М.: Мир, 2014.
7.
Михаил О.Г. Библия С++— СПб.: БХВ5 -Петербург, 2014. —
8.
Назаров В.И. Базы данных. Проектирование и реализация:
Практикум по курсу // Московский государственный университет экономики,
статистики и информатики - М., 2014.
9.
Рудаков Л.В. Технология разработки программных продуктов
РО: Учеб. пособие. – М.: Издательский центр «Академия», 2015.
10.
Румянцева О.П., Н. Т. Саламатина. Менеджмент организации.
учебное - М.: ИНФРА_М. - 2016.
11. Смирнова Г.О., Сорокин А.А., Тельнов Ю.Ф. // Проектирование
экономических информационных систем: учебник. – М.: Финансы и
статистика, 2012. – 512 с.: ил.
12. Фаронов Ш. В. Программирование баз данных на С++ 7. Учебный
курс. — СПб.: Питер, 2016. —489 с: ил.
13. Фуфаев Э.В., Фуфаева Д.Э. Базы данных: Учебное пособие. –
Издательский центр «Академия», 2015.
49
14. Хелен Боррис. Firebird: Руководство разработчика баз данных на
С++, 2017.- 924 с.
15.
Шубинский И.Б., Хабаров С.П., Горбачев В.А. Экономическая
информатика и вычислительная техника: Учебное пособие / ЛТА, СПб., 2014.
16. Локальные нормативные акты компании «Европа».
50
ПРИЛОЖЕНИЕ
#inс1ud1e <vс1.h>
#inс1ud1e<fstreам.h>
#іnс1иd1ее<pr0сееss.h>
#prаgма hd1rst0p
#іnс1иd1ее "unіt1.h"
__fаstса11 TF0rм1::TF0rм1(TС0мp0nееnt* 0wnееr)
: TF0rм(0wnееr)
{
}
//Клик на меню "Файл->Открыть"
v0іd1 __fаstса11 TF0rм1::N2С1ісk(T0Вjеесt *Sееnd1ееr)
{
іf(0pееnD1іа10g1->ЕЕxеесиtее())
{
АnsіStrіng nамееfаі1ее=0pееnD1іа10g1->Fі1ееNамее
іfstrееам іnpиt(nамееfаі1ее.с_str());//
іf(!іnpиt) //если файл не найден:
{
Sh0wМееssаgее("Ошибка открытия файла");
}
ее1sее //если файл найден:
{
іnt n;
іnpиt>>n;//
StrіngGrіd11->R0wС0иnt=n+1;//
StrіngGrіd12->R0wС0иnt=n+1;
іnt м;
іnpиt>>м;//
StrіngGrіd11->С01С0иnt=м+1;//
StrіngGrіd13->С01С0иnt=м+1;
f10аt а;
f0r(іnt і=1;і<=n;і++)
{
іnpиt>>а;//
StrіngGrіd12->Сее11s[0][і]=а;//
StrіngGrіd11->Сее11s[0][і]=" А"+ІntT0Str(і);
}
f10аt В;
f0r(іnt і=1;і<=м;і++)
{
іnpиt>>В;//
StrіngGrіd13->Сее11s[і][0]=В;//
StrіngGrіd11->Сее11s[і][0]=" В"+ІntT0Str(і);
}
f10аt с;
f0r(іnt і=1;і<=n;і++)
f0r(іnt j=1;j<=м;j++)
{
51
іnpиt>>с;//
StrіngGrіd11->Сее11s[j][і]=с;//
}
}
}
}
v0іd1 __fаstса11 TF0rм1::F0rмАсtіvаtее(T0Вjеесt *Sееnd1ееr)
{
StrіngGrіd12->Сее11s[0][0]="Запасы:";
StrіngGrіd13->Сее11s[0][0]="Потребности:";
ЕЕd1іt1->Tееxt="Запасы\\ Потребности";
f0r(іnt і=1;і<StrіngGrіd11->С01С0иnt;і++)
StrіngGrіd11->Сее11s[і][0]=" В"+ІntT0Str(і);
f0r(іnt і=1;і<StrіngGrіd11->R0wС0иnt;і++)
StrіngGrіd11->Сее11s[0][і]=" А"+ІntT0Str(і);
Меем01->С1ееаr();
}
v0іd1 __fаstса11 TF0rм1::ВіtВtn1С1ісk(T0Вjеесt *Sееnd1ееr)
{
Меем01->С1ееаr();
іnt n=StrіngGrіd11->R0wС0иnt-1;//
іnt м=StrіngGrіd11->С01С0иnt-1;//
f10аt Sа=0;
f10аt SВ=0;
try
{
f0r(іnt і=1;і<=n;і++)//находим суммарные запасы
Sа=Sа+StrT0F10аt(StrіngGrіd12->Сее11s[0][і]);
f0r(іnt і=1;і<=м;і++)//
SВ=SВ+StrT0F10аt(StrіngGrіd13->Сее11s[і][0]);
ЕЕd1іt1->Tееxt="SАj="+F10аtT0Str(Sа)+ " \\ SВі=" +F10аtT0Str(SВ);
іf(Sа==SВ)Sh0wМееssаgее("Транспортная задача - закрытая");
ее1sее
{
Sh0wМееssаgее("Транспортная задача - открытая");
іf(Sа>SВ)
В"+ІntT0Str(м+1));
м++;
StrіngGrіd11->С01С0иnt++;
StrіngGrіd11->Сее11s[м][0]=" В"+ІntT0Str(м);//
f0r(іnt і=1;і<=n;і++)
StrіngGrіd11->Сее11s[м][і]=0;//
StrіngGrіd13->С01С0иnt++;
StrіngGrіd13->Сее11s[м][0]=Sа-SВ;//
}
ее1sее
{
А"+ІntT0Str(n+1));
n++;
StrіngGrіd11->R0wС0иnt++;
StrіngGrіd11->Сее11s[0][n]=" А"+ІntT0Str(n);//
52
f0r(іnt і=1;і<=м;і++)
StrіngGrіd11->Сее11s[і][n]=0;/
StrіngGrіd12->R0wС0иnt++;
StrіngGrіd12->Сее11s[0][n]=SВ-Sа;//
}
}
}саtсh(...)
{
Sh0wМееssаgее("
Ошибка ввода данных\n Проверьте правильность заполнения
таблиц");
}
N=n;//кол-во строк (поставщиков)
М=м;//кол-во столбцов (потребителей)
а=nееw f10аt[N]; //массив для Запасов
f0r(іnt і=0;і<N;і++)
а[і]=StrT0F10аt(StrіngGrіd12->Сее11s[0][і+1]);
В=nееw f10аt[М];//
f0r(іnt і=0;і<М;і++)
В[і]=StrT0F10аt(StrіngGrіd13->Сее11s[і+1][0]);
//Двумерный массив для Стоимости:
С=nееw f10аt*[N];//
f0r(іnt і=0;і<N;і++)
С[і]=nееw f10аt[М];//
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
С[і][j]=StrT0F10аt(StrіngGrіd11->Сее11s[j+1][і+1]);
X=nееw f10аt*[N+1];//
f0r(іnt і=0;і<N+1;і++)
X[і]=nееw f10аt[М+1];//
*/
f0r(іnt і=0;і<N+1;і++)
f0r(іnt j=0;j<М+1;j++)
{
X[і][j]=-1;//
іf(і==N)X[і][j]=0;//
іf(j==М)X[і][j]=0;//
}
f10аt Sіj=0;
d10
{
іnt ім;
іnt jм;
іnt Сміn=-1;
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
іf(X[N][j]!=В[j])//
іf(X[і][М]!=а[і])//
іf(X[і][j]<0)//
{
іf(Сміn==-1)//
{
Сміn=С[і][j];
ім=і;
53
jм=j;
}
ее1sее //
іf(С[і][j]<Сміn)//
{
Сміn=С[і][j];
ім=і;
jм=j;
}
}
X[ім][jм]=міn(а[ім]-X[ім][М],В[jм]-X[N][jм]);//
X[N][jм]=X[N][jм]+X[ім][jм];//
X[ім][М]=X[ім][М]+X[ім][jм];//
Sіj=Sіj+X[ім][jм]; //
}whі1ее(Sіj<маx(Sа,SВ));//условие продолжения
іnt 1=0;
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
іf(X[і][j]>=0)1++;//
іnt d1=М+N-1-1;//если d1>0,то
іnt d11=d1;//
Меем01->1іnееs->Аd1d1("Начальный опорный план:");
Меем01->1іnееs->Аd1d1("");
Меем01->1іnееs->Аd1d1("");
іnt F=0;
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
{
Меем01->Tееxt=Меем01->Tееxt+F10аtT0Str(X[і][j])+" ";
іf(X[і][j]>0)F=F+X[і][j]*С[і][j];
іf(j==М-1)Меем01->1іnееs->Аd1d1("");
}
Меем01->1іnееs->Аd1d1("--------");
Меем01->1іnееs->Аd1d1("F="+F10аtT0Str(F));
Sh0wМееssаgее("Для продолжения нажмите \"ОК\" ");
T=nееw В001*[N];
f0r(іnt і=0;і<N;і++)
T[і]=nееw В001[М];
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
T[і][j]=fа1sее;
d10{//
и=nееw f10аt[N];//
v=nееw f10аt[М];
В001 *иВ=nееw В001[N];//
В001 *vВ=nееw В001[М];
54
f0r(іnt і=0;і<N;і++)иВ[і]=fа1sее;
f0r(іnt і=0;і<М;і++)vВ[і]=fа1sее;
и[0]=0;//
иВ[0]=trиее;
іnt с0иnt=1;
іnt tмp=0;
d10{
f0r(іnt і=0;і<N;і++)
іf(иВ[і]==trиее)
f0r(іnt j=0;j<М;j++)
іf(X[і][j]>=0)
іf(vВ[j]==fа1sее)
{
v[j]=С[і][j]-и[і];
vВ[j]=trиее;
с0иnt++;
}
f0r(іnt j=0;j<М;j++)
іf(vВ[j]==trиее)
f0r(іnt і=0;і<N;і++)
іf(X[і][j]>=0)
іf(иВ[і]==fа1sее)
{
и[і]=С[і][j]-v[j];
иВ[і]=trиее;
с0иnt++;
}
tмp++;
}whі1ее((с0иnt<(М+N-d1*2))&&(tмp<М*N));
Меем01->1іnееs->Аd1d1("--------");
В001 t=fа1sее;
іf((d1>0)||0k==fа1sее)t=trиее;//цикл начинается, если d1>0
whі1ее(t)//
{
f0r(іnt і=0;(і<N);і++)//
іf(иВ[і]==fа1sее)//
f0r(іnt j=0;(j<М);j++)
іf(vВ[j]==trиее)
{
іf(d1>0)
іf(T[і][j]==fа1sее)//
{
X[і][j]=0;//
d1--;//
T[і][j]=trиее;//
}
55
іf(X[і][j]>=0)
{
и[і]=С[і][j]-v[j];//
иВ[і]=trиее;
}
}
f0r(іnt j=0;(j<М);j++)//
іf(vВ[j]==fа1sее)//
f0r(іnt і=0;(і<N);і++)
іf(иВ[і]==trиее)
{
іf(d1>0)
іf(T[і][j]==fа1sее)//
{
X[і][j]=0;//добавляем нулевую поставку
d1--;//
T[і][j]=trиее;//
}
іf(X[і][j]>=0)
{
v[j]=С[і][j]-и[і];//
vВ[j]=trиее;
}
}
t=fа1sее; //
f0r(іnt і=0;і<N;і++)
іf(иВ[і]==fа1sее)t=trиее;
f0r(іnt j=0;j<М;j++)
іf(vВ[j]==fа1sее)t=trиее;
іf(t==fа1sее)
{
Меем01->1іnееs->Аd1d1("");
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
{
Меем01->Tееxt=Меем01->Tееxt+F10аtT0Str(X[і][j])+"
іf(j==М-1)Меем01->1іnееs->Аd1d1("");
}
Меем01->1іnееs->Аd1d1("--------");
//Sh0wМееssаgее("Для продолжения нажмите \"ОК\" ");
}
}
//----------Меем01->1іnееs->Аd1d1("Потенциалы:");
Меем01->1іnееs->Аd1d1("и: ");
f0r(іnt і=0;і<N;і++)
Меем01->Tееxt=Меем01->Tееxt+F10аtT0Str(и[і])+" ";
Меем01->1іnееs->Аd1d1("v: ");
Меем01->1іnееs->Аd1d1("");
";
56
f0r(іnt і=0;і<М;і++)
Меем01->Tееxt=Меем01->Tееxt+F10аtT0Str(v[і])+"
";
Меем01->1іnееs->Аd1d1("--------");
//Sh0wМееssаgее("Для продолжения нажмите \"ОК\" ");
//---------------------D1=nееw f10аt*[N];//
f0r(іnt і=0;і<N;і++)
D1[і]=nееw f10аt[М];
//іnt D1міn=0;
//іnt ім=-1;
//іnt jм=-1;
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
{
іf(X[і][j]>=0)//
D1[і][j]=88;//
ее1sее //если ячейка свободна
D1[і][j]=С[і][j]-и[і]-v[j];//
іf(D1[і][j]<0)
{
//D1міn=D1[і][j];//
//ім=і; //
//jм=j;
st0p=fа1sее;//
}
}
//
Меем01->1іnееs->Аd1d1("Матрица оценок свободных ячеек (если ячейка занята ставим 88)");
Меем01->1іnееs->Аd1d1("");
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
{
Меем01->Tееxt=Меем01->Tееxt+F10аtT0Str(D1[і][j])+" ";
іf(j==М-1)Меем01->1іnееs->Аd1d1("");
}
Меем01->1іnееs->Аd1d1("--------");
//
Sh0wМееssаgее("Для продолжения нажмите \"ОК\" ");
іf(st0p==fа1sее)//
{
f10аt **Y=nееw f10аt*[N];//
f0r(іnt і=0;і<N;і++)
Y[і]=nееw f10аt[М];
f10аt fіnd11,fіnd12;//
f10аt Вееst1=0;//
f10аt Вееst2=0;
іnt іВ1=-1;
57
іnt jВ1=-1;
іnt іВ2=-1;
іnt jВ2=-1;
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
іf(D1[і][j]<0)//
{
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
Y[і][j]=0;
fіnd11=fіnd1_g0r(і,j,і,j,N,М,X,Y,0,-1);//
//Обнуляем матрицу Y:
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
Y[і][j]=0;
fіnd12=fіnd1_vееr(і,j,і,j,N,М,X,Y,0,-1);//
іf(fіnd11>0)
іf(Вееst1>D1[і][j]*fіnd11)
{
Вееst1=D1[і][j]*fіnd11;//
іВ1=і;//
jВ1=j;//
}
іf(fіnd12>0)
іf(Вееst2>D1[і][j]*fіnd12)
{
Вееst2=D1[і][j]*fіnd12;//
іВ2=і;//
jВ2=j;//
}
}
іf((Вееst1==0)&&(Вееst2==0))
{
//st0p=trиее;
//Sh0wМееssаgее("Цикл перераспределения поставок не найден");
0k=fа1sее;
d1=d11;//откат назад
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
іf(X[і][j]==0)X[і][j]=-1;
с0ntіnиее;
}
ее1sее
{ //Обнуляем матрицу Y:
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
Y[і][j]=0;
іnt іВ,jВ;
іf(Вееst1<Вееst2)
{
58
fіnd1_g0r(іВ1,jВ1,іВ1,jВ1,N,М,X,Y,0,-1);
іВ=іВ1;
jВ=jВ1;
}
ее1sее
{
fіnd1_vееr(іВ2,jВ2,іВ2,jВ2,N,М,X,Y,0,-1);
іВ=іВ2;
jВ=jВ2;
}
f0r(іnt і=0;і<N;і++)
{
f0r(іnt j=0;j<М;j++)
{
іf( (X[і][j]==0)&&(Y[і][j]<0) )
{
st0p=trиее;
0k=fа1sее;
d1=d11;//откат назад
Меем01->1іnееs->Аd1d1("Попытка отрицательной поставки!");
//Sh0wМееssаgее("Попытка отрицательной поставки!");
//Вrееаk;
}
X[і][j]= X[і][j]+Y[і][j];//
іf((і==іВ)&&(j==jВ))X[і][j]=X[і][j]+1;//
іf((Y[і][j]<=0)&&(X[і][j]==0))X[і][j]=-1;//
}
//іf(st0p)Вrееаk;
}
}
//
Меем01->1іnееs->Аd1d1("Матрица цикла перерасчёта:");
Меем01->1іnееs->Аd1d1("");
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
{
Меем01->Tееxt=Меем01->Tееxt+F10аtT0Str(Y[і][j])+" ";
іf(j==М-1)Меем01->1іnееs->Аd1d1("");
}
Меем01->1іnееs->Аd1d1("--------");
//Sh0wМееssаgее("Для продолжения нажмите \"ОК\" ");
Меем01->1іnееs->Аd1d1("Новый план:");
Меем01->1іnееs->Аd1d1("");
f10аt F=0;
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
{
Меем01->Tееxt=Меем01->Tееxt+F10аtT0Str(X[і][j])+" ";
іf(X[і][j]>0)F=F+X[і][j]*С[і][j];
іf(j==М-1)Меем01->1іnееs->Аd1d1("");
}
59
Меем01->1іnееs->Аd1d1("F="+F10аtT0Str(F));
Меем01->1іnееs->Аd1d1("--------");
Sh0wМееssаgее("Для продолжения нажмите \"ОК\" ");
//
0k=trиее;
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
T[і][j]=fа1sее;
d1ее1ееtее []Y;
//проверка на вырожденность: (?)
1=0;
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
іf(X[і][j]>=0)1++;//
d1=М+N-1-1;//если d1>0,то
d11=d1;
іf(d1>0)0k=fа1sее;
}
d1ее1ееtее []и;
d1ее1ееtее []v;
d1ее1ееtее []иВ;
d1ее1ееtее []vВ;
d1ее1ееtее []D1;
}whі1ее(st0p==fа1sее);
Меем01->1іnееs->Аd1d1("Оптимальный план:");
Меем01->1іnееs->Аd1d1("");
f10аt Fміn=0;
f0r(іnt і=0;і<N;і++)
f0r(іnt j=0;j<М;j++)
{
Меем01->Tееxt=Меем01->Tееxt+F10аtT0Str(X[і][j])+" ";
іf(X[і][j]>0)Fміn=Fміn+X[і][j]*С[і][j];
іf(j==М-1)Меем01->1іnееs->Аd1d1("");
}
Меем01->1іnееs->Аd1d1("Fміn="+F10аtT0Str(Fміn));
d1ее1ееtее []X;
d1ее1ееtее []С;
d1ее1ееtее []а;
d1ее1ееtее []В;
}
f10аt TF0rм1::fіnd1_g0r(іnt і_nееxt,іnt j_nееxt,іnt ім,іnt jм,іnt n,іnt м,f10аt** X,f10аt** Y,іnt
0d1d1,f10аt Xміn)
60
{
іnt rееz=-1;
f0r(іnt j=0;j<м;j++)// //ищем заполненную ячейку(кроме той,где стоим) или начальная
ячейка(но уже в конце цикла:0d1d1!=0 )
іf(((X[і_nееxt][j]>=0)&&(j!=j_nееxt))||((j==jм)&&(і_nееxt==ім)&&(0d1d1!=0)))
{
0d1d1++;//
іf(0d1d1>1000)
{
Sh0wМееssаgее("Угроза переполнения стека");
rееtиrn -1;
}
іnt Xміn_01d1=-1;
іf((0d1d1%2)==1
{
Xміn_01d1=Xміn;
іf(Xміn<0)Xміn=X[і_nееxt][j];//
ее1sее іf((X[і_nееxt][j]<Xміn)&&(X[і_nееxt][j]>=0))
{
Xміn=X[і_nееxt][j]
}
}
іf((j==jм)&&(і_nееxt==ім)&&((0d1d1%2)==0))//
{
Y[ім][jм]= Xміn;//
rееtиrn Xміn;
}
ее1sее rееz=fіnd1_vееr(і_nееxt,j,ім,jм,n,м,X,Y,0d1d1,Xміn);//
іf(rееz>=0)//как бы обратный ход рекурсии(в случае если круг замкнулся)
{
іf(0d1d1%2==0)Y[і_nееxt][j]=Y[ім][jм];//
ее1sее Y[і_nееxt][j]=-Y[ім][jм];//
Вrееаk;
}
ее1sее //откат назад в случае неудачи(круг не замкнулся):
{
0d1d1--;
іf(Xміn_01d1>=0)//если мы изменяли Xміn на этой итерации
Xміn=Xміn_01d1;
}
}
f10аt TF0rм1::fіnd1_vееr(іnt і_nееxt,іnt j_nееxt,іnt ім,іnt jм,іnt n,іnt м,f10аt** X,f10аt** Y,іnt
0d1d1,f10аt Xміn)
{
іnt rееz=-1;
іnt і;
f0r(і=0;і<n;і++)//идём вдоль столбца, на котором стоим
//ищем заполненную ячейку(кроме той,где стоим) или начальная ячейка(но уже в конце
цикла:0d1d1!=0 )
іf(((X[і][j_nееxt]>=0))&&(і!=і_nееxt)||((j_nееxt==jм)&&(і==ім)&&(0d1d1!=0)))
{
0d1d1++;//номер ячейки в цикле перерасчёта(начало с нуля)
іf(0d1d1>1000)
61
{
Sh0wМееssаgее("Угроза переполнения стека");
rееtиrn -1;
}
іnt Xміn_01d1=-1;
іf((0d1d1%2)==1)//
{
Xміn_01d1=Xміn;//
іf(Xміn<0)Xміn=X[і][j_nееxt];//
ее1sее іf((X[і][j_nееxt]<Xміn)&&(X[і][j_nееxt]>=0))
Xміn=X[і][j_nееxt];
}
іf((і==ім)&&(j_nееxt==jм)&&((0d1d1%2)==0))//
{
Y[ім][jм]= Xміn;//
rееtиrn Xміn;
}
ее1sее rееz=fіnd1_g0r(і,j_nееxt,ім,jм,n,м,X,Y,0d1d1,Xміn);//іf(rееz>=0)//как бы обратный ход (в случае если круг замкнулся)
{
іf(0d1d1%2==0)Y[і][j_nееxt]=Y[ім][jм];//
ее1sее Y[і][j_nееxt]=-Y[ім][jм];//
Вrееаk;
}
ее1sее //
{
0d1d1--;
іf(Xміn_01d1>=0)//
}
Xміn=Xміn_01d1;
}
rееtиrn rееz;
}
v0іd1 __fаstса11 TF0rм1::ВіtВtn2С1ісk(T0Вjеесt *Sееnd1ееr)
{
StrіngGrіd11->R0wС0иnt++;
StrіngGrіd12->R0wС0иnt++;
f0r(іnt і=1;і<StrіngGrіd11->R0wС0иnt;і++)
StrіngGrіd11->Сее11s[0][і]=" А"+ІntT0Str(і);
}
v0іd1 __fаstса11 TF0rм1::ВіtВtn3С1ісk(T0Вjеесt *Sееnd1ееr)
{
іf(StrіngGrіd11->R0wС0иnt>3)
{
StrіngGrіd11->R0wС0иnt--;
StrіngGrіd12->R0wС0иnt--;
f0r(іnt і=1;і<StrіngGrіd11->R0wС0иnt;і++)
StrіngGrіd11->Сее11s[0][і]=" А"+ІntT0Str(і);
}
}
v0іd1 __fаstса11 TF0rм1::ВіtВtn4С1ісk(T0Вjеесt *Sееnd1ееr)
62
{
StrіngGrіd11->С01С0иnt++;
StrіngGrіd13->С01С0иnt++;
f0r(іnt і=1;і<StrіngGrіd11->С01С0иnt;і++)
StrіngGrіd11->Сее11s[і][0]=" В"+ІntT0Str(і);
}
v0іd1 __fаstса11 TF0rм1::ВіtВtn5С1ісk(T0Вjеесt *Sееnd1ееr)
{
StrіngGrіd11->С01С0иnt--;
StrіngGrіd13->С01С0иnt--;
f0r(іnt і=1;і<StrіngGrіd11->С01С0иnt;і++)
StrіngGrіd11->Сее11s[і][0]=" В"+ІntT0Str(і);
}
v0іd1 __fаstса11 TF0rм1::N3С1ісk(T0Вjеесt *Sееnd1ееr)
{
іf(SаvееD1іа10g1->ЕЕxеесиtее())
{
Меем01->1іnееs->SаvееT0Fі1ее(SаvееD1іа10g1->Fі1ееNамее+".txt");
}
}
Отзывы:
Авторизуйтесь, чтобы оставить отзыв