1   2
Ім'я файлу: getfile97920.pdf
Розширення: pdf
Розмір: 1996кб.
Дата: 18.09.2023
скачати
Пов'язані файли:
Сочевиця.docx
4409083_zadacha.doc

_________________
Вінницький національний технічний університет
_________________
(повне найменування вищого навчального закладу)
____________________________
Кафедра комп’ютерних наук
__________________________
(повна назва кафедри, циклової комісії)
КУРСОВИЙ ПРОЕКТ
______
з дисципліни "Об’єктно-орієнтоване програмування"
____
(назва дисципліни) на тему:
«Розробка інтернет-магазину Marvel Comics»
Студента ІІІ курсу 1КН-19б групи спеціальності 122 Комп’ютерні науки
_________________
Польгуль Б. В.
_______________
(прізвище та ініціали)
Керівник к.т.н., ст.в. Петришин С.І. _____
(посада, вчене звання, науковий ступінь, прізвище та ініціали)
Національна шкала ___________________________
Кількість балів: __________ Оцінка: ECTS _______
Члени комісії
________________
(підпис)
__________________________
(прізвище та ініціали)
________________
(підпис)
__________________________
(прізвище та ініціали)
________________
(підпис)
__________________________
(прізвище та ініціали)
Вінниця 2021

Міністерство освіти і науки України
Вінницький національний технічний університет
Факультет інформаційних технологій та комп’ютерної інженерії
Кафедра комп’ютерних наук
ЗАТВЕРДЖУЮ
Зав. каф. КН, д.т.н., проф.
____________ А.А.Яровий "__" _____________ 2020р.
ІНДИВІДУАЛЬНЕ ЗАВДАННЯ на курсовий проект з дисципліни "Об’єктно-орієнтоване програмування" студента групи 1КН-19б Польгуль Б. В.
1. Тема курсового проекту «Розробка інтернет-магазину Marvel Comics» затверджена на засіданні кафедри комп’ютерних наук, протокол
№2 від "14" вересня 2021р.
2. Термін здачі студентом зазначеної роботи: "28" грудня 2021р.
3. Вхідні дані до роботи: використання принципів об’єктно-орієнтованого проектування та програмування, концепції мови Python 3.
4. Зміст пояснювальної записки: Вступ; Аналіз предметної області;
Постановка задачі; UML-діаграми програмного забезпечення; Алгоритм функціонування програмного забезпечення; Опис роботи програми; Аналіз результатів; Висновки; Список використаних джерел; Додатки.
5. Перелік графічного матеріалу загальна структурна схема функціонування програмного забезпечення
,
UML-діаграма класів, схема алгоритму функціонування основних модулів програмного забезпечення, скріншоти основних вікон програми.
6. Дата видачі завдання: "1" вересня 2021р.
Завдання видав Петришин С.І ____________
(ПІП керівника курсового проекту) (підпис)
Завдання прийняв до виконання Польгуль Б. В. ___________
(ПІП студента) (підпис)

АНОТАЦІЯ
У даному курсовому проекті було розроблено інтернет-магазин Marvel
Comics, що дозволяє переглядати список журналів, інформацію про них та їх видавництво, а також купувати журнали. Під час розробки сайту було використано об’єктно-орієнтоване програмування та мову програмування
Python 3. Описано структуру програми та її роботу за допомогою UML діаграм.

ANNOTATION
In this course project, an online magazine sales magazine was developed that allows you to browse a list of magazines, information about them and their publishers, as well as buy magazines. Site development used object-oriented programming and Python 3 programming language. It describes the structure of the program and its operation using UML diagrams.

Змн.
Лист
№ докум.
Підпис
Дата
Арк.
6 08-22.КП.ООП.20.19.177.П3
Розроб.
Польгуль Б.В.
Перевір.
Петришин С.І.
Рецен
Н. Контр.
Затвер
Розробка інтернет-магазину
Marvel Comics
Літ.
Аркушів
56 1КН-19б
ЗМІСТ
ВСТУП ..................................................................................................................... 7 1.
АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ВІДОМИХ РЕАЛІЗАЦІЙ
РОЗРОБКИ
ВЕБ-САЙТІВ
ДЛЯ
ОНЛАЙН-МАГАЗИНІВ
MARVEL
COMICS…................................................................................................................8 1.1 Аналіз предметної області онлайн-магазинів ............................................. 8 1.2 Огляд відомих реалізацій системи автоматизованої роботи онлайн- магазинів Marvel Comics ................................................................................... 10 1.3 Постановка задачі на розробку програмного забезпечення .................... 12 2. ОБ’ЄКТНО ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ РОЗРОБКИ ВЕБ-
САЙТІВ ДЛЯ ОНЛАЙН-МАГАЗИНІВ MARVEL COMICS ........................... 13 2.1 Універсальна мова моделювання UML в процесі проектування журнальних онлайн-магазинів .......................................................................... 13 2.2 Розробка загальної структурної схеми функціонування онлайн- магазинів Marvel Comics ................................................................................... 14 2.3 Моделювання онлайн-магазинів для продажу журналів з використанням мови UML ........................................................................................................... 15 2.4 Розробка алгоритмів функціонування онлайн-магазинів журналів ....... 18 2.5 Розробка алгоритмів функціонування основних модулів онлайн- магазинів Marvel Comics ................................................................................... 19 3. РЕАЛІЗАЦІЯ ОНЛАЙН-МАГАЗИНУ MARVEL COMICS ......................... 22 3.1 Обгрунтування вибору мови програмування ............................................ 22 3.2 Основні оператори мови програмування Python 3 ................................... 23 3.3 Особливості середовища Visual Studio ...................................................... 25 3.4 Програмна реалізація книжкового онлайн-магазину ............................... 27 3.5 Тестування розробленої системи ............................................................... 27

Змн.
Лист
№ докум.
Підпис
Дата
Арк.
6 08-22.КП.ООП.20.19.177.П3
Розроб.
Польгуль Б.В.
Перевір.
Петришин С.І.
Рецен
Н. Контр.
Затвер
Розробка інтернет-магазину
Marvel Comics
Літ.
Аркушів
56 1КН-19б
ВИСНОВКИ ........................................................................................................... 32
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ ............................................................. 33
ДОДАТКИ .............................................................................................................. 34
Додаток А. Лістинг програмної реалізації основних модулів журнального онлайн-магазину ................................................................................................. 35
Додаток Б. Інструкція користувача онлайн-магазину .................................... 48
Додаток В. Графічна частина ............................................................................ 49

Змн. Арк.
№ докум.
Підпис Дата
Арк.
7 08-22.КП.ООП.20.19.177.ПЗ
ВСТУП
Журнал – це один із засобів масової інформації, що використовує мільйони людей. Досліджувальна тема є досить актуальною, адже журнали вміщують багато
інформації, яка може використовуватися в найрізноманітніших сферах нашого життя.
Програми, за допомогою яких можна отримати доступ до улюблених журналів потрібні, а найзручніший доступ до бажаного матеріалу це звичайно інтернет.
Тема даної курсового проекту «Розробка інтернет-магазину Marvel
Comics».
Послугами сайтів онлайн-магазинів користуються багато людей. Для налагодженої роботи сайтів такого типу потрібно мати коректно- функціонуючі механізми обробки заказів та оновлення інформації.
Результатом даної курсового проекту повинен стати сайт, який надаватиме користувачам інформацію про наявні журнали певної тематики, та дозволятиме створювати покупки журналів.
Під час виконання даної роботи потрібно виконати аналіз предметної області. Далі потрібно виконати проектування моделі, яка виникла під час аналізу, продумавши всі зв’язки, що можуть виникати між об’єктами предметної області. На закінчення, реалізувати дану модель за допомогою мови об’єктно-орієнтованого програмування Python 3 з відповідним тестуванням.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
8 08-22.КП.ООП.20.19.177.ПЗ
1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ВІДОМИХ
РЕАЛІЗАЦІЙ РОЗРОБКИ ВЕБ-САЙТІВ ДЛЯ ОНЛАЙН-
МАГАЗИНУ MARVEL COMICS
1.1 Аналіз предметної області онлайн-магазинів
Internet-магазин (електронний, віртуальний, e-shop) являє собою спеціалізований Web-сайт, який належить фірмі-товаровиробнику, торговій фірмі тощо та призначений для просування споживчих товарів на ринку, збільшення обсягів продажу, залучення нових покупців.
Через мережу Інтернет покупець за допомогою браузера заходить на web-сайт інтернет-магазину. Web-сайт містить електронну вітрину, на якій представлені каталог товарів (з можливістю пошуку) і необхідні інтерфейсні елементи для введення реєстраційної інформації, формування замовлення, проведення платежів через інтернет, оформлення доставки, отримання
інформації про компанії-продавця і online допомоги.
Відвідувач інтернет-магазину переглядає перелік пропонованих йому товарів або послуг, вибирає підходящу позицію й додає обраний товар у свій купівельний "кошик". Далі в такий же спосіб відвідувач може вибрати ще кілька пропонованих позицій - стільки, скільки потрібно. Коли всі необхідні товари обрані, можна приступати до оформлення замовлення на покупку.
При цьому необхідний мінімум особистої інформації про покупця, що сприяє підвищенню безпеки покупок.
У заявці на покупку крім інформації про обраний товар міститься також інформація і про способи оплати. Для розрахунків за інтернет-покупки способи оплати застосовують різні: за допомогою банківської карти або банківським переказом, поштовим переказом, оплата електронними грішми і, нарешті, оплата готівкою при одержанні товару. Однак щоб уникнути можливих шахрайських махінацій чесні
інтернет-магазини не

Змн. Арк.
№ докум.
Підпис Дата
Арк.
9 08-22.КП.ООП.20.19.177.ПЗ
використовують, наприклад, перекази Western Union, оскільки такий платіж не можна скасувати або опротестувати. Не застосовуються в серйозних
інтернет-магазинах і способи оплати через SMS на короткий номер з незмінною сумою платежу, тому що в цьому випадку також неможливо опротестувати або скасувати платіж.
Доставка замовлення здійснюється або власною кур'єрською службою
інтернет-магазину, або за допомогою інших компаній, що надають кур'єрські послуги. Також можливий варіант доставки замовлення покупцеві поштою посилкою або бандероллю. Якщо ж замовлений товар електронний
(фотографія, програмне забезпечення, ліцензійні ключі до нього, текст, електронна книга і т.д.), то його доставка здійснюється електронними каналами, наприклад, електронною поштою або за допомогою доступу в захищену область сайту.
Проте, як би це не було зручно інтернет-магазин також має і переваги і недоліки. До недоліків можна віднести:
- товар можна побачити лише на картинці;
- є ризик потрапити на шахраїв, або безвідповідальних продавців.
До переваг можна віднести:
- швидкість процедури купівлі;
- є можливість заощадити;
- асортимент;
- детальний опис товару;
- немає прив’язки до місцевості, часу, доби або погоди;
- ексклюзивність;
- свобода вибору способу оплати [1].

Змн. Арк.
№ докум.
Підпис Дата
Арк.
10 08-22.КП.ООП.20.19.177.ПЗ
1.2 Огляд відомих реалізацій системи автоматизованої роботи
онлайн-магазинів Marvel Comics
На даний момент існує досить велика кількість інтернет-магазинів
Marvel Comics журналів з великим асортиментом. Популярні і онлайн- магазини з дитячими журналами, і спортивні, і про моду та бізнес.
Розглянемо два великих інтернет-магазини з журналами, де перший інтернет- магазин універсальний для будь якого покупця, а другий з ексклюзивними журналами закордону.
Великий інтернет магазин «ЛАВКА БАБУИН» призначений для онлайн-продажу журналів різної тематики ти різних цінових категорій.
Даний інтернет-магазин продає крім журналів також канцелярію. Магазин дає можливість отримати безкоштовну доставку при замовленні товару більше як на 1200 грн, а також гарантує повернення товару при наявності чеку згідно із законом про захист прав споживача. Крім того інтерне-магазин пропонує великий вибір способу оплати, а саме:
- готівковими коштами кур'єру при отриманні (по Києву);
- передоплата через Privat24 (банківський платіж);
- накладений платіж в поштовому відділенні Нова Пошта, при отриманні і після огляду;
- накладений платіж в поштовому відділенні УКРПОШТА, при отриманні і після огляду;
- накладений платіж в поштовому відділенні Justin, при отриманні і після огляду;
- перекладом через інтернет-сервіс Portmone.
Доставка обраних товарів здійснюється по всій Україні, незалежно від регіону проживання (крім тимчасово окупованих територій і АР Крим).

Змн. Арк.
№ докум.
Підпис Дата
Арк.
11 08-22.КП.ООП.20.19.177.ПЗ
Кур'єром по Києву. Вартість доставки по Києву складає 50 грн.
Безкоштовна доставка при сумі замовлення понад 1200 грн. Терміни доставки можна побачити на сторінці товару. Більшість товарів можна отримати в день замовлення. Після оформлення заявки менеджери зв'язуються з Вами і уточнять зручний час і місце отримання.
НОВА ПОШТА. Будь-який товар може бути відправлений післяплатою
(без передоплати) в вибране відділення «Нової пошти». Термін доставки в середньому становить 1-3 дні. (В залежності від регіону). Відправка здійснюється щодня, в дні роботи поштового відділення (понеділок-субота).
УКРПОШТА. Будь-який товар може бути відправлений післяплатою
(без передоплати) в вибране відділення «Укрпошти». Термін доставки в середньому становить 2-10 днів (в залежності від регіону).
JUSTIN. З Justin - найшвидша доставка по Києву і регіонах, де є представництво компанії. Термін доставки - 1 день (в далекі населені пункти
2 дні), без попередньої оплати. Є можливість також заздалегідь оплатити посилку грошовим переказом [2].
Інтернет-магазин «Readellion» – це онлайн магазин міжнародної преси.
В Україні не вистачає сучасних видань, і саме цей магазин дає можливість отримати закордонні публікації, журнали різних відомих видавництв не виходячи з дому.
Оплата:
- оплта замовлення здійснюється карткою онлайн на сайті через систему LiqPay;
- оплата доставки здійснюється покупцем при отриманні замовлення на вказаному відділенні Нової Пошти;
- оплата замовлення готівкою можлива лише у випадку адресної доставки кур’єром по Києву.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
12 08-22.КП.ООП.20.19.177.ПЗ
Сам інтернет-магазин має досить зручний інтерфейс та має великий вибір продукції
[3].
Реалізований в даному проекті книжний онлайн-магазин матиме зрозумілий
інтуїтивний
інтерфейс користувача, буде легким в обслуговуванні, наддасть широкий вибір журнального асортименту продукції. Інтернет-серфінгом на даному ресурсі зможе користуватись достатньо велика кількість користувачів адже даний проект дозволятиме обробляти велику кількість запитів одночасно.
1.3 Постановка задачі на розробку програмного забезпечення
У даному курсовому проекті основним завданням є розробка сайту з використанням базового функціоналу об’єктно-орієнтованого програмування: класів, об’єктів, методів, наслідування, поліморфізму.
Потрібно розробити легкий в обслуговуванні онлайн-магазин Marvel Comics.
Ресурс має реалізовувати такі функції: перегляд інформації про журнали, інформація про видавництво, зручна навігація, оформлення заявок купівлі. Також необхідно провести тестування даного сервісу на наявність помилок, безпечність та коректність роботи. Розроблене програмне забезпечення є мультиплатформовим та працює незалежно від ОС.
Автоматизована система має дозволяти адміністратору вносити або змінювати інформацію про товари. Усі віконні форми та наявні елементи у них повинні чітко працювати без будь-яких помилок. Для користування ресурсом необхідно також розробити базу даних для внесення інформації про журнали та видавництва.
Також, для виконання поставленого завдання необхідно, побудувати
UML-діаграми, які включатимуть основні модулі, додати функції, властивості та методи до кожного класу, поступово під час розробки розширювати можливості програми та тестувати її.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
13 08-22.КП.ООП.20.19.177.ПЗ
2 ОБ’ЄКТНО ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ РОЗРОБКИ ВЕБ-
САЙТІВ ДЛЯ ОНЛАЙН-МАГАЗИНІВ MARVEL COMICS
2.1 Універсальна мова моделювання UML в процесі проектування
онлайн-магазинів журналів
Модель – це абстракція, яка створюється з метою осмислення чого завгодно перед тим, як його створювати. Так і для створення даного інтернет- магазину, потрібно створити модеаль, в якій вказано, що повинно бути в онлайн-магазині та які дії може робити користувач в ньому.
Абстрагування – це вибіркове вивчення деяких аспектів проблеми.
Основна мета абстрагування полягає в тому, щоб ізолювати аспекти, важливі для деякої цілі, і відкинути всі інші. Розробляючи інтернет-магазин Marvel
Comics журналів, потрібно розглянути окремо кожен аспект, починаючи з моменту коли користувач потрапив на сайт і завершуючи коли він оформив покупку.
UML (англ. Unified Modeling Language) — уніфікована мова моделювання, використовується у парадигмі об'єктно-орієнтованого програмування. Є невід'ємною частиною уніфікованого процесу розробки програмного забезпечення. UML є мовою широкого профілю, це відкритий стандарт, що використовує графічні позначення для створення абстрактної моделі системи, яка називається UML-моделлю [4].
Під час проектування мовою UML створюють зазвичай 3 моделі:
- модель класів, що описує структуру об’єктів системи і їх
індивідуальність по відношенню до інших класів. Ціль моделі класів полягає в тому, що охопити ті важливі концепції, які важливі для нашої системи;
- модель станів, що описує аспекти об’єктів, зв’язані часом та послідовними операціями, тобто події, що пов’язані зі зміною

Змн. Арк.
№ докум.
Підпис Дата
Арк.
14 08-22.КП.ООП.20.19.177.ПЗ
станів. Модель станів охоплює питання управління і посилається на
інші моделі;
- модель взаємодії описує взаємодію між об’єктами, тобто кооперацію об’єктів для забезпечення поведінки їх як єдиного цілого.
Крім основних двох моделей, ще існує модель взаємодії між моделями, адже кожна модель посилається одна на одну, наприклад, модель станів та взаємодії посилаються на модель класів [4].
На основі даних моделей відбувається створення діаграм, щоб наочно продемонструвати роботу системи. Графічний спосіб представлення
інформації є найкращим для сприйняття людиною.
Отже, у написанні програми веб-сайту онлайн-магазину буде використана мова UML, щоб промоделювати роботу проекту та краще зрозуміти ті зв’язки, що виникнуть під час розробки, різних модулів. Також це значно заощадить час та зусилля для проектування.
2.2 Розробка загальної структурної схеми функціонування онлайн-
магазинів Marvel Comics
У програмній реалізації онлайн-ресурсу журнального магазину потрібно реалізувати основні модулі, які б забезпечували основні вимоги до нього, а саме:
1) взаємодію між системою та користувачем сервісу журнального онлайн-магазину;
2) збереження та обмін інформації в базі даних;
3) обробка запитів користувача.
Відповідно до вимог можна зробити висновок, що ресурс журнального онлайн-магазину включатиме 3 модулі.
Основна структурна схема роботи програми показана на рисунку 2.1.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
15 08-22.КП.ООП.20.19.177.ПЗ
Рисунок 2.1 – Основна структурна схема ресурсу онлайн-магазину журналів
2.3 Моделювання онлайн-магазинів для Marvel Comics з
використанням мови UML
Виконаємо розробку даного ресурсу за допомогою мови моделювання
UML, враховуючи попередньо розроблену структурну схему нашої системи.
Модель класів описує структуру об’єктів системи і їх індивідуальність по відношенню до інших класів. Модель класів охоплює важливі концепції для системи.
Відповідно до поставленого завдання система онлайн-магазину журналів міститиме такі класи:
- «Application» – ініціалізація сервера та задання його основних параметрів;
- «Data_base» – ініціалізація API бази MongoDB;
- «Book» міститиме опис об’єкту «Журнал» в базі даних;
- «Author» міститиме опис об’єкту «видавництво» в базі даних;
- «Order» міститиме опис об’єкту «замовлення» в базі даних;
- «BookListHeadler» – рендер html-сторінки, повертає словник усіх журналів з бази даних, повертає словник усіх журналів з бази даних;

Змн. Арк.
№ докум.
Підпис Дата
Арк.
16 08-22.КП.ООП.20.19.177.ПЗ
- «SearchBookHeandler» – зчитування параметрів html сторінки, повертає зображення із бази в байт-код, упаковуває об’єкт в словник;
- «ContactHeandler» – зчитування параметрів та рендер html- сторінки.
- «AboutHeandler» – рендер html-сторінки.
- «OrderHeandler» – зчитування параметрів рендер html-сторінки, зчитування параметрів замовлення, збереження замовлення в базі даних, отримання журналу із бази.
На рисунку 2.2 представлена UML-діаграма класів системи автоматизації роботи інтернет-магазину Marvel Comics.
Рисунок 2.2 – UML-діаграма класів
Асоціація показує, що об'єкти одного класу пов'язані з об'єктами
іншого класу. Якщо між двома класами визначена асоціація, то можна переміщатися від об'єктів одного класу до об'єктів іншого. Цілком припустимі випадки, коли обидва кінці асоціації відносяться до одного і того ж класу. Це означає, що з об'єктом деякого класу дозволено зв'язати інші

Змн. Арк.
№ докум.
Підпис Дата
Арк.
17 08-22.КП.ООП.20.19.177.ПЗ
об'єкти з того ж класу. Асоціація, що зв'язує два класи, називається бінарною.
Можна, хоча це рідко буває необхідним, створювати асоціації, що зв'язують відразу кілька класів; вони називаються n-арними. Графічно асоціація зображується у вигляді лінії, що з'єднує клас сам з собою або з іншими класами.
Асоціації може бути присвоєно ім'я, яке описує природу відносини. Ім'я буде особливо корисним, якщо між одними і тими ж класами існує кілька різних асоціацій. Клас, що бере участь в асоціації, грає в ній деяку роль. По суті, це "обличчя", яким клас, що знаходиться на одній стороні асоціації, звернений до класу з іншого її боку. На рисунку 2.3 відображена UML- діаграма асоціацій системи автоматизації роботи інтернет-магазину.
Рисунок 2.3 – UML-діаграма асоціацій
Система автоматизації роботи інтернет-магазину Marvel Comics матиме
2 стани: стан діяльності (активний) та стан паузи (пасивний). Взаємодія даних станів показана на рисунку 2.4. Якщо даний стан активний, то виконуються дії, а якщо стан був змінений на пасивний, то очікується зміна

Змн. Арк.
№ докум.
Підпис Дата
Арк.
18 08-22.КП.ООП.20.19.177.ПЗ
стану. При цьому вихід з програми виконується у стані паузи, але припинення роботи програми можливе і в активному стані.
Рисунок 2.4 – UML-діаграма станів
2.4
Розробка алгоритмів функціонування онлайн-магазинів
журналів
При побудові алгоритму системи онлайн-магазинів Marvel Comics використовувалась така ідея:
- завдання розподілялось на кілька підзадач;
- кожна підзадача вирішувалась окремо;
- рішення підзадач поєднувалось.
Для зручного користування програмою необхідно розуміти алгоритм її роботи. Для того, щоб побачити список журналів, користувачу треба на головному меню перейти за посиланням. Після натиснення кнопки, відкриється нова html-сторінка, на якій користувач може переглянути
інформацію, що його цікавить або знайти інший.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
19 08-22.КП.ООП.20.19.177.ПЗ
Якщо користувач хоче купити журнал, йому необхідно натиснути кнопку «Buy». Після натиснення кнопки відкриється сторінка «Order book».
У цьому вікні потрібно ввести інформацію про себе та натиснути кнопку
«Submit». Якщо інформація коректна, замовлення буде додано до списку замовлень в базі даних, в протилежному випадку, користувач побачить повідомлення про некоректність даних.
Для завершення роботи з програмою потрібно закрити web-сторінку.
Схема алгоритму роботи інтернет-магазину журналів наведена на рисунку 2.5.
Рисунок 2.5 – Основна схема функціонування системи

Змн. Арк.
№ докум.
Підпис Дата
Арк.
20 08-22.КП.ООП.20.19.177.ПЗ
2.5 Розробка алгоритмів функціонування основних модулів
онлайн-магазинів Marvel Comics
Для побудови системи онлайн-магазинів Marvel Comics, розділимо її на декілька частин і прорахуємо задачі для кожної з цих частин.
Для того, щоб додати нове замовлення в систему необхідно на сторінці журналу натиснути кнопку «Buy». Після натиснення кнопки відкриється сторінка «Order book». У цьому вікні потрібно ввести інформацію про себе та натиснути кнопку «Submit», тоді замовлення буде внесено в базу даних.
Алгоритм вирішення цієї задачі наведений на рисунку 2.6.
Рисунок 2.6 – Додавання нового замовлення в систему

Змн. Арк.
№ докум.
Підпис Дата
Арк.
21 08-22.КП.ООП.20.19.177.ПЗ
Для того, щоб відобразити інформацію про книгу користувач може перейти за посиланням типу /book/(Book). Якщо в базі буде знайдений журнал за відповідним запитом, то інформація про нього буде виведена в вигляді web-сторінки, в іншому разі буде виведена сторінка помилки 404.
Алгоритм вирішення цієї задачі наведений на рисунку 2.7.
Рисунок 2.7 – Пошук журналу в базі даних і її відображення

Змн. Арк.
№ докум.
Підпис Дата
Арк.
22 08-22.КП.ООП.20.19.177.ПЗ
Отже, алгоритми модулів, описані у цьому розділі, виконуються за основною схемою системи онлайн-магазинів Marvel Comics, що виконує взаємодію між ними.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
23 08-22.КП.ООП.20.19.177.ПЗ
3 РЕАЛІЗАЦІЯ ОНЛАЙН-МАГАЗИНУ MARVEL COMICS
3.1 Обґрунтування вибору мови програмування
Мова програмування система позначень для опису алгоритмів і структур даних, певна штучна формальна система, засобами якої можна висловлювати алгоритми. Мова програмування визначає набір лексичних, синтаксичних та семантичних правил, які задають зовнішній вигляд програми і дії, які виконує виконавець ( комп'ютер ) під її управлінням. [5].
Перехід від мовних конструкцій до машинних команд здійснює транслятор. Одна мова програмування може бути представлена різними реалізаціями, тобто зберігаються основні принципи й ідеї мови, розробляються зовсім різні транслятори, у синтаксисі допускаються деякі відмінності [6].
Програма ресурсу інтернет-магазину Marvel Comics написана мовою програмування Python 3.
Python — інтерпретована об'єктно-орієнтована мова програмування високого рівня зі строгою динамічною типізацією. Розроблена в 1990 році
Гвідо ван Россумом. Структури даних високого рівня разом із динамічною семантикою та динамічним зв'язуванням роблять її привабливою для швидкої розробки програм, а також як засіб поєднування наявних компонентів. Python підтримує модулі та пакети модулів, що сприяє модульності та повторному використанню коду. Інтерпретатор Python та стандартні бібліотеки доступні як у скомпільованій, так і у вихідній формі на всіх основних платформах. В мові програмування Python підтримується кілька парадигм програмування, зокрема: об'єктно-орієнтована, процедурна, функціональна та аспектно- орієнтована. [7].

Змн. Арк.
№ докум.
Підпис Дата
Арк.
24 08-22.КП.ООП.20.19.177.ПЗ
Порівняльна характеристика мов програмування Python 3, C#, і Java наведена у таблиці 3.1.
Таблиця 3.1 – порівняльна характеристика мов програмування
Мова програмування
Imperative ООП
Functional
Procedural
Generic
Reflective
Python 3
+
+
+
+
-
+
С#
+
+
+
-
+
+
Java
+
+
-
-
+
+
Проаналізувавши ці мови програмування можна зробити висновок, що для реалізації онлайн-магазину Marvel Comics можна обрати Python 3, адже ця мова краще реалізовує ООП, яке знадобиться при реалізації програми, а також вона є більш зрозумілою та легшою у використанні.
3.2 Основні оператори мови програмування Python 3
Більшість інструкцій (логічні рядки) у програмі будуть містять вирази.
Вираз можна розділити на оператори(дії) і операнди(сталі чи змінні, над якими виконуються дії).
Оператори функціонально призначені робити щось(виконувати дії над чимось) та представлені символами такими як + або спеціальними ключовими словами. Операторам потрібні якісь дані для того, щоб мати можливість над чимось працювати. Такі дані називаються операндами.
Типи операторів мови програмування Python 3 наведені в таблиці 3.2.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
25 08-22.КП.ООП.20.19.177.ПЗ
Таблиця 3.2 – Типи операторів Python 3
Категорія
Опис
Оператори виразів
Оператори виразів, обчислюють значення виразу та зберігають його в змінній. a = -a * x * x / (2 * i - 1) / (2 * i); sum += a;
Оператори вибору
Оператори вибору дозволяють розгалуження коду, в залежності від однієї або кількох умов;
Оператори ітерацій
Оператори
ітерацій дозволяють перегляд колекцій або повторення одного і того ж набору операторів до виконання заданої умови. for, in, while;
Оператори переходу
Оператори переходу виконують передачу керування іншому розділу коду break, continue, default, return, yield;
Оператори обробки виключень
Оператори обробки виключень дозволяють акуратно відновитися після виключних ситуацій, що виникають пі час виконання.
Try-except-finally;
Оператор await
Оператор для керування в асинхронних методах;

Змн. Арк.
№ докум.
Підпис Дата
Арк.
26 08-22.КП.ООП.20.19.177.ПЗ
3.3 Особливості середовища Visual Studio
Для розробки даної системи використовувалося середовище розробки
Microsoft Visual Studio 2017. Microsoft Visual Studio — серія продуктів фірми
Майкрософт, які включають інтегроване середовище розробки програмного забезпечення та ряд інших інструментальних засобів. Ці продукти дозволяють розробляти як консольні програми, так і програми з графічним
інтерфейсом, в тому числі з підтримкою технології Windows Forms, а також веб-сайти, веб-застосунки, веб-служби як в рідному, так і в керованому кодах для всіх платформ, що підтримуються Microsoft Windows, Windows Mobile,
Windows Phone, Windows CE, .NET Framework, .NET Compact Framework та
Microsoft Silverlight [8].
Середовище Visual Studio містить зручні засоби розробки Windows- застосувань, що виконують замість програміста рутинну роботу - створення шаблонів застосувань і форм, заготовок обробників подій, організацію циклу обробки повідомлень і т. д.
Порівняння середовищ розробки наведено у таблиці 3.3.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
27 08-22.КП.ООП.20.19.177.ПЗ
Таблиця 3.3 – Порівняння сердовищ розробки на Visual Studio
Середовище розробки
Плюси
Мінуси
Visual Studio
Офіційна. Мова програмування і середовище розробки розроблене
Microsoft; безкоштовна. Версії «Community edition»
зазвичай достатньо для користувачів; функціональна. Є багато плагінів, з допомогою яких можна розшити функціональність; підтримує платформи .Net;
корпоративність
Баги при переходах з тріал-версії;
складність. Багато доступних функцій сховано в розділах підменю.
Eclipse
Велика кількість плагінів; висока швидкість роботи компілятора; кастомізація. Завдяки плагінам і налаштуванням можна персоналізувати Eclipse; безкоштовність; висока функціональність.
Складність; відсутність гарантій надійності.
Visual
Studio
Code
Кросплатформність; безкоштовність; не вимагає багато ресурсів.
Низька функціональність; відсутність гарантій надійності.
PyCharm
Мультиплатформність; кастомізація;
є безкоштовна версія.
Обмежена функціональність.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
28 08-22.КП.ООП.20.19.177.ПЗ
Для розробки ресурсу онлайн-магазину
Marvel
Comics використовувалось середовище Visual Studio, оскільки воно поєднує і багатофункціональність, і доступність, можливість будувати UML-діаграми та гарантує безпеку коду.
3.4 Програмна реалізація системи книжних онлайн-магазинів
Онлайн-магазин Marvel Comics, був створений з метою зручності замовлення книг, різного виробництва, з часом їхня база буде все поповнюватись і користувач зможе легко придбати будь-яку книгу. Це буде впершу чергу набагато швидше та комфортніше, адже покупець зможе її замовити не виходивши з дому.
Програмна реалізація ―Онлайн-магазину Marvel Comics‖ містить декілька основних пакетів та модулів, які в свою чергу забезпечують функціювання системи. models – пакет, який відповідає за взаємодію із базою даних і опису об’єктів у ній. З’єднання з базою даних, є дуже важливим етапом розробки, тому як саме там будуть зберігатися дані. З допомогою класів, ми робимо запити в базу даних, по яких можемо отримати дані, додати, видалити та редагувати. клас Book – клаc, який відповідає за отримання даних відповідно до якої ми будемо відображати інформацію про товар. Даний клас приймає на вхід певні атрибути, такі як: title, author, description, published, genre, publishing_date, ing, rating, price клас Order – клас, який активно взаємодіє з базою даних, а саме - робить запис в базу даних. Запис в базу відбувається п певним вказаним атрибутам, там як: cash, first_name, second_name, email, phone, address. Ці атрибути ми заповнює та робимо запис до бази, під час створення замовлення.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
29 08-22.КП.ООП.20.19.177.ПЗ
Клас SearchBook – клас, який робить фільтрацію по списку усього товару, по певним атрибутам. Наприклад по назві товару, чим сформованішу назву ми введемо, тим точніший результат буде.
Клас Author – клас, який виводить дані про автора того чи іншого журналу, якому відповідають певні критерії, такі як: name – де вказуємо ПІБ автора born – рік народження description – опис автора handlers – пакет, який відповідає за обробку http-запитів ти виведення web-сторінок. Даний пакет дає змогу результат нашої розробки відобразити в одному із браузерів, з допомогою http-запитів
Головними класом програми є Apllication, тому як саме це клас задає основні параметри сервера.
Отже, програма містить 2 основних пакетити клас, кожен з яких має свої функції та забезпечує повноцінну роботу системи онлайн-магазинів
Marvel Comics.
3.5 Тестування
QA тестування сайту (Quality Assurance) - це перевірка роботи системних процесів на відповідність умов, які забезпечують якість роботи і програмного продукту. Протестуємо даний інтернет-магазин Marvel Comics, для перевірки коректності роботи всіх поставлених задач.
Тест 1
Мета: перевірка роботи сервера і бази даних.
Тестування: запустити сервер, ввівши команду в консоль python server_start.py.
Коректний результат: сервер запускається і виводить інформацію про хост.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
30 08-22.КП.ООП.20.19.177.ПЗ
Рисунок 3.1 – Запуск сервера
Тестування: перейти за посиланням localhost:8000/lib.
Коректний результат: відкриється список усіх журналів.
Рисунок 3.2 – Перехід за посиланням localhost:8000/lib
Тест 2
Тестування: через пошук знайти будь який журнал.
Коректний результат: відкриється web-сторінка журналу за запитом.
Рисунок 3.3 – Пошук журналу

Змн. Арк.
№ докум.
Підпис Дата
Арк.
31 08-22.КП.ООП.20.19.177.ПЗ
Тест 3
Тестування: перейти на сторінку журналу
Коректний результат: відображення web-сторінки з інформацією про журнал
Рисунок 3.4 – Web-сторінка з інформацією про журнал
Тест 4
Мета: перевірка роботи функції оформлення замовлення.
Тестування: оформити замовлення за допомогою кнопки «Buy».
Коректний результат: відображення web-сторінки про успішне оформлення замовлення.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
32 08-22.КП.ООП.20.19.177.ПЗ
Рисунок 3.5 – Натиснення посилання на форму
Рисунок 3.6 – Заповнення форми

Змн. Арк.
№ докум.
Підпис Дата
Арк.
33 08-22.КП.ООП.20.19.177.ПЗ
Рисунок 3.7 – Успішне оформлення замовлення

Змн. Арк.
№ докум.
Підпис Дата
Арк.
34 08-22.КП.ООП.20.19.177.ПЗ
ВИСНОВКИ
В даному курсовому проекті було розроблено сайт онлайн-магазину
Marvel Comics за допомогою об’єктно-орієнтованої мови програмування
Python 3.
У першому розділі було досліджено основні теоретичні відомості у даній предметній області, були проаналізовані уже існуючі рішення.
У другому розділі було проведено аналіз програмної системи та її проектування. Було наведені основні теоретичні відомості про мову моделювання UML, а також було використано основні її можливості при проектування даної програми. Було розроблено основну структурну схему функціонування програми.
У третьому розділі було проаналізовано мови програмування та середовище розробки. Було виконано безпосереднє програмування за допомогою ООП, описано програмну реалізацію системи. Також було виконано тестування системи на коректність роботи. У результаті тестів виявлено, що програма працює коректно.
Отже, під час виконання роботи було досягнуто поставленої задачі, а саме написання сайту онлайн-магазину Marvel Comics.

Змн. Арк.
№ докум.
Підпис Дата
Арк.
35 08-22.КП.ООП.20.19.177.ПЗ
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Організація і технологія роботи Internet-магазину [Электронный ресурс]. - Режим доступу:
http://webstudio2u.net/ua/webdesign/130-online- shop.html.
2.
Про нас
[Электронный ресурс].
Режим доступу: https://lavkababuin.com/delivery/.
3.
Про нас
[Электронный ресурс].
Режим доступу: https://www.readellion.com/.
4. UML 2.0. Объектно-ориентированное моделирование и разроботка.
2-е изд. – СПб.:Питер, 2007. – 544с
5. Николай Прохоренок. Python 3 и. PyQt. Разработка припожений.
Санкт-Петербург. « БХВ-Петербург», 2012. – 24с
6. UML 2.0. Объектно-ориентированное моделирование и разроботка.
2-е изд. – СПб.:Питер, 2007. – 544с
7. Подоба Віталій У яких випадках мова програмування Python є правильним вибором? [Електронний ресурс] / Віталій Подоба. – Режим
8. Microsoft What's New in Visual Studio 2015 [Електронний ресурс] /
Microsoft.
-
Режим доступу: https://msdn.microsoft.com/en- us/library/bb386063.a

ДОДАТКИ

ДОДАТОК А
ЛІСТИНГ ПРОГРАМНОЇ РЕАЛІЗАЦІЇ ОСНОВНИХ МОДУЛІВ
САЙТУ ОНЛАЙН-МАГАЗИНУ MARVEL COMICS
ServerStart.py from tornado import httpserver, ioloop from app import Application import sys import os if __name__ == "__main__": os.system('cls') http_server = httpserver.HTTPServer(Application()) try: port = int(sys.argv[1]) except Exception: port = 8000 http_server.listen(port, address='0.0.0.0') print(f'server listen on: localhost:{ port }') ioloop.IOLoop.instance().start()
App.py import tornado.web from handlers.book_list import BookListHeadler, SearchBookHeandler from handlers.book_page import BookPageHeadler from handlers.author_page import AuthorPageHeadler from handlers.about import AboutHeandler from handlers.contact_page import ContactHeandler from handlers.order_page import OrderHeandler class Application(tornado.web.Application): def __init__(self): handlers = [
(r'/lib', BookListHeadler),
(r'/search', SearchBookHeandler),
(r'/book/([A-Za-z0-9-:,]+)', BookPageHeadler),
(r'/author/([A-Za-z0-9-]+)', AuthorPageHeadler),
(r'/purchase', OrderHeandler),
(r'/about', AboutHeandler),
(r'/contact', ContactHeandler),
] settings = {
'template_path': 'templates',
'static_path': 'static',
# 'ui_modules': {'Result': SolutionModule},
'debug': True
} tornado.web.Application.__init__(self, handlers, **settings)

Authors.py from mongoengine import Document, StringField, DateTimeField, IntField, ImageField, FileField,
FloatField, DictField class Author(Document): name = DictField() born = DictField() description = StringField() img = FileField() if __name__ == '__main__': a = Author({
'first': 'Isaac',
'second': 'Asimov'},
{
'day': 2,
'month': 6,
'year': 1920
}, r'C:\Users\sashk\PycharmProjects\Library\static\image\Isaac-Asimov-bw.jpg'
) print(a.name['first'])
Book.py from mongoengine import Document, StringField, DateTimeField, IntField, ImageField, FileField,
FloatField class Book(Document): title = StringField() author = StringField() description = StringField() publisher = StringField() genre = StringField() publishing_date = IntField() img = FileField() rating = FloatField() price = FloatField() if __name__ == '__main__': a = Book('Lord of Rings', 'Tolkien', 'Cool book about ring', 'publisher', 'fantasy', 1968) print(a.author)
DataBase.py import mongoengine as me class Data_base(object): def __init__(self): self.library = me.connect('Library') if __name__ == "__main__": my_db = Data_base() print(my_db.db)

Order.py from mongoengine import Document, StringField, DateTimeField, IntField, ImageField, FileField,
FloatField from datetime import datetime class Order(Document): book = StringField() cash = FloatField() user_name = StringField() user_email = StringField() user_phone = StringField() user_adress = StringField() data = DateTimeField(default=datetime.utcnow())
About.py from tornado.web import RequestHandler class AboutHeandler(RequestHandler): def get(self): print('aobut pageee') self.render("pages/about.html")
AuthorPage.py from tornado.web import RequestHandler from models.data_base import Data_base from models.author import Author from models.book import Book from PIL import Image from io import BytesIO import base64 class AuthorPageHeadler(RequestHandler): def get(self, author): author = self.get_author(author.replace('-', ' ')) if author: print(author['name']) books = self.get_books(author['name']['first'] + " " + author['name']['second']) for i in books: print(i['title']) self.render('pages/author-page.html', author=author, books=books) else: self.write_error(404) def get_author(self, author): db = Data_base().library writer = str() for man in Author.objects(name__first=author.split()[0], name__second=author.split()[-1]): writer = {
'name': man.name,

'born': man.born,
'img': self.get_image(man.img),
'description': man.description
} return writer def get_books(self, author): db = Data_base().library books = list() for book in Book.objects(author=author): books.append({
'title': book.title,
'author': book.author,
'description': book.description,
'publisher': book.publisher,
'ganre': book.genre,
'publishing_date': book.publishing_date,
'image': self.get_image(book.img),
'rating': book.rating
}) return books def get_image(self, image): buffered = BytesIO() if not image: return None img = Image.open(image) img.save(buffered, format="JPEG") return b"data:image/jpeg;base64," + base64.b64encode(buffered.getvalue()
BookList.py class SearchBookHeandler(tornado.web.RequestHandler): def get(self): self.render('pages/books-list.html', def get_books(self, require): db = Data_base().library books = list() for book in Book.objects(title__icontains=require).order_by('-rating'): books.append(self.zip_book(book)) for book in Book.objects(author__icontains=require).order_by('-rating'): books.append(self.zip_book(book)) if books.count(books[-1]) > 1: del books[-1] for book in Book.objects(description__icontains=require).order_by('-rating'): books.append(self.zip_book(book)) if books.count(books[-1]) > 1: del books[-1] return books def zip_book(self, book): return {
'title': book.title,
'author': book.author,

'description': book.description,
'publisher': book.publisher,
'ganre': book.genre,
'publishing_date': book.publishing_date,
'image': self.get_image(book.img),
'rating': book.rating,
'price': book.price
} def get_image(self, image): buffered = BytesIO() if not image: return None img = Image.open(image) img.save(buffered, format="JPEG")
BookPage.py for book in Book.objects(description__icontains=require).order_by('-rating'): books.append(self.zip_book(book)) if books.count(books[-1]) > 1: del books[-1] return books def zip_book(self, book): return {
'title': book.title,
'author': book.author,
'description': book.description,
'publisher': book.publisher,
'ganre': book.genre,
'publishing_date': book.publishing_date,
'image': self.get_image(book.img),
'rating': book.rating,
'price': book.price
} def get_image(self, image): buffered = BytesIO() if not image: return None img = Image.open(image) img.save(buffered, format="JPEG")
ContactPage.py rom tornado.web import RequestHandler class ContactHeandler(RequestHandler): def get(self): self.render("pages/contact.html")
OrderPage.py from tornado.web import RequestHandler from models.data_base import Data_base from models.book import Book from models.order import Order
class OrderHeandler(RequestHandler): def get(self): book = self.get_book(self.get_argument('book').replace('-', ' ')) self.render('pages/order-page.html', book=book) def post(self): self.save_order( self.get_argument('book_title'), self.get_argument('cash'), self.get_argument('first_name'), self.get_argument('second_name'), self.get_argument('email'), self.get_argument('phone'), self.get_argument('adress')
) self.render("pages/order-complete.html") def save_order(self, book, cash, f_name, s_name, email, phone, adress): db = Data_base().library
Order(book, cash, f_name + ' ' + s_name, email, phone, adress).save() def get_book(self, title): db = Data_base().library print(title) for book in Book.objects(title=title): return {
'title': book.title,
'author': book.author,
'description': book.description,
'publisher': book.publisher,
'ganre': book.genre,
'publishing_date': book.publishing_date,
'rating': book.rating,
'price': book.price
}
BookList.html
Result by require "{{ search }}"


  1   2

скачати

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