Ім'я файлу: курсова робота.pdf
Розширення: pdf
Розмір: 1349кб.
Дата: 17.12.2021
скачати


МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ВІДОКРЕМЛЕНИЙ СТРУКТУРНИЙ ПІДРОЗДІЛ
«ФАХОВИЙ КОЛЕДЖ ІНЖЕНЕРІЇ ТА УПРАВЛІННЯ
НАЦІОНАЛЬНОГО АВІАЦІЙНОГО УНІВЕРСИТЕТУ»
КУРСОВА РОБОТА з дисципліни « Системне програмування » на тему: « Електронний каталог модуля «Література» »
Студента 4 курсу 704-КІ групи
Спеціальності Комп’ютерна інженерія
___________Василенка Б.Ю_________
Керівник _______Апенько Н.В.______
Оцінка ___________________________
Дата захисту ______________________
Члени комісії ___________________
(підпис
)
(прізвище та ініціали)
___________________
(підпис
)
(прізвище та ініціали)
___________________
(підпис
)
(прізвище та ініціали)
Засвідчую, що у цій курсовій роботі немає запозичень з праць інших авторів без відповідних посилань.
Студент __________________________
Київ 2021

Міністерство освіти і науки України
Відокремлений структурний підрозділ
«Фаховий коледж інженерії та управління
Національного авіаційного університету»
ЗАТВЕРДЖУЮ
Голова комісії
____________ ___________
(підпис) (ПІБ)
«___»____________ 2021 р.
ІНДИВІДУАЛЬНЕ ЗАВДАННЯ
Студента Василенка Б.Ю. спеціальності Комп’ютерна інженерія курсу 4
ТЕМА « Електронний каталог модуля «Література» »
Вихідні дані середовище розробки Visual Studio, організація файлової системи .
Зміст ТЧ до курсової роботи:
Індивідуальне завдання
Вступ
Розділ 1. АНАЛІЗ ПОСТАВЛЕНОЇ ЗАДАЧІ ТА ФОРМУВАННЯ
ВИМОГ
Розділ 2. ПРОГРАМНА РЕАЛІЗАЦІЯ ФАЙЛОВОЇ СИСТЕМИ
Розділ 3. ТЕСТУВАННЯ ТА КЕРІВНИЦТВО КОРИСТУВАЧА
Висновки
Список літератури
Додаток А – Текст програми
Дата видачі «__»__________ 20__ р.
Керівник ________________
(підпис)
Завдання отримав _____________
(підпис)

Тема: « Електронний каталог модуля «Література» »
Календарний план виконання курсової роботи:

Назва етапу курсової роботи
Термін виконання етапу
Примітка
1.
Отримання завдання на курсову роботу.
2.
Огляд технічної літератури за темою роботи.
3.
Проектування інтерфейсу та алгоритму.
4.
Розробка і програмування.
5.
Тестування додатку.
6.
Аналіз отриманих результатів з керівником, написання доповіді та попередній захист курсової роботи.
7.
Коригування роботи за результатами попереднього захисту.
8.
Захист курсової роботи.
Студент Василенко Богдан Юрійович _
Керівник Апенько Наталія Вікторівна _
Дата видачі «__»________ 2021 р.

ЗМІСТ
ВСТУП .......................................................................................................................... 5
РОЗДІЛ 1. АНАЛІЗ ПОСТАВЛЕНОЇ ЗАДАЧІ ТА ФОРМУВАННЯ ВИМОГ ........ 6 1.1 Аналіз аналогів програмних утиліт для організації каталогів ................... 6 1.2 Порівняння програмних компонентів ......................................................... 8 1.3 Вимоги до створення програмної реалізації ............................................. 10
РОЗДІЛ 2. ПРОГРАМНА РЕАЛІЗАЦІЯ ФАЙЛОВОЇ СИСТЕМИ ......................... 11 2.1 Створення UML Use Case діаграми та схеми алгоритму ......................... 11 2.2 Використання просторів імен Net Framework при створення програми . 13 2.3 Використані класи .NetFramework ............................................................ 15 2.4 Оптимізація коду: пам’ять ......................................................................... 16 2.4.1 Ієрархія пам’яті ........................................................................................ 17
РОЗДІЛ 3. ТЕСТУВАННЯ ТА КЕРІВНИЦТВО КОРИСТУВАЧА ........................ 20 3.1 Тестування програмної реалізації файлової системи ............................... 20 3.2 Інструкція користувача .............................................................................. 22
ВИСНОВОК ............................................................................................................... 27
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ................................................................... 28
ДОДАТОК 1 – ТЕКСТ ПРОГРАМИ ......................................................................... 30

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

вивчення теоретичних аспектів створення інтернет-магазинів;

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

вивчення видів та вимог до створення інтернет-магазину;

вивчення методів оптимізації графічного контенту сайту;

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

створення фізичних та логічних структур каталогів;

опис створення різноманітних графічних елементів змісту каталогу;

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

6
РОЗДІЛ 1. АНАЛІЗ ПОСТАВЛЕНОЇ ЗАДАЧІ ТА ФОРМУВАННЯ
ВИМОГ
1.1 Аналіз аналогів програмних утиліт для організації каталогів
Надходження нового товару, його переміщення на складі, продаж і рух можуть простежити всі користувачі, у яких є доступ до цих даних. Отримувати звітність, переглядати наявність товару і вчасно поповнювати запаси можна як по одному магазину, так і по всій мережі.
РемОнлайн дозволяє синхронізувати онлайн-продажі в інтернет-магазині або на маркетплейсі з фізичним складом, завдяки чому ви будете виконувати замовлення швидко та точно:
1.
Синхронізація складу та онлайн замовлень;
2.
Єдина база замовлень з різних каналів;
3.
Інтеграція з популярними маркетплейсами.
Планування доставки та маршрутні листи для кур'єрів. Систему показано на рисунку 1.1.
Рисунок 1.1 – РемОнлайн

7
Що дає автоматизація магазину книг.
Програма обліку Торгсофт:
Спростить процес торгівлі та ведення складського обліку. Збільшить швидкість та якість обслуговування покупців: програма підрахує суму покупки та надрукує чек за лічені секунди.
Скоротить час оприбуткування товару: якщо товар вже був у базі, то прихід одного виду товару займає

5-7 секунд. Визначить кращих та активних співробітників: програма підрахує який продавець продав більше товару за зміну або за період. Зменшить помилки та пересортиці за рахунок обліку кожного товару за штрихкодом. Автоматично сформує необхідні звіти для підприємця.
Скоротить помилки людського фактора при веденні обліку: програма попередить про некоректно введені дані
і запише кожну дію користувача.Проконтролює запізнення, час початку та закінчення робочої зміни співробітників: для реєстрації в програмі співробітник повинен просканувати свій бейдж місці (за бажанням керівника, звичайно).
Підготує дані для експорту та формування первинної бухгалтерської звітності в MEDoc та Арт-Звіт. Надасть власнику бізнесу фінансову управлінську звітність: скільки валового доходу отримано, скільки і куди грошей витрачено, з ким зроблено взаєморозрахунки, скільки зарплати виплачено, хто кому винен, який прибуток і рентабельність отримав магазин за період. Залучить покупців до вашого магазину за рахунок автоматизації та швидкості обслуговування. даних.
Вигляд вікна показано на рисунку 1.2.
Програма Skynum для бізнесу із продажу косметики. Повний моніторинг руху товару та грошей в одній системі.
Skynum дозволяє вести облік великої кількості товару, використовуючи категорії, бренд, країну-виробник, серію, призначення. Контролюйте витрати пробників та тестерів косметики.
Інвентаризацію легко проводити за допомогою сканера штрих-кодів. На платформі можна самостійно згенерувати та надрукувати штрих-коди, якщо вони відсутні або пошкоджені на товарі.

8
Skynum підтримує необмежену кількість точок продажу, магазинів або складів незалежно від їх розташування та масштабу.
Рисунок 1.2 – Вид вікна Торгсофт
Ведення складського обліку за прибутковою та роздрібною ціною продажу.
Створення, вибір дизайну та друк штрих-кодів та цінників для товарів.
Швидке проведення інвентаризації більшої кількості товарів за допомогою сканера штрих-кодів.
Звітність із закупівель, продажів та грошових операцій у графіках та схемах.
Впровадження програми лояльності - розрахунок знижок та акцій, створення дисконтних та накопичувальних карток.
Підключення інтернет-магазину та повна синхронізація даних із товарообліковою системою.
Інтерфейс Skynum демонструється на рисунку 1.3.
1.2 Порівняння програмних компонентів
На підставах, розглянутих у попередньому пункті проведемо порівняння аналогів, вказавши їх переваги та недоліки.
Властивості папки РемОнлайн:

9
Рисунок 1.3 – Інтерфейс Skynum
Переваги:
‒ зручний інтерфейс;
‒ простота використання.
Недоліки:
‒ функції розташовані у різних контекстах меню;
‒ неповний набір атрибутів.
Торгсофт:
Переваги:
‒ зручний інтерфейс;
‒ простота використання;
‒ широкий набір можливостей;
‒ усі функції виконуються в одному вікні.
Недоліки:
‒ неможливість виклику контекстного меню вибраного файлу.
Skynum:
Переваги:
‒ входить до складу ОС;
‒ усі функції доступні з одного вікна;
‒ зручність інтерфейсу.
Недоліки:
‒ незручність використання для початківця ПК.

10
1.3 Вимоги до створення програмної реалізації
‒ візьмемо загальні вимоги до інтернет-магазину. він повинен забезпечувати принаймні такі функції:
‒ зручний і доступний інтерфейс;
‒ можливість комплектувати касовий апарат без взаємодії з персоналом магазину;
‒ контроль оприбуткування кількості товару на складі;
‒ можливість вибору відповідних способів доставки;
‒ можливість вибору зручних способів оплати;
‒ точне виконання замовлення без помилок і вчасно.
Також важливо мати можливість проконсультуватися онлайн з компетентним менеджером, який зможе відповісти на технічні запитання (у цьому випадку), більш складні, ніж «це доступно» або «скільки це коштує».
При створенні одного з типів інтернет-магазинів необхідно в першу чергу забезпечити зручний інтерфейс користувача:
‒ створити зручну і зрозумілу пошукову систему;

інформація про товар має бути повною та достовірною;
‒ необхідно запровадити просту систему реєстрації товарів із повним описом способів доставки та оплати.

11
РОЗДІЛ 2. ПРОГРАМНА РЕАЛІЗАЦІЯ ФАЙЛОВОЇ СИСТЕМИ
2.1 Створення UML Use Case діаграми та схеми алгоритму
Діаграма прецедентів є графом, що складається з множини акторів, прецедентів (варіантів використання) обмежених межею системи (прямокутник), асоціацій між акторами та прецедентами, відношень серед прецедентів, та відношень узагальнення між акторами. Діаграми прецедентів відображають елементи моделі варіантів використання.
Суть діаграми прецедентів полягає в тому, що проєктована система подається у вигляді множини сутностей чи акторів, що взаємодіють із системою за допомогою так званих варіантів використання. Варіант використання (англ. use case) використовують для описання послуг, які система надає актору. Іншими словами, кожен варіант використання визначає деякий набір дій, який виконує система під час діалогу з актором. При цьому нічого не говориться про те, яким чином буде реалізовано взаємодію акторів із системою.
При цьому загальні властивості варіантів використання можна подати трьома різними способами, а саме — за допомогою відношень включення, розширення і узагальнення.
Відношення асоціації — одне з фундаментальних понять у мові UML і в тій чи іншій мірі використовується під час побудови всіх графічних моделей систем у формі канонічних діаграм.
Включення (англ. include) у мові UML — це різновид відношення залежності між базовим варіантом використання і його окремим випадком. При цьому відношенням залежності (англ. dependency) є таке відношення між двома елементами моделі, за якого зміна одного елемента (незалежного) спричиняє зміну іншого елемента (залежного). Відношення розширення (англ. extend) визначає взаємозв'язок базового варіанту використання з іншим варіантом використання, функціональна поведінка якого залучається базовим не завжди, а тільки за виконання додаткових умов.

12
На рисунку 2.1 продемонстровано UML Use Case діаграму програми, що розробляється.
Рисунок 2.1 – UML Use Case діаграма
Діаграма представляє взаємодію користувача книгарні з системою, роботу із даними.
Діаграму станів зображено на рисунку 2.2. Після заповнення буфера аналізують дані завантажувального сектора, обробленого під час ініціалізації.
Саме в ньому прописано всю інформацію про склад та будову системи. Алгоритм містить підпрограми формування структури. Частину операцій для отримання
інформації про місткість носія та про будову системи на ньому проводять під час
ініціалізації самого пристрою. Надалі підпрограма визначає шлях, за яким знаходиться потрібний нам файл.
Для проектування архітектури програмного забезпечення використано шаблон модель-вигляд-контролер. Система поділяється на три частини: модель даних, інтерфейс користувача та модуль керування.
Дані моделі відокремлюються від інтерфейсу користувача, при цьому зміни
інтерфейсу мінімально впливають на роботу з даними, зміни даних, в свою чергу, здійснюються без змін інтерфейсу користувача. Такий шаблон дає можливість

13 гнучкого дизайну програмного забезпечення. Є можливість у подальшому змінити або розширити програму. Також він впорядковує структуру систем.
Модель є головним компонентом. У цій частині відбувається керування даними, описана логіка застосунку.
Рисунок 2.2 – Діаграма станів
Вигляд представляє собою вихідні дані програмного забезпечення.
Контролер оброблює вхідні дані. Відокремлюють три рівні операцій: рівень представлення даних є інтерфейсом користувача, прикладний рівень реалізує основну логік та рівень управління даними забезпечує збереження даних та доступ до них.
2.2 Використання просторів імен Net Framework при створення
програми
Система – містить класи, які дозволяють відображати URI на шаблони URI і групи шаблонів URI.
System.Collections.Generic – містить інтерфейси та класи, які визначають загальні колекції, що дозволяють користувачам створювати колекції сильного

14 типу, які забезпечують кращу продуктивність і безпеку типів порівняно з колекціями незагального типу.
System.Drawing – містить типи, які підтримують основні графічні функції
GDI +. Підпорядковані простори імен підтримують більш складні функції 2D та векторної графіки, розширені функції відображення, а також послуги друку та друку. Дочірній простір імен також містить типи, які розширюють логічні та графічні можливості інтерфейсу користувача під час розробки.
System.ComponentModel – містить класи, які реалізують дизайн і поведінку при виконанні компонентів і елементів керування. Цей простір імен включає базові класи та інтерфейси для реалізації перетворювачів атрибутів і типів, прив’язки до джерел даних та компонентів ліцензування.
System.Data - надає доступ до класів, які представляють архітектуру
ADO.NET. Архітектура ADO.NET дозволяє створювати компоненти, які ефективно працюють з даними з різних джерел.
System.Text – містить типи для кодування символів і маніпуляцій з рядками.
Дочірній простір імен дозволяє обробляти текст за допомогою регулярних виразів.
System.Linq – містить класи та інтерфейси, які підтримують запити з
інтегрованим мовою (LINQ).
System.Windows.Forms – містить класи для створення програм Windows, які максимально використовують розширені можливості інтерфейсу користувача, доступні в операційній системі Microsoft Windows.
System.IO – містить типи, які підтримують введення та виведення, включаючи можливість читання та запису даних у потоках, як синхронних, так і асинхронних, стискання даних у потоках, створення та використання ізольованих сховищ, відображення файлів у логічних адресних просторах програми та зберігання різних об'єкти. дані в одному контейнері, взаємодія з використанням анонімних або іменованих каналів, реалізація реєстрації користувачів і обробки вхідних і вихідних потоків даних на послідовних портах.

15
2.3 Використані класи .NetFramework
Даний розділ перелічує основні класи та функції .NetFramework, які використовувалися для розробки цієї програми.
Клас Товари виконує оснвні функції із товарами магазину: class Product
{ const SHOW_BY_DEFAULT = 6; public static function getLatestProducts($count = self::SHOW_BY_DEFAULT)
{
$db = Db::getConnection();
$sql = 'SELECT id, name, price, is_new FROM product ' …}
Даний клас містить такі методи: Отримати товар, Отримати товар за категорією, Пошук за номером, Рекомендовані товари.
Метод Отримати товар виконує вивід усіх товарів на екран: public static function getProductsList()
{ $db = Db::getConnection();
$result = $db->query('SELECT id, name, price, code FROM product ORDER
BY id ASC');
… } return $productsList; }
Наступний метод виводить на екран дані про пошук за номером: public static function getProdustsByIds($idsArray)
{ $db = Db::getConnection();
$idsString = implode(',', $idsArray); … } return $products; }
Наступний метод виконує пошук за категорією: public static function getTotalProductsInCategory($categoryId)
{ $db = Db::getConnection();
$sql = 'SELECT count(id) AS count FROM product WHERE status="1" AND category_id = :category_id';

16
$result = $db->prepare($sql);
$result->bindParam(':category_id', $categoryId, PDO::PARAM_INT);
$result->execute();
$row = $result->fetch(); return $row['count']; }
Та метод, який виводить рекомендовані товари: public static function getRecommendedProducts()
{ $db = Db::getConnection();
$result = $db->query('SELECT id, name, price, is_new FROM product '… } return $productsList; }
Також основним із методів класу є Створити товар: public static function createProduct($options)
{ $db = Db::getConnection();
$sql = 'INSERT INTO product '
. '(name, code, price, category_id, brand, availability,'
. 'description, is_new, is_recommended, status)'
. 'VALUES '
. '(:name, :code, :price, :category_id, :brand, :availability,'
. ':description, :is_new, :is_recommended, :status)';
$result = $db->prepare($sql);… } return 0; }
2.4 Оптимізація коду: пам’ять
Більшість програмістів представляють обчислювальну систему як процесор, який виконує інструкції, і пам’ять, що зберігає інструкції та дані для процесора. У цій простій моделі пам’ять є лінійним масивом байтів і процесор може звернутися до будь-якого місця в пам’яті за константний час. Хоча це ефективна модель більшості ситуацій, вона не відбиває того, як насправді працюють сучасні системи.

17
Насправді система пам’яті утворює ієрархію пристроїв зберігання
(рисунок 2.3) з різними ємностями, вартістю та часом доступу. Регістри процесора зберігають найчастіше використовувані дані. Невеликі швидкі кеш-пам’яті, розташовані близько до процесора, служать буферними зонами, які зберігають невелику частину даних, розташованих у відносно повільній оперативній пам’яті.
Оперативна пам’ять є буфером для повільних локальних дисків. А локальні диски
є буфером для даних з віддалених машин, пов’язаних мережею.
Рисунок 2.3 – Ієрархія пристроїв зберігання
Ієрархія пам’яті працює, тому що добре написані програми мають тенденцію звертатися до сховища на якомусь конкретному рівні частіше, ніж до сховища на нижчому рівні. Так що сховище на нижчому рівні може бути повільнішим, більшим і дешевшим. У результаті ми отримуємо великий обсяг пам’яті, який має вартість сховища в самому низу ієрархії, але доставляє дані програмі зі швидкістю швидкого сховища у верхівці ієрархії.
2.4.1 Ієрархія пам’яті
Сучасна система пам’яті утворює ієрархію від швидких типів пам’яті невеликого розміру до повільних типів пам’яті великого розміру. Ми говоримо, що конкретний рівень ієрархії кешує чи є кешем даних, розташованих нижчому рівні. Це означає, що він містить копії даних із нижчого рівня. Коли процесор

18 хоче отримати якісь дані, він їх спершу шукає найшвидших високих рівнях. І спускається на нижчі, якщо не може знайти.
На вершині ієрархії знаходяться регістри процесора. Доступ до них займає 0 тактів, але їх лише кілька штук. Далі йде кілька кілобайт кеш-пам’яті першого рівня, доступ до якої займає приблизно 4 такти. Потім йде пара сотень кілобайт повільнішої кеш-пам’яті другого рівня. Потім кілька мегабайт кеш-пам’яті третього рівня. Вона набагато повільніша, але все одно швидше за оперативну пам’ять. Далі розташована відносно повільна оперативна пам’ять.
Оперативну пам’ять можна як кеш для локального диска. Диски – це робочі конячки серед пристроїв зберігання. Вони великі, повільні та коштують дешево.
Комп’ютер завантажує файли з диска на оперативну пам’ять, коли збирається над ними працювати. Розрив у часі доступу між оперативною пам’яттю та диском колосальний. Диск повільніший за оперативну пам’ять у десятки тисяч разів, і повільніше за кеш першого рівня в мільйони разів. Найвигідніше звернутися кілька тисяч разів до оперативної пам’яті, ніж один раз до диска. На це знання спираються такі структури даних як B-дерева, які намагаються розмістити більше
інформації в оперативній пам’яті, намагаючись уникнути звернення до диску за будь-яку ціну.
Локальний диск може розглядатися як кеш для даних, розташованих на віддалених серверах. Коли ви відвідуєте веб-сайт, ваш браузер зберігає зображення з веб-сторінки на диску, щоб при повторному відвідуванні їх не потрібно було завантажувати. Існують і нижчі ієрархії пам’яті. Великі датацентри типу Google зберігають великі обсяги даних на стрічкових носіях, які зберігаються десь на складах, і коли знадобляться, повинні бути приєднані вручну або роботом.
Швидка пам’ять коштує дуже дорого, а повільна – дуже дешево. Це велика
ідея архітекторів систем поєднати великі розміри повільної та дешевої пам’яті з маленькими розмірами швидкою та дорогою. Таким чином, система може працювати на швидкості швидкої пам’яті і мати вартість повільної.

19
Таблиця 2.1 – Характеристики сучасної системи
Тип кешу
Час доступу (тактів)
Розмір кешу
Реєстри
0
Десятки штук
L1 кеш
4 32 КВ
L2 кеш
10 256 КВ
L3 кеш
50 8 МВ
Оперативна пам’ять 200 8 GB
Буфер диску
100’000 64 МВ
Локальний диск
10’000’000 1000 GB
Видалені сервери
1’000’000’000


20
РОЗДІЛ 3. ТЕСТУВАННЯ ТА КЕРІВНИЦТВО КОРИСТУВАЧА
3.1 Тестування програмної реалізації файлової системи
У процесі тестування було перевірено основний функціонал системи.
Перелік випробувань основних функцій наведено у таблицях 3.1-3.4.
Таблиця 3.1 – Реєстрація користувача
Мета випробувань
Перевірка функції «Реєстація»
Початковий стан системи
Відкрита форма для реєстрації
Вхідні дані
Не передбачені
Проведення тесту
Ввести номер телефону, ПІБ, пароль, натиснути кнопку Реєстрація
Очікуваний результат
Відкрита сторінка «Реєстрація успішна»
Стан системи після випробувань
Відкрита сторінка «Реєстрація успішна»
Таблиця 3.2 – Перегляд інформації про товар
Мета випробувань
Перевірка функції «Перегляд інформації про товар»
Початковий стан системи
Відкрита сторінка каталог товару
Вхідні дані
Каталог товару
Проведення тесту
Натиснути на назву товару.
Очікуваний результат
Відкрита сторінка «Інформація про товар»
Стан системи після випробувань
Відкрита сторінка «Інформація про товар»

21
Таблиця 3.3 – Додавання товару у кошик
Мета випробувань
Перевірка додавання товару у кошик
Початковий стан системи
Відкрита сторінка інформація про товар
Вхідні дані
Каталог товару
Проведення тесту
Натиснути на кнопку Купити.
Очікуваний результат
Відкрита сторінка «Інформація про товар».
Відображено напис «Товар додано у кошик».
Стан системи після випробувань
Відкрита сторінка «Інформація про товар».
Відображено напис «Товар додано у кошик».
Таблиця 3.4 – Створення замовлення
Мета випробувань
Перевірка функції «Створення замовлення»
Початковий стан системи
Відкрита сторінка кошик
Вхідні дані
Каталог товару
Проведення тесту
Заповнити поля номер телефону, ПІБ, адрес доставки, обрати спосіб оплати, натиснути
«Оформити замовлення».
Очікуваний результат Відкрита сторінка «Кошик». Відображено напис
«Ваше замовлення сформовано. Очікуйте дзвінка менеджера».
Стан системи після випробувань
Відкрита сторінка «Кошик». Відображено напис
«Ваше замовлення сформовано. Очікуйте дзвінка менеджера».
Під час виконання тестування було визначено мету випробувань та загальні положення. Наведено тести для функцій користувача. Виконавши тестування, результатом є коректне функціонування системи.

22
3.2 Інструкція користувача
Системні вимоги
1.
Операційна система: Windows 8,10.
2.
Оперативна пам'ять: щонайменше 16 МБ.
3.
Вільний простір на диску: 400КБ.
4.
Наявність .Net Framework 4.0 або вище.
Першим кроком при вході в систему є реєстрація користувача.
Для реєстрації в системі потрібно запустити її у браузері та у списку меню вибрати пункт «Реєстрація» (рисунок 3.1).
Рисунок 3.1 – Запит на реєстрацію
Після цього з’явиться вікно реєстрації (рисунок 3.2), де користувачу потрібно заповнити поля особистими даними, які, як вже відомо, будуть використані надалі для кластеризації користувачів.
Отже, користувач повинен ввести своє ім’я, прізвище, логін і пароль для

23 авторизації, заповнити поля «Вік», «Стать», «Місто», вказати адресу електронної пошти та повторно ввести пароль. Деякі поля реєстрації є обов’язковими, іншими можна нехтувати, але, звісно ж, не бажано, бо тоді буде важче здійснити кластеризацію одразу.
Після введення даних користувач натискає кнопку «Зареєструватися» і тоді перед ним з’являється невелике опитування (рисунок 3.3), метою якого є на початкових етапах з’ясувати деякі смаки користувача.
Рисунок 3.2 – Вікно реєстрації користувача
Рисунок 3.3 – Опитування користувача при реєстрації

24
Відповівши на примітивні питання, користувач натискає кнопку
«Завершити анкетування» і таким чином входить у систему, де має свій кабінет користувача.
Якщо користувач уже був раніше зареєстрований, то йому в меню системи потрібно після запуску вибрати пункт «Авторизація» і, ввівши свій логін та пароль, здійснити вхід.
На рисунку 3.4 зображено інтерфейс системи після входу, де видно кнопку кабінету користувача, куди він може додавати книги для купівлі, та, знову ж таки, меню системи, що є списком жанрів книг, які може запропонувати до продажу книгарня.
Рисунок 3.4 – Вигляд системи після входу
Користувач може шукати книгу, яка його цікавить, через меню за жанрами, чи просто у списку новинок. Може переглядати інформацію про книгу і короткий опис сюжету, додавати книгу у кабінет, ставити їй оцінки (рисунок 3.5), лишати відгуки про книгу чи якісь інші коментарі (рисунок 3.6), а система у цей час
«вивчає» поведінку користувача, враховуючи його запити, кількість «клікань» по жанрам меню, оцінки, виставлені для книги, відгуки, та інші критерії, за якими відбуватиметься кластеризація.
Дослідивши поведінку користувача система через деякий час може

25 починати здійснювати рекомендації книг за вподобаннями (рисунок 3.7), а також, крім книг, – найближчі події (рисунок 3.8), котрі також можуть зацікавити людину.
Рисунок 3.5 – Виставлення оцінок товару
Рисунок 3.6 – Відправлення відгуків до товару
Якщо користувач більше не бажає здійснювати покупки, він може вийти зі свого профілю, або просто закрити вікно браузера і система автоматично здійснить вихід із кабінету користувача.

26
Рисунок 3.7 – Рекомендація товару
Рисунок 3.8 – Анонсування події

27
ВИСНОВОК
У рамках цієї курсової роботи відповідно до задачі створено каталог продукції для інтернет-магазину літератури.
Розглянуто теоретичні, практичні, економічні та правові аспекти питання.
Для досягнення цієї мети було виконано наступні завдання:

вивчення понять, видів, вимог і методів організації електронної комерції;

досліджено методи оптимізації графічної складової при створенні веб- порталів;

заповнено фізичну та логічну схеми створеного каталогу;

вивчені та описані можливі способи реалізації та експлуатаційні характеристики;

описано процеси створення каталогу та елементи графічного дизайну;

вивчено та розраховано економічний бік проблеми;

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

28
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1.
Alex, N. Roadmap до E-Factory / Alex N., Jr Beavers, Jr. Alex N. Beavers.

Москва: Машинобудування, 2018. – 747 c.
2.
Barabasi, A.L. Linked: the new science of networks / Barabasi A.L.. – М.:
[не зазначено], 2002. – 459 з.
3.
Bigus, J.P. Data mining with neural networks / Bigus J.P.. – М.: [не зазначено], 1996. – 455 с.
4.
Ceruzzi, P.E. A history of modern computing / Ceruzzi P.E.. – М.: [не зазначено], 2003. – 366 с.
5.
Danny, Goodman Danny Goodman Applescript Handbook / Danny
Goodman. – Москва: Вища школа, 2003. – 612 с.
6.
Darel, W. Hardy Applied Algebra / Darel W. Hardy, Carol L. Walker. –
Москва: Гостехіздат, 2005. – 568 c.
7.
Debra, S. Herrmann За допомогою Загальної політики для IT Security
Evaluation / Debra S. Herrmann. – Москва: Вогні, 1983. – 777 c.
8.
Gary, V. Vaughan GNU Autoconf, Automake, і Libtool / Gary V. Vaughan та ін. – Москва: Наука, 1989. – 361 с.
9.
Greg, J. Arthaud Systems Analysis in Forest Resources: Proceedings of
Eighth Symposium, Held September 27-30, 2000, Snowmass Village, Colorado, US.A.
(Managing Forest Ecosystems, V. 7) / Greg J. Arthaud, Tara M. Barrett, SYMPOSIUM
ON SYSTEMS ANALYSIS IN FOREST. – Москва: Машинобудування,
1980. – 860 c.
10.
Guo, Y. High Performance Data Mining: Scaling Algorithms, Applications and Systems / Guo Y., Grossman R. (eds.). – М.: [не зазначено], 2002. – 837 c.
11.
Karny, M. Probabilistic Advisory System / Karny M., Bohm J., Guy T.V..
– М.: [не вказано], 2003. – 904 с.
12.
O., G. Kakde Algorithms для Compiler Design (Electrical and Computer
Engineering Series) / O. G. Kakde. – Москва: ІЛ, 1979. – 465 c.

29 13.
Sarker, R.A. Heuristic and optimization for knowledge discovery / Sarker
R.A., Abbass H.A., Newton C.S.. – М.: [не вказано], 2002. – 129 с.
14.
Scheutz, M. Computationalism. New directions / Scheutz M.. – М.: [не вказано], 2002. – 954 c.
15.
Weiss, G. Multiagent Systems: A Modern Approach to Distributed Modern
Approach to Artificial Intelligence / Weiss G. – М.: [не зазначено], 1999. – 946 c.
16.
Wendy, A. Kellogg New Agenda for Human-Computer Interaction
(Human- Computer Interaction, Vol 15, Nos. 2 & 3) / Wendy A. Kellogg, Clayton
Lewis, Peter Polson. – Москва: Вогні, 2006. – 833 c.
17.
Ендрю Троелсен Мова програмування C# 2010 та платформа.net 4.0 5е видання. 2011. – 1392с.
18.
Розміщено Піменов В.Ю. Обчислювально-ефективний метод пошуку нечітких дублікатів у колекції зображень. 2009-19с.
19.
Herbert Bay, Andreas Ess, Tinne Tuytelaars, Luc Van Gool Speeded-Up
Robust Features (SURF) 2008 - 14с
20.
Лабор В.В. Сі Шарп: Створення програм для Windows - Мі.: Харвест,
2003. - 384с.
21.
Фролов А.В., Фролов Г.В. Мова С# Самовчитель, 2003. - 557с.

30
ДОДАТОК 1 – ТЕКСТ ПРОГРАМИ
/**
* Класс Product
*/ class Product
{ const SHOW_BY_DEFAULT = 6; public static function getLatestProducts($count = self::SHOW_BY_DEFAULT)
{
$db = Db::getConnection();
$sql = 'SELECT id, name, price, is_new FROM product '
. 'WHERE status = "1" ORDER BY id DESC '
. 'LIMIT :count';
$result = $db->prepare($sql);
$result->bindParam(':count', $count, PDO::PARAM_INT);
$result->setFetchMode(PDO::FETCH_ASSOC);
$result->execute();
$i = 0;
$productsList = array(); while ($row = $result->fetch()) {
$productsList[$i]['id'] = $row['id'];
$productsList[$i]['name'] = $row['name'];
$productsList[$i]['price'] = $row['price'];
$productsList[$i]['is_new'] = $row['is_new'];
$i++;
} return $productsList;
} public static function getProductsListByCategory($categoryId, $page = 1)

31
{
$limit = Product::SHOW_BY_DEFAULT;
$offset = ($page - 1) * self::SHOW_BY_DEFAULT;
$db = Db::getConnection();
$sql = 'SELECT id, name, price, is_new FROM product '
. 'WHERE status = 1 AND category_id = :category_id '
. 'ORDER BY id ASC LIMIT :limit OFFSET :offset';
$result = $db->prepare($sql);
$result->bindParam(':category_id', $categoryId, PDO::PARAM_INT);
$result->bindParam(':limit', $limit, PDO::PARAM_INT);
$result->bindParam(':offset', $offset, PDO::PARAM_INT);
$result->execute();
$i = 0;
$products = array(); while ($row = $result->fetch()) {

32
$products[$i]['id'] = $row['id'];
$products[$i]['name'] = $row['name'];
$products[$i]['price'] = $row['price'];
$products[$i]['is_new'] = $row['is_new'];
$i++;
} return $products;
} public static function getProductById($id)
{
$db = Db::getConnection();
$sql = 'SELECT * FROM product WHERE id = :id';
$result = $db->prepare($sql);
$result->bindParam(':id', $id, PDO::PARAM_INT);
$result->setFetchMode(PDO::FETCH_ASSOC);
$result->execute(); return $result->fetch();
} public static function getTotalProductsInCategory($categoryId)
{
$db = Db::getConnection();

33
$sql = 'SELECT count(id) AS count FROM product WHERE status="1" AND category_id = :category_id';
$result = $db->prepare($sql);
$result->bindParam(':category_id', $categoryId, PDO::PARAM_INT);
$result->execute();
$row = $result->fetch(); return $row['count'];
} public static function getProdustsByIds($idsArray)
{
$db = Db::getConnection();
$idsString = implode(',', $idsArray);
$sql = "SELECT * FROM product WHERE status='1' AND id IN ($idsString)";
$result = $db->query($sql);
$result->setFetchMode(PDO::FETCH_ASSOC);
$i = 0;
$products = array();

34 while ($row = $result->fetch()) {
$products[$i]['id'] = $row['id'];
$products[$i]['code'] = $row['code'];
$products[$i]['name'] = $row['name'];
$products[$i]['price'] = $row['price'];
$i++;
} return $products;
} public static function getRecommendedProducts()
{
$db = Db::getConnection();
$result = $db->query('SELECT id, name, price, is_new FROM product '
. 'WHERE status = "1" AND is_recommended = "1" '
. 'ORDER BY id DESC');
$i = 0;
$productsList = array(); while ($row = $result->fetch()) {

35
$productsList[$i]['id'] = $row['id'];
$productsList[$i]['name'] = $row['name'];
$productsList[$i]['price'] = $row['price'];
$productsList[$i]['is_new'] = $row['is_new'];
$i++;
} return $productsList;
} public static function getProductsList()
{
$db = Db::getConnection();
$result = $db->query('SELECT id, name, price, code FROM product ORDER BY id ASC');
$productsList = array();
$i = 0; while ($row = $result->fetch()) {
$productsList[$i]['id'] = $row['id'];
$productsList[$i]['name'] = $row['name'];

36
$productsList[$i]['code'] = $row['code'];
$productsList[$i]['price'] = $row['price'];
$i++;
} return $productsList;
} public static function deleteProductById($id)
{
$db = Db::getConnection();
$sql = 'DELETE FROM product WHERE id = :id';
$result = $db->prepare($sql);
$result->bindParam(':id', $id, PDO::PARAM_INT); return $result->execute();
} public static function updateProductById($id, $options)
{
$db = Db::getConnection();

37
$sql = "UPDATE product SET name = :name, code = :code, price = :price, category_id = :category_id, brand = :brand, availability = :availability, description = :description, is_new = :is_new, is_recommended = :is_recommended, status = :status
WHERE id = :id";
$result = $db->prepare($sql);
$result->bindParam(':id', $id, PDO::PARAM_INT);
$result->bindParam(':name', $options['name'], PDO::PARAM_STR);
$result->bindParam(':code', $options['code'], PDO::PARAM_STR);
$result->bindParam(':price', $options['price'], PDO::PARAM_STR);
$result->bindParam(':category_id', $options['category_id'], PDO::PARAM_INT);
$result->bindParam(':brand', $options['brand'], PDO::PARAM_STR);
$result->bindParam(':availability', $options['availability'], PDO::PARAM_INT);
$result->bindParam(':description', $options['description'], PDO::PARAM_STR);
$result->bindParam(':is_new', $options['is_new'], PDO::PARAM_INT);
$result->bindParam(':is_recommended', $options['is_recommended'],
PDO::PARAM_INT);

38
$result->bindParam(':status',
$options['status'], PDO::PARAM_INT); return $result->execute();
} public static function createProduct($options)
{
$db = Db::getConnection();
$sql = 'INSERT INTO product '
. '(name, code, price, category_id, brand, availability,'
. 'description, is_new, is_recommended, status)'
. 'VALUES '
. '(:name, :code, :price, :category_id, :brand, :availability,'
. ':description, :is_new, :is_recommended, :status)';
$result = $db->prepare($sql);
$result->bindParam(':name', $options['name'], PDO::PARAM_STR);
$result->bindParam(':code', $options['code'], PDO::PARAM_STR);
$result->bindParam(':price', $options['price'], PDO::PARAM_STR);

39
$result->bindParam(':category_id', $options['category_id'], PDO::PARAM_INT);
$result->bindParam(':brand', $options['brand'], PDO::PARAM_STR);
$result->bindParam(':availability', $options['availability'], PDO::PARAM_INT);
$result->bindParam(':description', $options['description'], PDO::PARAM_STR);
$result->bindParam(':is_new', $options['is_new'], PDO::PARAM_INT);
$result->bindParam(':is_recommended', $options['is_recommended'],
PDO::PARAM_INT);
$result->bindParam(':status', $options['status'], PDO::PARAM_INT); return $db-
>lastInsertId();
} return 0;
} public static function getAvailabilityText($availability)
{ switch ($availability) { case '1': return 'В наличии'; break; case '0': return 'Под заказ'; break;
}
} public static function getImage($id)
{
$noImage = 'no-image.jpg';
$path = '/upload/images/products/';
$pathToProductImage = $path . $id . '.jpg'; if (file_exists($_SERVER['DOCUMENT_ROOT'].$pathToProductImage)) { return $pathToProductImage;
}

40 return $path . $noImage;
}
}
/**
* Класс User
*/ class User
{ public static function register($name, $email, $password)
{
$db = Db::getConnection();
$sql = 'INSERT INTO user (name, email, password) '
. 'VALUES (:name, :email, :password)';
$result = $db->prepare($sql);
$result->bindParam(':name', $name, PDO::PARAM_STR);
$result->bindParam(':email', $email, PDO::PARAM_STR);
$result->bindParam(':password', $password, PDO::PARAM_STR); return
$result->execute();
} public static function edit($id, $name,
$password)
{
$db = Db::getConnection();
$sql = "UPDATE user
SET name = :name, password = :password WHERE id = :id";
$result = $db->prepare($sql);
$result->bindParam(':id', $id, PDO::PARAM_INT);
$result->bindParam(':name', $name, PDO::PARAM_STR);

41
$result->bindParam(':password', $password, PDO::PARAM_STR); return
$result->execute();
} public static function checkUserData($email, $password)
{
$db = Db::getConnection();
$sql = 'SELECT * FROM user WHERE email = :email AND password =
:password';
$result = $db->prepare($sql);
$result->bindParam(':email', $email, PDO::PARAM_INT);
$result->bindParam(':password', $password, PDO::PARAM_INT);
$result->execute();
$user = $result->fetch(); if ($user) { return $user['id'];
} return false;
} public static function auth($userId)
{
$_SESSION['user'] = $userId;
} public static function checkLogged()
{ if (isset($_SESSION['user'])) { return $_SESSION['user'];
} header("Location: /user/login");
} public static function isGuest()

42
{ if (isset($_SESSION['user'])) { return false;
} return true;
}

скачати

© Усі права захищені
написати до нас