МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ХАРЧОВИХ ТЕХНОЛОГІЙ Інститут (факультет )__Автоматизації і комп’ютерних систем_____ Кафедра _____Інформаційних систем___________________________ «До захисту в ЕК» «До захисту допущено» Директор інституту(декан факультету) Завідувач кафедри _________ Форсюк А. В._ (підпис) (прізвище та ініціали) ____________ _ Чумаченко С. М. (підпис) (прізвище та ініціали) «___» _______________ 2020р. «___» _______________ 2020р. КВАЛІФІКАЦІЙНА РОБОТА НА ЗДОБУТТЯ ОСВІТНЬОГО СТУПЕНЯ БАКАЛАВРА зі спеціальності___122 «Комп’ютерні науки та інформаційні технології»___ (код та назва спеціальності) освітньо-професійної програми ___«Комп’ютерні науки»__________________ на тему: __« Розробка програмного модуля підтримки збутово-валютних операцій для сайту Domsporta»_____________________________ Виконав: здобувач__4__ курсу, групи__4___ ___________Писаренко Владислав Володимирович _ ____________ (прізвище, ім’я, по батькові повністю) (підпис) Керівник _______Поворознюк Назар Іванович_______ ____________ (прізвище , ім’я та по батькові повністю) (підпис) Консультанти Поворознюк Назар Іванович ___________ (прізвище та ініціали) (підпис) _________________ ___________ (прізвище та ініціали) (підпис) _________________ ___________ (прізвище та ініціали) (підпис) Рецензент Смітюх Ярослав Володимирович ___________ (прізвище та ініціали) (підпис) Засвідчую, що в цій кваліфікаційній роботі немає запозичень із праць інших авторів без відповідних посилань. Здобувач____________________ (підпис) Київ – 2020 р. НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ХАРЧОВИХ ТЕХНОЛОГІЙ Інститут (факультет) __Автоматизації і комп’ютерних систем____________ Кафедра _____Інформаційних систем__________________________________ Освітній ступінь_____бакалавр_______________________________________ Спеціальність_____________________________________________________ (код і назва) Освітньо-професійна програма ___«Комп’ютерні науки»_______________ (назва) ЗАТВЕРДЖУЮ Завідувач кафедри інформаційних систем с.н.с. С.М.Чумаченко ________________________________ “____” _________________20___року З А В Д А Н Н Я НА КВАЛІФІКАЦІЙНУ РОБОТУ ЗДОБУВАЧА ______________ Писаренка Владислав Володимировича__________________ (прізвище, ім’я по батькові) 1. Тема роботи «Розробка програмного модуля підтримки збутово- валютних операцій для сайту Domsporta»» __________________________________________________________________ __________________________________________________________________ керівник роботи____Поворознюк Назар Іванович, кандидат технічних наук, доцент_________________________________________, (прізвище, ім’я, по батькові, науковий ступінь, вчене звання) затверджені наказом закладу вищої освіти від “ 27 ”квітня 2020року №269-кс 2. Строк подання здобувачем роботи___14.06.2020_______________________ 3. Вихідні дані до роботи ___1) товар__________; ____ 2) курс валют______________________________________________________ 3)вартість_________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ _4. Зміст пояснювальної записки (перелік питань, які потрібно розробити)_____1) Вступ.____________________________________________ 2) Розділ 1. Системний аналіз об’єкту автоматизації та постановка задачі на проектування.____________________________ 3) Розділ 2. Розробка автоматизації.___________________________ 4) Розділ 3. Охорона праці. __________________________________ 5) Висновки_________________________________________________ 5. Перелік графічного матеріалу 1. Організаційна структура «Domsporta»___________________________________________________ 2. Організаційна структура ІТ-відділу ____________________________________________ 3. Функціональна модель діяльності ІТ-відділу ____________________________________ 4. Концептуальна модель діяльності ІТ-відділу ____________________________ 5. Інтерфейс користувача ____________________________________ 6. Консультанти розділів роботи Розділ Прізвище, ініціали та посада консультанта Підпис, дата завдання видав завдання прийняв Системний аналіз об’єкту автоматизації та постановка задачі на проектування. к. тех н., доцент Поврознюк Н. І. Розробка автоматизації. к. тех н., доцент Поврознюк Н. І. Організація праці. к. тех н., доцент Поврознюк Н. І. 7. Дата видачі завдання_________10 травня 2020 року_______________ КАЛЕНДАРНИЙ ПЛАН № Назва етапів виконання кваліфікаційної роботи Строк виконання етапів роботи Примітка 1 Передпроектне дослідження та системний аналіз діяльності відділу автоматизації робочих процесів та програмування 11.03.2020 2 Розробка функціональної та концептуальної моделей діяльності відділу автоматизації робочих процесів та програмування 23.03.2020 3 Розрахунок техніко-економічного обґрунтування доцільності розробки 01.04.2020 4 Визначення та реалізація функцій підсистеми 06.04.2020 5 Розробка плану організації праці 25.05.2020 6 Оформлення роботи та розробка презентаці 01.06.2020 Здобувач _______________ ________________________ (підпис) (прізвище та ініціали) Керівник роботи _____________ _______________________ ( підпис ) (прізвище та ініціали) 4 АНОТАЦІЯ Головною метою даної бакалаврської роботи є розроблення програмного модуля для підтримки валютних коригувань для сайту з продажу спортивного обладнання «Domsporta». Даний модуль доповнить загальну систему по ціноутворенню сайту. Об’єктом дослідження є сайт з продажу спортивного обладнання «Domsporta». Предметом роботи є розробка нового модулю системи. Практична реалізація – розробка модулю та оцінка ефекту впливу та впровадження модуля в систему. Дипломна робота містить 77 сторінок, 6 таблиць, 17 рисунків, 9 додатків та 12 літературних джерел. КЛЮЧОВІ СЛОВА: МОДУЛЬ, ВАЛЮТА, БАЗА ДАНИХ, СТРУКТУРА, ІНТЕРФЕЙС, OPENCART. 5 ANNOTATION The main purpose of this bachelor's thesis is to develop a software module to support currency adjustments for the site for the sale of sports equipment "Domsporta", This module will complement the overall system of site pricing. The object of research is the site for the sale of sports equipment "Domsporta". The subject of the work is the development of a new module of the system. Practical implementation - module development and evaluation of the effect of the impact and implementation of the module in the system. Thesis contains 77 pages, 6 tables, 17 figures, 9 appendices and 12 references. KEY WORDS: MODULE, CURRENCY, DATABASE, STRUCTURE, INTERFACE, OPENCART. 6 ВСТУП Перенесення продажів в інтернет, на даний момент, є однією з найбільш ресурсномістких галузей діяльності техногенного суспільства. Інтернет-магазини є більш економними для його власників, ніж звичайні. Найбільш вигідними є сайти, які створені на спеціальних платформах, які, в свою чергу підтримують різні модулі. Щоб інтернет-магазин приносив максимальний прибуток він повинен бути не тільки зручним для користувача, а ще зручним в адмініструванні. Правильний підбір спеціальних модулів значно полегшує цю задачу. Тому і створюють різні модулі для інтернет-магазинів, задача яких спрямована на покращення, не тількі загального виду сайту, а й його адміністрування. Через нестабільну економічну ситуацію в країні, а на даний час і в світі, курси валют змінюють своє значення дуже різко, а це, в свою чергу, створює великі проблеми для ціноутворення та подальшому корегуванню цін в інтернет-магазині. Тому виникає питання про автоматизацію корегування цін, та створення модулю який звоже справлятися з цією задачею. Це дає такі переваги , як зменшення затрат часу для корегування цін через стрибки на валютних ринках. Саме тому було прийняте рішення про доповнення системи ціноутворення інтернет-магазину модулем для автоматичного перерахунку цін за заданим курсом валют. 7 Зміст АНОТАЦІЯ ..................................................................................................... 4 ВСТУП ............................................................................................................. 6 РОЗДІЛ 1. СИСТЕМНИЙ АНАЛІЗ ОБ`ЄКТУ АВТОМАТИЗАЦІЇ ТА ПОСТАНОВКА ЗАДАЧІ НА ПРОЕКТУВАННЯ ...................................... 9 1.1. Найменування компанії .................................................................... 9 1.1.1 Загальна характеристика ТОВ «Domsporta» ................................. 9 1.2 Організаційна структура підприємства .............................................. 13 1.3 Аналіз нинішнього стану автоматизації ............................................. 15 1.4 Розроблення функціональної моделі ................................................... 17 1.5 АНАЛІЗ СИСТЕМ .............................................................................. 17 1.5.1 LIVE PRICE .......................................................................................... 18 1.5.2 Валюта + ............................................................................................... 19 1.5.3 Мультивалютні товари ...................................................................... 20 1.5.4 Порівняння систем-аналогів ....................................................... 20 1.6 Обґрунтування доцільності проектування і розроблення системи 22 1.7 Концептуальна модель системи ........................................................ 22 1.8 Постановка задачі на проектування ............................................. 22 1.8.1 Призначення та цілі створення системи ................................... 23 1.8.2 Вимоги до створюваного інформаційної підсистеми ............... 23 РОЗДІЛ 2. РОЗРОБКА АВТОМАТИЗАЦІЇ .............................................. 24 2.1. Інформаційне забезпечення проекту ............................................. 24 2.2 Програмне забезпечення розробки ...................................................... 26 2.3 Технічне забезпечення розробки інформаційної системи ................. 26 2.5 Обґрунтування вибору технічних засобів розробки ЕНР ................. 29 2.6 Створення запитів ........................................................................ 29 2.7 Розроблення інтерфейсу користувача .......................................... 30 8 2.8 Інструкція користувача .................................................................. 36 2.9 Розрахунок техніко-економічного ефекту впровадження програмного модуля ................................................................................. 39 РОЗДІЛ 3. ОХОРОНА ПРАЦІ .................................................................... 47 3.1. Умови праці користувача ПК .......................................................... 47 3.2 Ергономіка та організація робочого місця. ..................................... 47 3.3. Мікроклімат виробничого середовища .......................................... 47 3.4. Забезпечення раціонального освітлення робочого місця ............. 48 3.5. Вимоги безпеки праці при експлуатації комп’ютерної техніки . 49 3.6. Електробезпека ................................................................................... 49 3.7. Пожежо- та вибухобезпека ................................................................ 50 ВИСНОВКИ .................................................................................................. 52 СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ .................................................. 53 ДОДАТОК А «ФУНКЦІОНАЛЬНА МОДЕЛЬ (AS-IS)» ........................ 55 9 РОЗДІЛ 1. СИСТЕМНИЙ АНАЛІЗ ОБ`ЄКТУ АВТОМАТИЗАЦІЇ ТА ПОСТАНОВКА ЗАДАЧІ НА ПРОЕКТУВАННЯ 1.1. Найменування компанії  повне – Товариство з обмеженою відповідальністю Domsporta  скорочене – ТОВ ‘Domsporta’ Місце знаходження :  юридична адреса: вулиця Тираспольська, 14, Київ, 04060  фізична адреса: вулиця Тираспольська, 14, Київ, 04060 1.1.1 Загальна характеристика ТОВ «Domsporta» Рис. 1.1 DomSporta є професійним магазином з продажу спортивного обладнання та товарів для активного відпочинку. Історія заснування магазину почалася в 2013 році, коли група ініціативних людей, не з чуток знають і розуміють важливість занять спортом та їх роль в повноцінному, здоровому і 10 збалансованому способі життя людини. Отже було створино нове, орієнтоване на задоволення спортивних потреб клієнтів, підприємство. Наш магазин досить молодий, його відкриття відбулося 1 березня 2013 року, але ми вже встигли завоювати авторитет і популярність серед тисяч споживачів. У «DomSporta» Вашій увазі буде представлено широкий вибір різноманітних тренажерів, в тому числі і професійних, всього необхідного для фітнесу, аеробіки та важкої атлетики, туризму та для деяких екстремальних видів спорту: водного і велоспорту. Менеджери завжди готові надати клієнту допомогу щодо оформлення замовлення. Також клієнт може отримати докладну консультацію з будь-якого продукту яка допоможе йому у виборі необхідного товару. Також DomSporta надає послуги з оснащення спортзалів під ключ, що включає в себе не тільки підбір відповідних тренажерів, але і повне ведення проекту тренажерного залу. При покупці товарів, на суму від 1490 грн і вище, магазин здійснює доставку абсолютно безкоштовно. Більш того, одним з важливих плюсів співпраці з нами є можливість придбання обладнання в кредит, детальну інформацію з усіх аспектів і умов даної послуги Вам можуть надати менеджери кредитного відділу. Наш інтернет-магазин DomSporta піклується і цінує кожного свого клієнта, тому, звертаючись до нас, Ви завжди можете розраховувати на відмінний сервіс, цікаві акційні пропозиції та гнучку систему знижок, незмінно високу якість і великий вибір товару, кваліфіковану допомогу і пораду у виборі обладнання. 11 На всю продукцію, представлену на сайті нашого магазину DomSporta, надається гарантія від виробника, термін дії якої зазначений в спеціальній документації, що йде в комплекті з придбаним обладнанням. Наші переваги: ­ Широкий асортимент товару ­ Часті акції та знижки для клієнта ­ Кваліфікована консультація по підбору товару для клієнта ­ Можливість проектування спортзалу під ключ ­ Безкоштовна доставка від 1490 грн ­ Гарантійне обслуговування придбаного товару В наш час, коли ринок переповнений різними інтернет-магазинами з продажу спортивного обладнання «Domsporta» з самого створення і до сьогоднішнього дня тримається в лідерах через продумане використання маркетингових технологій . Оскільки моєю задачею було створення модулю для полегшення цінно- коригування, то потрібно було зрозуміти як формуються спеціальні прозиції та ціни на товар. На ціну товару впливає, перш за все, саме ціна від виробника. Оскільки, майже всі товари є імпортними, то їх ціна залежить від курсу валют на ринку. Фактори від яких залежить вид та формування спецільних пропозицій:  Залишок товару деякого виду на складі;  Популярність товару серед покупців;  вид товару, тобто його категорія; 12  термін спеціальної пропозиції;  категорії покупців ;  уподобань клієнта На підставі отриманих даних приймають рішення про виду маркетингової комунікації, термін проведення. Велика кількість відомих спортивних компаній обрали ТОВ „Domsporta” для обладнання та проектування свої спортивних залів та майдаників. Під час проходження практики мені дали можливість ознайомитися з провідними незмінними замовниками. Рис. 1.2 Клієнтами «Domsporta» є не тільки фізичні особи, а й такі компанії як: «SportLife» «F1 Sport Club» «Power Hulk» «Sky Fitness» «KievSport Club» «Energym» «Zgym» «Olimpia Sport». 13 1.2 Організаційна структура підприємства Рис.1.2.1 Організаційна структурна підприємства 14 Організаційна структура ІТ-відділу на рис.1.2.2. Рис 1.2.2. Організаційна структура ІТ-відділу 1.2.1 Режим і особливості функціонування Основними завданнями відділу є:  Впровадження сучасних інформаційних технологій для роботи  Аналіз роботи сайтів, їх компонентів в сайтах конкурентів. 15 Основні функції відділу:  Розробка та подальше впровадження нових технологій в сайт.  Оновлення сайту магазину.  Організація доступу до адміністративної панелі сайту.  Адміністрування серверу інтернет-магазину.  Адміністрування сайту інтернет-магазину.  Організація розробки та удосконалення програмно-технічного забезпечення сайту інтернет-магазину. • Постійна підтримка інтернет-сторінки магазину. • Інформаційно - технічна підтримка інтернет-магазину. • Розроблення та постійна підтримка бази даних для збору, зміни всіх даних в єдиній базі даних. 1.2.3 Взаємодія з іншими відділами Вiддiл інформаційних технологій взаємодіэ з з тaкими вiддiлaми підприємства: фінансовий відділ, відділ продажу. Взаємодія з відділом продажу заключається в тому, що відділ ІТ постійно оновлює все дані про товари. Вiд фiнaнсового вiддiлу отримує фінансовий план, план продажів на певний період для налаштування модулів, зaробiтну плaту. 1.3 Аналіз нинішнього стану автоматизації Відділ ІТ працює безпосередньо з усіма сферами діяльності фірми, але найбільше доводитися працювати з сферою інформаційних технологій та систем, так, як їх робота вимагає особливого контролю та безпосередньо пов'язана з роботою в БД (Information System Design). Особливістю CMS Opencart є його модульність, тобто можливість створення та завантаження безлічі додаткових модулів, які розширюють стандартний функціонал. Одна з важливих переваг 16 Opencart це те, всі дані про товари, картинки та інше, зберігаються не на окремому носії чи персональному комп’ютері, тим самим займаючи місце на жорсткому диску, а на єдиному спільному комп’ютері – сервері, який дає можливість завантажувати, переміщати, змінювати або видаляти файли. Opencart має досить низький поріг входження в розробку. Це дозволяє опанувати дану CMS без великого досвіду в розробці сайтів. На всіх комп’ютерах встановлена операційна система Windows 10. Так само на всіх комп'ютерах установлено базовий пакет програм Microsoft Office, Visual Studio Code, Adobe Photoshop, для редагування зображень, Open Server Panel для тестування нових версій сайту та його нових функцій. Як відбувається зміна цін на товари на даний момент: Персонал сайту який відповідає за зміну цін повинен моніторити ситуацію на валютних ринках і з кожними суттєвими змінами потрібно було вручну рахувати та змінювати ціни. Після всіх обчислювальних маніпуляцій потрібно заходити в панель адміністратора та шукати кожен товар певного виробника, закупівельні ціни якого потрібно перерахувати, та змінювати їх вручну через сторінку налаштувань товару в адміністративній панелі. А це є досить неефективне використання людських ресурсів через те, що:  даний процес є занадто довготривалим  Вимагає більших затрат на оплату персоналу за дану роботу  Людський фактор присутній, отже присутня ймовірність помилок, а через велику кількість товарів потрібно обробити вручну робить ймовірність помилки достатньо високою 17 1.4 Розроблення функціональної моделі Спочатку, потрібно обов’язкого провести аналіз, як працює створювана система. Щоб це зробити потрібно побудуватия функціональна модель AS-IS, яка описує процес зміни цін, як він здійснюється зараз. Щоб знайти проблему потрібно провести аналіз моделі AS-IS. За допомогою цього ми зможему зрозуміти в чому полягатимуть переваги нових процесів і яким змінам піддасться існуюча структура організації процесу . Контекстна діаграма має два рівні декомпозиції, та наведена на рис.1 у Додатку А. Входи моделі:  Ціна певної валюти.  Ціна товару Виходи моделі:  Ціна на товар в гривнях – це остаточна ціна після всіх проведених розрахунків згідно курсів валют. Управління моделі:  Статут підприємства  План продажів на певний період  Фінансовий план Механізми моделі:  Адміністратор  Програмний модуль 1.5 АНАЛІЗ СИСТЕМ Головний етап автоматизації збутово-валютних операцій - це вибір правильного модулю. На ринку присутня досить велика кількість модулів з даним 18 функціоналом. Ниже розглянуто декілька найбільш популярних модулів з потрібним функціоналом. 1.5.1 LIVE PRICE Даний модуль призначений для оновлення інформації про ціну на сторінці товару в залежності від обраних покупцем опцій. Цей модуль сумісний з усіма стандартними функціями ціноутворення в OpenCart такі як: опції, атрибути товару, податки, акції, знижки. Плюси даного модулю:  Він працює з усіма світовими валютами.  Для різних виробників можна задати різні курси валют  Для різних виробників можна задати різні курси валют  Даний програмний засіб є сумісним з стандартними та комерційними шаблонами OpenCart  він дозволяє окремо розрахувати доступні знижки в залежності від обраних опцій товару.  При розрахунку доступної знижки цей модуль враховує товар який вже доданий в кошик.  гнучкі налаштування модулю в адміністративній панелі інтернет- магазину. Недоліки даного модулю:  Він є несумісним з самописними шаблонами  Несумісний з новими версіями OpenCart 3+  Незручний та перевантажений інтерфейс налаштування модулю 19 1.5.2 Валюта + Цей модуль було розроблено спеціально для зміни цін на товари, ціна яких залежить від курсу відповідних валют. Цей модуль сумісний з усіма стандартними функціями ціноутворення в OpenCart такі як: опції, атрибути товару, податки, акції, знижки. Переваги даного модулю:  Для різних виробників можна задати різні курси валют  Гнучкі налаштування модулю в панелі адміністратора  Можливість налаштування відображення ціні на різних сторінках інтернет-магазину.  Зручний інтерфейс налаштувань модулю  Можливість вибору основної валюти інтернет-магазину. Недоліки даного модулю:  Неможливість самостійного оновлення модулю при переході на нову версію OpenCart  Для роботи з базовими функціями OpenCart потрібні додаткові модулі по цінноутворенню  Несумісний з модулем OpenCartFilter Модуль дає можливість вказувати в товарах базову ціну в різних валютах - це буває необхідно, якщо ви торгуєте товарами іноземних виробників і соотв. ваші ціни сильно залежать від коливання курсів валют. На вкладці Дані після поля "Ціна" з'являються два поля Базова ціна і Базова валюта туди можна прописати ціну в потрібній вам валюті. Аналогічно для опцій, акцій і знижок 20 теж додаються поля для Базовою ціни. Далі все ціни з полів базової ціни переводяться за курсом в основну валюту магазину в стандартні поля цін. 1.5.3 Мультивалютні товари Даний модуль застосовують, наприклад, якщо товар закуповується у різних постачальників в різній валюті. За допомогою нього можна додавати товари з ціною в будь-якій валюті, але на сайті ціна буде відображатися в тій валюті, яка обрана за замовчуванням в магазині. Переваги модулю:  Сумісність з багатьма іншими модулями  Сумісність с базовим функціоналом OpenCart  Простий та зрозумілий інтерфейс  Можливість налаштування відображення ціні на різних сторінках інтернет-магазину. Недоліки модулю:  Він є несумісним з самописними шаблонами  Інсталяція та подальша робота можлива лише за допомогою додаткового програмного комплексу OCMod  Несумісний з OpenCartFilter 1.5.4 Порівняння систем-аналогів Таблиця 1. Порівняння аналогічних модулів Модулю Функції LivePrice Валюта + Мультива лютні товари 21 1. Зміна курсу валют з подальшою зміни ціни на сайті + + + 2. Сумісність з самописним шаблоном - - - 3. Зручний інтерфейс налаштувань модулю - + + 4. Можливість вибрати для певного виробника окремий курс певної валюти + + + 5. Сумісність з іншими модулями + + + 6. Сумісність з базовим функціоналом OpenCart + - + 7. Інсталяція та робота без додаткових модулів та програмних комплексів + - - 8. Підтримка нових версій OpenCart - + + 9. Можливість самостійного оновлення модулю при переходу на нову версію OpenCart - - - Витрати 1000 грн/рік 1500 грн/рік 700 грн/рік Висновки: Отже, проаналізувавши три програмні модулі , що пропонують можливість зміни цін відносно ситуації на валютному ринку, ми бачимо що LivePrice, Валюта+ і BX Мультивалютні товари пропонують достатньо великий функціонал, але можливість самостійного оновлення при переході на нову версію 22 Opencart та робота з самописними шаблонами відсутня в усіх 3 модулях. Також не в усіх модулях, з розглянутих варіантів, присутня підтримка потрібной версії OpenCart. Отже, жоден з наведених модулів не підходить до використання в інтернет- магазині «Domsporta. 1.6 Обґрунтування доцільності проектування і розроблення системи В зв’язку з тим, що система CMS Opencart, на якій і написано сайт, має модульну структуру, тому є доцільною розробка нового модуля коригування цін. На основі розглянутих вище прикладів програмних модулів, ми бачимо, що їх використання на сайті не є цілком доцільним тому, що вони не відповідають потребам. З наведених у Таблиці 1 результатів порівнянь ми бачимо, що існуючі модулі мають обмеження в функціоналі, працюють лише з певною версією OpenCart та не працюють з самописними шаблонами для сайту. Отже, створення нового програмного модулю, який би виконував усі потрібні функції та відповідав би вимогам дійсно є актуальним і обґрунтованим завданням. 1.7 Концептуальна модель системи Основна ціль створюваного модулю є автоматизація перерахунку цін, згідно ситуації на валютному ринку. Це дасть змогу оптимізувати робочий процес персоналу та мінімалізувати можливість похибки через людський фактор. 1.8 Постановка задачі на проектування 23 1.8.1 Призначення та цілі створення системи Метою даної роботи є автоматизація цінорегулювання на товари та підвищення ефективності роботи персоналу. Головними завданнями підсистеми є спрощення процесу цінорегулювання на сайті. Користувачами створюваної системи будуть адміністратори сайту та розробник модулю. Розроблювана підсистема система призначена для того, щоб адмністратор сайту, який відповідає за зміни цін на продукти мав змогу підвищити ефективність своєї роботи за рахунок автоматизації процесу, а розробник мав змогу моніторити роботу программного модулю. 1.8.2 Вимоги до створюваного інформаційної підсистеми  Зміна курсу валют з подальшою зміни ціни на сайті. Ціна повинна змінюватися не тількі на сторінці, а й в корзині,  Інтерфейс повинний бути простим та зрозумілим для людини, яка не є розробником модулю.  Модуль повинний працювати з самописним шаблоном. Оскільки шаблон сайту не є стандартним. Відображення змінених цін повино бути коректним та відповідати загальному стилю сайту.  Повинна бути забезпечена правильна робота з іншими модулями. Модуль повинен бути сумісним з стандартними функціями Opencart (акції, знижки та інші).  Підтримка нових версій OpenCart тому, що сайт створено на версії Opencart 3.0.3.0 яка є останнюю  Має бути можливість вибрати певний курс валют для окремого виробника. 24 РОЗДІЛ 2. РОЗРОБКА АВТОМАТИЗАЦІЇ 2.1. Інформаційне забезпечення проекту Набір даних – це основа роботи кожної програми чи модуля. Існує певний набір даних які потрібно мати своє місце зберігання. Для того, щоб декілька користувачів мали змогу користуватися даними базами даних потрібно використовують СУБД. Система управління базами даних (СУБД) — це сукупність засобів, що дають можливість створення, збереження, оновлення та пошуку інформації в БД. На сьогоднішній день СУБД повинна містить в собі програмні засоби створення баз даних, засоби роботи з даними та сервісні засоби. Інтернет-магазин побудований на платформі «Opencart». OpenCart — система керування вмістом з відкритим кодом, призначена для створення інтернет-магазинів. Найвагомішими перевагами OpenCart над над конкурентами - це сучасна MVC-архітектура, підвищена швидкість роботи, багатофункціональна адміністративна панель управління контентом та менше споживання серверних ресурсів. [6] Модуль побудований на MVC – архітектурі. Моде́ль–вигляд– контро́лер Model-view-controller, MVC) – це архітектурний шаблон, який використовується під час проектування та розробки програмного забезпечення. Даний шаблон передбачає розділ системи на три взаємопов'язані частини: модель даних, вигляд (інтерфейс користувача) та модуль керування. Цей шаблон застосовують для відокремлення даних (моделі) від інтерфейсу користувача (вигляду) для того, щоб зміни інтерфейсу не могли впливалити на роботу з даними, а зміни в моделі даних могли здійснюватися без змін інтерфейсу користувача. Контроллер повинен робити роботу по обробленню даних. Модуль написаний на мові php. 25 PHP – досить популярна мова програмування з відкритим вихідним кодом. Одна з головних переваг PHP - це те, що вона надає web-розробникам широкі можливості для досить швидкого створення динамічних web-сторінок. Головна особливість мови PHP від якого-небудь іншого коду це то, що він оброблюється та виконується на стороні сервера. Три основні області, де використовується PHP:  Створення скриптів для виконання сервером.;  Створення скриптів для виконання в командному рядку. Ви можете створити PHP-скрипт, здатний запускатися незалежно від веб-сервера та браузера. Такий спосіб використання PHP ідеально підходить для скриптів, які повинні виконуватися регулярно.  Створення додатків GUI (графічних інтерфейсів), що виконуються на стороні клієнта. Можливо, PHP є не найкращим мовою для створення подібних додатків, але, якщо ви дуже добре знаєте PHP і хотіли б використати деякі його можливості у своїх клієнт-додатках, ви можете використовувати PHP-GTK для створення таких додатків. PHP також сумісний з більшостю операційних систем. PHP підтримує більшість веб-серверів , таких, як Apache, Microsoft Internet Information Server (IIS), Personal Web Server, серверів Netscape і iPlanet, сервера Oreilly Website Pro, Caudium, Xitami, OmniHTTPd та багатьох інших. Таким чином, вибираючи PHP, ви отримуєте свободу вибору операційної системи і веб-сервера. Крім того, у вас з'являється вибір між використанням процедурного або об'єктно-орієнтованого програмування або ж їх поєднання. [9] Також в даній роботі був використаний фреймворк Symfony. 26 Symfony — це відкритий PHP-фреймворк, який реалізує концепцію модель-вид-контролер (MVC). Його задача - цеа прискорення створення та підтримки веб-застосунків, а також для уникнення витрат часу для розв'язування тривіальних задач у розробці (наприклад, написання валідаторів форм). Для його інсталяції необхідно Unix, Linux, Mac OS чи Windows із веб- сервером та встановленим PHP 5. Symfony ставить за мету дати розробникам повний контроль над конфігурацією: майже все можливо налаштувати, від структури каталогів до сторонніх бібліотек. 2.2 Програмне забезпечення розробки Для розробки програмного модулю для сайту було використано Microsoft Visual Studio Code. Visual Studio Code – це засіб, який призначений для створення, редагування сучасних веб-застосунків . Microsoft Visual Studio Code є повністю безкоштовним. Visual Studio Code має підтримку плагінів, які можна встановити через Visual Studio Marketplace. Вони включають в собі доповнення для редактора, підтримку додаткових мов програмування , статичні аналізатори коду. 2.3 Технічне забезпечення розробки інформаційної системи Для комфортної та коректної роботи з модулем підходить будь-який популярний інтернет- браузер. Нижче наведені вимоги до ПК для браузеру Google Chrome:  Операційна система: Windows 7, Windows 8, Windows 10  Процесор: Intel Pentium 4 або більш пізньої версії;  Оперативна пам'ять: 512 Мб або більше; 27  Жорсткий диск: 350 Мбайт вільного простору; 2.4 Обґрунтування структури та розробка логічної і фізичної моделей бази даних інформаційної системи Щоб створити логічну та фізичну модель БД було застосовано CASE-засіб CA ERwin Data Modeler r7.3, Цей програмний засіб дає змогу продовжити опис, аналіз та моделювання даних [20]. Дана технологія використовує графічну мову моделювання IDEF1X. Дану технологію застосовують для проведення декомпозиції предметної області, встановлення зв’язків між об’єктами. ERwin сумісна з такими СУБД як: Microsoft SQL Server, MySQL, ORACLE та інші. Логічна модель слугує для відображення об’єктно-орієнтованої декомпозиції предметної області. Фізичне проектування – це опис засобів фізичної реалізації логічної моделі БД. Ось тут і треба вирішити, яку конкретну СУБД використовувати тому, що конкретна СУБД може містити в собі різноманітні обмеження. База даних складається з 202 таблиць, але модуль потребує 6 з них:  companies – дана таблиця призначена для того, щоб заносити дані про курс id: INTEGER name: VARCHAR base_rate: INTEGER status: INTEGER 28  companies_to_manufacturer – дана таблиця містить в собі id конкретного виробника товару та id функції коригування курсу для нього; manufacturer_id: INTEGER company_id: INTEGER  product - дана таблиця призначена для визначення назви, ціни продукту, його id, ціну в валюті, кількість товару та id виробника; product_id: INTEGER price: INTEGER currency_price: INTEGER quantity: INTEGER manufacturer_id: INTEGER name: VARCHAR category_name: VARCHAR category_id  manufacturer – дана таблиця призначена для визначення виробника продукту manufacturer_id: INTEGER name: VARCHAR sort_order: VARCHAR  category – для визначення виду, тобто категорії певного товару category_id: INTEGER status: INTEGER name: VARCHAR  currency – дана таблиця містить в собі інформації про основу валюту сайту. currency_id: INTEGER symbol: VARCHAR name: VARCHAR 29 value: INTEGER code: INTEGER 2.5 Обґрунтування вибору технічних засобів розробки ЕНР Для створення моделі даних з їх подальшим аналізом та описом було використано AllFusion Process Modeler 10.3 та AllFusion ERWin Data Modeler 10.6. Даний програмний дає змогу проводити документацію всіх важливих аспектів будь-яких бізнес-процесів: заходів, які необхідно вжити, способів їх здійснення та контролю, необхідних для цього ресурсів та ін. Дане середовище – це чудовий засіб для спрощення розробки бази даних та автоматизації великої кількості завдань. Це дозволяє значно скоротити час для створення баз даних та сховищ даних. Для даної роботи було використано СУБД MySQL з веб-додатком phpmyadmin. phpMyAdmin – це веб-додаток з відкритим кодом, який написаний на мові PHP та представляє собою веб-інтерфейс для адміністрування СУБД MySQL. PhpMyAdmin дозволяє через браузер і не тільки здійснювати адміністрування сервера MySQL, запускати команди SQL і переглядати вміст таблиць і баз даних. Додаток користується великою популярністю у веб-розробників, так як дозволяє управляти СУБД MySQL без безпосереднього введення SQL команд.[8] 2.6 Створення запитів Кожному запиту до бази даних відповідає один метод, який йменується згідно дій, які ми бажаємо виконати з даними. Запис в таблицю курсу валют 30 $this->db->query("INSERT INTO ". DB_PREFIX ."companies (name, base_rate, status) Запит на перерахунок цін $sql = "SELECT cm.manufacturer_id, c.base_rate FROM " . DB_PREFIX . "companies c JOIN " . DB_PREFIX . "companies_to_manufacturers cm ON (c.company_id = cm.company_id) WHERE c.status = 1 ORDER BY (manufacturer_id)"; Запит для видалення операції по перерахунку: $this->db->query("DELETE FROM " . DB_PREFIX . "companies WHERE company_id = '" . (int)$company_id . "'"); 2.7 Розроблення інтерфейсу користувача Щоб під’єднати базу даних до проекту потрібно застосувати спеціальний файл, який має назву config.php. Він є одним з основних файлів проекту на CMS Opencart. В цьому файлі прописується всі необхідні дані для підключення проекту до бази даних. Рис 3. Підключення до БД. 31 Рис 4. Головна сторінка При відкритті натисканні на назві модулю ми попадаємо на головну сторінку данного додатку. Тут ми бачимо такі поля: Назва виробника, закупівельний курс, статус операції по зміні цін та можливі дії над ними Частина коду головної таблиці:
33 Форма додавання нової компанії по перерахунку цін показана на Рис(6). Рис 6. Форма додавання компанії по перерахунку цін Частина коду реалізації даної форми:
34
Реалізація поля з назвами брендів з checkbox’сами
{% for manufucturer in all_manufacturers %} {% if manufucturer.manufacturer_id in current_checked_manufacturers %} {{ manufucturer.name }}
{% else %} {{ manufucturer.name }}
35 {% endif %} {% endfor %}
Також на ця форма має кнопки керування: Зберігти зміни та повернутися назад. Ці кнопки показані на Рис (кнопки) Рис 7. Кнопки керування додаванням функції Код роботи кнопок:
36 2.8 Інструкція користувача При відкритті адміністративної панелі сайту ми попадаємо на сторінку авторизації (Рис. 8). На цьому вікні присутні поля Логін та Пароль, а також кнопка Вхід. Рис. 8. Вікно авторизації для авторизації в адміністративну панель Після вводу даних, необхідних для входу,та натискання кнопки Вхід, користувач потрапляє на сторінку курсів системи. Якщо ж пароль чи логін введено невірно, програма видасть помилку. 37 Далі потрібно натиснути на «Модулі» та в випадаючому списку вибрати пункт «Модулі» Рис. 9 Випадаючий список Далі потрібно обрати тип додатків, а саме «Усі модулі». Даний список показаний на рисунку нижче Рис. 10 Тип додатків Знаходимо в списку потрібний модуль та натискаємо на нього, як показано на Рис Рис. 11 Список модулів Після натискання на назву модуля користувач попадає на головну сторінку модуля, де користувач бачить вже існуючі компанії по перерахунку цін та кнопки керування модулем. 38 Рис. 12 Головне сторінка Для додавання нової компанії по перерахунку цін треба натиснути кнопку «Додати». Користувач попадає на сторінку створення нової компанії. Сторінку показано на рисунку нижче Рис. 13 Додавання нової кампанії по перерарухунку Щоб додати нову компанії по перерахунку цін потрібно ввести назву виробника, курс валюти за яким було закуплено товар, обрати бренди та вибрати статус «Увімкнено» та натиснути кнопку «Зберігти». Результат показано на рисунку нижче. 39 Рис 14. Список брендів Щоб запустити перерахунок цін потрібно натиснути кнопку «Перерахунок» на панелі кнопок. Рис 15. Кнопки керування Якщо в полі «Базовий курс» було введено значення яке не є числовим, то спрацює валідація. Рис 15.Валідація 2.9 Розрахунок техніко-економічного ефекту впровадження програмного модуля Ступінь новизни розроблюваних задач – "В" – використання типових проектних рішень за умови їх змін. Група складності алгоритму – 2. 40 Узагальнені дані вхідної та вихідної інформації для модулю по перерахунку цін на сайті Domsporta табл. 2.1. Табл. 2.1. Узагальнені дані для вхідної та вихідної інформації для модулю по перерахунку цін. Витрати часу на розробку ескізного проекту (перед проектного дослідження) T1 та технічного завдання T2, будуть наступні (табл. 2. 2). Табл. 2. 2. Визначення витрат часу модулю по перерахунку цін.. Вид системи Стадія розробки системи Передпроектне дослідження Технічне завдання В В Вид інформації Позначення К-сть наборів Даних Змінна інформація ЗІ m=4 Нормативно-довідкова інформація НДІ n=3 Банк (база) даних БД p=1 Обробка в режимі реального часу РЧ Так Забезпечення телекомунікаційної обробки даних і управління віддаленими об'єктами ТОУ Ні 41 Удосконалення валютних операцій T1= 55 T2 =32  кількість форм вхідної інформації В1 = 2;  кількість форм вихідної інформації В2 = 2;  базове значення витрат часу для стадій "Технічний проект": Т(б3) = 42;  базове значення витрат часу для стадій "Робочий проект": T(б4) = 68;  базове значення витрат часу для стадій "Впровадження": Т (б5) = 21. Базові значення витрат часу ТБ коригують за допомогою поправочних коефіцієнтів для всіх стадій розробки. Розрахунок витрат часу для стадії «Технічний проект» (T3). Коефіцієнт трудомісткості робіт kП визначається з врахуванням коефіцієнтів (табл. 2.3): kП = ( k1 * m + k2 * n + k3 * p )/ m + n + p = К(п) = (1.0*4 + 0.69*3 + 2.02*1)/(7)=1,16 Табл. 2.3. Коефіцієнти k1, k2, k3 для стадії "Технічний проект" Вид використаної інформації Ступінь новизни В К1 (ЗІ) 1.0 К2 (НДІ) 0.69 К3 (БД) 2.02 42 Табл. 2.4. Коефіцієнт ступеню новизни проекту, kO модулю перерахунку цін Стадія розробки системи Вид оброки Ступінь новизни В Технічний проект РЧ 1.26 Робочий проект РЧ 1.32 Впровадження РЧ 1.21 Витрати часу для стадії “технічний проект” T3 розраховуються: T3 = TБ3 * kП * kO= 41* 1.16 * 1.26 =61.38 Розрахунок витрат часу для стадії «Робочий проект» Формула для розрахунку Т4: (T4) T4 = ТБ4*kП*kО*kС, kП= (1.1*4 + 0.59*3 + 0.54*1 )/ 6= 1,1 Таблиця 2.5. Коефіцієнти k1, k2, k3 для стадії «Робочий проект» Вид використаної інформації Група складності алгоритму Ступінь новизни В k1 (ЗІ) 2 1,1 k2 (НДІ) 2 0,59 k3 (БД) 2 0,54 43 Коефіцієнт складності контролю вхідної та вихідної інформації визначається на стадіях «Робочий проект» і «Впровадження». kC = 1,0 T4 = ТБ4 * kП * kО * kС = 68 * 1.1* 1.16 * 1 = 86,768 (люд-днів) Для стадії визначення загальних витрат часу на «Впровадження» Т5 (люд- днів) використовують формулу: T5 = ТБ5 * kП * kО * kС = 21 * 1.1 * 1. 16 * 1 = 26.79 (люд-днів) Таким чином, загальні витрати людської праці на проектування системи за складають:  = T1 + T2 + T3 + T4 + T5 = 55 +32 + 61,38 + 86,768 + 26,79 = 261,938 (люд-днів) Оплата працівникам розраховується за такою формулою: V = Ч*М*ЗП Ч – число виконавців проекту М – кількість місяців розробки ЗП – місячна ЗП Заробітна плата веб-розробника на ринку дорівнює 23000 грн., отже оплата роботи всіх виконавців складе: V’1= 3 * 3 * 23000 = 207000 (грн.) Розрахунок річного фонду часу роботи ПК. Дійсний річний фонд часу ПК у годинах дорівнює числу робочих годин у році для оператора, та мінус час коли 44 ПК на технічному обслугувуванні або на ремонті (в середньому 5год/міс+6 роб.днів/рік). ТПК = 4000 - (6*8 + 5*12) = 3892 (год.) Оскільки під час виконання дипломного проекту було витрачено 40 годин машинного часу, то величина фонду часу ПК дорівнює: TПК' = 3892 * 40 / 4000 = 38,92 (год.) Балансова вартість ПК розраховується за такою формулою: Ц (ПК) = Цр * (1+ Kун) = 30 000 * (1+0.44) = 42 200 ₴ Цр – ринкова ціна персонального комп'ютера Kун – коефіцієнт витрат на установку і налагодження ПК та додаткового ПЗ Амортизаційні відрахування використання ПК обчислюють за формулою: ЗАМ = Ц (ПК) / Ha = 42 220 / 5 = 8 444 ₴ Витрати на електроенергію складають: ЗЕЛ = P(ПК) * T’(ПК) * C(e) * A = 2.8 * 38.92 * 0.9 * 0.88 = 86.3 ₴ P(ПК) – потужність ПК C(e) – вартість 1 кВт електроенергії в місті Києві– 0.9 ₴/кВт ЗР – витрати на поточний ремонт і технічне обслуговування ПК визначаються як 6% від балансової вартості ПК, ЦПК. ЗР = ЦПК * 0,06 = 42 220*0.06 = 2533,2 грн. ЗМАТ – непрямі витрати, пов’язані з експлуатацією ПК, визначаються як 5% від балансової вартості ПК ЦПК. 45 ЗМАТ = ЦПК * 0,05 = 42 220*0.05 = 2111 (грн.) Таким чином, маємо, заробітна плата обслуговуючого персоналу (якщо роботи виконуються не на власному ПК); ЗОП = 0 грн., ЗАМ = 8444 грн., ЗЕЛ = 86.3грн., ЗР = 1008 грн., ЗМАТ = 840 (грн.) Поточні витрати на експлуатацію V1", грн., визначаються за V1" = ЗОП + ЗАМ + ЗЕЛ + ЗР + ЗМАТ. V1" = 0+3584+283.73+ 2533,2 + 2111 = 8 511,93 (грн.) Отже, загальні витрати на розробку програмного забезпечення комп’ютерної системи розраховуються за формулою V1 = V1’ + V1" і складуть: V1 = 207000 +8 511,93=215 511,93 (грн.) Витрати на придбання і установку ПК (V2) дорівнюють = 42 200 ₴: V2 = Ц(пк) = 42 200 ₴.) Витрати на підготовку приміщення V3. Ці витрати залежать від стану приміщення, де буде встановлюватися ПК. Так як пристосоване приміщення є, тому: V3 = 0 (грн.) Витрати на навчання персоналу V4, виникають з того, що в середньому на навчання персоналу витрачається 1 місяць: V4 = 6000 (грн.) Загальна вартість розробки і впровадження системи V∑, вираховується: V= V1+V2+V3+V4 = 215 511,93+ 0 + 42 200 + 6000 = 263 731,93 (грн.) Оскільки норма амортизаційних втрат для комп’ютерних систем НА = 5, то для обрахування річного економічного ефекту слід брати до розгляду величину: 46 VP = V∑/HA = 263 731,93/ 5 = 52 746,386 (грн.) Річний прибуток ПР від впровадження системи буде досягнуто за рахунок підвищення якості функціонування відділу і орієнтовно складатиме 52 746,386 грн. на рік. Коефіцієнт економічної ефективності розробки вираховується: КЕФ = ПР/VР = 263 731,93/ 52 746,386= 5,00 Термін окупності розробки дорівнює визначається за формулою: ТОК = 1/КЕФ = 1/4,65 = 0,20 Таким чином, термін окупності програмного модуля буде 2 місяці. 47 РОЗДІЛ 3. ОХОРОНА ПРАЦІ 3.1. Умови праці користувача ПК Використання персонального комп’ютеру несе деякі ризики за собою: загроза для здоров’я, життя. Саме тому необхідно дотримуватися обов’язкових правил по організації робочого місця, вивчення та використання різних засобів для профілактики негативного впливу ПК для здоров’я. 3.2 Ергономіка та організація робочого місця. Організація робочого місця містить в собі:  правильне розміщення робочого місця відносно джерела світла у приміщенні;  вибір правильних меблів з урахуванням фізіологічних особливостей людини; Для комфортної роботи студента для одного робочого місця з ПК необхідно виділяти не менше 6м2, та об’єму – не менше 20м3. Також під час роботи з ПК необхідні перерви для відпочинку, вживання їжі та особистих потреб [22] . 3.3. Мікроклімат виробничого середовища Один з важливих факторів для безпеки роботи в приміщені – це мікрокліматичні умови. Від цього санітарно-гігієнічного фактору залежить стан здоров’я працівника та його здатність до праці. До основних показників мікроклімату повітря робочої зони входять:  температура,  відносна вологість,  швидкість руху повітря. Також суттєвий вплив на параметри мікроклімату має теплове випромінювання нагрітих поверхонь та його інтенсивність . 48 Основні критерії комфортної роботи за персональним комп’ютером на робочому місці  Температура 22-25 градусів за Цельсієм;  Відносна вологість повітря 40-60% Також потрібно пам’ятати, що комп’ютер, а сама його елемента, від довгої і тривалої роботу можуть нагріватися до 80 градусів за Цельсієм. Тому треба забезпечувати достатнє охолодження ПК, проводити чистку від пилу, міняти термопасту та проводити інші заходи з технічного обслуговування комп’ютера. Це суттєво знизить можливість виходу з ладу комп’ютера та його елементів та, що більш головне, убезпечить від небезпеки короткого замикання. 3.4. Забезпечення раціонального освітлення робочого місця При роботі з комп’ютером важливу роль грає саме освітленість на робочому місці. Сюди входить не тільки правильне та яскраве освітлення, а ще й правильний баланс кольорів та світлового потоку. Фактори які впливають на людину (самопочуття, напруженість очей):  Розміщення джерел світла;  Наявність світових відблисків  Засліплення;  Затінненя;  Зони освітленності; Потрібно, щоб температура були в діапазоні від 4000К до 7000к, тобто холодною білою. Рівень освітленості за українським стандартом (СНіП 23-5-951) повинен дорівнювати - 200-300 [23] . 49 3.5. Вимоги безпеки праці при експлуатації комп’ютерної техніки Основні та обов’язкові пункти, які повинні бути дотримані перед початком роботи з ПК[2]: o огляд робочого обладнання на предмет різних пошкоджень. Якщо такі були виявлені то потрібно звернутися до свого керівника; o відрегулювання освітленості,; o перевірка на правильність підключення комп'ютеру та різного переферійного обладнання до електромережі; o очистити екран комп’ютера від пилу та інших забруднень; Основні та обов’язкові пункти, які повинні бути дотримані під час роботи з ПК :  підтримка порядку та чистоти на робочому місці;  забезпечення хорошої вентиляції для уникнення перегрівань комп'ютерної техніки та переферійного обладнання.  У разі виникнення аварійної ситуації негайно відключити комп’ютер та обладнання до нього від електромережі. Під час роботи з ПК в ніякому разі не допускається: o ремонт та налагодження на робочому місці оператора ПК; o зберігання біля комп’ютера паперу; o відключення захисних пристроїв, самостійни зміни в конфігурації комп’ютера; o вживання напоїв та їжі на робочому місці. 3.6. Електробезпека Для виключення можливості виникнення вогню через коротке замикання потрібно дотримуватися наступних вимог: 50  правильно прокласти електромережу підприємства  обмеження на використання дротів з легкозаймистою ізоляцією  намагатись використовувати негорючу ізоляцію для дротів  в приміщенні, де використовують велику кількість комп’ютерів потрібно встановити аварійний резервний вимикач  Для підключення переносної апаратури застосовують гнучкі, міцні кабелі з надійною ізоляцією  Електропроводка повинна бути без заплутувань так максимально короткою Усі провідники повинні відповідати номінальним параметрам мережі та навантаження, умовам навколишнього середовища, умовам розподілу провідників, температурному режиму та типам апаратури захисту, вимогам ПУЕ (Правила улаштування електроустановок) [1]. Категорично заборонено та небезпечно роботи наступні речі:  експлуатація кабелів та дротів з відсутньою або пошкодженою ізоляцією;  застосування саморобних подовжувачів, які не відповідають вимогам ПВЕ до переносних електропроводок;  користування пошкодженими розетками,  підвішування світильників безпосередньо на струмопровідних проводах;  обгортання електроламп і світильників легкозаймистими матеріалами; 3.7. Пожежо- та вибухобезпека Через те, що в приміщеннях застосовують велику кількість електриприборів питання протипожежної безпеки стоїть дуже гостро.Всі офісні лінії електромережі мають бути захищенні від короткого замикання, перепадів напруги. Забезпечення систомю автоматичної пожежної сигналізації та 51 вогнегасниками є обов’язковим. Електромережа має бути прокладена правильно, без перевантаження. [3] 52 ВИСНОВКИ Під час виконання бакалаврської роботи було досліджено та детально проаналізовано процес ціноутворення та його подальшого корегування в інтернет-магазіні «Domsporta». При моделюванні предметної області на основі методології системного аналізу та проектування за допомогою CASE-засобу AllFusion Process Modeler було створено функціональну модель процесу корегування цін на сайті. В результаті аналізу було вирішено, що розробка нового програмного модулю для сайту є доцільною. Його основна задаче – це полегшення корегування цін на головній сторінці сайту та в корзині товарів. За допомогою CASE-засобу AllFusion ERwin Data Modeler було створено логічну та фізичну моделі даних. За допомогою логічної моделі проведено нормалізацію даних. Інтерфейс користувача був написаний на HTML, а всі функції по обробці даних було покладено на мову програмування PHP. Створений модуль повинен полегшити роботу по коригуванню цін, зменшити витрати на роботу працівників. Також у бакалаврській роботі були розглянуті питання охорони праці при експлуатації комп’ютерної техніки (в аудиторіях університету або в домашніх умовах). 53 СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 1. Закон України "Про охорону праці" в редакції від 21 листопада 2002 р. 2. Законодавство України про охорону праці / Збірник нормативних документів. У 4 т. - К.: Держнаглядохоронпраці; Основа, 1995. 3. ДНАОП 0.00-1.31-99. Правила охорони праці під час експлуатації електронно – обчислювальних машин, Київ, 1999 4. Методичні вказівки до виконання дипломних робіт для студентів бакалаврів напряму 060501 «Комп‘ютерні науки» денної та заочної форм навчання / Уклад. В.В. Самсонов, Л.Ю. Маноха, Т.М. Горлова, Л.Г. Загоровська, О.М. М`якшило, О.А Хлобистова – К.: НУХТ, 2010; 5. Управління ІТ проектами [Електронний ресурс]: лабораторний практикум для студентів напряму підготовки 6.050101 "Комп'ютерні науки" денної та заочної форм навч. / уклад. О. А. Хлобистова, М. В. Гладка. - К.: НУХТ, 2013. – 108 с. 6. Адміністративна панель [Електронний ресурс] – Режим доступу до ресурсу: https://docs.ocstore.com 7. Оцінка вартості проекту [Електронний ресурс] – Режим доступу до ресурсу: https://evergreens.com.ua 8. Створеня бази даних в phpmyadmin [Електронний ресурс] – Режим доступу до ресурсу: http://programming.in.ua 9. Основи РНР [Електронний ресурс] – Режим доступу до ресурсу: https://www.php.net/manual/ru/tutorial.php 10. Закону України «Про охорону праці» стаття № 18 від 2004 року; 54 11. Санітарні норми мікроклімату виробничих приміщень: ДСН 3.3.6.042-99. – [Введ. в дію 01.12.1999]. — К. : Держстандарт України, 1999. — 37 с. — (Державні санітарні норми); 55 ДОДАТКИ Додаток А «ФУНКЦІОНАЛЬНА МОДЕЛЬ(AS-IS)» Рис. А.1. Функціональна схема моделі AS-IS. 56 Додаток Б «Концептуальна модель (TO-BE)» Рис. Б.1. Концептуальна схема. 57 Додаток В «Інтерфейс головної сторінки» Рис. В.1. Інтерфейс головної сторінки 58 Додаток Г «Сторінка додавання функції перерахунку» Рис. Г.1. Сторінка додавання функції перерахунку 59 Додаток Д «Товар до перерахунку» Рис. Д. 1. Товар до перерахунку 60 Додаток Е «Результат перерахунку» Рис. Е. 1. Результат перерахунку 61 ДОДАТОК Є «ЛОГІЧНА СХЕМА БАЗИ ДАНИХ» Рис. Є. 1. Логічна схема бази даних 62 ДОДАТОК Ж «ФІЗИЧНА СХЕМА БАЗИ ДАНИХ» Рис. Ж. 1. Фізична схема бази даних 63 ДОДАТОК З «ФРАГМЕНТИ КОДУ ПРОГРАМИ» 1) Модель модулю &$val){ if (is_array($val)) { $this­>clear($val); } else { $val = trim($this­>db­>escape($val)); } } } public function add($data) { $this­>clear($data); if ((isset($data['name']) && $data['name']) && (isset($data['base_rate']) && $data['base_rate']) && (isset($data['status'])) //&& (isset($data['new_rate']) && !empty($data['new_rate'])) ) { $this­>db­>query("INSERT INTO ". DB_PREFIX ."companies (name, base_rate, status) VALUES('".$data['name']."', '".$data['base_rate']."', '".$data['status']."')"); } $company_id = $this­>db­>getLastId(); if (!empty($company_id && isset($data['manufacturers']))){ foreach ($data['manufacturers'] as $m){ $this­>db­>query("REPLACE INTO ". DB_PREFIX ."companies_to_manufacturers (manufacturer_id, company_id) VALUES (".$m. ",".$company_id.")"); } } } 64 public function edit($data) { $this­>clear($data); if ((isset($data['name']) && $data['name']) && (isset($data['base_rate']) && $data['base_rate']) && (isset($data['company_id']) && $data['company_id']) && (isset($data['status'])) // && (isset($data['new_rate']) && !empty($data['new_rate'])) ) { $this­>db­>query("REPLACE INTO ". DB_PREFIX ."companies (company_id, name, base_rate, status) VALUES(".$data['company_id'].", '".$data['name']."', ".$data['base_rate'].", ".$data['status'].")"); } $company_id = $data['company_id']; if (!empty($company_id && isset($data['manufacturers']))){ $this­>db­>query("DELETE FROM " . DB_PREFIX . "companies_to_manufacturers WHERE company_id = '" . (int)$data['company_id'] . "'"); foreach ($data['manufacturers'] as $m){ $this­>db­>query("REPLACE INTO ". DB_PREFIX ."companies_to_manufacturers (manufacturer_id, company_id) VALUES (".$m. ",".$company_id.")"); } } } public function getAll() { $query = $this­>db­>query("SELECT * FROM " . DB_PREFIX . "companies"); return $query­>rows; } public function flush() { $this­>db­>query("TRUNCATE " . DB_PREFIX . "product_discount"); } 65 public function refresh() { $sql = "SELECT cm.manufacturer_id, c.base_rate FROM " . DB_PREFIX . "companies c JOIN " . DB_PREFIX . "companies_to_manufacturers cm ON (c.company_id = cm.company_id) WHERE c.status = 1 ORDER BY (manufacturer_id)"; $query = $this­>db­>query($sql); // echo '
'; 

   // print_r ($query); 

   // echo '
'; $result = array(); if ($query­>num_rows){ $manufucturers_data = $query­>rows; $this­>flush(); foreach ($manufucturers_data as $m){ $sql = "SELECT p.price, p.product_id, p.currency_price FROM product p WHERE p.manufacturer_id = ".$m["manufacturer_id"]; //for orbitreks, excepting product with special and old_price $sql = "SELECT p.price, p.product_id, p.currency_price FROM product p WHERE p.product_id NOT IN ( SELECT DISTINCT ps.product_id FROM product_special ps ) AND (p.old_price = 0 OR p.old_price IS NULL) AND p.currency_price > 0 AND p.manufacturer_id = ".$m["manufacturer_id"]; $query = $this­>db­>query($sql); 66 if ($query­>num_rows){ $product_data = $query­>rows; foreach($product_data as $p) { $new_price = (int)number_format($m["base_rate"] * $p["currency_price"], 0, ".", ""); $sql = "INSERT INTO " . DB_PREFIX . "product_discount (product_id, customer_group_id, quantity, price) VALUES (".$p["product_id"].",1,1,".$new_price.")"; $query = $this­>db­>query($sql); // // $result[] = array( // // "id" => $p["product_id"], // // "price" => $p["price"], // // "new_price" => $new_price // // ); } } } } // print_r($result); // die(); } public function getCompany($company_id) { $company_id = $this­>db­>escape($company_id); $query = $this­>db­>query("SELECT * FROM " . DB_PREFIX . "companies WHERE company_id=".$company_id); return $query­>row; } public function delete($company_id) { $company_id = $this­>db­>escape($company_id); $this­>db­>query("DELETE FROM " . DB_PREFIX . "companies WHERE company_id = '" . (int)$company_id . "'"); } public function getAllManufacturersByCompanyId($company_id) { $company_id = $this­>db­>escape($company_id); 67 $query = $this­>db­>query("SELECT manufacturer_id FROM " . DB_PREFIX . "companies_to_manufacturers WHERE company_id=".$company_id); return array_column($query­>rows, "manufacturer_id"); } public function install() { // DROP TABLE companies, companies_to_manufacturers; $this­>db­>query("DROP TABLE IF EXISTS " . DB_PREFIX . "companies"); $this­>db­>query("DROP TABLE IF EXISTS " . DB_PREFIX . "companies_to_manufacturers"); $this­>db­>query("ALTER TABLE `product` ADD IF NOT EXISTS `currency_price` DECIMAL"); $this­>db­>query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "companies` ( `company_id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL, `base_rate` varchar(32) NOT NULL, `status` int(1), PRIMARY KEY (`company_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci"); $this­>db­>query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "companies_to_manufacturers`( `manufacturer_id` int(11) NOT NULL, `company_id` int(11) NOT NULL, PRIMARY KEY (`manufacturer_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci"); } } 2)Контроллер модулю get_data(); $this­>load­>language('extension/module/pricelocal'); $data['heading_title'] = "Компании"; $this­>document­>setTitle($this­>language­>get('heading_title')); $data['all_compagin'] = array(); $this­>load­>model('extension/module/pricelocal'); $all_compagin = $this­>model_extension_module_pricelocal­>getAll(); foreach ($all_compagin as $c) { $data['all_compagin'][] = array( "company_id" => $c["company_id"], "name" => $c["name"], "base_rate" => $c["base_rate"], // "new_rate" => $c["new_rate"], // "percent" => $c["base_rate"]/$c["new_rate"]*100, "status" => $c["status"], "edit" => $this­>url­ >link('extension/module/pricelocal/edit', 'company_id='.$c["company_id"].'&user_token=' . $this­>session­ >data['user_token'], 'SSL'), "delete" => $this­>url­ >link('extension/module/pricelocal/delete', 'company_id='.$c["company_id"].'&user_token=' . $this­>session­ >data['user_token'], 'SSL') ); } $data['breadcrumbs'][] = array( 'text' => $this­>language­>get('heading_title'), 'href' => $this­>url­>link('extension/module/pricelocal', 'user_token=' . $this­>session­>data['user_token'], 'SSL') ); $this­>response­>setOutput($this­>load­ >view('extension/module/pricelocal', $data)); } private function get_data() { $this­>load­>language('extension/module/pricelocal'); 69 $this­>load­>model('setting/setting'); $data['text_edit'] = $this­>language­>get('text_edit'); $data['text_name'] = $this­>language­>get('text_name'); $data['text_enabled'] = $this­>language­>get('text_enabled'); $data['text_disabled'] = $this­>language­>get('text_disabled'); $data['text_module'] = $this­>language­>get('text_module'); $data['text_list'] = $this­>language­>get('text_list'); $data['text_title'] = $this­>language­>get('text_title'); $data['text_base_rate'] = $this­>language­>get('text_base_rate'); // $data['text_new_rate'] = $this­>language­>get('text_new_rate'); $data['text_percent'] = $this­>language­>get('text_percent'); $data['text_status'] = $this­>language­>get('text_status'); $data['text_no_results'] = $this­>language­>get('text_no_results'); $data['text_success'] = $this­>language­>get('text_success'); $data['text_confirm'] = $this­>language­>get('text_confirm'); $data['entry_brands'] = $this­>language­>get('entry_brands'); $data['entry_status'] = $this­>language­>get('entry_status'); $data['button_add'] = $this­>language­>get('button_add'); $data['button_save'] = $this­>language­>get('button_save'); $data['button_delete'] = $this­>language­>get('button_delete'); $data['button_cancel'] = $this­>language­>get('button_cancel'); if (isset($this­>error['warning'])) { $data['error_warning'] = $this­>error['warning']; } else { $data['error_warning'] = ''; } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this­>language­>get('text_home'), 'href' => $this­>url­>link('common/dashboard', 'user_token=' . $this­>session­>data['user_token'], 'SSL') ); 70 $data['breadcrumbs'][] = array( 'text' => $this­>language­>get('text_module'), 'href' => $this­>url­>link('extension/module', 'user_token=' . $this­>session­>data['user_token'], 'SSL') ); $data['breadcrumbs'][] = array( 'text' => $this­>language­>get('heading_title'), 'href' => $this­>url­>link('extension/module/pricelocal', 'user_token=' . $this­>session­>data['user_token'], 'SSL') ); $data['action'] = $this­>url­ >link('extension/module/pricelocal/save', 'user_token=' . $this­>session­ >data['user_token'], 'SSL'); $data['action_refresh'] = $this­>url­ >link('extension/module/pricelocal/refresh', 'user_token=' . $this­>session­ >data['user_token'], 'SSL'); $data['action_flush'] = $this­>url­ >link('extension/module/pricelocal/flush', 'user_token=' . $this­>session­ >data['user_token'], 'SSL'); $data['delete'] = $this­>url­ >link('extension/module/pricelocal/delete', 'user_token=' . $this­>session­ >data['user_token'], 'SSL'); $data['add'] = $this­>url­>link('extension/module/pricelocal/add', 'user_token=' . $this­>session­>data['user_token'], 'SSL'); $data['cancel'] = $this­>url­>link('extension/module/pricelocal', 'user_token=' . $this­>session­>data['user_token'], 'SSL'); $data['success'] = array(); $data['error'] = array(); $this­>load­>model('catalog/manufacturer'); $data['all_manufacturers'] = $this­>model_catalog_manufacturer­ >getManufacturers(); $data['current_checked_manufacturers'] = array(); $data['header'] = $this­>load­>controller('common/header'); 71 $data['column_left'] = $this­>load­ >controller('common/column_left'); $data['footer'] = $this­>load­>controller('common/footer'); return $data; } public function save() { if (($this­>request­>server['REQUEST_METHOD'] == 'POST') && $this­ >validate()) { $this­>load­>model('extension/module/pricelocal'); if (isset($this­>request­>post["company_id"])){ $this­>model_extension_module_pricelocal­>edit($this­ >request­>post); } else { $this­>model_extension_module_pricelocal­>add($this­ >request­>post); } $this­>session­>data['success'] = $this­>language­ >get('text_success'); $this­>response­>redirect($this­>url­ >link('extension/module/pricelocal', 'user_token=' . $this­>session­ >data['user_token'], 'SSL')); } if (isset($this­>request­>post["company_id"])){ $this­>edit(); } else { $this­>add(); } } public function add() { $this­>load­>model('setting/setting'); $this­>load­>language('extension/module/pricelocal'); $data = $this­>get_data(); $this­>document­>setTitle($this­>language­ >get('heading_title_new')); $data['heading_title'] = $this­>language­>get('heading_title_new'); $data['breadcrumbs'][] = array( 72 'text' => $this­>language­>get('heading_title_new'), 'href' => $this­>url­>link('extension/module/pricelocal/new', 'user_token=' . $this­>session­>data['user_token'], 'SSL') ); $data['checked_manufacturers'] = array(); $this­>load­>model('extension/module/pricelocal'); if (isset($this­>request­>post)){ if (isset($this­>request­>post['manufacturers'])) $data['current_checked_manufacturers'] = $this­>request­ >post['manufacturers']; if (isset($this­>request­>post['company_id'])) $current_company = $this­ >model_extension_module_pricelocal­>getCompany($this­>request­ >post['company_id']); // if (isset($this­>request­>post['new_rate'])) // $data['current_new_rate'] = $this­>request­ >post['new_rate']; if (isset($this­>request­>post['base_rate'])) $data['current_base_rate'] = $this­>request­ >post['base_rate']; if (isset($this­>request­>post['name'])) $data['current_name'] = $this­>request­>post['name']; if (isset($this­>request­>post['status'])) $data['current_status'] = $this­>request­>post['status']; } $this­>response­>setOutput($this­>load­ >view('extension/module/pricelocal_company', $data)); } public function edit() { if ((isset($this­>request­>get['company_id']) && $this­>request­ >get['company_id']) || (isset($this­>request­>post) && !empty($this­>request­>post))) { 73 $this­>load­>model('setting/setting'); $this­>load­>language('extension/module/pricelocal'); $data = $this­>get_data(); $this­>document­>setTitle($this­>language­ >get('heading_title_new')); $data['heading_title'] = $this­>language­ >get('heading_title_new'); $data['breadcrumbs'][] = array( 'text' => $this­>language­>get('heading_title_new'), 'href' => $this­>url­ >link('extension/module/pricelocal/new', 'user_token=' . $this­>session­ >data['user_token'], 'SSL') ); $this­>load­>model('extension/module/pricelocal'); if (isset($this­>request­>post) && !empty($this­>request­ >post)){ if (isset($this­>request­>post['manufacturers'])) $data['current_checked_manufacturers'] = $this­>request­ >post['manufacturers']; if (isset($this­>request­>post['company_id'])) { $data['company_id'] = $this­>request­ >post['company_id']; $current_company = $this­ >model_extension_module_pricelocal­>getCompany($this­>request­ >post['company_id']); } // if (isset($this­>request­>post['new_rate'])) // $data['current_new_rate'] = $this­>request­ >post['new_rate']; if (isset($this­>request­>post['base_rate'])) $data['current_base_rate'] = $this­>request­ >post['base_rate']; 74 if (isset($this­>request­>post['status'])) $data['current_status'] = $this­>request­ >post['status']; if (isset($this­>request­>post['name'])) $data['current_name'] = $this­>request­ >post['name']; // if (isset($this­>request­>post['new_rate'])) // $data['current_status'] = $this­>request­ >post['status']; } else { $data['current_checked_manufacturers'] = $this­ >model_extension_module_pricelocal­>getAllManufacturersByCompanyId($this­ >request­>get['company_id']); $current_company = $this­ >model_extension_module_pricelocal­>getCompany($this­>request­ >get['company_id']); // $data['current_new_rate'] = $current_company['new_rate']; $data['current_base_rate'] = $current_company['base_rate']; $data['current_name'] = $current_company['name']; $data['current_status'] = $current_company['status']; $data['company_id'] = $this­>request­>get['company_id']; } $this­>response­>setOutput($this­>load­ >view('extension/module/pricelocal_company', $data)); } } public function delete() { if (isset($this­>request­>post['selected'])) { $this­>load­>model('extension/module/pricelocal'); foreach($this­>request­>post['selected'] as $c) { $this­>model_extension_module_pricelocal­>delete($c); } $this­>session­>data['success'] = $this­>language­ >get('text_success'); 75 } elseif(isset($this­>request­>get['company_id']) && $this­>request­ >get['company_id']){ $this­>load­>model('extension/module/pricelocal'); $this­>model_extension_module_pricelocal­>delete($this­ >request­>get['company_id']); } $this­>response­>redirect($this­>url­ >link('extension/module/pricelocal', 'user_token=' . $this­>session­ >data['user_token'], 'SSL')); } public function refresh() { $this­>load­>model('extension/module/pricelocal'); $this­>model_extension_module_pricelocal­>refresh(); $this­>response­>redirect($this­>url­ >link('extension/module/pricelocal', 'user_token=' . $this­>session­ >data['user_token'], 'SSL')); } public function flush() { $this­>load­>model('extension/module/pricelocal'); $this­>model_extension_module_pricelocal­>flush(); $this­>response­>redirect($this­>url­ >link('extension/module/pricelocal', 'user_token=' . $this­>session­ >data['user_token'], 'SSL')); } protected function validate() { if (!$this­>user­>hasPermission('modify', 'extension/module/pricelocal')) { $this­>error['warning'] = $this­>language­ >get('error_permission'); } if (!$this­>user­>hasPermission('access', 'extension/module/pricelocal')) { $this­>error['warning'] = $this­>language­ >get('error_permission'); 76 } if ($this­>request­>server['REQUEST_METHOD'] == 'POST') { if (isset($this­>request­>post)){ if (isset($this­>request­>post["base_rate"])){ $this­>request­>post["base_rate"] = str_replace(",",".",$this­>request­>post["base_rate"]); } // if (isset($this­>request­>post["new_rate"])){ // $this­>request­>post["new_rate"] = str_replace(",",".",$this­>request­>post["new_rate"]); // } $p = $this­>request­>post; if (!isset($p["name"]) || empty($p["name"])){ $this­>error['warning'] = "Заполните название"; } // if (!isset($p["new_rate"]) || empty($p["new_rate"])){ // $this­>error['warning'] = "Заполните новый курс"; // } if (!isset($p["base_rate"]) || empty($p["base_rate"])){ $this­>error['warning'] = "Заполните базовый курс"; } if (!isset($p["manufacturers"]) || empty($p["manufacturers"])){ $this­>error['warning'] = "Не выбрано ни одного бренда"; } // if (isset($p["new_rate"]) && !is_numeric($p["new_rate"])){ // $this­>error['warning'] = "Неправильно введен новый курс".$p["new_rate"]; // } if (isset($p["base_rate"]) && !is_numeric($p["base_rate"])){ $this­>error['warning'] = "Неправильно введен базовый курс".$p["base_rate"]; } 77 //die($this­>error['warning']); } } return !$this­>error; } public function install() { $this­>load­>language('extension/module/pricelocal'); $this­>document­>setTitle($this­>language­>get('heading_title')); // $this­>load­>model('extension/extension'); $this­>load­>model('user/user_group'); $this­>load­>model('extension/module/pricelocal'); $this­>model_user_user_group­>addPermission($this­>user­ >getGroupId(), 'access', 'extension/module/pricelocal'); $this­>model_user_user_group­>addPermission($this­>user­ >getGroupId(), 'modify', 'extension/module/pricelocal'); $this­>model_user_user_group­>addPermission($this­>user­ >getGroupId(), 'access', 'extension/module/pricelocal/edit'); $this­>model_user_user_group­>addPermission($this­>user­ >getGroupId(), 'modify', 'extension/module/pricelocal/edit'); $this­>model_extension_module_pricelocal­>install(); } public function uninstall() { $this­>db­>query("DROP TABLE IF EXISTS `" . DB_PREFIX . "pricelocal`"); $this­>db­>query("DROP TABLE IF EXISTS `" . DB_PREFIX . "pricelocal_description`"); } }
{{ text_title }} {{ text_base_rate }} {{ text_status }} Действия