курсовая. Курсовая работа 09. 01. 01 Разработка сетевых приложений 09. 02. 07 Информационные системы и программирование
Скачать 1.66 Mb.
|
Департамент профессионального образование Томской области Областное государственное бюджетное профессиональное образовательное учреждение «Северный промышленный колледж» (ОГБПОУ «СПК») Разработка сетевого приложения для автоматизации распознавания изменения природных объектов с борта БПЛА Курсовая работа 09.01.01 «Разработка сетевых приложений» 09.02.07 «Информационные системы и программирование» Группа Д199/1 Руководитель ______Золотарёв Н.О. ___ ___ 2023 г. Студент(ка)______Иваницкий А.И. ___ ___ 2023 г. Оценка_______________ ___ ___ 2023 г. Северск 2023 Областное государственное бюджетное профессиональное образовательное учреждение «Северский промышленный колледж» (ОГБПОУ «СПК»)
ЗАДАНИЕ на курсовой проект
Содержание КР (перечень подлежащих разработке вопросов):
Содержани МДК 09.01 «Проектирование и разработка веб приложений» 2 Введение 5 1 Верстка страниц и создание прототипа сетевого приложения: 6 1.1Разработка структуры сайта и дизайна logo. 6 1.2Верстка header сайта. 6 1.3Верстка content сайта. 6 1.4Верстка footer сайта. 7 2 Программирование сетевого приложения на стороне клиента: 8 2.1 Создание ECMA Script 8 2.2 Работа с фреймворками и библиотеками 9 2.3 Создание анимационных эффектов для content сайта 9 3 Программирование сетевого приложения на стороне сервера 10 3.1 Создание базы данных на стороне сервера 10 3.2 Создание SQL запросов и конструкции 10 3.3 Интегрирование с API 12 Заключение 13 Список литературы 14 Приложение 15 ВведениеАктуальность темы — Рынок беспилотных летательных аппаратов является самым перспективным и стремительно развивающимся сегментом рынка беспилотных систем. Его становление началось с применения беспилотников в военной сфере, но в последнее время активно развивается направление гражданских БПЛА. Перспективы этой технологичной отрасли привлекли в нее большое количество компаний, по большей части мелких, но инновационных. Стремясь к развитию бизнеса, им важно выбрать наиболее эффективную модель коммерциализации, но существование трудностей в оценке эффективности моделей делает данный вопрос особенно актуальным. Глобальный рынок беспилотных летательных аппаратов на протяжении более 10 лет стремительно развивался, и на ближайшие годы прогнозируется продолжение активного роста рынка. Центрами развития рынка БПЛА были и являются на сегодняшний день рынки Северной Америки, Китая и Европы, однако, другие страны также развиваются, но с меньшей скоростью и объёмом. На ближайшее 5 лет тенденции развития планируют сохраниться, и глобальный объём рынка БПЛА вырастет более, чем в 3 раза. Такое быстрое развитие сферы БПЛА связано с активным производством и внедрением дронов в коммерческий и частный сектор жизни общества. Цель курсовой работы — создание сайта «Интернет-магазин Drone Magaz». Задачи: 1) разработка структуры сайта; 2) проектирование сайта; 3) реализация сайта; 4) общие сведения о разрабатываемом веб-интерфейсе; 5) разработка сайта. 1 Верстка страниц и создание прототипа сетевого приложения:Разработка структуры сайта и дизайна logo.Целью проекта является разработка структуры сайта по продаже дронов для пользователей, которые заинтересованы в данном продукте. Для этого были созданы следующие разделы: Публичный раздел: Авторизация, регистрация; Раздел для зарегистрированных пользователей: Главная, корзина, товары; Раздел администрирования: Администратор может редактировать сайт. Чтобы обеспечить администрирование и управление веб-сайтом: Логин: Admin Пароль: Admin Для создания лого используем “Название программы”. Рис 1.1 Логотип сайта Верстка header сайта.Для реализации header создадим файл и пропишем туда ( см. Приложение код 1) Рис 1.2 header сайта Верстка content сайта.Реализация контента будет происходить в разных файлах. Для выбора и фильтрации товара (см Приложение Код 2) После выбора товара пользователь может перейти в корзину (см Приложение Код 3) Добавление товара и категорий реализовано через администратора (см Приложение Код 4) Для просмотра контента сайта (см Приложение Код 5) Для редактирования контента (см Приложение Код 6) Рис 1.3 контент сайта Футера реализуем в отдельном файле (см Приложение Код 7) Рис 1.4 footer 2 Программирование сетевого приложения на стороне клиента:2.1 Создание ECMA ScriptДля сайта будут реализованы скрипты для фильтрации и слайдера Фильтрация (см Приложение Код 8) Рис 2.1 фильтрация контента Слайдер (см Приложение Код 9) Рис 2.2 слайдер контента 2.2 Работа с фреймворками и библиотекамиФреймворки ориентированы на конкретную архитектуру приложения, то есть модель построения модулей и взаимодействий между ними. Yii реализует популярную в веб-разработке архитектуру MVC. Ее название расшифровывается как Model-View-Controller. Так называются три основных компонента архитектуры Yii2 — это компонентный объектно-ориентированный фреймворк для веб-разработки на PHP, реализующий парадигму MVC. Его название расшифровывается как Yes it is. 2.3 Создание анимационных эффектов для content сайтаАнимационный эффект для контента был реализован через скрипт (см Приложение Код 9) 3 Программирование сетевого приложения на стороне сервера3.1 Создание базы данных на стороне сервераРис 3.1 БД сайта 3.2 Создание SQL запросов и конструкцииДля создания SQL запросов необходимо создать таблицы в phpMyAdmin (см Приложение Код 10) Для того, чтобы сайт работал нужна БД с таблицами. Для таблицы categories были реализованы `category_id`, `category` Рис 3.2 таблица categories Для таблицы orders были реализованы `order_id`, `product_id`, `user_id`, `number`, `count``status`, `reason`, `created_at`, `updated_at` Рис 3.3 таблица orders Для таблицы products были реализованы `product_id`, `name`, `price`, `country`, `year`, `model`, `category`, `count`, `path`, `created_at` Рис 3.4 таблица products Для таблицы users были реализованы `user_id`, `name`, `surname`, `patronymic`, `login`, `email`, `password`, `role` Рис 3.5 таблица users 3.3 Интегрирование с APIИнтеграции API – это программные компоненты, которые автоматически обновляют данные между клиентами и серверами. Некоторыми примерами интеграции API являются автоматическая синхронизация данных в облаке из галереи изображений телефона или автоматическая синхронизация времени и даты ноутбуке при смене часового пояса. ЗаключениеРезультатом моей курсовой работы стал готовый сайт интернет-магазина по продаже дронов. В ходе работы я выделил основные задачи сайта и важные особенности целевой аудитории, проанализировал различные возможные решения и выбрал наиболее подходящее в данной ситуации. В дальнейшем разработанный web-сайт можно будет использовать в реальной жизни. Так же возможно расширение списка предоставляемых услуг, акций, новостей. Данный ресурс стабилен в работе и не требует высоких знаний для работы с ним. Список литературы1. Магазин на Yii2. [Электронный ресурс]. – URL: https://tokmakov.msk.ru/blog/item/321 (дата обращения: 14.10.2022 г.). 2. Разработка интернет-магазина на Yii2. Урок №1. Установка Yii2 [Электронный ресурс]. – URL: https://www.youtube.com/watch?v=8GO1891pI_s (дата обращения: 14.10.2022 г.). 3. Видеокурс разработка интернет-магазина на Yii2 [Электронный ресурс]. – URL: https://liblessons.ru/programming/videokurs-razrabotka-internet-magazina-na-yii2/ (дата обращения: 17.10.2022 г.). 4. Интернет магазин с нуля на Yii2. [Электронный ресурс]. – URL: https://pressprog.ru/php/internet-magazin-s-nulya-na-yii2-chast-1/ (дата обращения: 14.10.2022 г.). 5. Квадрокоптеры и дроны. [Электронный ресурс]. – URL: https://www.dns-shop.ru/catalog/23728c1b2c654e77/kvadrokoptery-i-drony/ (дата обращения: 14.10.2022 г.). 6. yii2-cart (модуль корзины с виджетами). [Электронный ресурс]. – URL: https://yiiframework.ru/forum/viewtopic.php?t=36689 (дата обращения: 14.10.2022 г.). 7. Как сделать ajax корзину yii2?. [Электронный ресурс]. – URL: https://qna.habr.com/q/737871 (дата обращения: 22.10.2022 г.). 8. Полное руководство по Yii 2.0. [Электронный ресурс]. – URL: https://www.yiiframework.com/doc/guide/2.0/ru (дата обращения: 14.10.2022 г.). 9. Основы Yii Framework для чайников. [Электронный ресурс]. – URL: https://habr.com/ru/post/575754/ (дата обращения: 14.10.2022 г.). 10. Yii2: Интернет Магазин. Видео 19.1. [Электронный ресурс]. – URL: https://www.youtube.com/watch?v=-_HsS_y-S2E (дата обращения: 29.10.2022 г.). ПриложениеКод 1 header $menu = ' %s '; $m = ''; if(isset($_SESSION["role"])) { $m = ' $m .= ($_SESSION["role"] == "admin") ? ' $m .= ' } else $m = ' '; $menu = sprintf($menu, $m); ?> DOCTYPE html> Nature droneРазрабатываем программы для отслеживания природных объектов с помощью БПЛА= $menu ?> = (isset($_GET["message"])) ? $_GET["message"] : ""; ?> Рис 4.1 Код header сайта Код 2 контент в catalog.php Наши товары
= $data ?> Рис 4.2 Код content сайта Код 3 контент в cart.php Ваша корзина = $products ?> Ваши заказы = $orders ?> Рис 4.3 Код cart сайта Код 4 контент в admin.php Категории Добавить товар Заказы
= $orders ?> Рис 4.4 Код admin сайта Код 5 контент в product.php = $product["name"] ?> " alt=""> Характеристики:Страна: = $product["country"] ?> Год выпуска: = $product["year"] ?> Модель: = $product["model"] ?> Цена: = $product["price"] ?>$if($role == "admin") echo ' Редактировать Удалить '; if($role != "guest") echo ' В корзину '; ?> Рис 4.5 Код product сайта Код 6 контент в update.php Изменить товара Рис 4.6 Код update сайта Код 7 footer Рис 4.7 Код footer сайта Код 8 фильтрация контента // Объект фильтрации let filter = { // Хранилище данных storage: [], // Сторона сортировки sort: false, // Запись товаров в хранилище products: function() { filter.storage = []; document.querySelectorAll("#products .col").forEach(elem => { filter.storage.push({ "image": elem.querySelector("img").src, "name" : elem.querySelector("h3 a").innerHTML, "price": elem.querySelector("p").innerHTML, "product_id": elem.querySelector("input[name=product_id]").value, "year" : elem.querySelector("input[name=year]").value, "category": elem.querySelector("input[name=category]").value, }); }); }, // Запись заказов в хранилище orders: function() { filter.storage = []; document.querySelectorAll("#orders .col").forEach(elem => { let b = elem.querySelectorAll("b"); filter.storage.push({ "name" : elem.querySelector("h2").innerHTML, "fio" : b[0].innerHTML, "status" : b[1].innerHTML, "count" : b[2].innerHTML, "reason" : (reason = elem.querySelector("p.reason")) ? reason.innerHTML : null, "order_id": elem.querySelector("input[name=order_id]").value, "timestamp": elem.querySelector(".text-small").innerHTML, }); }); }, // Фильтрация данных по переданным параметрам filter: function(param, type) { let array = JSON.parse(JSON.stringify(filter.storage)); if(type == "admin") { if(param != "all") array = array.filter(order => order.status == param); return filter.out(array, "orders"); } filter.sort = !filter.sort; switch(type) { case "sort": if(filter.sort) array.sort((a, b) => (a[param] > b[param]) ? 1 : -1); else array.sort((a, b) => (a[param] < b[param]) ? 1 : -1); break; case "filter": category = document.getElementById("category").value; array = array.filter(product => product.category == category); break; } if(param == "all") array = JSON.parse(JSON.stringify(filter.storage)); return filter.out(array, "products"); }, // Вывод отфильтрованных данных out: function(array, type) { let data = ""; // Запись товаров if(type == "products") { array.forEach(product => { data += ` ${product.name}${product.price} `; data += (role == "admin") ? ` Редактировать Удалить data += (role != "guest") ? ` В корзину ` : ''; data += ` }); // Запись заказов } else if(type == "orders") { array.forEach(order => { if(order.status == "Подтверждённый") end = ""; else end = (order.status == "Новый") ? ` Отменить заказ` : ` Причина отмены:${ order.reason } `; data += ` ${ order.name }Заказчик: ${ order.fio } Статус заказа: ${ order.status } Количество товаров: ${ order.count } ${ end } ${ order.timestamp } `; }); } else return; if(!data) data = " Данные отсутствуют";// Вывод записанных данных document.getElementById(type).innerHTML = data; } } Рис 4.8 Код фильтрации сайта Код 9 слайдер контента let slider = { timer: "", n: 0, slide: function() { let width = document.querySelector("#slider .slide").offsetWidth + 20; let count = document.querySelectorAll("#slider .slide").length; count = 3; if(slider.n >= count) slider.n = 0; else if(slider.n < 0) slider.n = count - 1; document.querySelector("#slider .slides").style.left = `-${width * slider.n}px`; clearTimeout(slider.timer); slider.timer = setTimeout(() => slider.slide(++slider.n), 3000); } } slider.slide(slider.n); Рис 4.9 Код слайдера контента Код 10 SQL -- phpMyAdmin SQL Dump -- version 5.1.0 -- https://www.phpmyadmin.net/ -- -- Хост: localhost -- Время создания: Фев 01 2023 г., 11:52 -- Версия сервера: 5.7.24-0ubuntu0.16.04.1 -- Версия PHP: 7.4.18 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- База данных: `ermmpyjt_m3` -- CREATE DATABASE IF NOT EXISTS `ermmpyjt_m3` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `ermmpyjt_m3`; -- -------------------------------------------------------- -- -- Структура таблицы `categories` -- CREATE TABLE `categories` ( `category_id` int(11) NOT NULL, `category` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Дамп данных таблицы `categories` -- INSERT INTO `categories` (`category_id`, `category`) VALUES (1, 'Микро'), (2, 'Мини'), (3, 'Миди'), (4, 'Тяжелые беспилотники'); -- -------------------------------------------------------- -- -- Структура таблицы `orders` -- CREATE TABLE `orders` ( `order_id` int(11) NOT NULL, `product_id` int(11) NOT NULL, `user_id` int(11) NOT NULL, `number` int(11) DEFAULT NULL, `count` int(11) DEFAULT NULL, `status` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `reason` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Дамп данных таблицы `orders` -- INSERT INTO `orders` (`order_id`, `product_id`, `user_id`, `number`, `count`, `status`, `reason`, `created_at`, `updated_at`) VALUES (17, 0, 2, 1387869029, 1, 'Новый', NULL, '2022-02-17 03:15:08', '2022-02-17 03:15:08'); -- -------------------------------------------------------- -- -- Структура таблицы `products` -- CREATE TABLE `products` ( `product_id` int(11) NOT NULL, `name` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `price` int(11) NOT NULL, `country` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `year` int(4) NOT NULL, `model` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `category` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `count` int(11) NOT NULL, `path` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Дамп данных таблицы `products` -- INSERT INTO `products` (`product_id`, `name`, `price`, `country`, `year`, `model`, `category`, `count`, `path`, `created_at`) VALUES (1, 'DJI Agras T16 CE Version', 1619990, 'Китай', 2022, 'Дрон', 'Мини', 0, 'logo/logo.png', '2022-02-15 23:58:58'), (2, 'DJI Mavic 2 Enterprise Advanced', 657400, 'Китай', 2022, 'Дрон', 'Микро', 48, 'logo/logo.png', '2022-02-15 23:58:58'), (3, 'DJI Agras T16 CE Version', 1619990, 'Китай', 2022, 'Дрон', 'Мини', 0, 'logo/logo.png', '2022-02-15 23:58:58'), (4, 'DJI Mavic 2 Enterprise Advanced', 657400, 'Китай', 2022, 'Дрон', 'Микро', 48, 'logo/logo.png', '2022-02-15 23:58:58'), (5, 'DJI Agras T16 CE Version', 1619990, 'Китай', 2022, 'Дрон', 'Мини', 0, 'logo/logo.png', '2022-02-15 23:58:58'), (6, 'DJI Mavic 2 Enterprise Advanced', 657400, 'Китай', 2022, 'Дрон', 'Микро', 48, 'logo/logo.png', '2022-02-15 23:58:58'); -- -------------------------------------------------------- -- -- Структура таблицы `users` -- CREATE TABLE `users` ( `user_id` int(11) NOT NULL, `name` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `surname` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `patronymic` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `login` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `email` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `password` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `role` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Дамп данных таблицы `users` -- INSERT INTO `users` (`user_id`, `name`, `surname`, `patronymic`, `login`, `email`, `password`, `role`) VALUES (1, 'Иван', 'Иванов', 'Иванович', 'admin', '1@1', 'admin11', 'admin'), (2, 'Иван', 'Иванов', 'Иванович', 'user', '3@1', 'user', 'client'); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; Рис 4.10 Код SQL |