Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

РАЗРАБОТКА ПРОМО САЙТА ДЛЯ МАГАЗИНА НИЖНЕГО БЕЛЬЯ PSSPWR.RU

Содержание:

Введение

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

В наше время сложно представить крупную компанию без собственного сайта, ведь сайт – визитная карточка и лицо всей фирмы. Первое впечатление о компании у покупателя складывается после посещения Вашего сайта, где он принимает решение о покупке. В связи с чем, разработка и создание промо-сайта компании является важной задачей любой фирмы, что обуславливает актуальность курсовой работы.

Целью данной работы является разработка промо-сайта для онлайн-магазина нижнего белья ручной работы PssPwr.ru

Предмет исследования: промо-сайт.

Объект исследования: разработка промо-сайта.

Задачи: 1. Произвести анализ организационной структуры промо-сайта

2. Выбрать технические и программные средства разработки

3. Произвести декомпозицию бизнес-процессов деятельности организации

4. Спроектировать серверную часть приложения

5. Спроектировать базу данных

6. Разработать структуру сайта

1. Техническое задание и выбор средств реализации

Онлайн-магазин нижнего белья PssPwr занимается созданием белья ручной работы по индивидуальным меркам. Основная целевая аудитория – молодые девушки в возрасте от 16 до 45 лет.

Организационная структура (рисунок 1):

  • Руководитель
  • Бухгалтер (работа с финансовыми документами)
  • Дизайнер (создание нового белья)
  • Швея (исполняет задумки дизайнера, получает заказы и мерки покупателя)
  • Отдел закупок
  • Фотограф (отвечает за подбор моделей и процесс проведения съемок)
  • SMM-отдел (Отвечает за сайт, рекламу и продвижение магазина)

Все отделы находятся в подчинении у Руководителя, так же, отдел закупок -- под контролем дизайнера и швеи.

Организационная структура (рисунок 1):

Главной спецификой работы данного магазина является ручная работа по индивидуальным меркам, в связи с чем продажа готовых изделий исключена. Все заказы отправляются в работу только после согласования размера и деталей белья. Это значит, что сайт носит исключительно информационный характер, а покупка товара происходит непосредственно через мессенжеры и почту.

Так как для хранения учетных записей, а также обновляемой информации, должна использоваться база данных, то необходимо выбрать систему управления базами данных, которая будет использована в работе.

Система управления базами данных - это программное обеспечение, с помощью которого пользователи могут определять, создавать и поддерживать базу данных, а также осуществлять к ней контролируемый доступ.

Системы управления базами данных классифицируются по модели данных [3]:

• Иерархические

• Сетевые

• Объектно-ориентированные

• Реляционные

Больше всего нам подходит реляционная даталогическая модель, а, соответственно, и реляционная СУБД.

Также СУБД подразделяются по способу доступа к базе данных:

• Файл-серверные

(Microsoft Access, Paradox, dBase, FoxPro, Visual FoxPro.) [4]

Файлы данных централизованно располагаются на файл-сервере, а СУБД – на каждой рабочей станции. Доступ СУБД к данным осуществляется через локальную сеть.

Достоинства: низкая нагрузка на процессор файлового сервера. Недостатки: потенциально высокая загрузка локальной сети; затруднённость или невозможность централизованного управления; затруднённость или невозможность обеспечения таких важных характеристик как высокая надёжность, высокая доступность и высокая безопасность. Применяются чаще всего в локальных приложениях, которые используют функции управления БД; в системах с низкой интенсивностью обработки данных и низкими пиковыми нагрузками на БД.

Данная технология считается устаревшей.

• Клиент-серверные:

(Oracle, Firebird, Interbase, IBM DB2, Informix, MS SQL Server, Sybase Adaptive Server Enterprise, PostgreSQL, MySQL, Caché, ЛИНТЕР) [5]

Располагаются на сервере вместе с БД и осуществляют доступ к БД непосредственно, в монопольном режиме.

Достоинства: потенциально более низкая загрузка локальной сети; удобство централизованного управления; удобство обеспечения таких важных характеристик как высокая надёжность, высокая доступность и высокая безопасность.

Недостатки: повышенных требованиях к серверу.

• Встраиваемые:

(OpenEdge, SQLite, BerkeleyDB, Firebird Embedded, Microsoft SQL Server Compact, ЛИНТЕР) [6]

Могут поставляться как составная часть некоторого программного продукта, не требуя процедуры самостоятельной установки, предназначены для локального хранения данных своего приложения, не рассчитана на коллективное использование в сети.

Учитывая необходимость использования базы данных в сети, а также высокие требования к надежности, доступности и безопасности, для решаемой задачи подходят клиент-серверные СУБД.

Из приведенных выше клиент-серверных СУБД была выбрана MySQL, так как:

• является одной из самых быстрых баз данных из имеющихся на современном рынке

• является высокопроизводительной и относительно простой в использовании СУБД

• работает на языке запросов SQL

• количество строк в таблицах может достигать 50 миллионов

• сервер позволяет одновременно подключаться неограниченному количеству пользователей

• возможен и с помощью приложений, поддерживающих ODBC

• предназначена для работы в сети и может быть доступна через Internet

• снабжена развитой системой защиты от несанкционированного доступа

• отлично работает как под управлением самых различных версий UNIX, так и под управлением систем, таких как Windows и OS/2

• имеет ограниченный размер

Также необходимо выбрать, каким образом будет представлена пользователю форма авторизации.

Так как авторизация будет происходить при входе пользователя на сайт, то наиболее логичным является использование языка гипертекстовой разметки HTML с библиотекой стилей CSS и языком программирования PHP [7].

PHP (рекурсивный акроним словосочетания PHP: HypertextPreprocessor) - это распространенный язык программирования общего назначения с открытым исходным кодом. PHP специально сконструирован для веб-разработок и его код может внедряться непосредственно в HTML.PHP отличается от JavaScript тем, что PHP-скрипты выполняются на сервере и генерируют HTML, который посылается клиенту. Если бы у вас на сервере был размещен скрипт, подобный вышеприведенному, клиент получил бы только результат его выполнения, но не смог бы выяснить, какой именно код его произвел. НаPHP можно настроить свой сервер таким образом, чтобы обычные HTML-файлы обрабатывались процессором PHP, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта.PHP крайне прост для освоения, но вместе с тем способен удовлетворить запросы профессиональных программистов.

Язык автоматически поддерживает HTTP Cookies, в соответствии с стандартами Netscape. Это позволяет проводить установку и чтение небольших сегментов данных на стороне клиента. Работа с Cookies организована посредством сеансов (сессий). У сессий есть срок действия (после его истечения, данные удаляются), в сессиях можно хранить и редактировать разные типы данных, в том числе сериализованные - пропущенные через serialize( процесс происходит автоматически ), PHP-объекты.

Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств и дополнительных модулей для разработки веб-приложений[15]. Основные из них:

  • автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;
  • взаимодействие с большим количеством различных систем управления базами данных через дополнительные модули (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и ApacheDerby, Informix, Ovrimos SQL, LotusNotes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, ParadoxFileAccess, MaxDB, Интерфейс PDO), Redis;
  • автоматизированная отправка HTTP-заголовков;
  • работа с HTTP-авторизацией;
  • работа с cookies и сессиями;
  • работа с локальными и удалёнными файлами, сокетами;
  • обработка файлов, загружаемых на сервер;
  • работа с XForms.

2. Описание модулей серверной части программы и их взаимодействие

Серверная часть программы отвечает за взаимодействие клиентской

части программы с базой данных, а также за формирование динамического

содержания страниц сайта.

В структуре серверной части приложения содержатся три основных

модуля (рисунок 2), каждый из которых отвечает за определенную

функциональность системы:

  • модуль управления пользователями отвечает за регистрацию и

авторизацию пользователей,

  • модуль управления данными отвечает за добавление,

редактирование и удаление данных из базы данных,

  • модуль отображения данных отвечает за формирование

динамического содержания страниц.

Рисунок 2

На рисунке 3 представлено дерево вызова программных модулей,используемых в работе серверной части приложения.

Рисунок 3.

3. Описание структуры базы данных и ее функций

Управление и контроль за базой данных на лендинговой странице PSSPWR.ru осуществляется с помощью phpMyAdmin, который идет дополнительным продуктом в комплекте с OpenServer.

Open Server Panel — это портативная серверная платформа и программная среда, созданная специально для веб-разработчиков с учётом их рекомендаций и пожеланий. 

Программный комплекс имеет богатый набор серверного программного обеспечения, удобный, многофункциональный продуманный интерфейс, обладает мощными возможностями по администрированию и настройке компонентов. Платформа широко используется с целью разработки, отладки и тестирования веб-проектов, а так же для предоставления веб-сервисов в локальных сетях. 
C:\Users\MeinHP\Desktop\Курсовой проект (Разработка промо сайта)\10505.png

Рабочее окно OpenServer.

Архитектура расположения каталогов программного комплекса подразумевает под собой чёткое разделение двух различных типов данных: динамических данных пользователя (настройки, временные файлы, логи т.д.) и статичных данных (модули, программы, служебные файлы)

phpMyAdmin — веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. PHPMyAdmin позволяет через браузер и не только осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс.

MySQL — свободная реляционная система управления базами данных. MySQL является решением для малых и средних приложений. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

Множество приложений, такие как MediaWiki, Joomla, WordPress, Asterisk поддерживают таблицы MySQL и нуждаются в них для полноценной работы.

На сегодняшний день PHPMyAdmin широко применяется на практике. Последнее связано с тем, что разработчики интенсивно развивают свой продукт, учитывая все нововведения СУБД MySQL. Подавляющее большинство российских провайдеров использует это приложение в качестве панели управления для того, чтобы предоставить своим клиентам возможность администрирования выделенных им баз данных.[

Приложение распространяется под лицензией GNUGeneralPublicLicense и поэтому многие другие разработчики интегрируют его в свои разработки, например XAMPP, Denwer, AppServ, OpenServer.

4. Описание структуры клиентской части

Клиентская часть приложения делится на три части с разными настройками доступа :

  • гостевая часть (светло серый фон) – данная часть состоит из страницы авторизации и страницы регистрации, которые доступны всем посетителям сайта (зарегистрированным или незарегистрированным),
  • административная часть (темно серый фон) – данная часть состоит из страницы администратора, а также страниц добавления, редактирования и удаления информации, которые доступны только администратору сайта,
  • пользовательская часть – данная часть состоит из страниц сайта, представляющих основную информацию об услугах праздничного агентства, которые доступны только зарегистрированным пользователям

Общая структура клиентской части приложения представлена на рисунке .

4.1. Описание интерфейса «Обычный пользователь»

Интерфейс обычного пользователя состоит из страниц, которые

представляют собой основное содержание сайта магазина нижнего белья:

  • Главная,
  • О нас,
  • Обратная связь,
  • Меню авторизации,
  • Окно регистрации

C:\Users\Елена\Desktop\image.png

4.2. Описание интерфейса «Администратор»

Интерфейс администратора предназначен для управления данными в

базе данных.

На главной странице интерфейса администратора представлены три

ссылки, каждая из которых открывает соответствующую форму:

  • добавление информации в базу данных,
  • редактирование информации в базе данных,
  • удаление информации из базы данных.

C:\Users\Елена\Desktop\db.png

Заключение

В первом разделе дана краткая характеристика организационной

структуры онлайн-магазина нижнего белья ручной работы PssPwr.ru, а также описаны основные бизнес-процессы, при выполнении которых используется сайт.

Обоснован выбор следующих средств разработки:

  • язык запросов – SQL,
  • система управления базами данных – MySQL,
  • язык гипертекстовой разметки – HTML,
  • язык программирования на стороне сервера – PHP.

Во втором разделе разработана структура серверной части приложения,

а также приведены описания основных модулей.

В третьем разделе разработана база данных, которая предназначена для

хранения учетных записей пользователей, а также всей динамической

информации сайта.

В четвертом разделе разработана структура клиентской части

приложения с разделением на интерфейсы администратора и обычного

пользователя.

Таким образом, в процессе выполнения работы были решены все

задачи, поставленные перед началом её выполнения:

1. Произведен анализ организационной структуры промо-сайта

2. Выбраны технические и программные средства разработки

3. Произведена декомпозиция бизнес-процессов деятельности организации

4. Спроектирована серверная часть приложения

5. Спроектирована базу данных

6. Разработана структура сайта

В результате выполнения работы достигнута её основная цель –

разработан промо-сайт онлайн-магазина нижнего белья PssPwr.ru.

Список литературы

  1. Куликов Г.Г. Набатов А.Н. Речкалов А.В. Автоматизированное проектирование информационно-управляющих систем. Системное моделирование предметной области.. — Уфа: Уфимский государственный авиационный технический университет, 1998. — 104 с. — ISBN 5-89611-190-0.
  2. Мейер, Б. Инструменты, алгоритмы и структуры данных / Б. Мейер. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016.
  3. Прохоренок, Н. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера / Н. Прохоренок. - СПб.: БХВ - Петербург., 2010. - 900 с.
  4. Богданов, М.Р. Перспективные языки веб-разработки / М.Р. Богданов. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016
  5. Савельева, Н.В. Язык программирования PHP / Н.В. Савельева. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016
  6. Никсон, Р. Создаем динамические web-сайты с помощью PHP, MySQL и JavaScript / Р. Никсон. - П.: Питер, 2011. - 496 с.
  7. Томсон, Л. Разработка Web-приложений на РНР и MySQL/ Л. Томсон. - М.: ДиаСофтЮП, 2003. - 672 с.
  8. PHPForum [Электронный ресурс] /форум.- Россия, 2003. - Режим доступа: http://phpforum.ru. - Дата доступа: 09.02.2012.
  9. Харрис, Э. PHP/MySQL для начинающих / Э. Харрис. - М.: Кудиц - образ, 2005.
  10. Парк, Д. PHP и MySQL. Библия программиста / Д. Парк, С. Суэринг. - Диалектика, 2010. - 912 с.
  11. Гущин А.Н. Базы данных: учебник. - М.: Директ-Медиа, 2014. - 266с
  12. Дейт К. Дж. Введение в системы баз данных = IntroductiontoDatabaseSystems. — 8-е изд. — М.: «Вильямс», 2006. — 1328 с. — ISBN 0-321-19784-4.
  13. Peter Pin-Shan Chen «The Entity-Relationship Model — Toward a Unified View of Data» (англ.) // ACM Transactions on Database Systems (TODS) : Сб. — Нью-Йорк: ACM, 1976. — Vol. 1. — P. 9-36. — ISSN 0362-5915. — DOI:10.1145/320434.320440.
  14. Когаловский М. Р. Энциклопедия технологий баз данных. — М.: Финансы и статистика, 2002. — 800 с. — ISBN 5-279-02276-4.
  15. Федоренко, Е.В.Базы данных: учебное пособие / Е.В. Федоренко, А.С. Самардак. – М. : Находка, 2016. – 116 с.
  16. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системыбазданных. Полныйкурс = Database Systems: The Complete Book. — Вильямс, 2003. — 1088 с. — ISBN 5-8459-0384-X.
  17. MySQL 5.7 Reference Manual [Электронныйресурс] // Официальныйсайт MySQL URL: https://dev.mysql.com/doc/refman/5.7/en/
  18. Учебное пособие по MySQL [Электронный ресурс] URL:http://www.mysql.ru/docs/man/Tutorial.html
  19. Триггеры в MySQL [Электронный ресурс] URL: https://habrahabr.ru/sandbox/65316/
  20. Date, C. J. Database in Depth. — O'Reilly, 2005. — 240 с. — ISBN 0-596-10012-4.

Приложение

Фрагмент кода модуля управления пользователями, который добавляет в базу данных регистрационные данные нового пользователя:

<?php

$dbc = mysqli_connect('localhost', 'root', '', 'lesson') OR DIE('Ошибка подключения к базе данных'); // Устанавливает новое соединение с сервером MySQL и проверка OR DIE

if(isset($_POST['submit'])){ /*Определяет, была ли установлена переменная значением, отличным от NULL*/

$username = mysqli_real_escape_string($dbc, trim($_POST['username'])); // trim — Удаляет пробелы (или другие символы) из начала и конца строки

$password1 = mysqli_real_escape_string($dbc, trim($_POST['password1'])); // Эта функция используется для создания допустимых в SQL строк,

$password2 = mysqli_real_escape_string($dbc, trim($_POST['password2'])); // которые можно использовать в SQL выражениях. Заданная строка кодируется в экранированную SQL строку, используя текущий набор символов подключения.

if(!empty($username) && !empty($password1) && !empty($password2) && ($password1 == $password2)) {

$query = "SELECT * FROM `signup` WHERE username = '$username'";

$data = mysqli_query($dbc, $query); // Выполняет запрос к базе данных

if(mysqli_num_rows($data) == 0) { // Возвращает количество рядов результата запроса

$query ="INSERT INTO `signup` (username, password) VALUES ('$username', SHA('$password2'))";

mysqli_query($dbc,$query);

echo 'Всёготово, можетеавторизоваться';

mysqli_close($dbc); // Закрывает ранее открытое соединение с базой данных

exit();

}

else {

echo 'Логин уже занят';

}

}

}

?>

Фрагмент кода модуля стиля CSS

a {

text-decoration: none;

color: #302172;

}

ul {

list-style-type: none;

}

body {

font-family: Arial, sans-serif;

font-size: 0.85em;

margin: 0 20%;

}

header {

width: 100%;

height: 400px;

background: url("../images/4.jpg");

position: relative;

margin-bottom: 15px;

}

header ul {

width: 100%;

position: absolute;

bottom: 0;

text-align: center;

}

Фрагмент кода модуля отображения данных, который создает COOKIES файлы на сайте, и проверяет подключение к базе данных:

<?php

$dbc = mysqli_connect('localhost', 'root', '', 'lesson'); // Устанавливает новое соединение с сервером MySQL

if(!isset($_COOKIE['user_id'])) /*Определяет, была ли установлена переменная значением, отличным от NULL*(нажатие на кнопку)*/ {

    if(isset($_POST['submit'])) {

        $user_username = mysqli_real_escape_string($dbc, trim($_POST['username'])); // Эта функция используется для создания допустимых в SQL строк,

        $user_password = mysqli_real_escape_string($dbc, trim($_POST['password'])); // которые можно использовать в SQL выражениях. Заданная строка кодируется в экранированную SQL строку, используя текущий набор символов подключения.

        if(!empty($user_username) && !empty($user_password))/*если оба поля не пустые создаем запрос в базу данных*/ {

            $query = "SELECT `user_id` , `username` FROM `signup` WHERE username = '$user_username' AND password = SHA('$user_password')"; // Secure Hash Algorithm 1 — алгоритмкриптографическогохеширования.

            $data = mysqli_query($dbc,$query); // Выполняет запрос к базе данных (с помощью неё можно сделать всё)

            if(mysqli_num_rows($data) == 1) { // Если нашло хотя бы одну запись, тогда выполняем ->

                $row = mysqli_fetch_assoc($data); // Обрабатывает ряд результата запроса и возвращает ассоциативный массив (Если нашло, то присваевыемровуусернейм и усерайди)

                setcookie('user_id', $row['user_id'], time() + (60*60*24*30)); // Задает cookie, которое будет передано клиенту вместе с другими HTTP-заголовками.

                setcookie('username', $row['username'], time() + (60*60*24*30)); // Возвращает текущую метку системного времени Unix (30 дней будет жить куки)

                $home_url = 'http://' . $_SERVER['HTTP_HOST'];

                header('Location: '. $home_url); // Используется для отправки HTTP-заголовка. После того как скрипт прошел, переходим на главную страницу

            }

            else {

                echo 'Errorpassword';

            }

        }

        else {

            echo 'Авторизуйтесь для входа';

        }

    }

}

<?php

unset($_COOKIE['user_id']); //unset удаляет переменную

unset($_COOKIE['username']);

setcookie('user_id', '', -1, '/');

setcookie('username', '', -1, '/');

$home_url = 'http://' . $_SERVER['HTTP_HOST'];

header('Location: ' . $home_url);

?>

<?php

$dbc = mysqli_connect('localhost', 'root', '', 'lesson') OR DIE('Ошибка подключения к базе данных'); // Устанавливает новое соединение с сервером MySQL и проверка OR DIE

if(isset($_POST['submit'])){ /*Определяет, была ли установлена переменная значением, отличным от NULL. Когд происходит отправка данных формы php - скрипту, информация из этой формы становится доступной ему.*/

$username = mysqli_real_escape_string($dbc, trim($_POST['username'])); // trim — Удаляет пробелы (или другие символы) из начала и конца строки

$password1 = mysqli_real_escape_string($dbc, trim($_POST['password1'])); // Эта функция используется для создания допустимых в SQL строк,

$password2 = mysqli_real_escape_string($dbc, trim($_POST['password2'])); // которые можно использовать в SQL выражениях. Заданная строка кодируется в экранированную SQL строку, используя текущий набор символов подключения.

if(!empty($username) && !empty($password1) && !empty($password2) && ($password1 == $password2)) {

$query = "SELECT * FROM `signup` WHERE username = '$username'";

$data = mysqli_query($dbc, $query); // Выполняет запрос к базе данных

if(mysqli_num_rows($data) == 0) { // Возвращает количество рядов результата запроса

$query ="INSERT INTO `signup` (username, password) VALUES ('$username', SHA('$password2'))";

mysqli_query($dbc,$query);

echo 'Всё готово, можете авторизоваться';

mysqli_close($dbc); // Закрывает ранее открытое соединение с базой данных

exit();

}

else {

echo 'Логин уже занят';

}

}

}

?>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<link href="style/style.css" rel="stylesheet">

</head>

<body>

<header>

<ul>

<li><a href="index.php">Главная</a></li>

<li><a href="about.html">О нас</a></li>

<li><a href="number.php">Обратная связь</a></li>

</ul>

</header>

<content>

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<label for="username">Введите ваш логин:</label>

<input type="text" name="username">

<label for="password">Введите ваш пароль:</label>

<input type="password" name="password1">

<label for="password">Введите пароль еще раз:</label>

<input type="password" name="password2">

<button type="submit" name="submit">Вход</button>

</form>

</content>

<footer class="clear">

<p>Larin M.D. SBI - 312 for Synergy</p>

</footer>

</body>

</html>