Файл: Курсовая работа 09. 01. 01 Разработка сетевых приложений 09. 02. 07 Информационные системы и программирование.docx
Добавлен: 28.03.2024
Просмотров: 27
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1 Верстка страниц и создание прототипа сетевого приложения:
2 Программирование сетевого приложения на стороне клиента:
2.2 Работа с фреймворками и библиотеками
2.3 Создание анимационных эффектов для content сайта
3 Программирование сетевого приложения на стороне сервера
3.1 Создание базы данных на стороне сервера
В дальнейшем разработанный 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