Розробка проекту мобільного робочого місця "Нарядчик поїзних бригад"

Програмні засоби автоматизації планування та обліку робіт поїзних бригад нарядчиком пасажирської вагонної дільниці. Загальна характеристика мобільного робочого місця. Програмна реалізація структурних елементів. Система управління реляційними базами даних.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 15.10.2013
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Крім Брендона Айка в розробці брали участь співзасновник Netscape Communications Марк Андрісін і співзасновник Sun Microsystems Білл Джой: щоб встигнути закінчити роботи над мовою до релізу браузера, компанії уклали угоду про співпрацю в розробці. Вони ставили перед собою мету забезпечити «мову для склеювання» складових частин веб-ресурсу: зображень, плагінів, Java-аплетів, які були б зручними для веб-дизайнерів і не висококваліфікованих програмістів.

Спочатку мова називалася LiveScript і призначалася як для програмування на стороні клієнта, так і для програмування на стороні сервера (там вона мала називатися LiveWire). На синтаксис вплинули мови Сі і Java, і, оскільки Java в той час було модним словом, 4 грудня 1995 LiveScript перейменували в JavaScript , отримавши відповідну ліцензію у Sun. Анонс JavaScript з боку представників Netscape і Sun відбувся напередодні випуску другої бета-версії Netscape Navigator. У ньому декларується, що 28 лідируючих ІТ-компаній висловили намір використовувати в своїх майбутніх продуктах JavaScript як об'єктну скрипкову мову з відкритим стандартом.

У 1996 році компанія Microsoft випустила аналог мови JavaScript, названий JScript. Анонсовано цю мову було 18 липня 1996. Першим браузером, що підтримує цю реалізацію, був Internet Explorer 3.0.

За ініціативою компанії Netscape була проведена стандартизація мови асоціацією ECMA. Стандартизована версія має назву ECMAScript, описується стандартом ECMA-262. Першій версії специфікації відповідала JavaScript версії 1.1, а також мови JScript і ScriptEasy.

JavaScript є об'єктно-орієнтованою мовою, але прототипування , яке використовується в мові, обумовлює відмінності в роботі з об'єктами в порівнянні з традиційними клас-орієнтованими мовами. Крім того, JavaScript має ряд властивостей, властивих функціональним мовам, - функції як об'єкти першого класу, об'єкти як списки, каррінг, анонімні функції, замикання - що додає мові додаткову гнучкість.

Незважаючи на схожий з Сі синтаксис, JavaScript порівняно з мовою Сі має корінні відмінності:

- об'єкти, з можливістю інтроспекції;

- функції як об'єкти першого класу;

- автоматичне приведення типів;

- автоматичне складання сміття;

- анонімні функції.

У мові відсутні такі корисні речі, як:

- модульна система: JavaScript не надає можливості управляти залежностями та ізоляцією областей видимості;

- стандартна бібліотека: зокрема, відсутній інтерфейс програмування додатків по роботі з файловою системою, управлінню потоками введення / виведення, базових типів для бінарних даних;

- стандартні інтерфейси до веб-серверів і баз даних;

- система управління пакетами, яка б відстежувала залежності і автоматично встановлювала їх.

Для забезпечення високого рівня абстракції і досягнення прийнятного ступеня крос-браузерності при розробці веб-додатків використовуються бібліотеки JavaScript. Вони являють собою набір багаторазово використовуваних об'єктів і функцій.

Серед відомих JavaScript бібліотек можна відзначити Adobe life, Dojo Toolkit, Extjs, jQuery, Mootools, Prototype, Qooxdoo, Underscore.

На сьогоднішній день підтримку JavaScript забезпечують сучасні версії всіх найбільш часто використовуваних браузерів. В Internet Explorer, Mozilla Firefox, Safari, Google Chrome, Opera є повна підтримка третьої редакції ECMA-262. При цьому в Mozilla Firefox зроблена спроба здійснення підтримки четвертої редакції специфікації, а першим браузером, в якому з'явилася неповна підтримка специфікації 3.1, з'явився Internet Explorer 8.

Помилки, допущені розробниками популярних браузерів в реалізації специфікації, як правило, незначні. Станом на листопад 2009 року об'єктна модель документа має більш обмежену підтримку.

jQuery -- популярна JavaScript-бібліотека з відкритим вихідним кодом. Вона була представлена у січні 2006 року у BarCamp NYC Джоном Ресіґом. jQuery є найпопулярнішою бібліотекою JavaScript, яка посилено використовується на сьогоднішній день.

jQuery є вільним відкритим програмним забезпеченням під ліцензією MIT .

Синтаксис jQuery розроблений, щоб зробити орієнтування у навігації зручнішим завдяки вибору елементів DOM, створенню анімації, обробки подій, і розробки AJAX-застосунків. jQuery також надає можливості для розробників, для створення плагінів у верхній частині бібліотеки JavaScript. Використовуючи ці об'єкти, розробники можуть створювати абстракції для низькорівневої взаємодії та створювати анімацію для ефектів високого рівня. Це сприяє створенню потужних і динамічних веб-сторінок. Основним завданням jQuery є надання розробнику легкий та гнучкий інструментарій кросбраузерної адресації DOM об'єктів за допомогою CSS та XPath селекторів.

Принцип роботи jQuery полягає в використанні класу (функції), який при звертанні до нього повертає сам себе. Таким чином, це дозволяє будувати послідовний ланцюг методів.

jQuery UI - бібліотека JavaScript з відкритим вихідним кодом для створення насиченого користувальницького інтерфейсу у веб-додатках, це частина проекту jQuery. Побудована поверх головної бібліотеки jQuery і надає розробникові спрощений доступ до її функцій взаємодії, анімації та ефектів, а також набір віджетів.

JQGrid - це плагін для JQuery бібліотеки Javascript, який дозволяє відображувати данні в табличній формі.

JQGrid є вільним, відкритим вихідним кодом і розповсюджується під ліцензією MIT. Особливостями є:

-підтримує AJAX ;

-настроюється в CSS;

-працює під IE, Firefox, Chrome, Safari, Opera;

-швидке редагування комірки та створення на льоту форми для редагування записів;

-сумісний з XML / JSON / масивами джерел даних;

-користувальницький інтерфейс поставляється в 20 + мов;

-пошук і фільтрація;

-підтримує підтаблиці і дерева сітки для відображення ієрархічних даних;

-Пейджинг та сортування.

Система управління реляційними базами даних MySQL

Розробку та підтримку MySQL здійснює корпорація Oracle, яка отримала права на торговельну марку разом з поглиненою Sun Microsystems, яка раніше придбала шведську компанію MySQL AB. Продукт розповсюджується як під GNU General Public License, так і під власною комерційною ліцензією. Крім цього, розробники створюють функціональність за замовленням ліцензійних користувачів, саме завдяки такому замовленню майже в найраніших версіях з'явився механізм реплікації.

MySQL є рішенням для малих і середніх застосувань. Входить до складу серверів WAMP, AppServ, LAMP і в портативні зборки серверів Денвер, XAMPP. Зазвичай MySQL використовується як сервер, до якого звертаються локальні або видалені клієнти, проте в дистрибутив входить бібліотека внутрішнього сервера, що дозволяє включати MySQL в автономні програми.

Гнучкість СУБД MySQL забезпечується підтримкою великої кількості типів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що підтримують повнотекстовий пошук, так і таблиці InnoDB, що підтримують транзакції на рівні окремих записів. Більш того, СУБД MySQL поставляється із спеціальним типом таблиць EXAMPLE, що демонструє принципи створення нових типів таблиць. Завдяки відкритій архітектурі і GPL-ліцензуванню, в СУБД MySQL постійно з'являються нові типи таблиць.

26 лютого 2008 Sun Microsystems придбала MySQL AB за $ 1 млрд., 27 січня 2010 року Oracle придбала Sun Microsystems і включила MySQL в свою лінійку СУБД.

Спільнотою розробників MySQL створені різні відгалуження коду, такі як Drizzle, OurDelta, Percona Server, і MariaDB. Всі ці відгалуження вже існували на момент поглинання компанії Sun корпорацією Oracle.

MySQL виникла як спроба застосувати mSQL до власних розробок компанії: таблицям, для яких використовувалися ISAM - підпрограми низького рівня. В результаті був вироблений новий SQL-інтерфейс, але API-інтерфейс залишився в спадок від mSQL. Звідки походить назва «MySQL» - достеменно невідомо. Розробники дають два варіанти: або тому, що практично всі напрацювання компанії починалися з префікса My, або на честь дівчинки на ім'я My, дочки Майкла Монті Віденіус, одного з розробників системи.

Логотип MySQL у вигляді дельфіна носить ім'я «Sakila». Він був обраний з великого списку запропонованих користувачами «імен дельфіна». Ім'я «Sakila» було відправлено Open Source-розробником Ambrose Twebaze.

MySQL має подвійне ліцензування. MySQL може поширюватися у відповідності з умовами ліцензії GPL. Однак за умовами GPL, якщо яка-небудь програма включає вихідні коди MySQL, то вона теж повинна поширюватися за ліцензією GPL. Це може розходитися з планами розробників, які не бажають відкривати вихідні тексти своїх програм. Для таких випадків передбачена комерційна ліцензія, яка також забезпечує якісну сервісну підтримку.

phpMyAdmin -- веб-застосунок з відкритим кодом на мові PHP із графічним веб-інтерфейсом для адміністрування СКБД MySQL. phpMyAdmin дозволяє через браузер здійснювати адміністрування сервера MySQL, запускати запити SQL, переглядати та редагувати вміст таблиць баз даних. Ця програма користується великою популярністю у веб-розробників, оскільки дозволяє керувати СКБД MySQL без безпосереднього вводу SQL команд через дружній інтерфейс і з будь-якого комп'ютера під'єднаного до інтернету без необхідності встановлення додаткового програмного забезпечення.

На сьогоднішній день phpMyAdmin широко застосовується на практиці. Останнє пов'язано з тим, що розробники інтенсивно розвивають свій продукт, з огляду на всі нововведення СКБД MySQL. Переважна більшість українських провайдерів використовують цей застосунок як панель керування для того, щоб надати своїм клієнтам можливість адміністрування виділених їм баз даних. Програма розповсюджується під ліцензією GNU General Public License і тому деякі інші розробники інтегрують його у свої розробки, наприклад XAMPP, Denwer. Ініціатором є німецький розробник Тобіас Ратшіллер (Tobias Ratschiller) і базується, так само як і phpPgAdmin, на аналогічному застосунку MySQL-Webadmin, що виник у 1997 році. Проект локалізовано понад 50-ма мовами.

У другому розділі була спроектована концептуальна модель мобільного робочого місця «Нарядчик поїзних бригад» та описані функціональні характеристики інструментальних засобів, обраних для розробки мобільного робочого місця «Нарядчик поїзних бригад», а саме MySQL, PHP, JAVASCRIPT, jQuery, JQGrid ,HTML та CSS.

РОЗДІЛ 3. ЕКСПЕРИМЕНТАЛЬНА РОЗРОБКА МОБІЛЬНОГО РОБОЧОГО МІСЦЯ «НАРЯДЧИК ПОЇЗНИХ БРИГАД»

3.1 Загальна характеристика мобільного робочого місця

Мобільне робоче місце «Нарядчик поїзних бригад» (режим доступу: naryadchik.vv.si) являє собою динамічний сайт.

Сайт складається з трьох сторінок:

- стартової, на якій користувач авторизується, вказуючи при цьому свій логін та пароль;

- сторінки реєстрації, де має вказати табельний номер, який отримує у адміністратора сайту, ПІБ, логін та пароль;

- сторінки користувача, на якій, в залежності від ролі, користувач отримує можливість переглядати розділи та категорії. Дана сторінка має меню, яке динамічно завантажує контент сайту.

Схематичний вміст сайту представлений на рисунку 3.1.

Рис. 3.1. Схема сайту

На схемі видно чотири частин сторінки сайту:

- Частина 1: головне меню (header);

- Частина 2: вміст сторінки сайту (content);

- Частина 3: таблиця з бази данних;

- Частина 4: нижня частина сторінки (footer - підпис);

Дана система в основному працює з таблицями. Так як, МРМ представлена у формі сайту, для його запуску необхідно мати доступ до мережі Internet та будь-який браузер. На жаль, сайт не володіє кроссбраузерністю, тому коректно відображається не на всіх моніторах. На цей недолік здебільшого вплинули ресурси.

3.2 Програмна реалізація структурних елементів

Як вже було сказано, структурними елементами сайту є сторінки: стартова, сторінка реєстрації та сторінка користувача. Сайт написано мовами PHP, JAVASCRIPT, HTML та CSS.

База даних складається з наступних основних таблиць:

- індивідуальні маршрутні листи (Individ_marsh_listy) - таблиця, у якій зберігаються дані по кожному окремому користувачу;

- бригадні маршрутні листи (brigadnie_marsh_listy) - таблиця, у якій зберігаються дані по всім бригадам;

- вибір бригади (brigady) - у даній таблиці зберігаються всі начальники потягів, завдяки їй можливо переглянути підлеглих певного начальника;

- добовий розрахунок робочого часу поїзним бригадам (Kalendar) - у дану таблицю нарядчик потягу заноситиме дані відносно провідників ;

- користувачі (polzovateli) - таблиця, яка зберігає логін, пароль, посаду та табельний номер користувачів;

- табель провідника (tabel) - дана таблиця генерується на три місяці за допомогою таблиці «Kalendar», з якої бере напрям, стартову поїздку та години ;

- напрям (Napryamok) - таблиця, де зберігаються напрями потягів, завдяки їй, користувач при додаванні напряму до інших таблиць, отримає можливість вибору вже існуючих напрямків;

- норма (Norma) - таблиця, у якій зберігаються всі норми, наприклад: 3/2, 2/1 і тд. Дана таблиця слугує для того, щоб користувач у інших таблицях мав можливість вибору норми з вже існуючих.

Структурними елементами МРМ «Нарядчик поїзних бригад» є стартова сторінка, сторінка реєстрації та сторінка користувача.

На стартовій сторінці реалізована авторизація (перший користувач був створений програмно), де користувач має вказати свій логін та пароль:

<?php include $_SERVER['DOCUMENT_ROOT'].'/php/bd_config.php';

if (isset($_POST['login']) && isset($_POST['password']))

{

$login = mysql_real_escape_string($_POST['login']);

$password = md5($_POST['password']);

// посилаємо запрос до БД

// шукаємо polzovateli з таким логіном та паролем

$query = "SELECT `id`

FROM `polzovateli`

WHERE `login`='{$login}' AND `password`='{$password}'

LIMIT 1";

$sql = mysql_query($query) or die(mysql_error());

// якщо такий користувач знайшовся

if (mysql_num_rows($sql) == 1)

{

// то ми ставимо про це позначку в сесії

$row = mysql_fetch_assoc($sql);

session_start();

$_SESSION['user_login'] = $login;

header("Location: /php/menu.php?marshrut"); exit();

// для роботи з сесійними даними у кожному скрипті має знаходитися session_start();

}

else

{

$error='*Помилка авторизації!';

}

}

?>

Даний код зберігається у файлі index.php. Посилається запит до бази даних, де шукається користувач з таким логіном та паролем через метод POST, який посилає введені дані в php-скрипт. Якщо такий користувач знайшовся, то розпочинаємо сесію. Якщо будь-яке з полів не заповнене, або користувач не зареєстрований, з'явиться повідомлення про помилку авторизації (див. рис. 3.2).

Рис. 3.2. Результат неуспішної авторизації

Другим структурним елементом є сторінка реєстрації користувача. При наявному табельному номері, користувач має змогу зареєструватися. Табельний номер адміністратор заносить до бази даних. У випадку, якщо користувач не матиме його, реєстрація буде неможлива. Код реєстрації зберігається у файлі registration.php:

<?php

include $_SERVER['DOCUMENT_ROOT'].'/php/bd_config.php';

$error_create_user='';

$tb_name='polzovateli';

$login = $_POST['login'];

$fio=$_POST['fio'];

if (isset($_POST['login']) && isset($_POST['password'])&& isset($_POST['ret_password'])&& isset($_POST['kod_naryad'])&& isset($_POST['ret_password']))

{

if ($_POST['login']!='' && $_POST['password']!=''&& $_POST['ret_password']!='' && $_POST['kod_naryad']!='' && $_POST['fio']!='')

{

$kod_naryad=$_POST['kod_naryad'];

$query = "SELECT `id`

FROM $tb_name

WHERE `tabnomer`='{$_POST['kod_naryad']}'

LIMIT 1";

$sql = mysql_query($query) or die(mysql_error());

$row =mysql_fetch_array($sql);

if (mysql_num_rows($sql) == 1 && $row['FIO']=='' && $row['password']=='' &&($row['login']==''))

{

if ($_POST['password']==$_POST['ret_password'])

{

$login = mysql_real_escape_string($_POST['login']);

$query = "SELECT `id`

FROM $tb_name

WHERE `login`='{$login}'

LIMIT 1";

$sql = mysql_query($query) or die(mysql_error());

if (mysql_num_rows($sql) == 0)

{

$password = md5($_POST['password']);

$login = $_POST['login'];

mysql_query("UPDATE $tb_name

SET

login='".$login."',

password='".$password."',

FIO='".$fio."'

WHERE

tabnomer='{$_POST['kod_naryad']}'

;")

or die(mysql_error());

$login = "";

$error_create_user = '<h3><b id="error_user_edit" style="color:green">Користувач успішно створений!</b></h3><b><p>Ви будете перенаправлені через <input TYPE="text" id="clock" SIZE="2" value="5" readonly> секунд на стартову сторінку. Зачекайте!</p></b><meta http-equiv="refresh" content="5; url=http://naryadchik.ua/index.php">';

header("Location: s_reg.php");

else

$error_create_user = '<h3><b id="error_user_edit" style="color:red">* Такий логін вже існує!</b></h3>';

}

else

$error_create_user = '<h3><b id="error_user_edit" style="color:red">* Паролі не співпадають!</b></h3>';

}

else

$error_create_user = '<h3><b id="error_user_edit" style="color:red">*Такого табличного номеру не існує!</b></h3>';

}

else

$error_create_user = '<h3><b id="error_user_edit" style="color:red">* Не всі поля заповнені!</b></h3>';

}

?>

Код слугує для відправлення таких даних, як табельний номер, ПІБ, логін та пароль в базу даних методом POST. За допомогою функції md5 пароль однонаправленно зашифровується і в результаті база даних зберігає не пароль у чистому вигляді, а лише його хеш-код. У випадках, якщо не всі поля заповнені, або логін вже існує з'являється повідомлення про помилку.

Наступним структурним елементом є сторінка користувача. В залежності від того, з якими правами користувач заходить до системи, сторінка змінюється. Схематично це можна зобразити так:

Рис. 3.3. Права користувачів за ролями

Код для вибору з меню має наступний вигляд:

<?php

$select_menu = $_SERVER['QUERY_STRING'];

switch($select_menu)

{

case 'exit':

unset($_SESSION['user_login']);

session_destroy();

header("Location: ../index.php"); exit();

break;

case 'marshrut':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/marshrut_list.php';

$name_page='Маршрутні листи';

break;

case 'grafiki':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/grafiki.php';

$name_page='Графіки';

break;

case 'polzovateli':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/polzovateli.php';

$name_page='Користувачі';

break;

case 'redaktirovanie':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/redaktirovanie.php';

$name_page='Дані';

break;

case 'brigadi':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/brigadi.php';

$name_page='Бригади';

break;

case 'tabel_provodnika':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/tabel_provodnika.php';

$name_page='Табель провідника';

break;

?>

Пункти меню, які провідник не має бачити не відображаються :

<?php

if($doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?marshrut">Маршрутні листи</a></li>';

if($doljnost==$providnik)

echo '<li class="menu_li"><a href="?marshrut">Індивідуальний маршрутний лист</a></li>';

if($doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?brigadi">Бригади</a></li>';

if($doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?grafiki">Графіки</a></li>';

if($doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?polzovateli">Користувачі</a></li>';

if($doljnost==$providnik)

echo '<li class="menu_li"><a href="?tabel_provodnika">Табель провідника</a></li>';

if($doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?redaktirovanie">Дані</a></li>';?>

За допомогою бібліотеки JavaScript - JqGrid створені всі наявні таблиці, які працюють з сервером на основі ajax-запитів. Обмін даними здійснюється за допомогою текстового формату json. Нижче представлений один з прикладів коду таблиці «Табель провідника», яка автоматично генерується на основі таблиці «Добовий розрахунок робочого часу».

Код побудови таблиці:

<?php

include $_SERVER['DOCUMENT_ROOT'].'/php/bd_config.php';

$query = "SELECT start_poezdka,id_provodnika FROM `tabel` WHERE PIB='".$FIO."'";

$result=mysql_query($query) or die (mysql_error());

if (mysql_num_rows($result) == 1)

{

$row=mysql_fetch_array($result);

$id=$row[id_provodnika];

$start_poezdka = substr($row[start_poezdka],0,10);

$date=explode('-',($start_poezdka));

$k=$date[1]+3;

$end_date=date("Y-m-d", mktime(0, 0, 0, $k,$date[2],$date[0]));

$date_array = array();

$i=$date[2];

$j=0;

$next_date=$start_poezdka;

while($next_date!=$end_date)

{

$next_date = date("Y-m-d", mktime(0, 0, 0, $date[1],$i,$date[0]));

$date_array[$j]=$next_date;

$i++;

$j++;

}

$param_array=array(…);//в дужках знаходиться вміст масиву

В даному місці за допомогою php скрипта в HTML сторінку роздруковується Java-скрипт:

echo '<div id="tabel_table">

<table id="tabel_list"></table>

<div id="tabel_page"></div>

</div>';

echo '<script type="text/javascript">'.

"$(document).ready(function(){

$(".'"#tabel_list").jqGrid({'.

"url:'bd_tab_list_provodnik.php?fio=".$FIO."',

datatype: 'json',

colNames:[";

if($doljnost==$vse_prava) echo "'ПІБ',";

echo "'Напрям','Норма',";

for($i=0;$i<count($date_array)-1;$i++)

{

if($i>0)

echo ",";

echo "'".$date_array[$i]."'";

}

echo "],";

echo "colModel:[";

if($doljnost==$vse_prava) echo "{name:'PIB',index:'PIB',align:'center', width:180,searchoptions:{sopt:['eq','ne','bw','cn']}},";

echo "{name:'Napryam',index:'Napryam', align:'center',width:170,searchoptions:{sopt:['eq','ne','bw','cn']}},

{name:'Norma',index:'Norma',align:'center',width:170,searchoptions:{sopt:['eq','ne','bw','cn']}},\n";

for($i=0;$i<count($date_array)-1;$i++)

{

if($i>0)

echo ",\n";

echo "{name:'".$param_array[$i]."',index:'".$param_array[$i]."',align:'center',width:100,searchoptions:{sopt:['eq','ne','bw','cn']}}";

}

echo "],\n";

echo "

rowNum:10,

rowList:[10,20,30],

pager: '#tabel_page',

viewrecords: true,

rownumbers: true,

sortorder: 'desc',

shrinkToFit:false,

height:460,

width:875

});

$(".'"#tabel_list").jqGrid'."('navGrid','#tabel_page',{search:false,edit:false,add:false,del:false});

var rowData = $('#tabel_list').jqGrid('getCell',8,'vosemn_p');

alert(rowData);

});";

echo "</script>";

}

else

echo '<h2>Ваш табель ще не заповнено!</h2>';

?>

Схема даного процесу подається на рис.3.4.

Рис. 3.4. Схема побудови таблиць

Прогнозування обсягу відпрацювання годин для провідника генерується на три місяці на сервері:

$id_dob_roz=$row[id_kalendar];

$query_string_param="…";//у кавичках знаходяться параментри

$query_string_value='';

for($i=0;$i<92;$i++)

{

if($i>0)

$query_string_value=$query_string_value.',';

if($i<92)

$query_string_value=$query_string_value."'".$p_doba."',";

else

break;

if($i+1<92)

$query_string_value=$query_string_value."'".$v_doba."',";

else

break;

if($i+2<92)

$query_string_value=$query_string_value."'".$t_doba."',";

else

break;

if($i+3<92)

$query_string_value=$query_string_value."'".$ch_doba."',";

else

break;

if($i+4<92)

$query_string_value=$query_string_value."'".$pya_doba."',";

else

break;

if($i+5<92)

$query_string_value=$query_string_value."'".$sh_doba."',";

else

break;

if($i+6<92)

$query_string_value=$query_string_value."'".$s_doba."'";

else

break;

$i=$i+6;

if(substr($query_string_value,-1)==',')

$query_string_value=substr($query_string_value,0,strlen($query_string_value)-1);

$query="INSERT into tabel(".$query_string_param.")values('".$FIO."','".$Napryamok."','".$Norma."',".$query_string_value.",'".$start_poezdka."','".$id_dob_roz."');";

mysql_query($query) or die(mysql_error());

break;

Редагування в таблицях відбувається за допомогою ajax-запиту. Завдяки йому дані передаються до php-скрипту і вносяться в БД. Під редагуванням мається на увазі видалення, додавання та редагування даних таблиці. Код редагування розглянемо на прикладі таблиці «Індивідуальний маршрутний лист»:

<?php

$id = $_POST['id'];

$operaciya = $_POST['oper'];

$FIO = $_POST['FIO'];

$yavka = $_POST['yavka'];

$Potyag = $_POST['Potyag'];

$Napryamok = $_POST['Napryamok'];

$Uhod = $_POST['Uhod'];

$nomer_vagona = $_POST['nomer_vagona'];

$Norma = $_POST['Norma'];

$Hvostovyi = $_POST['Hvostovyi'];

include $_SERVER['DOCUMENT_ROOT'].'/php/bd_config.php';

$tb_name='Individ_marsh_listy';

switch($operaciya)

{

case 'add':

mysql_query("INSERT into $tb_name(FIO,yavka,Potyag,Napryamok,Uhod,nomer_vagona,Norma,Hvostovyi)

values (

'".$FIO."',

'".$yavka."',

'".$Potyag."',

'".$Napryamok."',

'".$Uhod."',

'".$nomer_vagona."',

'".$Norma."',

'".$Hvostovyi."'

);")

or die(mysql_error());

break;

case 'edit':

mysql_query("UPDATE $tb_name

SET

FIO='".$FIO."',

yavka='".$yavka."',

Potyag='".$Potyag."',

Napryamok='".$Napryamok."',

Uhod='".$Uhod."',

nomer_vagona='".$nomer_vagona."',

Norma='".$Norma."',

Hvostovyi='".$Hvostovyi."'

where

id_Individ_marsh_listy='".$id."'

;")

or die(mysql_error());

break;

case 'del':

mysql_query("DELETE from $tb_name where id_Individ_marsh_listy=".$id);

break;

Таким чином, всі головні моменти описані. Детальний код можна переглянути в додатках. Тепер перейдемо до тестування програми.

3.3 Практичні рекомендації до використання

Доступ до тестової версії мобільного робочого місця «Нарядчик поїзних бригад» здійснюється за адресою http://naryadchik.vv.si. На стартовій сторінці (див. рис. 3.5) користувачеві надається можливість авторизуватися або зареєструватися на сайті. Для авторизації користувачу у відповідних полях потрібно ввести свої дані: логін та пароль.

Що стосується реєстрації, то кожному користувачеві адміністратор сайту присвоює табельний номер та посаду. Після чого, видає табельний номер користувачеві. Завдяки цьому, можлива успішна реєстрація. Взагалі табельний номер потрібен для більшої конфеденціальності, адже без нього будь-яка стороння людина зможе зайти на сайт. Окрім табельного номера потрібно ввести: ПІБ, логін та пароль, який потрібно ще раз підтвердити (див. рис. 3.6). Після вдало введених даних, користувач буде пере направлений на стартову сторінку сайту.

Рис. 3.5. Стартова сторінка сайту

Рис. 3.6. Сторінка реєстрації

Як вже було сказано, виділено три ролі користувачів, відповідно до яких, користувач бачить різний контент сторінки. Адміністратору будуть відкриті такі розділи меню: «Маршрутні листи», «Бригади», «Графіки», «Користувачі», «Дані» та «Вихід».

Адміністраторові одразу відкривається меню «Маршрутні листи», у якому дві вкладки з таблицями «Бригадні маршрутні листи» та «Індивідуальні маршрутні листи» (див. рис.3.7). Адміністратор сайту має можливості додавання даних, редагування, видалення та пошуку за таблицями.

Рис. 3.7. Вікно з меню «Маршрутні листи»

Наступним пунктом меню є «Бригади». У даному меню дві таблиці: «Вибір бригади» та «Склад бригади». Завдяки даним таблицям, користувач отримує можливість перегляду інформації про те, хто знаходиться у складі бригади певного начальника потягу. Для цього потрібно натиснути в першій таблиці на прізвище начальника. У другій таблиці з'явиться перелік людей з даної бригади. Це можна побачити на рисунку 3.8.

Рис. 3.8. Меню «Бригади»

Наступним пунктом меню є «Графіки». Дане меню відкриває таблицю «Добовий розрахунок робочого часу поїздним бригадам» (рис. 3.9.). За даними таблиці (оновлення якої, здійснюється раз на три місяці), генерується «Табель провідника».

Рис. 3.9. Меню «Графіки»

У пункті меню «Користувачі» (рис. 3.10) адміністратор для реєстрації користувачів на сайті, додає записи з табельними номерами та посадами. Такі дані, як ПІБ та логін заповнюються автоматично під час реєстрації користувача.

Рис. 3.10. Меню «Користувачі»

Пункт меню «Дані» зберігає в собі дві таблиці «Напрями» та «Норма» (рис. 3.11). Вони слугують для подальшого вибору в інших таблицях напрямку та норми. Як і всі інші, дані таблиці підлягають редагуванню, додаванню та видаленню записів, а також пошуку необхідних відомостей у них.

Рис. 3.11. Меню «Дані»

Користувач-нарядчик отримає можливість перегляду та редагуванню всіх таблиць, за виключенням таблиці «Користувачі». На даному етапі роботи, головною задачею нарядчика є заповнення таких таблиць: «Індивідуальний маршрутний лист», «Добовий розрахунок робочого часу поїздним бригадам» та редагування таблиці «Табель провідника». Для процедури редагування нарядчик матиме можливість обрати провідника. Даний процес зображено на рисунку 3.12.

Рис. 3.12. Вибір провідника

Після цього відкриється табель провідника (рис. 3.13).

Рис. 3.13. Редагування табелю провідника

Якщо користувач зайде до системи з правами провідника, його огляду нададуться лише такі пункти меню, як «Індивідуальний маршрутний лист» (рис. 3.14) та «Табель провідника» (рис. 3.15) без права коригування таблиць.

Рис. 3.14. «Індивідуальний маршрутний лист» (режим користувача з роллю «провідник»)

Рис. 3.15. «Табель провідника»

Для завершення роботи з системою достатньо натиснути кнопку «Вихід». Після її натискання, користувач незалежно від його ролі, повернеться на стартову сторінку сайту. МРМ «Нарядчик поїзних бригад» було розроблено у вигляді сайту, що у порівнянні з автоматизованими системами управліннями, якими користаються на Укрзалізниці, має ряд переваг, а саме: доступність, простота розповсюдження, зручність супроводу, ефективність та оперативність оновлення бази знань системи.

Використання мобільного робочого місця «Нарядчик поїзних бригад» надає такі можливості:

- вести облік користувачів сайту, членів бригад, напрямків та ін.;

- вести облік та контроль табелів провідників, індивідуальних та бригадних маршрутних листів;

- прогнозування табелів для провідників на основі добового розрахунку робочого часу поїздним бригадам. Для розробки мобільного робочого місця нарядчика пасажирської вагонної дільниці була використана така конфігурація: HTML, CSS, JavaScript, PHP, MYSQL.

Мобільне робоче місце «Нарядчик поїзних бригад» у вигляді сайту потребує доопрацювання з метою розширення функціоналу.

ВИСНОВКИ

В ході дослідження отримані такі основні результати:

1. вивчено зміст проблеми автоматизації робочого місця нарядчика пасажирської вагонної дільниці;

2. проаналізовано існуючі рішення проблеми автоматизації робочого місця нарядчика;

3. здійснено концептуальне проектування структури мобільного робочого місця «Нарядчик поїзних бригад»;

4. описано функціональні характеристики інструментальних засобів, обраних для розробки мобільного робочого місця «Нарядчик поїзних бригад»;

5. реалізовано окремі функції мобільного робочого місця «Нарядчик поїзних бригад».

Мобільне робоче місце реалізовано у вигляді сайта із базою даних, що дозволяє в мінімальні терміни провести швидке опрацювання даних. Він легкий у використанні, завдяки зручному інтерфейсу. Саме завдяки цьому будь-який користувач зможе адаптуватися до свого місця роботи і ознайомитися з даними, необхідними йому надалі.

За допомогою створеного мобільного робочого місця «Нарядчик поїзних бригад» користувач має можливість коректно автоматизувати такі ключові моменти роботи нарядчика:

* ведення інформаційних таблиць, а також робота з даними, які в них зберігаються - швидкий пошук, видалення, додавання, редагування;

* на основі добового розрахунку робочого часу поїздним бригадам, прогнозується табель провідника на три місяці.

З'явилася можливість забезпечувати централізоване зберігання інформації, зменшує витрати часу на введення даних і видалення даних, швидкий відбір і пошук інформації завдяки високій швидкості роботи.

ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. Босова И.Н. Разработка образовательных программ по информатике на вариативной основе и индивидуальных учебных планов / И.Н Босова // Информационные технологии в образовании -- 2009: Сборник научных трудов участников IX научно-практической конференции-выставки 29 -- 30 октября 2009 г.. -- Ростов-на-Дону: Ростиздат, 2009.-- С.25 -- 26.

2. Васвани В. MySQL: использование и администрирование = MySQL Database Usage & Administration.//В.Васвани -- М.: «Питер», 2011. -- 368 с

3. Веб-дизайн : [Электронный ресурс]. - Режим доступу: https://ru.wikipedia.org/wiki/Веб-дизайн

4. Веллинг Л.. МуSQL - учебное пособие. // Люк Велинг, Лора Томпсон- К.: Вильямс, 2006. - 304с.

5. Как происходит процесс разработки создания сайта? [Электронный ресурс]. - Режим доступу// http://beflystudio.com/kak-proiskhodit-procjess-razrabotki-i-sozdanija-sajta.html

6. Коггзолл Дж. Полное руководство РНР5.//Дж. Коггзолл - К.: Вильямс, 2006--752с.

7. Кузнецов М.В., Симдянов Й.В. РНР 5: Самоучитель.//М.В. Кузнецов - К.: ВHV, 2009--672с.

8. Лабберс П., Олберс Б., Салим Ф. HTML5 для профессионалов: мощные инструменты для разработки современных веб-приложений = Pro HTML5 Programming: Powerful APIs for Richer Internet Application Development// П. Лабберс, Б. Олберс, Ф. Салим-- М.: «Вильямс», 2011.-- 272с.

9. Обзор CMS. Портал, посвященных системам управления контентом. [Электронный ресурс]. - Режим доступу// http://www.cmsobzor.ru

10. Портал CMSList.ru. Русскоязычный проект, посвященных системам управления контентом [Электронный ресурс]. - Режим доступу// http://www.cmslist.ru

11. Ромашев В. CMS Drupal: Система управления содержимым сайта.// В. Ромашев-- Питер, 2010.-- 255с.

12. Скляр Д, Трахтенберг А. РНР. Сборник рецептов. // Д. Скляр, А. Трантенберг- К.: Символ-Плюс, 2005-- 672с.

13. Солошенко В.Н. Автоматизированная система коммерческого осмотра поездов и вагонов. Пособие для приемщиков поездов: Учебное пособие / В.Н. Солошенко, Т.А. Винокурова, Е.А. Иконников и др.; под ред. В.Н.Солошенко.-М.:ГОУ «Учебно-методический центр по образованию на железнодорожном транспорте»,2008. - С.5-10.

14. Титтел Эд., Джефф Н. HTML, XHTML и CSS для чайников, 7-е издание = HTML, XHTML & CSS For Dummies, 7th Edition// Эд. Титтел, Н. Джефф-- М.: «Диалектика», 2011.-- 400с.

15. Томпсон Л., Коув А., Новицки С., Гудман Х-А. РНР 5 для профессионалов. РНР5.//Л. Томпсон, А. Коув, С. Новицки.,

Х-А. Гудман - К.: Вильямс, 2006. -- 608с.

16. Фримен Э, Фримен Эл. Изучаем HTML, XHTML и CSS = Head First HTML with CSS & XHTML.-- 1-е изд.//Э. Фримен, Эл. Фример-- М.: «Питер», 2010.-- 656 с.

17. Шафер С.. HTML, XHTML и CSS. Библия пользователя, 5-е издание = HTML, XHTML, and CSS Bible, 5th Edition.// С. Шаффер-- М.: «Диалектика», 2010.-- 656с.

18. Шлосснейгл Дж. Профессиональное программирование на РНР. Вильямс, 2005-- 624с.

19. JQuery UI. [Электронный ресурс]. - Режим доступу// http://ru.wikipedia.org/wiki/JQuery_UI

20. JQGrid. [Электронный ресурс]. - Режим доступу//http://jqgrid.com

ДОДАТКИ

Додаток А

Таблиця А.1. Структура таблиці «Табель провідника» / «tabel»

Назва поля (українською)

Назва поля (англійською)

Тип даних

Довжина, байт

Ключ

Примітка

Код провідника

id_provodnika

int

11

PK

Автоматично інкремоване число

ПІБ

PIB

varchar

100

ALT

Напрям

Napryam

varchar

100

ALT

Норма

Norma

varchar

6

ALT

Перший першого

perv_p

float

ALT

Перший день першого місяця

Другий першого

vtor_p

float

ALT

Другий день першого місяця

Третій першого

tret_p

float

ALT

Третій день першого місяця

Четвертий першого

chet_p

float

ALT

Четвертий день першого місяця

П'ятий першого

pyat_p

float

ALT

П'ятий день першого місяця

Шостий першого

shest_p

float

ALT

Шостий день першого місяця

Сьомий першого

sedm_p

float

ALT

Сьомий день першого місяця

Восьмий першого

vosm_p

float

ALT

Восьмий день першого місяця

Де'ятий першого

devyat_p

float

ALT

Де'ятий день першого місяця

Десятий першого

desyat_p

float

ALT

Десятий день першого місяця

Одинадцятий першого

odinadc_p

float

ALT

Одинадцятий день першого місяця

Дванадцятий першого

dvenadc_p

float

ALT

Дванадцятий день першого місяця

Тринадцятий першого

trenadc_p

float

ALT

Тринадцятий день першого місяця

Чотирнадцятий першого

chetyrn_p

float

ALT

Чотирнадцятий день першого місяця

П'ятнадцятий першого

pyatn_p

float

ALT

П'ятнадцятий день першого місяця

Шіснадцятий першого

shestn_p

float

ALT

Шіснадцятий день першого місяця

Сімнадцятий першого

semn_p

float

ALT

Сімнадцятий день першого місяця

Вісімнадцятий першого

vosemn_p

float

ALT

Вісімнадцятий день першого місяця

Дев'ятнадцятий першого

devyatn_p

float

ALT

Дев'ятнадцятий день першого місяця

Двадцятий першого

dvadc_p

float

ALT

Двадцятий день першого місяця

Двадцять перший першого

dvadc_perv_p

float

ALT

Двадцять перший день першого місяця

Двадцять другий першого

dvadc_vtor_p

float

ALT

Двадцять другий день першого місяця

Двадцять третій першого

dvadc_tret_p

float

ALT

Двадцять третій день першого місяця

Двадцять четвертий першого

dvadc_chetv_p

float

ALT

Двадцять четвертий першого

Двадцять п'ятий першого

dvadc_pyat_p

float

ALT

Двадцять п'ятий день першого місяця

Двадцять шостий першого

dvadc_shest_p

float

ALT

Двадцять шостий першого

Двадцять сьомий першого

dvadc_sedm_p

float

ALT

Двадцять сьомий день першого місяця

Двадцять восьмий першого

dvadc_vosm_p

float

ALT

Двадцять восьмий день першого місяця

Двадцять восьмий першого

dvadc_vosm_p

float

ALT

Двадцять восьмий день першого місяця

Двадцять дев'ятий першого

dvadc_devyat_p

float

ALT

Двадцять дев'ятий день першого місяця

Тридцятий першого

tredcatoe_p

float

ALT

Тридцятий день першого місяця

Тридцять перший першого

tredcat_perv_p

float

ALT

Тридцять перший день першого місяця

Перший другого

perv_v

float

ALT

Перший день другого місяця

Другий другого

vtor_v

float

ALT

Другий день другого місяця

Третій другого

tret_v

float

ALT

Третій день другого місяця

Четвертий другого

chet_v

float

ALT

Четвертий день другого місяця

П'ятий другого

pyat_v

float

ALT

П'ятий день другого місяця

Шостий другого

shest_v

float

ALT

Шостий день другого місяця

Сьомий другого

sedm_v

float

ALT

Сьомий день другого місяця

Восьмий другого

vosm_v

float

ALT

Восьмий день другого місяця

Дев'ятий другого

devyat_v

float

ALT

Дев'ятий день другого місяця

Десятий другого

desyat_v

float

ALT

Десятий день другого місяця

Одинадцятий другого

odinadc_v

float

ALT

Одинадцятий день другого місяця

Дванадцятий другого

dvenadcat_v

float

ALT

Дванадцятий день другого місяця

Тринадцятий другого

trenadcat_v

float

ALT

Тринадцятий день другого місяця

Чотирнадцятий другого

chetyrn_v

float

ALT

Чотирнадцятий день другого місяця

П'ятнадцятий другого

pyatnadc_v

float

ALT

П'ятнадцятий день другого місяця

Шіснадцятий другого

shestnadc_v

float

ALT

Шіснадцятий день другого місяця

Сімнадцятий другого

semnadc_v

float

ALT

Сімнадцятий день другого місяця

Вісімнадцятий другого

vosemnadc_v

float

ALT

Вісімнадцятий день другого місяця

Дев'ятнадцятий другого

devyatnadc_v

float

ALT

Дев'ятнадцятий день другого місяця

Двадятий другого

dvadcat_v

float

ALT

Двадятий день другого місяця

Двадцять перший другого

dvadcat_perv_v

float

ALT

Двадцять перший день другого місяця

Двадцять другий другого

dvadcat_vtor_v

float

ALT

Двадцять другий день другого місяця

Двадцять третій другого

dvadcat_tret_v

float

ALT

Двадцять третій день другого місяця

Двадцять четвертий другого

dvadcat_chetv_v

float

ALT

Двадцять четвертий день другого місяця

Двадцять п'ятий другого

dvadcat_pyat_v

float

ALT

Двадцять п'ятий день другого місяця

Двадцять шостий другого

dvadcat_shest_v

float

ALT

Двадцять шостий день другого місяця

Двадцять сьомий другого

dvadcat_sedm_v

float

ALT

Двадцять сьомий день другого місяця

Двадцять восьмий другого

dvadcat_vosm_v

float

ALT

Двадцять восьмий день другого місяця

Двадцять дев'ятий другого

dvadcat_devyat_v

float

ALT

Двадцять дев'ятий день другого місяця

Тридцятий другого

tridcatoe_v

float

ALT

Тридцятий день другого місяця

Перший третього

per_t

float

ALT

Перший день третього місяця

Другий третього

vtor_t

float

ALT

Другий день третього місяця

Третій третього

tret_t

float

ALT

Третій день третього місяця

Четвертий третього

chet_t

float

ALT

Четвертий день третього місяця

П'ятий третього

pyat_t

float

ALT

П'ятий день третього місяця

Шостий третього

shest_t

float

ALT

Шостий день третього місяця

Сьомий третього

sedm_t

float

ALT

Сьомий день третього місяця

Восьмий третього

vosm_t

float

ALT

Восьмий день третього місяця

Дев'ятий третього

devyat_t

float

ALT

Дев'ятий день третього місяця

Десятий третього

desyat_t

float

ALT

Десятий день третього місяця

Одинадцятий третього

odinadc_t

float

ALT

Одинадцятий день третього місяця

Дванадцятий третього

dvenadc_t

float

ALT

Дванадцятий день третього місяця

Тринадцятий третього

trinadc_t

float

ALT

Тринадцятий день третього місяця

Чотирнадцятий третього

chetyrn_t

float

ALT

Чотирнадцятий день третього місяця

П'ятнадцятий третього

pyatn_t

float

ALT

П'ятнадцятий день третього місяця

Шіснадцятий третього

shestn_t

float

ALT

Шіснадцятий день третього місяця

Сімнадцятий третього

semn_t

float

ALT

Сімнадцятий день третього місяця

Вісімнадцятий третього

vosemn_t

float

ALT

Вісімнадцятий день третього місяця

Дев'ятнадцятий третього

devyatn_t

float

ALT

Дев'ятнадцятий день третього місяця

Двадцятий третього

dvadc_t

float

ALT

Двадцятий день третього місяця

Двадцять перший третього

dvadcat_perv_t

float

ALT

Двадцять перший день третього місяця

Двадцять другий третього

dvadcat_vtor_t

float

ALT

Двадцять другий день третього місяця

Двадцять третій третього

dvadcat_tret_t

float

ALT

Двадцять третій день третього місяця

Двадцять четвертий третього

dvadcat_chetv_t

float

ALT

Двадцять четвертий день третього місяця

Двадцять п'ятий третього

dvadcat_pyat_t

float

ALT

Двадцять п'ятий день третього місяця

Двадцять шостий третього

dvadca_shest_t

float

ALT

Двадцять шостий день третього місяця

Двадцять сьомий третього

dvadcat_sedm_t

float

ALT

Двадцять сьомий день третього місяця

Двадцять восьмий третього

dvadcat_vosm_t

float

ALT

Двадцять восьмий день третього місяця

Двадцять дев'ятий третього

dvadcat_devyat_t

float

ALT

Двадцять дев'ятий день третього місяця

Тридцяте третього

tridcatoe_t

float

ALT

Тридцятий день третього місяця

Тридцять перше третього

tridc_per_t

float

ALT

Тридцять перший день третього місяця

Стартова поїздка

start_poezdka

datetime

ALT

Код добового розрахунку

id_dob_roz

Int

11

ALT

Додаток Б

програмний автоматизація робочий місце

Програмна реалізація індексної сторінки

<?php include $_SERVER['DOCUMENT_ROOT'].'/php/bd_config.php';

if (isset($_POST['login']) && isset($_POST['password']))

{

$login =mysql_real_escape_string($_POST['login']);

$password = md5($_POST['password']);

$query = "SELECT `id`

FROM `polzovateli`

WHERE `login`='{$login}' AND `password`='{$password}'

LIMIT 1";

$sql = mysql_query($query) or die(mysql_error());

if (mysql_num_rows($sql) == 1)

{

$row = mysql_fetch_assoc($sql);

session_start();

$_SESSION['user_login'] = $login;

header("Location: /php/menu.php?marshrut"); exit();

}

else

{

$error='*Помилка авторизації!';

}

}

?>

<?php

$page='Автоматизоване робоче місце нарядчика пасажирської вагонної дільниці';

include $_SERVER['DOCUMENT_ROOT'].'/php/header.php';

?>

<div id="login_fild">

<form action="index.php" method="POST">

<table id="login">

<td><b>Введіть логін:</b></td>

<td><input class="area" type="text" name="login" /></td>

<td><b>Введіть пароль:</b></td>

<td><input class="area" type="password" name="password" /></td>

<td><input type="submit" class="button" name="vhod" value="Вхід" /></td>

<td><input type="button" class="button" onclick="location.href='../php/registration.php'" value="Регістрація" /></td>

<td><b><font color="red"><?php echo $error; ?></font></b></td>

</tr>

</table>

</form>

</div>

<?php include $_SERVER['DOCUMENT_ROOT'].'/php/footer.php';?>

Додаток В

Програмна реалізація сторінки користувача

Лістинг «menu.php»

<?php

$vse_prava='Адмін';

$providnik='Провідник';

include $_SERVER['DOCUMENT_ROOT'].'/php/bd_config.php';

session_start();

$login = $_SESSION['user_login'];

$query = "SELECT `id`

FROM `polzovateli`

WHERE `login`='{$login}'

LIMIT 1";

$sql = mysql_query($query) or die(mysql_error());

if (mysql_num_rows($sql) == 0) {

unset($_SESSION['user_login']);

session_destroy();

header("Location: index.php"); exit();

}

$result=mysql_query("SELECT * FROM `polzovateli` WHERE login='{$login}'");

$row=mysql_fetch_array($result);

$FIO=$row[FIO];

$tabnomer=$row[tabnomer];

$doljnost=$row[doljnost];

$select_menu = $_SERVER['QUERY_STRING'];

switch($select_menu)

{

case 'exit':

unset($_SESSION['user_login']);

session_destroy();

header("Location: ../index.php"); exit();

break;

case 'marshrut':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/marshrut_list.php';

$name_page='Маршрутні листи';

break;

case 'grafiki':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/grafiki.php';

$name_page='Графіки';

break;

case 'polzovateli':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/polzovateli.php';

$name_page='Користувачі';

break;

case 'glavnoe':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/glavnoe.php';

$name_page='Про систему';

break;

case 'redaktirovanie':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/redaktirovanie.php';

$name_page='Дані';

break;

case 'brigadi':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/brigadi.php';

$name_page='Бригади';

break;

case 'tabel_provodnika':

$url=$_SERVER['DOCUMENT_ROOT'].'/php/tabel_provodnika.php';

$name_page='Табель провідника';

break;

}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>

<?php

if (isset($name_page))

echo $name_page;

else

echo 'Автоматизоване робоче місце нарядчика пасажирської вагонної дільниці';?>

</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<link rel="stylesheet" type="text/css" href="../css/style.css" />

<link rel="stylesheet" type="text/css" media="screen" href="../css/dot-luv/jquery-ui.css" />

<link rel="stylesheet" type="text/css" media="screen" href="../css/ui.jqgrid.css" mce_href="css/ui.jqgrid.css" />

<link rel="stylesheet" type="text/css" href="../css/jquery-ui-timepicker-addon.css" />

<script type="text/javascript" src="../js/jquery-1.9.1.js"></script>

<script type="text/javascript" src="../js/jquery-ui-1.10.2.custom.min.js"></script>

<script type="text/javascript" src="../js/i18n/grid.locale-ru.js"></script>

<script type="text/javascript" src="../js/jquery.jqGrid.min.js"></script>

<script type="text/javascript" src="../js/jquery-ui-timepicker-addon.js"></script>

</head>

<body>

<ul class="menu_ul">

<?php

if($doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?marshrut">Маршрутні листи</a></li>';

if($doljnost==$providnik)

echo '<li class="menu_li"><a href="?marshrut">Індивідуальний маршрутний лист</a></li>';

if($doljnost==$providnik || $doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?tabel_provodnika">Табель провідника</a></li>';

if($doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?brigadi">Бригади</a></li>';

if($doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?grafiki">Графіки</a></li>';

if($doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?polzovateli">Користувачі</a></li>';

if($doljnost==$vse_prava)

echo '<li class="menu_li"><a href="?redaktirovanie">Дані</a></li>';?>

<li class="menu_li"><a href="?exit">Вихід</a></li>

</ul>

<div id="wholog">

Ви увійшли як <?php echo $FIO;?>; табельнмй номер: <?php echo $tabnomer;?>

<?php

if($doljnost==$providnik)

echo '<p>Сьогодні: '.date('Y-m-d').'<p>Норма:173 ч.<p>Відпрацьовано:<div id="vidpraciovano"></div>';

?>

</div>

<div id="content">

<?php if(isset($url))

{

if($url==$_SERVER['DOCUMENT_ROOT'].'/php/polzovateli.php')

{

if($doljnost==$vse_prava)

include $url;

}

if($url==$_SERVER['DOCUMENT_ROOT'].'/php/tabel_provodnika.php')

{

if($doljnost==$providnik || $doljnost==$vse_prava)

include $url;

}

else

include $url;

}

?>

</div>

<div id="footer" align="center">

Розробник: Єрмошина Анастасія <?php echo date('Y')?> рік

</div>

</body>

</html>

Додаток Г

Програмна реалізація заповнення таблиць

Лістинг «bd_brig_list.php»

<?php

$page = $_GET['page'];

$limit = $_GET['rows'];

$sidx = $_GET['sidx'];

$sord = $_GET['sord'];

if(!$sidx) $sidx =1;

include $_SERVER['DOCUMENT_ROOT'].'/php/bd_config.php';

$tb_name="brigadnie_marsh_listy";

$query = "SELECT COUNT(*) AS count FROM $tb_name";

$result=mysql_query($query) or die(mysql_error());

$row=mysql_fetch_array($result);

$count = $row['count'];

if( $count >0 ) {

$total_pages = ceil($count/$limit);

} else {

$total_pages = 0;

}

if ($page > $total_pages) $page=$total_pages;

$start = $limit*$page - $limit;

if (isset($_GET['_search']) && $_GET['_search'] == 'true')

{

if(isset($_GET['searchOper']))

{

switch ($_GET['searchOper'])

{

case 'eq':

$qWhere = "WHERE ".$_GET['searchField']."='".$_GET['searchString']."'";

break;

case 'ne':

$qWhere = "WHERE ".$_GET['searchField']."<>'".$_GET['searchString']."'";

break;

case 'bw':

$qWhere = "WHERE ".$_GET['searchField']." LIKE '".$_GET['searchString']."%'";

break;

case 'cn':

$qWhere = "WHERE ".$_GET['searchField']." LIKE '%".$_GET['searchString']."%'";

break;

default: throw new Exception('Условие не существует!');

$SQL = "SELECT * FROM $tb_name $qWhere ORDER BY $sidx $sord LIMIT $start , $limit";

$result = mysql_query( $SQL ) or die("Couldn t execute query.".mysql_error());

$responce->page = $page;

$responce->total = $total_pages;

$responce->records = $count;

$i=0;

while($row = mysql_fetch_array($result)) {

$responce->rows[$i]['id']=$row[id_br_mr_list];

$responce->rows[$i]['cell']=array($row[nomer_brigady],$row[nachalnik_potyaga],$row[potyag],$row[napryam],substr($row[yavka],0,16),substr($row[uhod],0,16));

$i++;

}

echo json_encode($responce);

?>

Лістинг «bd_brigada.php»

<?php

$page = $_GET['page'];

$limit = $_GET['rows'];

$sidx = $_GET['sidx'];

$sord = $_GET['sord'];

if(!$sidx) $sidx =1;

include $_SERVER['DOCUMENT_ROOT'].'/php/bd_config.php';

$tb_name="brigady";

$query = "SELECT COUNT(*) AS count FROM $tb_name";

$result=mysql_query($query) or die(mysql_error());

$row=mysql_fetch_array($result);

$count = $row['count'];

if( $count >0 ) {

$total_pages = ceil($count/$limit);

} else {

$total_pages = 0;

}

if ($page > $total_pages) $page=$total_pages;

$start = $limit*$page - $limit;

if (isset($_GET['_search']) && $_GET['_search'] == 'true')

{

if(isset($_GET['searchOper']))

{

switch ($_GET['searchOper'])

{

case 'eq':

$qWhere = "WHERE ".$_GET['searchField']."='".$_GET['searchString']."'";

break;

case 'ne':

$qWhere = "WHERE ".$_GET['searchField']."<>'".$_GET['searchString']."'";

break;

case 'bw':

$qWhere = "WHERE ".$_GET['searchField']." LIKE '".$_GET['searchString']."%'";

break;

case 'cn':

$qWhere = "WHERE ".$_GET['searchField']." LIKE '%".$_GET['searchString']."%'";

break;

default: throw new Exception('Условие не существует!');

}

}

}

$SQL = "SELECT * FROM $tb_name $qWhere ORDER BY $sidx $sord LIMIT $start , $limit";

$result = mysql_query( $SQL ) or die("Couldn t execute query.".mysql_error());

$responce->page = $page;

$responce->total = $total_pages;

$responce->records = $count;

$i=0;

while($row = mysql_fetch_array($result)) {

$responce->rows[$i]['id']=$row[id_brig];

$responce->rows[$i]['cell']=array($row[Nomer_brigady],$row[nachalnik_poezda]);

$i++;

}

echo json_encode($responce);

?>

Лістинг «bd_chleni_brigadi.php»

<?php

$q = $_GET["q"];


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.