Файл: Курсовая работа 09. 01. 01 Разработка сетевых приложений 09. 02. 07 Информационные системы и программирование.docx

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2024

Просмотров: 26

Скачиваний: 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

        


            


                

                
    Изменить товара


                


                    ">

                    ">

                    " required>

                    " required>

                    " required>

                    " required>

                    " required>

                    

                    " required>

                    

    Фотография товара



                    

                    

                


            


        


    Рис 4.6 Код update сайта
    Код 7 footer

        


            


                


                      = $menu ?>

                  


            


        






    Рис 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