Вход

Разработка автоматизированной системы логистической транспортной компании

Рекомендуемая категория для самостоятельной подготовки:
Дипломная работа*
Код 264107
Дата создания 10 июня 2015
Страниц 154
Мы сможем обработать ваш заказ (!) 29 марта в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
2 660руб.
КУПИТЬ

Описание

Целю дипломной работы, является разработка автоматизированной системы логистической транспортной компании. Для выполнения этой цели необходимо выполнить следующие задачи:
1. произвести обзор работы логистического отдела;
2. произвести обзор существующих программных средств;
3. создать базу данных для учета и хранения информации о товаре и его доставке;
4. автоматизировать заполнение транспортных средств имеющимися на очереди доставки товарами;
5. автоматизировать построение маршрутов;
6. реализовать отображение маршрута на карте;
7. реализовать создание отчета по доставке продукции;
8. провести тестирование программного продукта.

Работа защищена с оценкой "хорошо". ...

Содержание

ВВЕДЕНИЕ 3
ГЛАВА 1. ОБЗОР СУЩЕСТВУЮЩИХ ПРОГРАММ ЛОГИСТИКИ 6
1.1. Обзор работы логистической компании 6
1.2. Обзор существующих программ аналогов 14
1.3. Постановка задачи 22
ГЛАВА 2. ВЫБОР ПРОГРАММНЫХ И ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ ДЛЯ РАЗРАБОТКИ АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ 24
2.1. Выбор инструментальной среды разработки и языка программирования 24
2.2. Выбор графических библиотек для работы с картой 27
2.3. Выбор СУБД 31
2.4. Выбор алгоритма для поиска минимального маршрута 34
ГЛАВА 3. РАЗРАБОТКА ПРИЛОЖЕНИЯ LOGISTIC + 38
3.1. Разработка архитектуры приложения Logistic + 38
3.2. Разработка моделей БД 41
3.3. Разработка автоматизированной системы 44
3.3.1. Создание БД 44
3.3.2. Разработка клиентского приложения 48
ГЛАВА 4. ТЕСТИРОВАНИЕ ПРОГРАММНОГО ПРОДУКТА LOGISTIC + 56
ЗАКЛЮЧЕНИЕ 62
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 63
ПРИЛОЖЕНИЕ 1 65
ПРИЛОЖЕНИЕ 2 66
ПРИЛОЖЕНИЕ 3 7

Введение

В условиях современной действительности, в мире потребления и больших масштабов производства возникает все большая необходимость в логистических центрах внутри предприятий. В свою очередь этим центрам тяжело обрабатывать потоки постоянно увеличивающейся информации.
Если еще несколько лет назад подобные логистические отделы обрабатывали данные в ручную, то в двадцать первом веке существует необходимость быстрой и качественной обработки информации. От скорости обработки напрямую зависит доход предприятия. Существует два способа увеличить скорость обработки информации в логичтическом отделе предприятия:
1. увеличить штат логистического отдела, что приведет к постоянно растущим расходам на содержание этого отдела, из-за непрерывно растущего уровня инфляции;
2. использовать некий программный продукт, который будет самостоятельно обрабатывать необходимые потоки данных.
Хороший программный продукт может значительно увеличить производительность логистических работ, снять большую нагрузку с персонала и порой работать без него.
На современном рынке программного обеспечения такого рода продуктов достаточно много, и, как правило, все они однотипные и имеют практически одинаковый набор функций и отличаются только интерфейсом. Не смотря на это, даже такого рода продукт достаточно сложно приобрести маленьким компаниям с небольшим оборотом денежных средств.
Исходя из этого, возникает потребность в продукте, с подобным набором функций, доступном для большинства предприятий.
Неотъемлемой частью такого программного продукта является система маршрутизации, которая помогает подобрать маршрут с минимальными
затратами на транспортировку. Так же приложение должно правильно распределять продукцию по транспортным потокам с наименьшими временными и денежными затратами.
Целю дипломной работы, является разработка автоматизированной системы логистической транспортной компании. Для выполнения этой цели необходимо выполнить следующие задачи:
1. произвести обзор работы логистического отдела;
2. произвести обзор существующих программных средств;
3. создать базу данных для учета и хранения информации о товаре и его доставке;
4. автоматизировать заполнение транспортных средств имеющимися на очереди доставки товарами;
5. автоматизировать построение маршрутов;
6. реализовать отображение маршрута на карте;
7. реализовать создание отчета по доставке продукции;
8. провести тестирование программного продукта.
В первой главе описаны существующие программные логистические продукты, выделены их основные функции, выполнен сравнительный анализ.
Во второй главе перечислены инструментальные среды разработки, языки программирования, системы управления базами данных и графические библиотеки, выделены плюсы и минусы и выбран наилучший вариант для реализации поставленной задачи.
В третьей главе описаны этапы разработки приложения: разработка архитектуры программного обеспечения, разработка моделей базы данных и разработка автоматизированной системы.
В четвертой главе указаны результаты тестирования готового программного продукта с обзором всех его функций.
В приложениях представлен программный код, реализующий как серверную часть проекта, так и клиентскую.
Дипломная работа состоит из введения, четырех глав, заключения, списка использованной литературы и 3 приложений. Работа изложена на 63 страницах, включая 28 рисунков, 1 таблицу, 16 листингов и список литературных источников из 16 наименований

Фрагмент работы для ознакомления

SET tdk2 = (SELECT @td2);
INSERT INTO `logistic`.`макс` (`id_макс`, `кол`, `длин`, `id_тов`) VALUES (NULL, kk2, tdk2, id);
SET d = d + 1;
END WHILE;
SET kk3 = (SELECT MAX(`макс`.`кол`) FROM `макс`);
SET tdk3 = (SELECT `макс`.`длин` FROM `макс` WHERE `макс`.`кол`= kk3);
SET tidk3 = (SELECT `макс`.`id_тов` FROM `макс` WHERE `макс`.`кол`= kk3);
SET tvk3 = (SELECT `товар`.`вес` FROM `товар` WHERE `товар`.`id_товар` = tidk3);
SET mmm = 0;
SET mm = 0;
WHILE (mm=0 || mmm<=tk) DO
IF (mmm+1<=kk3 && (mmm+1)*tvk3<=av1 && tdk3*(mmm+1)<td1) THEN
SET mmm = mmm + 1;
ELSE
SET mm=1;
END IF;
END WHILE;
SET av1 = av1 - mmm*tvk3;
SET v = (SELECT COUNT(`id_загрузка`) FROM `загрузка` WHERE `id_авто` = aid);
IF (v = 0) THEN
INSERT INTO `logistic`.`загрузка` (`id_загрузка`, `id_авто`, `id_заказ`, `id_товар`, `количество`) VALUES (NULL, aid, zid, tidk3, mmm);
ELSE
SET b = (SELECT `загрузка`.`количество` FROM `загрузка` WHERE `загрузка`.`id_товар`= tidk3);
UPDATE `logistic`.`загрузка` SET `количество` = b+(mmm) WHERE `загрузка`.`id_товар`= tidk3 AND `загрузка`.`id_заказ` = zid;
END IF;
SET cxz = (SELECT `остаток`.`количество` FROM `остаток` WHERE `остаток`.`id_товар`= tidk3);
IF(cxz-mmm = 0) THEN
DELETE FROM `остаток` WHERE `остаток`.`id_товар` = tidk3;
ELSE
UPDATE `logistic`.`остаток` SET `остаток`.`количество` = cxz-mmm WHERE `остаток`.`id_товар` = tidk3;
END IF;
ELSE
SET mmm = 0;
SET mm = 0;
WHILE (mm=0 || mmm<=tk) DO
IF (mmm+1<=k1 && (mmm+1)*tv<=av1 && td11*(mmm+1)<td1) THEN
SET mmm = mmm + 1;
ELSE
SET mm=1;
END IF;
END WHILE;
SET av1 = av1 - mmm*tv;
SET v = (SELECT COUNT(`id_загрузка`) FROM `загрузка` WHERE `id_авто` = aid);
IF (v = 0) THEN
INSERT INTO `logistic`.`загрузка` (`id_загрузка`, `id_авто`, `id_заказ`, `id_товар`, `количество`) VALUES (NULL, aid, zid, tid, mmm);
ELSE
SET b = (SELECT `загрузка`.`количество` FROM `загрузка` WHERE `загрузка`.`id_товар`= tid);
UPDATE `logistic`.`загрузка` SET `количество` = b+(mmm) WHERE `загрузка`.`id_товар`= tid AND `загрузка`.`id_заказ` = zid;
END IF;
SET cxz = (SELECT `остаток`.`количество` FROM `остаток` WHERE `остаток`.`id_товар`= tid);
IF(cxz-mmm = 0) THEN
DELETE FROM `остаток` WHERE `остаток`.`id_товар` = tid;
ELSE
UPDATE `logistic`.`остаток` SET `остаток`.`количество` = cxz-mmm WHERE `остаток`.`id_товар` = tid;
END IF;
END IF;
IF (k2 = 0) THEN
SET f = (SELECT COUNT(`остаток`.`id_товар`) FROM `остаток` WHERE `остаток`.`id_товар` != tid);
SET sql1 = "SELECT `остаток`.`id_товар` FROM `остаток` WHERE `остаток`.`id_товар` != ";
WHILE (d<f) DO
IF (h = 0) THEN
SET sql1 = CONCAT(sql1,tid);
SET h = 1;
ELSE
SET sql1 = CONCAT(sql1, " AND `id_товар` != ", id);
END IF;
SET @idall = CONCAT(sql1," LIMIT 1");
PREPARE gcSql FROM @idall;
EXECUTE gcSql;
SET id = (SELECT @res1);
DEALLOCATE PREPARE gcSql;
SET kk = (SELECT `остаток`.`количество` FROM `остаток` WHERE `остаток`.`id_товар` = id);
SET td2 = (SELECT `товар`.`длина` FROM `товар` WHERE `товар`.`id_товар` = id);
SET tsh2 = (SELECT `товар`.`ширина` FROM `товар` WHERE `товар`.`id_товар` = id);
SET th2 = (SELECT `товар`.`высота` FROM `товар` WHERE `товар`.`id_товар` = id);
CALL `sek` (td1*k,stsh,sth,td2,tsh2,th2);
SET kk2 = (SELECT @k);
SET tdk2 = (SELECT @td2);
INSERT INTO `logistic`.`макс` (`id_макс`, `кол`, `длин`, `id_тов`) VALUES (NULL, kk2, tdk2, id);
SET d = d + 1;
END WHILE;
SET kk3 = (SELECT MAX(`макс`.`кол`) FROM `макс`);
SET tdk3 = (SELECT `макс`.`длин` FROM `макс` WHERE `макс`.`кол`= kk3);
SET tidk3 = (SELECT `макс`.`id_тов` FROM `макс` WHERE `макс`.`кол`= kk3);
SET tvk3 = (SELECT `товар`.`вес` FROM `товар` WHERE `товар`.`id_товар` = tidk3);
SET mmm = 0;
SET mm = 0;
WHILE (mm=0 || mmm<=tk) DO
IF (mmm+1<=kk3 && (mmm+1)*tvk3<=av1 && tdk3*(mmm+1)<td1) THEN
SET mmm = mmm + 1;
ELSE
SET mm=1;
END IF;
END WHILE;
SET av1 = av1 - mmm*tvk3;
SET v = (SELECT COUNT(`id_загрузка`) FROM `загрузка` WHERE `id_авто` = aid);
IF (v = 0) THEN
INSERT INTO `logistic`.`загрузка` (`id_загрузка`, `id_авто`, `id_заказ`, `id_товар`, `количество`) VALUES (NULL, aid, zid, tidk3, mmm);
ELSE
SET b = (SELECT `загрузка`.`количество` FROM `загрузка` WHERE `загрузка`.`id_товар`= tidk3);
UPDATE `logistic`.`загрузка` SET `количество` = b+(mmm) WHERE `загрузка`.`id_товар`= tidk3 AND `загрузка`.`id_заказ` = zid;
END IF;
SET cxz = (SELECT `остаток`.`количество` FROM `остаток` WHERE `остаток`.`id_товар`= tidk3);
IF(cxz-mmm = 0) THEN
DELETE FROM `остаток` WHERE `остаток`.`id_товар` = tidk3;
ELSE
UPDATE `logistic`.`остаток` SET `остаток`.`количество` = cxz-mmm WHERE `остаток`.`id_товар` = tidk3;
END IF;
ELSE
SET mmm = 0;
SET mm = 0;
WHILE (mm=0 || mmm<=tk) DO
IF (mmm+1<=k2 && (mmm+1)*tv<=av1 && td12*(mmm+1)<td1) THEN
SET mmm = mmm + 1;
ELSE
SET mm=1;
END IF;
END WHILE;
SET av1 = av1 - mmm*tv;
SET v = (SELECT COUNT(`id_загрузка`) FROM `загрузка` WHERE `id_авто` = aid);
IF (v = 0) THEN
INSERT INTO `logistic`.`загрузка` (`id_загрузка`, `id_авто`, `id_заказ`, `id_товар`, `количество`) VALUES (NULL, aid, zid, tid, mmm);
ELSE
SET b = (SELECT `загрузка`.`количество` FROM `загрузка` WHERE `загрузка`.`id_товар`= tid);
UPDATE `logistic`.`загрузка` SET `количество` = b+(mmm) WHERE `загрузка`.`id_товар`= tid AND `загрузка`.`id_заказ` = zid;
END IF;
SET cxz = (SELECT `остаток`.`количество` FROM `остаток` WHERE `остаток`.`id_товар`= tid);
IF(cxz-mmm = 0) THEN
DELETE FROM `остаток` WHERE `остаток`.`id_товар` = tid;
ELSE
UPDATE `logistic`.`остаток` SET `остаток`.`количество` = cxz-mmm WHERE `остаток`.`id_товар` = tid;
END IF;
END IF;
END IF;
SET @av2 = av1;
end$$
DROP PROCEDURE IF EXISTS `za`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `za`()
NO SQL
begin
DECLARE q,w,a,s,x,c,d,e,r,f,v,avto,k,n,g,l,m,o,p,qa,pp,mm,vvv,mmm,bb,xc,vb,vbn,asa,asd,zxc,zxc1,qaz,wsx,rfv,cvb,tgb,nbv,oih,oih1,idj,tov,id12,mdt,km,lqa,rqw,per,dos,yey,yey1,dcd,xog INT DEFAULT 0;
DECLARE td,tsh,th,tv,tob,ad,ash,ah,av,shh,stsh,sth,td1,b,av1 DOUBLE;
DECLARE sql1234,sql1256,put TEXT;
WHILE (s = 0) DO
TRUNCATE `загрузка`;
SET q = (SELECT COUNT(`остаток`.`id_остаток`) FROM `остаток`);
SET w = (SELECT COUNT(`id_авто`) FROM `авто` WHERE `состояние` = 'свободен');
SET a = (SELECT COUNT(`заказы`.`id_заказ`) FROM `заказы` LEFT JOIN `доставка` ON `заказы`.`id_заказ` = `доставка`.`id_заказ` WHERE `доставка`.`id_заказ` IS NULL);
IF (q != 0 && w != 0) THEN
SET n = 0;
WHILE (n = 0) DO
SET f = (SELECT `остаток`.`id_товар` FROM `остаток` LIMIT 1);
SET v = (SELECT `остаток`.`количество` FROM `остаток` WHERE `остаток`.`id_товар` = f);
SET td = (SELECT `длина` FROM `товар` WHERE `id_товар`= f);
SET tsh = (SELECT `ширина` FROM `товар` WHERE `id_товар`= f);
SET th = (SELECT `высота` FROM `товар` WHERE `id_товар`= f);
SET tv = (SELECT `вес` FROM `товар` WHERE `id_товар`= f);
SET tob = td * tsh * th;
IF (avto = 0) THEN
SET pp = (SELECT COUNT(`id_авто`) FROM `авто` WHERE `состояние`='свободен' AND `авто`.`ширина` * `авто`.`длина` * `авто`.`высота` >= tob AND `грузоподъемность` >= tv);
IF (pp = 0) THEN
SET avto = (SELECT `id_авто` FROM `авто` WHERE `грузоподъемность` = (SELECT MAX(`грузоподъемность`) FROM `авто`));
ELSE
SET avto = (SELECT `id_авто` FROM `авто` WHERE `состояние`='свободен' AND `авто`.`ширина` * `авто`.`длина` * `авто`.`высота` >= tob AND `грузоподъемность` >= tv);
END IF;
SET ad = (SELECT `длина` FROM `авто` WHERE `id_авто`= avto);
SET ash = (SELECT `ширина` FROM `авто` WHERE `id_авто`= avto);
SET ah = (SELECT `высота` FROM `авто` WHERE `id_авто`= avto);
SET av = (SELECT `грузоподъемность` FROM `авто` WHERE `id_авто`= avto);
END IF;
CALL `tov` (ad,ash,ah,td,tsh,th,f,v,tv,a,w,av);
SET av1 = (SELECT @av2);
SET xc = 0;
WHILE (xc=0) DO
IF (av1>=0) THEN
SET f = (SELECT `id_товар` FROM `остаток` LIMIT 1);
SET v = (SELECT `количество` FROM `остаток` WHERE `id_товар`= f);
SET td = (SELECT `длина` FROM `товар` WHERE `id_товар`= f);
SET tsh = (SELECT `ширина` FROM `товар` WHERE `id_товар`= f);
SET th = (SELECT `высота` FROM `товар` WHERE `id_товар`= f);
SET tv = (SELECT `вес` FROM `товар` WHERE `id_товар`= f);
CALL `tov` (ad,ash,ah,td,tsh,th,f,v,tv,a,w,av);
SET av1 = (SELECT @av2);
SET g = (SELECT COUNT(`id_остаток`) FROM `остаток`);
IF (q = 0) THEN SET n = 1;
END IF;
ELSE
SET xc = 1;
END IF;
END WHILE;
END WHILE;
SET vb = (SELECT COUNT(`id_остаток`) FROM `остаток`);
IF (vb != 0) THEN
SET asa = (SELECT `id_заказ` FROM `остаток` LIMIT 1);
SET asd = (SELECT COUNT(`содержимое_заказа`.`id_заказ`) FROM `содержимое_заказа` WHERE `содержимое_заказа`.`id_заказ` = asa);
SET zxc = (SELECT COUNT(`остаток`.`id_остаток`) FROM `остаток`);
SET zxc1 = 0;
WHILE (zxc1 < zxc) DO
SET qaz = (SELECT `остаток`.`id_товар` FROM `остаток` LIMIT 1);
SET wsx = (SELECT `остаток`.`id_заказ` FROM `остаток`);
SET rfv = (SELECT COUNT(`загрузка`.`id_загрузка`) FROM `загрузка` WHERE `загрузка`.`id_заказ`=wsx AND `загрузка`.`id_товар`= qaz);
IF (rfv = 1) THEN
SET cvb = (SELECT `загрузка`.`количество` FROM `загрузка` WHERE `загрузка`.`id_заказ`=wsx AND `загрузка`.`id_товар`= qaz);
UPDATE `logistic`.`содержимое_заказа` SET `содержимое_заказа`.`количество` = cvb WHERE `содержимое_заказа`.`id_заказ` = wsx AND `содержимое_заказа`.`id_товар` = qaz AND `содержимое_заказа`.`часть` = asd-1;
SET tgb = (SELECT `остаток`.`количество` FROM `остаток` WHERE `остаток`.`id_заказ` =wsx AND `остаток`.`id_товар` =qaz);
INSERT INTO `logistic`.`содержимое_заказа` (`id_содержимое`, `id_товар`, `количество`, `id_заказ`, `часть`) VALUES (NULL, qaz, tgb, wsx, asd);
END IF;
SET zxc1 = zxc1 + 1;
END WHILE;
SET nbv = (SELECT `параметры`.`пункт` FROM `параметры` WHERE `параметры`.`id_пар` = 1);
TRUNCATE `параметры`;
INSERT INTO `logistic`.`параметры` (`id_пар`, `пункт`) VALUES (NULL, nbv);
SET oih = (SELECT COUNT(`загрузка`.`id_загрузка`) FROM `загрузка`);
SET oih1 = 0;
SET idj = 0;
SET tov = 0;
END IF;
WHILE (oih1 < oih) DO
SET id12 = tov;
SET sql1234 = 'SELECT `загрузка`.`id_заказ` FROM `загрузка`';
IF (idj = 0) THEN
SET @asx = CONCAT(sql1234,' LIMIT 1');
SET idj = 1;
ELSE
SET sql1256 = CONCAT(sql1256,' AND `id_заказ` != ',tov);
SET @asx = CONCAT(sql1234,' WHERE ',sql1256,' LIMIT 1');
END IF;
PREPARE gcSql FROM @asx;
EXECUTE gcSql;
SET tov = (SELECT @res0);
DEALLOCATE PREPARE gcSql;
IF (tov != id12) THEN
SET mdt = (SELECT `id_нас_пункт` FROM `заказы` WHERE `id_заказ`= tov);
INSERT INTO `logistic`.`параметры` (`id_пар`, `пункт`) VALUES (NULL, mdt);
END IF;
SET oih1 = oih1 + 1;
END WHILE;
CALL `cm`();
SET put = (SELECT @azx);
SET km = (SELECT @azx1);
SET lqa = (SELECT `водители`.`id_водитель` FROM `водители`,`график_водителей` WHERE `водители`.`состояние` = 'свободен' AND `водители`.`id_водитель` = `график_водителей`.`id_водитель` AND `график_водителей`.`id_день` = WEEKDAY(CURDATE()) LIMIT 1);
SET rqw = (SELECT `id_авто` FROM `загрузка` LIMIT 1);
INSERT INTO `logistic`.`перевозка` (`id_перевозка`, `id_водитель`, `id_авто`, `начало`, `завершение`, `стадия`) VALUES (NULL, lqa, rqw, NULL, NULL, 'в ожидании');
SET per = (SELECT `id_перевозка` FROM `перевозка` WHERE `id_водитель`=lqa AND `id_авто`=rqa AND `начало`= NULL AND `завершение`= NULL AND `стадия`= 'в ожидании');
SET yey = (SELECT COUNT(`id_загрузка`) FROM `загрузка`);
SET yey1 = 0;
SET tov = 0;
SET sql1256 = '';
SET id12 = 0;
WHILE (yey1 < yey) DO
SET id12 = tov;
SET sql1234 = 'SELECT `загрузка`.`id_заказ` FROM `загрузка`';
IF (idj = 0) THEN
SET @asx = CONCAT(sql1234,' LIMIT 1');
SET idj = 1;
ELSE
SET sql1256 = CONCAT(sql1256,' AND `id_заказ` != ',tov);
SET @asx = CONCAT(sql1234,' WHERE ',sql1256,' LIMIT 1');
END IF;
PREPARE gcSql FROM @asx;
EXECUTE gcSql;
SET tov = (SELECT @res0);
DEALLOCATE PREPARE gcSql;
IF (tov != id12) THEN
SET xog = (SELECT `загрузка`.`id_товар` FROM `загрузка` WHERE `загрузка`.`id_заказ`=tov);
SET dcd = (SELECT `содержимое_заказа`.`часть` FROM `содержимое_заказа` WHERE `содержимое_заказа`.`id_заказ`=tov AND `содержимое_заказа`.`id_товар`=xog);
INSERT INTO `logistic`.`доставка` (`id_доставка`, `id_перевозка`, `id_заказ`, `часть`) VALUES (NULL, per, tov, dcd);
SET dos = (SELECT `доставка`.`id_доставка` FROM `доставка` WHERE `доставка`.`id_перевозка` =per AND `доставка`.`id_заказ`=tov AND `доставка`.`часть`=dcd);
INSERT INTO `logistic`.`маршруты` (`id_маршрут`, `id_доставка`, `маршрут`, `протяженность`) VALUES (NULL, dos, put, km);
END IF;
SET yey1 = yey1 + 1;
END WHILE;
END IF;
IF (w != 0 && a != 0) THEN
SET x = (SELECT `заказы`.`id_заказ` FROM `заказы` LEFT JOIN `доставка` ON `заказы`.`id_заказ` = `доставка`.`id_заказ` WHERE `доставка`.`id_заказ` IS NULL LIMIT 1);
SET c = (SELECT COUNT(`содержимое_заказа`.`id_товар`) FROM `содержимое_заказа` WHERE `содержимое_заказа`.`id_заказ` = x);
SET d = 1;
WHILE (d<=c) DO
SET e = (SELECT `содержимое_заказа`.`id_товар` FROM `содержимое_заказа` WHERE `содержимое_заказа`.`id_заказ` = x LIMIT 1);
SET r = (SELECT `количество` FROM `содержимое_заказа` WHERE `id_товар`= e AND `id_заказ`= x);
INSERT INTO `logistic`.`остаток` (`id_остаток`, `id_заказ`, `id_товар`, `количество`) VALUES (NULL, x, e, r);
SET d = d + 1;
END WHILE;
ELSE SET s = 1;
END IF;
END WHILE;
end$$
DROP PROCEDURE IF EXISTS `zapoln`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `zapoln`()
NO SQL
begin
DECLARE i,j INT DEFAULT 1;
DECLARE q,n,r INT DEFAULT 0;
DECLARE asd,sql1,sql11,sql2,m,p,pred,p1 TEXT;
SET q = (SELECT COUNT(`id_нас_пункт`) FROM `населенные_пункты`);
WHILE i<=q DO
SET asd = (SElECT `населенные_пункты`.`Населенные_пункты` FROM `населенные_пункты` WHERE `населенные_пункты`.`id_нас_пункт` = i);
SET j = 1;
WHILE j<=q DO
SET sql1 = 'SELECT ';
SET sql11 = ' INTO @res FROM `населенные_пункты` WHERE `id_нас_пункт`=';
SET @idall = CONCAT(sql1,asd,sql11,j);
PREPARE gcSql FROM @idall;
EXECUTE gcSql;
SET p1 = (SELECT @res);
DEALLOCATE PREPARE gcSql;
IF ((i != j) && (p1 IS NULL)) THEN
CALL `new_nas` ();
CALL `deykstra`(i,j);
SET p = (SELECT `вес` FROM `нас` WHERE `id_нас` = j);
SET sql1 = 'UPDATE `logistic`.`населенные_пункты` SET `';
SET sql2 = ' WHERE `населенные_пункты`.`id_нас_пункт` = ';
SET @asx1 = CONCAT(sql1,asd,'`=',p,sql2,j);
PREPARE gcSql FROM @asx1;
EXECUTE gcSql;
DEALLOCATE PREPARE gcSql;
SET m = '';
SET r = 0;
SET n = 0;
WHILE n<1 DO
IF (r = 0) THEN
SET pred = (SELECT `предыдущий` FROM `нас` WHERE `id_нас`= j);
SET m = pred;
SET r = 1;
ELSE
SET pred = (SELECT `предыдущий` FROM `нас` WHERE `id_нас`= pred);
IF (pred != i) THEN
SET m = CONCAT(pred,',',m);
END IF;
END IF;
IF (pred = i) THEN SET n = 1;
END IF;
END WHILE;
SET sql1 = 'UPDATE `logistic`.`расстояния` SET `';
SET sql2 = ' WHERE `расстояния`.`id_нас_пункт` = ';
SET @asx1 = CONCAT(sql1,asd,'`=\'',m,'\'',sql2,j);
PREPARE gcSql FROM @asx1;
EXECUTE gcSql;
DEALLOCATE PREPARE gcSql;
END IF;
SET j = j + 1;
END WHILE;
SET i = i + 1;
END WHILE;
end$$
DELIMITER ;
-- --------------------------------------------------------
--
-- Структура таблицы `q`
--
DROP TABLE IF EXISTS `q`;
CREATE TABLE IF NOT EXISTS `q` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`qw` text COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Структура таблицы `авто`
--
DROP TABLE IF EXISTS `авто`;
CREATE TABLE IF NOT EXISTS `авто` (
`id_авто` int(11) NOT NULL AUTO_INCREMENT,
`гос_номер` text COLLATE utf8_unicode_ci NOT NULL,
`грузоподъемность` double NOT NULL,
`ширина` double NOT NULL,
`состояние` text COLLATE utf8_unicode_ci NOT NULL,
`длина` double NOT NULL,
`высота` double NOT NULL,
PRIMARY KEY (`id_авто`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11 ;
--
-- Дамп данных таблицы `авто`
--
INSERT INTO `авто` (`id_авто`, `гос_номер`, `грузоподъемность`, `ширина`, `состояние`, `длина`, `высота`) VALUES
(1, 'а234ук', 2500, 3, 'свободен', 29, 3.5),
(2, 'о675ке', 4.5, 2.6, 'занят', 12, 2.7),
(3, 'р987см', 23, 2, 'занят', 34, 1.9),
(4, 'в527ут', 4200, 1.4, 'свободен', 12, 2.4),
(5, '', 2000, 1.3, 'свободен', 3.4, 1.7),
(6, 'к444кк', 5, 2.5, 'свободен', 26, 2.6),
(8, 'н445ке', 14, 2.1, 'свободен', 23, 1.6);
-- --------------------------------------------------------
--
-- Дублирующая структура для представления `автомобиль`
--
DROP VIEW IF EXISTS `автомобиль`;
CREATE TABLE IF NOT EXISTS `автомобиль` (
`государственный номер` text
,`грузоподъемность` double
,`длина` double
,`высота` double
,`ширина` double
,`состояние` text
);
-- --------------------------------------------------------
--
-- Структура таблицы `водители`
--
DROP TABLE IF EXISTS `водители`;
CREATE TABLE IF NOT EXISTS `водители` (
`id_водитель` int(11) NOT NULL AUTO_INCREMENT,
`Фамилия` text COLLATE utf8_unicode_ci NOT NULL,
`Имя` text COLLATE utf8_unicode_ci NOT NULL,
`Отчество` text COLLATE utf8_unicode_ci NOT NULL,
`телефон` text COLLATE utf8_unicode_ci NOT NULL,
`состояние` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id_водитель`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10 ;
--
-- Дамп данных таблицы `водители`
--
INSERT INTO `водители` (`id_водитель`, `Фамилия`, `Имя`, `Отчество`, `телефон`, `состояние`) VALUES
(1, 'Степанов', 'Михаил', 'Дмитриевич', '89047876456', 'занят'),
(2, 'Росманов', 'Генадий', 'Тимофеевич', '89674476532', 'свободен'),
(3, 'Ларинов', 'Александр', 'Радионович', '89624586534', 'свободен'),
(4, 'Старовойтов', 'Константин', 'Львович', '89362375438', 'свободен'),
(5, 'Михалков', 'Никита', 'Сергеевич', '89428475693', 'свободен'),
(8, 'Лабурец', 'Братулец', 'Молодец', '85467653567', 'свободен'),
(9, 'Тереньтий', 'Константинов', 'Львович', '435345346534', 'свободен');
-- --------------------------------------------------------
--
-- Дублирующая структура для представления `водитель`
--
DROP VIEW IF EXISTS `водитель`;
CREATE TABLE IF NOT EXISTS `водитель` (
`фамилия` text
,`имя` text
,`отчество` text
,`телефон` text
,`состояние` text
);
-- --------------------------------------------------------
--
-- Дублирующая структура для представления `все_заказы`
--
DROP VIEW IF EXISTS `все_заказы`;
CREATE TABLE IF NOT EXISTS `все_заказы` (
`населенные пункты` text
,`адрес` text
,`дата` date
,`наименование` text
,`количество` int(11)
,`состояние` text
);
-- --------------------------------------------------------
--
-- Дублирующая структура для представления `вся_доставка`
--
DROP VIEW IF EXISTS `вся_доставка`;
CREATE TABLE IF NOT EXISTS `вся_доставка` (
`номер перевозки` int(11)
,`государственный номер` text
,`товар` text
,`количество` int(11)
,`начало` datetime
,`завершение` datetime
,`стадия` text
,`Фамилия` text
,`Имя` text
,`Отчество` text
,`населенные пункты` text
,`адрес` text
,`часть` int(11)
);
-- --------------------------------------------------------
--
-- Дублирующая структура для представления `график`
--
DROP VIEW IF EXISTS `график`;
CREATE TABLE IF NOT EXISTS `график` (
`фамилия` text
,`имя` text
,`отчество` text
,`день недели` text
);
-- --------------------------------------------------------
--
-- Структура таблицы `график_водителей`
--
DROP TABLE IF EXISTS `график_водителей`;
CREATE TABLE IF NOT EXISTS `график_водителей` (
`id_график` int(11) NOT NULL AUTO_INCREMENT,
`id_день` int(11) NOT NULL,
`id_водитель` int(11) NOT NULL,
PRIMARY KEY (`id_график`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11 ;
--
-- Дамп данных таблицы `график_водителей`
--
INSERT INTO `график_водителей` (`id_график`, `id_день`, `id_водитель`) VALUES
(1, 0, 3),
(4, 4, 2),
(5, 5, 5),
(6, 6, 5),
(7, 1, 4),
(8, 2, 3),
(9, 3, 5),
(10, 3, 2);

Список литературы

1. 1С:Предприятие 8. TMS Логистика. Управление перевозками [Электронный ресурс].// - Режим доступа  http://solutions.1c.ru/catalog/tms, свободный.
2. Bing Maps[Электронный ресурс].// - Режим доступа  http://ru.wikipedia.org/wiki/Bing_Maps , свободный.
3. TopLogistic [Электронный ресурс].// - Режим доступа  http://www.toplogistic.ru/35.html , свободный.
4. TransTrade Транспортная компания [Электронный ресурс].// - Режим доступа  http://transoft.ru/software/, свободный.
5. Yahoo!_Maps [Электронный ресурс].// - Режим доступа  http://ru.wikipedia.org/wiki/Yahoo!_Maps, свободный.
6. Алесинская Т.В. Основы логистики. Общие вопросы логистического управления. - Таганрог: ТРТУ, 2005. – 121с. 
7. Бауэрсокс Д., Клосс Д. Логистика. Интегрированная цепь поставок. - Олимп-Бизнес, 2008. – 640с.
8. Дыбская В., Зайцев Е., Сергеев В., Стерлигова А. Логистика. – Эксмо, 2008. – 944с.
9. Сербин В.Д. Основы логистики. - Таганрог: ТРТУ, 2004. – 54с.
10. Стерлигова А. Управление запасами в цепях поставок. - Инфра-М, 2009. – 432с.
11. Сток Р.Д., Ламберт Д.М. Стратегическое управление логистикой. - Инфра-М, 2005. – 830с.
12. Карты@mail.ru[Электронный ресурс].// - Режим доступа  http://ru.wikipedia.org/wiki/Mail.Ru , свободный.
13. Карты Google[Электронный ресурс].// - Режим доступа  http://ru.wikipedia.org/wiki/FB_Google, свободный.
14. Уотерс Д. Логистика. Управление цепью поставок. - Юнити-Дана, 2003. – 504с.
15. Шрайбфедер Д. Эффективное управление запасами. [пер. с англ.] - Альпина Паблишер, 2008. – 304с.
16. Яндекс.Карты[Электронный ресурс].// - Режим доступа  http://ru.wikipedia.org/wiki/, свободный
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00687
© Рефератбанк, 2002 - 2024