Разработка программы управления лифтом

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Курсовая работа

Тема

Разработка программы управления лифтом

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

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

Разработать алгоритм и программу управления поворотной платформы. В работе предусмотреть:

1) язык программирования — Java Script;

2) среда программирования — Adobe Dreamweaver CS5;

3) ручное и автоматическое управление лифтом;

Введение

Цель курсовой работы: получить практические навыки программирования видовых и перспективных преобразований в Adobe Dreamweaver CS5, закрепить навыки программирования на Adobe Dreamweaver CS5 для управления поворотной платформой.

В ходе выполнения курсовой работы разработаны алгоритм и программа управления лифтом. Разработанная программа выполнена в виде приложения для браузера в среде программирования Adobe Dreamweaver CS5.

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

1. Разработка алгоритма

Схема алгоритма программы управления двухмерной моделью лифта приведена на рисунке 1.

25

Рисунок 1 — Схема алгоритма программы управления двухмерной моделью поворотной платформы.

2. Разработка программы

Текст программы управления двухмерной моделью лифта представлен на рисунке 2.

var web_height = 120,

web_width = 100,

process = 0, // 1 — выполняется перемещение лифта

t,

pause;

function $(a){return document. getElementById (a)}

// Выполнение прогрпммы

function goFloor (a)

{

if (a == parseInt ($('op'). value))

{

//if (a == 0) $('thisFloor'). value = 1;

var fThis = $('thisFloor'). value; // текущий этаж

if ($('op'+(a-1)))

{

$('op'+(a-1)+'status'). innerHTML = '< font color="green"> Выполнено</font>';

$('but'+fThis). innerHTML = '';

}

if ($('op'+a))

{

$('op'+a+'status'). innerHTML = '< font color="red">В процессе< /font>'

}

if (a < parseInt ($('allOp'). value))

{

$('op'). value++

var fAll = $('saveFloor'). value,

fNext = $('op'+a+'val'). value,

fType = $('op'+a+'type'). value;

if (fType == 'pause')

{

t = setTimeout ('goFloor ('+$('op'). value+')', fNext*1000)

}

else if (fType == 'pauseSignal')

{

//fThis = fAll-fThis;

$('but'+fThis). innerHTML = '< div class="butNext" onclick="goFloor($('op').value)"> Следующая операция< /div>'

}

else if (fType ≠ 'pause' & & fType ≠ 'pauseSignal')

{

$('thisFloor'). value = fNext;

fNext = fAll-fNext;

fThis = fAll-fThis;

//$('lift'). style. marginTop = a*web_height+1+'px';

if (fThis > fNext)

upLift (fNext*web_height+1, fThis*web_height+1, 1)

else

downLift (fNext*web_height+1, fThis*web_height+1, 1)

}

}

}

// Выводим ошибку о подаче ошибочного сигнала

}

// Отправляем лифт на этаж в ручном режиме

function goFloorManual (a)

{

if (process == 0)

{

var fThis = $('thisFloor'). value, // текущий этаж

fAll = $('saveFloor'). value;

$('thisFloor'). value = a;

a = fAll-a;

fThis = fAll-fThis;

//$('lift'). style. marginTop = a*web_height+1+'px';

if (fThis > a)

upLift (a*web_height+1, fThis*web_height+1)

else

downLift (a*web_height+1, fThis*web_height+1)

}

}

// Поднять лифт

function upLift (a, b, c)

{

process = 1;

if (b > a)

{

b -= 1;

$('lift'). style. marginTop = b+'px';

t = setTimeout ('upLift ('+a+', '+b+', '+c+')', 10)

}

else if (c == 1)

{

goFloor ($('op'). value);

}

else

{

process = 0

}

}

// Опустить лифт

function downLift (a, b, c)

{

process = 1;

if (b < a)

{

b += 10;

$('lift'). style. marginTop = b+'px';

t = setTimeout ('downLift ('+a+', '+b+', '+c+')', 100)

}

else if (c == 1)

{

goFloor ($('op'). value);

}

else

{

process = 0

}

}

// Очищаем список операций

function clearList ()

{

$('thisFloor'). value = 1;

$('allOp'). value = 0;

$('op'). value = 0;

start ()

}

// Добавляем операцию

function addOp (a)

{

var i = $('allOp'). value;

$('win_error'). style. display = 'none';

if (i == 0)

var thisFloor = $('thisFloor'). value;

else

{

var op = i*1 — 1,

thisFloor = $('op'+op+'val'). value,

thisType = $('op'+op+'type'). value;

}

var thisFloor2 = ($('op'+(op-1)+'val'))? $('op'+(op-1)+'val'). value: thisFloor;

//alert (a+' ≠ '+thisFloor2);

if (a == 0) // Если добавляем остановку

{

var time = $('floorTime'). value;

if (time)

{

var text = 'Остановка на '+time+' сек. ';

$('list'). innerHTML += '< div id="op'+i+'" style="width:100%;border-bottom:1px solid #ddd"> '+text+

' < div style="float:right"id="op'+i+'status"> <font color="#ff7700"> Ожидает</font></div>'+

'< input type="hidden" id="op'+i+'val" value="'+time+'" /> '+

'< input type="hidden" id="op'+i+'type" value="pause" /> </div>';

$('allOp'). value++;

$('win'). style. display = 'none';

$('floorTime'). value = ''

}

else if (pause == 2)

{

$('list'). innerHTML += '< div id="op'+i+'" style="width:100%;border-bottom:1px solid #ddd"> Cигнал для отправки'+

' < div style="float:right"id="op'+i+'status"> <font color="#ff7700"> Ожидает</font></div>'+

'< input type="hidden" id="op'+i+'val" value="'+thisFloor+'" /> '+

'< input type="hidden" id="op'+i+'type" value="pauseSignal" /> </div>';

$('allOp'). value++;

$('win'). style. display = 'none';

$('floorTime'). value = ''

}

else

{

$('win_error'). style. display = 'block';

$('win_error'). className = 'error';

$('win_error'). innerHTML = 'Вы не указали время остановки';

}

}

else if (a ≠ thisFloor2) // Добавляем передвижение

{

if (!thisFloor2) thisFloor2 = 1;

var text = (a > thisFloor2)? 'Подняться с '+thisFloor2+' на '+a: 'Опуститься с '+thisFloor2+' на '+a,

type = (a > thisFloor2)? 'up': 'down';

if ($('op'+i))

{

$('op'+i). innerHTML = text+

' < div style="float:right"id="op'+i+'status"> <font color="#ff7700"> Ожидает</font></div>'+

'< input type="hidden" id="op'+i+'val" value="'+a+'" /> '+

'< input type="hidden" id="op'+i+'type" value="'+type+'" /> ';

}

else

{

$('list'). innerHTML += '< div id="op'+i+'" style="width:100%;border-bottom:1px solid #ddd"> '+text+

' < div style="float:right"id="op'+i+'status"> <font

color="#ff7700"> Ожидает</font></div>'+

'< input type="hidden" id="op'+i+'val" value="'+a+'" /> '+

'< input type="hidden" id="op'+i+'type" value="'+type+'" /> </div>';

}

$('allOp'). value++;

$('win'). style. display = 'block';

$('list_but'). style. display = 'block';

$('list_error'). style. display = 'none';

}

}

// Отменяем добавление операции

function backOp ()

{

$('allOp'). value--;

$('op'+$('allOp'). value). innerHTML = '';

$('win'). style. display = 'none';

$('floorTime'). value = ''

}

// Выполнить операции в списке

function startLift ()

{

goFloor (0);

}

// Выводим модель лифта

function start ()

{

var a = $('saveFloor'). value = ($('floor'))? $('floor'). value:$('saveFloor'). value,

e = '',

button = '',

res = '';

if (!a)

{

e = 'Вы не указали колличество этажей'

}

if (e)

{

$('error'). className = 'error';

$('error'). innerHTML = e;

}

else

{

$('error'). display = 'none';

//$('error'). className = 'success';

for (var i=a; i> 0; i--)

{

res += '< tr><td><div class="butFloor" onclick="addOp('+i+')"id="auto'+i+'" style="display:none">'+i+'</div>'+

'< div class="butFloor" onclick="goFloorManual('+i+')"id="manual'+i+'"> '+i+'</div>'+

'< /td><td class="line"> </td><td width="100"> <div id="but'+i+'"> </div></td></tr>'

}

$('content'). innerHTML = '< table><tr><td><div class="title"> Симулятор лифта'+

'< div class="rMode" id="modeCheck" onmouseover="aBox('modeBox',1)"onmouseout="aBox ('modeBox')" onclick="mode()"> </div><div class="aBox" id="modeBox"> Выбран ручной режим работы< /div>'+

'< /div>'+

'< div style="position:absolute;margin-left:'+(web_width*1+36)+'px;height:'+(web_height*a)+'px;width:1px;background:#000"></div><div style="position:absolute;margin-left:'+(web_width*2+36)+'px;height:'+(web_height*a)+'px;width:1px;background:#000"></div>'+

'< div id="lift" style="position:absolute;background:#f70;width:'+(web_width-1)+'px;height:'+(web_height-1)+'px;margin:'+((web_height*(a-1))+1)+'px 0 0 '+((web_width*1+36)+1)+'px"> </div>'+

'< table>'+res+'</table></td><td>'+

'< table width="290"> <tr><td width="290"> <div class="title"> Операции</div><div id="list" style="width:100%"></div><div id="list_error" class="error"> Нет операций для выполнения< /div><div id="list_but" style="display:none"><input type="button" style="width:100px"value="Очистить" onclick="clearList()"/><input type="submit" style="width:100px"value="Запустить" onclick="startLift()"/> </div></td></tr></table>'+</p><p>'< /td></tr></table>';</p><p>}</p><p>}</p><p>// Выбор типа паузы на этажах</p><p>function pauseType()</p><p>{</p><p>pause=$('pauseType').value;</p><p>if (pause == 1)</p><p>{</p><p>$('pauseTime'). style. display = 'block'</p><p>}</p><p>else</p><p>{</p><p>$('pauseTime'). style. display = 'none'</p><p>}</p><p>}</p><p>"(издание 2-е) 2007 — 960 с.

2. JavaScript и AJAX в Web-дизайне: Владимир Дронов -- Санкт-Петербург, БХВ-Петербург, 2008 г.- 736 с.

3. JavaScript на примерах: Александр Климов -- Санкт-Петербург, БХВ-Петербург, 2009 г.- 336 с.

4. JavaScript. Подробное руководство: Дэвид Макфарланд -- Санкт-Петербург, Эксмо, 2009 г.- 608 с.

5. JavaScript. Руководство программиста: Пол Вилтон, Джереми МакПик -- Санкт-Петербург, Питер, 2009 г.- 720 с.

6. WEB-программирование на Java и JavaScript: Андрей Гарнаев, Сергей Гарнаев -- Санкт-Петербург, БХВ-Петербург, 2005 г.- 1040 с.

7. Основы веб-программирования с использованием HTML, XHTML и CSS: Джон Дакетт -- Санкт-Петербург, Эксмо, 2010 г.- 768 с.

8. Полный справочник по HTML, CSS и JavaScript: Лазаро Исси Коэн, Джозеф Исси Коэн -- Москва, ЭКОМ Паблишерз, 2007 г.- 1168 с.

Приложение А

Руководство оператора

В приложении представлены: назначение программы, условия выполнения программы. Данная программа предназначена для перемещения модели лифта на заданный этаж в ручном режиме работы, а также для задания маршрута движения по этажам, настроек остановок на этажах и последующее исполнение поставленной задачи в автоматическом режиме работы. Запускаем html-файл. В рабочей области представлены настройки модели лифта, а именно задаём количество этажей модели и нажимаем кнопку «Далее».

Рисунок 10 — Настройки модели лифта.

После нажатия кнопки «Далее» в рабочей области будут показаны следующие элементы:

1. модель лифта с этажами

2. активный режим, в котором производится работа лифта

3. список операций для автоматического режима работы

Все перечисленные выше элементы пронумерованы в соответствующем порядке на рисунке 11.

Рисунок 11 — Разметка рабочей области модели лифта.

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

Предусмотрены остановки двух типов:

1. Временная пауза — это остановка на заданное время в секундах, которое задаётся в соответствующем поле.

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

Рисунок 12 — Настройки остановки на этаже.

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

Приложение Б

Руководство программиста

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

Данная программа предназначена для построения и управления моделью лифта.

Программа написана на языке JavaScript, поэтому для выполнения вычислительного эксперимента необходимо запустить программу в окне браузера Opera версии 12.0 и выше. В других браузерах корректная работа программы не гарантируется, поскольку программа не была оптимизирована и адаптирована для работы в других браузерах. При написании программы использовалась технология «Объектно-ориентированное программирование», в результате чего все действия описаны теми или иными функциями. Разберём все функции использованные в программе.

Start — Функция отображающая модель лифта и всю рабочую область.

upLift — Функция передвижения лифта вверх.

downLift — Функция передвижения лифта вниз.

goFloorManual — Функция передвижения модели лифта на заданный этаж в ручном режиме. В качестве параметра функция принимает этаж, на который нужно переместить лифт. В процессе выполнения данная функция запускает функцию upLift или downLift.

addOp — Функция добавления новых операций в список для автоматического их выполнения.

backOp — Функция отмены добавления операции в всплывающем окне.

mode — Функция переключения ручного и автоматического режимов работы.

pauseType — Функция выбора типа паузы в всплывающем окне.

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

goFloor — Функция выполнения операции в автоматическом режиме.

startLift — Функция, запускающая выполнение списка операций путём цикличного запуска функции goFloor.

ПоказатьСвернуть
Заполнить форму текущей работой