Розробка проекту мобільного робочого місця "Нарядчик поїзних бригад"
Програмні засоби автоматизації планування та обліку робіт поїзних бригад нарядчиком пасажирської вагонної дільниці. Загальна характеристика мобільного робочого місця. Програмна реалізація структурних елементів. Система управління реляційними базами даних.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 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"];
Подобные документы
Аналіз методів і засобів вирішення задачі автоматизації робочого місця працівника бібліотеки. Розробка логічної моделі бази даних "Бібліотека", інтерфейсу програми. Створення візуального додатку, що дозволяє переглядати, додавати інформацію в базу даних.
курсовая работа [2,8 M], добавлен 06.02.2013Розробка інформаційних моделей та програмного забезпечення автоматизованого робочого місця управління замовленнями малого підприємства. Трудомісткість та тривалість написання програми, розрахунок поточних витрат її реалізації та мінімальної ціни продажу.
дипломная работа [2,0 M], добавлен 19.11.2010Розробка системи, що дозволяє оптимізувати управління запасами продукції на складі. Характеристика двох модулів програми: реалізація першого модуля в середовищі Delphi, реалізація другого модуля на основі матричної ігрової моделі управління запасами.
дипломная работа [2,0 M], добавлен 22.10.2012Програмне забезпечення та шляхи автоматизації інформаційної системи управління школи. Побудова імітаційної моделі управлінських процесів за допомогою ППЗ MS Project. Розробка бази даних "Школа". Дослідження автоматизованого робочого місця секретаря.
курсовая работа [210,9 K], добавлен 10.11.2012Критерії (вимоги) до створення автоматичного робочого місця оператора реєстратури. Обґрунтування вибору середовища програмування та засобів збереження даних. Алгоритм програми. Опис інтерфейсу проекту системи. Програмні модулі та керівництво користувача.
дипломная работа [1017,0 K], добавлен 31.10.2014Розробка автоматизованого робочого місця начальника курсу ВВНЗ в програмному середовищі Borland Delphi. Реалізація головного меню програми та додаткової панелі управління. Таблиця з інформацією про спортсмена. Алгоритм роботи інформаційної системи.
курсовая работа [777,6 K], добавлен 19.05.2014Вивчення структури та організації навчальної діяльності інституту. Посадові обов’язки системного адміністратора, потреби в технічних і програмних засобах для робочого місця. Проект програмної системи для системного адміністратора, програмна інженерія.
отчет по практике [935,0 K], добавлен 09.06.2013Фізичне проектування бази даних відділу кадрів. Форма бази "Табель обліку робочого часу". Діалогове вікно для введення параметру "Період", звіт. Охорона праці при роботі на персональному комп'ютері: перелік вимог до робочого місця, пожежна безпека.
курсовая работа [1,6 M], добавлен 25.03.2013Сутність автоматизованого робочого місця фахівця з розрахунку заробітної платні у медичному закладi. Розробка діаграми класів для програмного комплексу. Опис взаємодії між структурними елементами програмного комплексу. Показники якості аналогічних систем.
курсовая работа [2,2 M], добавлен 03.06.2019Анализ функциональных возможностей автоматизированной информационной системы АРМ "Нарядчик". Разработка базы данных и web-интерфейса модуля по учёту графиков труда и отдыха локомотивных бригад эксплуатационного локомотивного депо АИС АРМ "Нарядчик".
дипломная работа [1,8 M], добавлен 06.07.2015