Министерство образования Республики Беларусь
Учреждение образования
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Факультет Компьютерных технологий
Кафедра проектирования информационных компьютерных систем
Дисциплина "Современные технологии проектирования информационных систем"
К защите допустить:
Руководитель курсовой работы _______________ А.В.Михалькевич 01.07.2025 |
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
на тему
БГУИР КР 1-40 05 01-10 № 177 ПЗ
Студент | (подпись студента) |
Курсовая работа представлена на проверку 01.07.2025 ___________________ (подпись студента) |
2025
БГУИР КР 1-40 05 01-10 № 177 ПЗ, гр. 784371
, Интернет-каталог по продаже мобильных устройств, Минск: БГУИР - 2025.
Пояснительная записка 4271584 с., 46 рис., 18 табл.
Ключевые слова:
Предмет Современные технологии проектирования информационных систем, А.В.Михалькевич
-
-
Архитектура интернет-каталога – систематизация информации и навигации по ней с целью помочь посетителям более успешно находить нужные им данные. Хорошо продуманная грамотная архитектура сайта гарантирует, что пользователи потратят меньше времени на поиск нужной информации.
Архитектура интернет-каталога ведётся с учётом наиболее важной информации с точки зрения продвижения товаров/услуг на интернет-рынке. Грамотное распределение приоритетов между разделами и страницами сайта, делает их основными точками входа на сайт, что позволяет потенциальному потребителю быстро найти необходимую ему информацию об искомых товарах/услугах и повышает успешность бизнеса в интернете.
Архитектура интернет-каталогов проста и интуитивно удобна, состоит из клиентской части, программной части и администрирования как показано на рисунке 1.1.
Рисунок 1.1 – Архитектура интернет – магазина
Программная часть архитектуры интернет-каталогов рассматривается как взаимосвязь операционной части и серверной части.
В операционной части рассматривается среда разработки интернет-каталога.
Серверная часть содержит в себе размещение интернет магазина на сайте провайдера, поддерживающие технологии, используемые при создании интернет-каталога.
Интернет-каталоги разрабатываются в среде PHP, либо – Perl, ASP.NET, ColdFusion и Java.
В клиентской части архитектуры разрабатывается максимально удобная и доступная работа потенциального клиента на страницах интернет-каталоги. Разработка интерфейса, доступные и понятные диалоговые окна, удобные системы оплаты и доставки товаров. Немаловажным фактором является обратная связь, позволяющая высказать клиенту свое мнение о том или ином товаре/услуге, о качестве обслуживания и магазина в целом.
Проанализировав работу уже имеющихся интернет-каталогов, делается вывод о том, что обязательно будет реализовано в курсовом проекте.
Витрина магазина оформляется так, чтобы покупатель без труда мог находить интересующий его товар и иметь возможность получить о нём исчерпывающую информацию (описание в виде текста плюс несколько фотографий).
Товары разделяются по группам, обеспечивается возможность поиска товаров по части названия и описания. Для каждого товара предусматривается краткое и полное описание, плюс несколько фотографий.
Для создания интернет-каталога отдаётся предпочтение язык программирования PHP. Это мощная среда для разработки, совместимая со всеми операционными системами и браузерами, не требующая высоких аппаратных средств компьютера, довольно проста в освоении и продолжает развиваться и совершенствоваться. Также он поддерживается подавляющим большинством платных хостингов, что является несомненным плюсом.
Выбор платного хостинга заключается в том, что есть хоть какие-то гарантии, сайт получает имя на доменном уровне, поддерживаются все современные технологии, не будет назойливых рекламных баннеров, не относящихся к тематике сайта, скорость закачки будет заметно выше, обслуживание таких сайтов удобнее, есть возможности для развития, введения новых услуг для привлечения клиентов. Также можно заключить долгосрочный договор, что будет гарантировать бесперебойную работу сайта, его защиту от взлома и вирусов, позволит избежать неприятных сюрпризов вроде прекращения существования данного хостинга.
Проведём проектирование базы данных сайта интернет каталога мобильных устройств.
Проектирование базы данных состоит главным образом в определении элементов данных, которые нужно включить в базу данных, отношения между ними и ограничений на значения данных. Внешнее представление содержит только те сущности, атрибуты и связи предметной области, которые интересны пользователю.
Помимо этого, различные представления могут по-разному отображать одни и те же данные. Разработаем базу данных для автоматизации работы интернет-каталога по управлению реализацией и сбытом товаров, в котором представлены к продаже различные товары (например: ноутбуки, ПК, мобильные телефоны, планшеты).
Для рационального управления интернет-каталогом необходимо контролировать различную поступающую информацию, которую необходимо структурировать и хранить в различных базах данных. Имеющиеся базы данных должны быть взаимосвязаны между собой. Для правильного создания баз данных с такой информацией необходимо определить сущности интернет-каталога.
В соответствии с заданием в курсовом проекте необходимо спроектировать базу данных сайта по управлению реализацией и сбытом товаров. Проанализировав существующие интернет-каталоги, занимающиеся продажей мобильных устройств, определим основные объекты для организации базы данных.
Магазин может закупать товары разных производителей. Один и тот же товар не может выпускать несколько производителей, но разные производители могут выпускать товары одного и того же вида. Информация о клиентах ведётся, для покупки товара нужно заполнить графу контактов и указать количество товара. Если в некий товар был утерян или испорчен, должна быть возможность редактировать количество товара в наличии. Администратор должен иметь возможность просматривать заявки. После каждой заявки от товара должно отниматься определённое количество, для резервации заказанного товара. Если заказ отменён, количество возвращается назад. Администратор должен иметь возможность добавлять, изменять и удалять товар. Таким образом, сущностями исследуемой предметной области следует определить:
Рассмотрим существующие решения сайтов, занимающихся продажей мобильный устройств на примерах, найденных в сети интернет.
Первый существующим решением является белорусский интернет-каталог по продаже мобильных устройств с доменным именем svyaznoy.by, главная страница которого приведена на рисунке 1.1.
Рисунок 1.1 – Главная страница интернет-каталога «Связной»
Интерфейс данного сайта, показанный на рисунке, имеет простой и удобный для пользователя вид, на сайте имеется вся необходимая информация для пользователя, таким образом, на сайте легко осуществляется навигация, и пользователь в пару кликов может узнать необходимую ему информацию и предоставляемые магазином услуги.
Пример отображения продукции сайта приведён на рисунке 1.2.
Рисунок 1.2 – Продукция интернет-каталог «Связной»
Таким образом, пользователь, посетив данный, Web-сайт может с лёгкостью узнать всю необходимую ему информацию, не выходя из дома, а также при необходимости связаться с персоналом данного сайта, так как на сайте указаны контактные данные рабочего персонала.
Следующим примером стал интернет-каталог (сайт) – онлайн-каталог мобильных устройств с доменным именем mobistore.by, главная страница которого приведена на рисунке 1.3.
Рисунок 1.3 – Главная страница интернет-каталоге «МобиСтор»
Данный сайт также представляет из себя простой в использовании ресурс. В этом интернет-каталоге пользователь может узнать необходимую для него информацию. А также пользователь с помощью переходов между страницами может узнать информацию о организации, цены на предоставляемые услуги, контактные данные рабочего персонала данного магазина и многое другое.
Ещё одним примером подобного Web-сайта является сайт для продажи мобильных устройств в Беларуси alloplus.by. На основании просмотра существующих решений можно сделать вывод о том, что сайт данного типа должен быть прост в использовании и полностью понятен в элементах навигации для пользователя, вызывать желание повторного посещения данного сайта, главная страница интернет-каталога alloplus.by приведена на рисунке 1.4.
Рисунок 1.4 – Главная страница интернет-каталога «Алло»
Рассмотрев существующие решения можно прийти к выводу о том, что любой интернет-каталог мобильных устройств в первую очередь должен обладать интуитивно понятным и простым для пользования интерфейсом. Далее необходимо наличие категорий или групп товаров, а также актуальные цены и описание к существующим товарам. Интернет-каталог должен иметь контактную информацию, обратную связь и что также не маловажно, поиск товаров.
Объектом автоматизации является салон связи, который работает с клиентами, предоставляя услуги по продаже средств связи. Основная задача работы салона связи – хранение, сбор, и продажа телефонов клиентам (работникам) салона связи.
Основными задачами салона связи являются:
Работа с клиентами организована следующим образом: у каждого клиента, который использует услуги салона связи, имеется скидочная карта. Клиент поясняет, какой именно телефон ему нужен, после чего идет проверка, имеется ли она в наличии. Если телефон имеется в наличии, то сотрудник оговаривает сроки, в которые телефон может подлежать возврату в салон связи перед его продажей.
Основные нотации концептуального моделирования: нотация IDEF0/IDEF3, нотация ARIS, и нотация UML [1]
Нотация IDEF0 – это нотация, применяемая для моделирования широкого класса систем. Результатом данного моделирования является модель системы, которая состоит из иерархии диаграмм, текста документации, которые связанны друг с другом при помощи перекрестных ссылок [2, c.19]
Нотация ARIS – предполагает построение большого числа диаграмм, для описания динамики и статистики. Данные диаграммы классифицируются по видам, типам, уровням и ракурсам описания [3, c. 6]
Нотация UML – семейство графических нотаций, в основе которого лежит единая метамодель. Нотация UML помогает в описании и проектировании программных систем, в особенности систем, которые построены с применением объектно-ориентированных технологий [4, c. 27]
Осуществим сравнение данных нотаций, и представим результаты сравнения в таблицу 2.1
Таблица 2.1 – Сравнительный анализ нотация
Критерий |
Нотация IDEF0 |
Нотация ARIS |
Нотация UML |
Легкость в изучении и понимании |
Легок в освоении |
Очень сложный в освоении |
Сложный в освоении |
Подход к проектированию |
Функциональный |
Процессный |
Объектно-ориентированный |
Области применения |
Бизнес-процессы, программное обеспечение |
Бизнес-процессы |
Бизнес-процессы, программное обеспечение |
Как видно из таблицы 2.1, наиболее подходящей является нотация IDEF0, поскольку нотации ARIS и UML достаточно сложны в освоении.
В настоящее время существует множество CASE средств, поддерживающих функциональное моделирование в стандарте IDEF0. Однако наиболее популярной, и легкой в понимании является AllFusion Process Modeler (BPwin).
AllFusion Process Modeler – это мощный инструмент моделирования, который создала фирма Computer Associates Technologies, и который применяется для анализа, документирования и реорганизации сложных бизнес-процессов [5].
На данный момент в салоне связи ведется ручной не компьютеризованный учет. Для построения контекстной модели, необходимо определить входные, выходные данные, управляющая информация и механизм.
В данном случае, входной информацией будет: скидочная карта; данные клиента; данные телефонов.
Выходной информацией будет проданные телефоны
Управляющей информацией будет: устав салона связи; и нормативно-справочная информация.
Механизмом управления будет сотрудник.
Построенная контекстная диаграмма показана на рисунке 2.1.
Рисунок 2.1 – Контекстная диаграмма
Декомпозируем контекстную диаграмму – рисунок 2.2.
Рисунок 2.2 – Диаграмма декомпозиции контекстной диаграммы
Как видно из рисунка 2.2, диаграмма декомпозиции состоит из трех процессов: проверка / заведение скидочной карты (рисунок 2.3); проверка наличия телефона (рисунок 2.4); выдача телефона (рисунок 2.5).
Рисунок 2.3 – Диаграмма декомпозиции процесса «Проверка / заведение скидочной карты»
Рисунок 2.4 – Диаграмма декомпозиции процесса «Проверка наличия телефона»
Рисунок 2.5 – Диаграмма декомпозиции процесса «Выдача телефона»
Процесс деятельности салона связи обладает следующими недостатками:
Данные недостатки можно будет решить при помощи разработки автоматизированной информационной системы управления продажами средств связи.
Для формулировки основных требований к внедряемой ИСУ, построим контекстная модель «КАК ДОЛЖНО БЫТЬ, которая показывает будущее предполагаемое состояние предметной области.
Входная и управляющая информация остается такая же, как и в модели «Как есть», однако в механизм управления добавится ИСУ продажами средств связи. А к выходящей информации добавится еще и отчетность по салону связи.
Контекстная модель показана на рисунке 2.6.
Рисунок 2.6 – Контекстная диаграмма
Декомпозиция контекстной диаграммы представлена на рисунке 2.7.
Рисунок 2.7 – Декомпозиция контекстной диаграммы
Из рисунка 2.7 видно, что декомпозиция контекстной диаграммы состоит из следующих процессов: управление личными карточками клиентов (рисунок 2.8); управление ведомостями о телефонах (рисунок 2.9); выдача / прием телефонов (рисунок 2.10); и формирование отчетности (рисунок 2.11).
Рисунок 2.8 – Декомпозиция процесса «Управление личными карточками клиентов»
Рисунок 2.9 – Декомпозиция процесса «Управление ведомостями о телефонах»
Рисунок 2.10 – Декомпозиция процесса «Выдача / прием телефонов»
Рисунок 2.11 – Декомпозиция процесса «Формирование отчетности»
После построения модели «Как должно быть», можно сформулировать требования к новой ИСУ.
Функциональные требования:
Нефункциональные требования:
Спецификация – документ, который точно, полностью и в поддающейся проверке форме определяет требования, устройство, поведение или другие особенности системы, компонента, продукта, результата или услуги, а также процедуры, способные определить, были ли выполнены эти условия.
Спецификация может содержать:
Сценарий использования, вариант использования, прецедент использования (англ. use case) – в разработке программного обеспечения и системном проектировании это описание поведения системы, когда она взаимодействует с кем-то (или чем-то) из внешней среды. Система может отвечать на внешние запросы Актёра (англ. actor) (может применяться термин Актант), может сама выступать инициатором взаимодействия. Другими словами, сценарий использования описывает, «кто» и «что» может сделать с рассматриваемой системой, или что система может сделать с «кем» или «чем». Методика сценариев использования применяется для выявления требований к поведению системы, известных также как пользовательские и функциональные требования.
В системном проектировании сценарии использования применяются на более высоком уровне, чем при разработке программного обеспечения, часто представляя цели заинтересованных лиц или миссии. На стадии анализа требований сценарии использования могут быть преобразованы в ряд детальных требований и задокументированы с помощью диаграмм требований SysML или других подобных механизмов.
Диаграмма прецедентов (диаграмма вариантов использования) в UML – диаграмма, отражающая отношения между актёрами и прецедентами и являющаяся составной частью модели прецедентов, позволяющей описать систему на концептуальном уровне.
Прецедент – возможность моделируемой системы (часть её функциональности), благодаря которой пользователь может получить конкретный, измеримый и нужный ему результат. Прецедент соответствует отдельному сервису системы, определяет один из вариантов её использования и описывает типичный способ взаимодействия пользователя с системой. Варианты использования обычно применяются для спецификации внешних требований к системе.
Диаграмма вариантов использования представлена на рисунке 3.1.
Рисунок 3.1 – Диаграмма вариантов использования
Разработка веб-приложения «Интернет-каталог мобильный устройств» включает в себя следующий функционал:
За поиск товаров по сайту отвечает обработчик, который находится в файле search.php.
<?php
if($_SERVER["REQUEST_METHOD"] == "POST")
{
define('myeshop', true);
include("db_connect.php");
include("../functions/functions.php");
$search = iconv("UTF-8", "cp1251",strtolower(clear_string($_POST['text'])));
$result = mysql_query("SELECT * FROM table_products WHERE title LIKE '%$search%' AND visible = '1'",$link);
If (mysql_num_rows($result) > 0)
{
$result = mysql_query("SELECT * FROM table_products WHERE title LIKE '%$search%' AND visible = '1' LIMIT 10",$link);
$row = mysql_fetch_array($result);
do{
echo '
<li><a href="search.php?q='.$row["title"].'">'.$row["title"].'</a></li>
';
}
while ($row = mysql_fetch_array($result));
}
}
?>
Применение фильтров к товару по цене и производителю выполняют строки кода которые будут представлены в приложении А. Аналогично с сортировкой товара, выбором категории товаров, отображение товаров списком или таблицей, просмотром фото-галереи к товару, добавление товара в корзину, выбор способа доставки товара, оплата товара.
Созданная база данных состоит из девяти таблиц. Структура базы данных отображена на рисунке 4.1. Описание таблиц базы данных приведено в таблице 4.1.
Таблица 4.1 – Состав таблиц базы данных
Имя таблицы |
Описание |
1 buy_products |
Справочник купленных товаров |
2 cart |
Справочник товаров находящихся в корзине |
3 category |
Справочник категорий товаров |
4 news |
Справочник новостей |
5 orders |
Справочник заказов |
6 table_products |
Справочник товаров |
7 reg_user |
Справочник зарегистрированных пользователей |
8 table_reviews |
Справочник отзывов к товарам |
9 uploads_images |
Справочник загруженных изображений к товарам |
Рисунок 4.1 – Структура базы данных
В таблицах 4.2 – 4.10 приведено описание состава таблиц спроектированной базы данных.
Таблица 4.2 – Регистрация пользователей
Ключ (Да/Нет) |
Поле |
Тип |
Значение по умолчанию |
Пустые значения (Да/Нет) |
PK |
id |
число |
Нет |
Нет |
Нет |
login |
строка |
Нет |
Нет |
Нет |
pass |
строка |
Нет |
Нет |
Нет |
surname |
строка |
Нет |
Нет |
Продолжение таблицы 4.2
Нет |
name |
строка |
Нет |
Нет |
Нет |
patronymic |
строка |
Нет |
Нет |
Нет |
|
строка |
Нет |
Нет |
Нет |
phone |
строка |
Нет |
Нет |
Нет |
address |
текст |
Нет |
Нет |
Нет |
datetime |
дата/время |
Нет |
Нет |
Нет |
ip |
строка |
Нет |
Нет |
Таблица 4.3 – Товары
Ключ (Да/Нет) |
Поле |
Тип |
Значение по умолчанию |
Пустые значения (Да/Нет) |
PK |
products_id |
число |
Нет |
Нет |
Нет |
title |
строка |
Нет |
Нет |
Нет |
price |
число |
Нет |
Нет |
Нет |
brand |
строка |
Нет |
Нет |
Нет |
seo_words |
строка |
Нет |
Нет |
Нет |
seo_description |
строка |
Нет |
Нет |
Нет |
mini_description |
строка |
Нет |
Нет |
Нет |
image |
строка |
Нет |
Нет |
Нет |
description |
строка |
Нет |
Нет |
Нет |
mini_features |
строка |
Нет |
Нет |
Нет |
features |
строка |
Нет |
Нет |
Нет |
datetime |
дата/время |
Нет |
Нет |
Нет |
new |
число |
0 |
Нет |
Нет |
leader |
число |
0 |
Нет |
Нет |
sale |
число |
0 |
Нет |
Продолжение таблицы 4.3
Нет |
visible |
число |
0 |
Нет |
Нет |
count |
число |
0 |
Нет |
Нет |
type_tovara |
строка |
Нет |
Нет |
FK |
brand_id |
число |
Нет |
Нет |
Нет |
yes_like |
число |
1 |
Нет |
Таблица 4.4 – Отзывы к товарам
Ключ (Да/Нет) |
Поле |
Тип |
Значение по умолчанию |
Пустые значения (Да/Нет) |
PK |
Reviews_id |
число |
Нет |
Нет |
FK |
Products_id |
число |
Нет |
Нет |
Ключ (Да/Нет) |
Поле |
Тип |
Значение по умолчанию |
Пустые значения (Да/Нет) |
Нет |
name |
строка |
Нет |
Нет |
Нет |
Good_reviews |
текст |
Нет |
Нет |
Нет |
Bad_reviews |
текст |
Нет |
Нет |
Нет |
comment |
текст |
Нет |
Нет |
Нет |
date |
дата/время |
Нет |
Нет |
Нет |
moderat |
число |
Нет |
Нет |
Таблица 4.5 – Загруженные изображения к товарам
Ключ (Да/Нет) |
Поле |
Тип |
Значение по умолчанию |
Пустые значения (Да/Нет) |
PK |
id |
число |
Нет |
Нет |
Продолжение таблицы 4.5
FK |
products_id |
число |
Нет |
Нет |
Нет |
image |
строка |
Нет |
Нет |
Таблица 4.6 – Заказы
Ключ (Да/Нет) |
Поле |
Тип |
Значение по умолчанию |
Пустые значения (Да/Нет) |
PK |
order_id |
число |
Нет |
Нет |
Нет |
order_datetime |
дата/время |
Нет |
Нет |
Нет |
order_confirmed |
строка |
Нет |
Нет |
Нет |
order_dostavka |
строка |
Нет |
Нет |
Нет |
order_pay |
строка |
Нет |
Нет |
Нет |
order_type_pay |
строка |
Нет |
Нет |
Нет |
order_fio |
текст |
Нет |
Нет |
Нет |
order_address |
текст |
Нет |
Нет |
Нет |
order_phone |
строка |
Нет |
Нет |
Нет |
order_note |
текст |
Нет |
Нет |
Нет |
order_email |
строка |
Нет |
Нет |
Таблица 4.7 – Категории товаров
Ключ (Да/Нет) |
Поле |
Тип |
Значение по умолчанию |
Пустые значения (Да/Нет) |
PK |
id |
число |
Нет |
Нет |
Нет |
type |
строка |
Нет |
Нет |
Нет |
brand |
строка |
Нет |
Нет |
Таблица 4.8 – Новости
Ключ (Да/Нет) |
Поле |
Тип |
Значение по умолчанию |
Пустые значения (Да/Нет) |
PK |
id |
число |
Нет |
Нет |
Нет |
title |
строка |
Нет |
Нет |
Нет |
text |
текст |
Нет |
Нет |
Нет |
date |
дата/время |
Нет |
Нет |
Таблица 4.9 – Корзина заказов
Ключ (Да/Нет) |
Поле |
Тип |
Значение по умолчанию |
Пустые значения (Да/Нет) |
PK |
cart_id |
число |
Нет |
Нет |
FK |
cart_id_product |
число |
Нет |
Нет |
Нет |
cart_price |
число |
Нет |
Нет |
Нет |
cart_count |
число |
1 |
Нет |
Нет |
cart_datetime |
дата/время |
Нет |
Нет |
Нет |
cart_ip |
строка |
Нет |
Нет |
Таблица 4.10 – Продажи товаров
Ключ (Да/Нет) |
Поле |
Тип |
Значение по умолчанию |
Пустые значения (Да/Нет) |
PK |
buy_id |
число |
Нет |
Нет |
FK |
buy_id_order |
строка |
Нет |
Нет |
FK |
buy_id_product |
число |
Нет |
Нет |
Продолжение таблицы 4.10
Нет |
buy_count_product |
число |
Нет |
Нет |
В результате была спроектирована база данных для ведения Интернет-каталога мобильных устройств. База данных включает в себя информацию о пользователях, товарах, производителях товаров, отзывах к товарам, загруженному контенту и так далее.
Наиболее распространенным языком разработки сайта является Язык разметки гипертекстовых страниц (HTML – Hypertext Markup Language) представляет собой язык, разработанный специально для создания Web-документов. Он определяет синтаксис и размещение специальных инструкций (тегов), которые не выводятся на экран, но указывают браузеру, как отображать содержимое документа. Он также используется для создания ссылок на другие документы, локальные или сетевые, например, находящиеся в сети Интернет [9, c. 37].
Стандарт HTML и другие стандарты для Web разработаны под руководством консорциума W3C (World Wide Web Consortium). Стандарты, спецификации и проекты новых предложений можно найти на сайте http://www.3w.org/. В настоящее время действует спецификация HTML 4.0, поддержка которой со стороны основных браузеров постоянно растет.
На практике на стандарт HTML большое влияние оказывает наличие тегов, предложенных и поддерживаемых наиболее известными браузерами, такими как Microsoft Internet Explorer и Netscape Navigator. Эти теги в данный момент могут, как входить, так и не входить в состав действующей спецификации HTML.
PHP – язык программирования, используемый на стороне Web-сервера для динамической генерации HTML-страниц. Об этом говорит и расшифровка его названия: PHP – Personal HyperText Processor.
PHP – один из немногих языков программирования, созданных специально для разработки Web-приложений. Поэтому он включает в себя все функции, необходимые именно для работы на Web-сервере, и при этом лишен избыточности, свойственной многим его конкурентам.
Очень приятная особенность PHP – то, что его команды включаются в обычные HTML-страницы с помощью специальных тегов, которые и заставляют PHP-машину выполнять на сервере нужные действия. Программам на PHP не нужны специальные CGI-директории с особыми правами доступа. Более того, на одной страничке можно произвольно чередовать «простой» HTML и PHP-код [3, c. 110].
PHP не зависит от платформы. PHP прекрасно интегрируется во все популярные Web-серверы: Apacce и IIS, Zens и Netscape Enterprise Server, работает под Windows и OS/2, MacOS и практически всеми UNIX-подобными системами. Как следствие – PHP работает практически у всех хостеров, разрешающих собственные выполняемые скрипты.
Замечательная особенность PHP – его интегрированность практически со всеми современными интернет-технологиями. PHP поддерживает большинство современных Web-протоколов: IMAP, FTP, POP, XML, SNMP и другие. PHP прекрасно работает с базами данных. Трудно найти СУБД, поддержка которой не была бы реализована в PHP. MySQL и MS SQL Server, PostgreSQL и Oracle, Sybase и Interbase. Один только перечень баз данных, поддерживаемых PHP, займет, наверное, целый экран [1, c. 321].
PHP включает в себя огромное количество встроенных функций: обработки строк и массивов, работы с файловой системой и с HTTP, электронной почтой, датой и временем, кириллицей и другими национальными алфавитами, и большим количеством встроенных функций. Благодаря им многие алгоритмы, требующие в большинстве языков написания программного кода размером в несколько экранов, реализуются на PHP одной командой (точнее, вызовом одной функции).
Современные тенденции развития языков программирования не обошли стороной и PHP. Средства объектно-ориентированного программирования появились еще в PHP3. А в объектной модели PHP4 в полном объеме реализованы классические понятия объектно-ориентированного программирования: наследование, инкапсуляция и полиморфизм.
Основное отличие от CGI-скриптов, написанных на других языках, типа Perl или C – это то, что в CGI-программах вы сами пишете выводимый HTML-код, а, используя PHP – вы встраиваете свою программу в готовую HTML-страницу, используя открывающий и закрывающий теги.
Отличие PHP от JavaScript, состоит в том, что PHP-скрипт выполняется на сервере, а клиенту передается результат работы, тогда как в JavaScript-код полностью передается на клиентскую машину и только там выполняется.
Диаграмма последовательности (англ. sequence diagram) – диаграмма, на которой для некоторого набора объектов на единой временной оси показан жизненный цикл какого-либо определённого объекта (создание-деятельность-уничтожение некой сущности) и взаимодействие актёров (действующих лиц) ИС в рамках какого-либо определённого прецедента (отправка запросов и получение ответов). Используется в языке UML.
Основными элементами диаграммы последовательности являются обозначения объектов (прямоугольники с названиями объектов), вертикальные «линии жизни» (англ. lifeline), отображающие течение времени, прямоугольники, отражающие деятельность объекта или исполнение им определенной функции (прямоугольники на пунктирной «линии жизни»), и стрелки, показывающие обмен сигналами или сообщениями между объектами.
Диаграмма последовательности представлена на рисунке 5.1.
Рисунок 5.1 – Диаграмма последовательности
Диаграмма компонентов (англ. Component diagram) – элемент языка моделирования UML, статическая структурная диаграмма, которая показывает разбиение программной системы на структурные компоненты и связи (зависимости) между компонентами. В качестве физических компонентов могут выступать файлы, библиотеки, модули, исполняемые файлы, пакеты и т. п.
Диаграмма компонентов представлена на рисунке 5.2.
Рисунок 5.2 – Диаграмма компонентов
Диаграмма развёртывания, Deployment diagram в UML моделирует физическое развертывание артефактов на узлах. Например, чтобы описать веб-сайт диаграмма развертывания должна показывать, какие аппаратные компоненты («узлы») существуют (например, веб-сервер, сервер базы данных, сервер приложения), какие программные компоненты («артефакты») работают на каждом узле (например, веб-приложение, база данных), и как различные части этого комплекса соединяются друг с другом (например, JDBC, REST, RMI).
Диаграмма развертывания представлена на рисунке 5.3.
Рисунок 5.3 – Диаграмма развертывания
В данном разделе будет продемонстрировано моделирование системы с помощью стандарта UML, который использует графические обозначения для создания абстрактной модели системы и предназначен для определения, визуализации, проектирования и документирования в основном программных систем. UML позволяет описать систему практически со всех возможных точек зрения и разные аспекты поведения системы.
Для данной курсовой работы были построены такие диаграммы, как диаграммы вариантов использования, последовательности, состояний, классов, развертывания и компонентов.
Диаграмма вариантов использования состоит из актеров, для которых система производит действие и собственно действия Use Case, которое описывает то, что актер хочет получить от системы. Диаграмма вариантов использования представлена в приложении Б.
Диаграмма состояний предназначена для отображения состояний объектов системы, имеющих сложную модель поведения. Она показывает пространство состояний системы или ее элементов, события, которые влекут переход из одного состояния в другое, действия, которые происходят при изменении состояния. Объекты меняют своё состояние в ответ на происходящие события и стечением времени. Диаграмма состояний представляет состояния объекта и переходы между ними, а также начальное и конечное состояние объекта. Диаграмма состояний представлена в приложении Б и на рисунке 6.1.
Рисунок 6.1 – Диаграмма состояний
Для моделирования взаимодействия объектов во времени в языке UML используются диаграммы последовательностей. Диаграмма последовательности представлена в приложении Б.
Диаграмма классов описывает структуру системы, показывая её классы, их атрибуты и операторы, а также взаимосвязи этих классов. Диаграмма классов представлена в приложении Б.
Диаграмма компонентов показывает разбиение программной системы на структурные компоненты и связи между компонентами. Диаграмма компонентов представлена в приложении Б.
Диаграмма развёртывания предназначена для визуализации элементов и компонентов программы, существующих лишь на этапе ее исполнения. Диаграмма развёртывания представлена в приложении Б.
Перед программной реализацией необходимо определиться с содержимым сайта. Информация, которая должна представляться на странице, должна удовлетворять следующим критериям:
Разработка графического дизайна интернет-каталога сайта:
Лицом сайта является главная страница.
Первым этапом разработки сайта является разработка дизайна. При разработке дизайна необходимо решить некоторые задачи, а именно соответствие сайта стилю предприятия, использование логотипа и цветов предприятия, а также удобство сайта для посетителей [19, c. 200].
Графическое оформление сайта подразумевает выбор цветового оформления, создание статических и динамических элементов, подбор шрифтов и подбор фона.
Оформление для интернет-каталога сайта было выбрано стандартное, то есть в данное оформление не включается разработка оригинальных графических элементов, а используются оригиналы графических элементов, представленные предприятием и подбор подходящего шаблона.
Разрабатываемый дизайн будет соответствовать следующим требованиям:
Моделирование и разработка интернет-каталога сайта:
Этап разработки структуры имеет особое значение, поскольку от него зависит удобство пользования сайтом. На данном этапе разрабатывается документ, который служит исходным материалом для создания сайта: разработки сценария, графической концепции и структуры, программных инструментов, обеспечивающих необходимые функциональные ресурсы, и так далее.
Структура разрабатываемого сайта будет довольно простой и будет иметь все элементы навигации для удобного перемещения пользователя по сайту, структура разрабатываемого сайта приведена на рисунке 6.2.
Рисунок 6.2 – Структура интернет-каталога
Блок-схема алгоритма – графическое изображение алгоритма в виде связанных между собой с помощью стрелок (линий перехода) и блоков – графических символов, каждый из которых соответствует одному шагу алгоритма. Внутри блока дается описание соответствующего действия.
Блок «процесс» применяется для обозначения действия или последовательности действий, изменяющих значение, форму представления или размещения данных. Для улучшения наглядности схемы несколько отдельных блоков обработки можно объединять в один блок. Представление отдельных операций достаточно свободно.
Блок «решение» используется для обозначения переходов управления по условию. В каждом блоке «решение» должны быть указаны вопрос, условие или сравнение, которые он определяет.
Блок «модификация» используется для организации циклических конструкций. (Слово «модификация» означает «видоизменение, преобразование»). Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное условие и шаг изменения значения параметра для каждого повторения.
Блок «предопределенный процесс» используется для указания обращений к вспомогательным алгоритмам, существующим автономно в виде некоторых самостоятельных модулей, и для обращений к библиотечным подпрограммам.
Блок-схема алгоритма веб-приложения представлена на рисунке 6.3.
Рисунок 6.3 – Блок-схема
В фазе анализа и проектирования системы бизнес-логика воплощается в классах и методах классов, в случае использования объектно-ориентированных языков программирования, или процедур и функций, в случае применения процедурных языков.
На жаргоне разработчиков ПО бизнес-логикой также называются программные модули, её реализующие, и уровень системы, на котором эти модули находятся (Business Logic Layer, Domain Logic Layer).
В многоуровневых информационных системах этот уровень взаимодействует с нижележащим уровнем инфраструктурных сервисов (Infrastructure Layer), например, интерфейсом к базе данных или файловой системе (Data-Access Layer, DAL) и вышележащим уровнем сервисов приложения (Application Services Layer), который уже, в свою очередь, взаимодействует с уровнем пользовательского интерфейса (User Interface Layer) или внешними системами.
Для установки системы на рабочем ПК необходимо иметь локальный веб-сервер для Windows (Open Server Panel), спроектированную базу данных и исходный код проекта. Панель Open Server представлена на рисунке 8.1.
Рисунок 8.1 – Панель
Для начала необходимо запустить локальный сервер, после перейти на вкладку «Дополнительно» – «PHPMyAdmin». Перед программистом в окне браузера откроется страница с авторизацией (рисунок 8.2).
Рисунок 8.2 – Авторизация PHPMyAdmin
Далее система перенаправит программиста на главную страницу СУБД для дальнейшего импорта спроектированной базы данных. Главная страница представлена на рисунке 8.3.
Рисунок 8.3 – Главная страница СУБД
С главной страницы программист создает новую базу данных с названием «db_shop» и кодировкой UTF-8. Далее внутри базы нажимает импорт, выбирает файл *.sql спроектированной базы данных и нажимает кнопку «Вперед». Результат импорта данных представлен на рисунке 8.4.
Рисунок 8.4 – Импорт базы данных
Проект с исходным кодом необходимо поместить в корень локального сервера. После в папку «domains». Перезапустить сервер и выбрать вкладку «Мои сайты» где будет отображаться сайт. Результаты данной процедуры представлены на рисунке 8.5.
Рисунок 8.5 – Запуск системы
Перед программистом откроется браузер, взаимодействующий с локальным сервером и страница авторизации, которая была описана в предыдущем разделе.
После запуска исполняемого файла перед пользователем открывается главная страница сайта, главная страница сайта при входе пользователя приведена на рисунке 9.1.
Рисунок 9.1 – Главная страница интернет-каталога мобильных устройств
С главной страницы можно регистрировать нового пользователя, авторизоваться или просмотреть список товаров. Результаты данных процедур представлены на рисунке 9.2 – 9.4.
Рисунок 9.2 – Регистрация пользователя
Рисунок 9.3 – Вход
Рисунок 9.4 – Список товаров
Существующие товары можно сортировать по цене, алфавиту, новинкам и т. д. К товарам можно применять фильтры по цене и производителю. Результаты данных действий представлены на рисунках 9.5 – 9.6.
Рисунок 9.5 – Сортировка товаров
Рисунок 9.6 – Фильтры
В интернет-каталоге доступен поиск товаров, который представлен на рисунке 9.7.
Рисунок 9.7 – Поиск товара
Также на сайте доступна возможность просмотра дополнительной информации к товарам, а именно: описание, характеристика, отзывы. Понравившееся товары можно добавить в корзину. Результаты данных процедур представлены на рисунках 9.8 – 9.10.
Рисунок 9.8 – Описание к товару
Рисунок 9.9 – Отзывы к товару
Рисунок 9.10 – Корзина товаров
Таким образом, был разработка интернет-каталог позволяющий просматривать всю необходимую информацию о товаре. Разработанным веб-приложением предусмотрен поиск товаров по сайту, фильтры, сортировка, подробное описание к товару, отзывы и так далее.
<?php
define('myeshop', true);
include("include/db_connect.php");
include("functions/functions.php");
session_start();
include("include/auth_cookie.php");
$sorting = $_GET["sort"];
switch ($sorting)
{
case 'price-asc';
$sorting = 'price ASC';
$sort_name = 'От дешевых к дорогим';
break;
case 'price-desc';
$sorting = 'price DESC';
$sort_name = 'От дорогих к дешевым';
break;
case 'popular';
$sorting = 'count DESC';
$sort_name = 'Популярное';
break;
case 'news';
$sorting = 'datetime DESC';
$sort_name = 'Новинки';
break;
case 'brand';
$sorting = 'brand';
$sort_name = 'Новинки';
break;
default:
$sorting = 'products_id DESC';
$sort_name = 'Нет сортировки';
break;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="css/reset.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="trackbar/trackbar.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/jcarousellite_1.0.1.js"></script>
<script type="text/javascript" src="js/shop-script.js"></script>
<script type="text/javascript" src="js/jquery.cookie.min.js"></script>
<script type="text/javascript" src="trackbar/jquery.trackbar.js"></script>
<script type="text/javascript" src="js/TextChange.js"></script>
<title>Интернет-Магазин E-MOGILEV</title>
</head>
<body>
<div id="block-body">
<?php
include("include/block-header.php");
?>
<div id="block-right">
<?php
include("include/block-category.php");
include("include/block-parameter.php");
include("include/block-news.php");
?>
</div>
<div id="block-content">
<div id="block-sorting">
<p id="nav-breadcrumbs"><a href="index.php" >Главная страница</a> \ <span>Все товары</span></p>
<ul id="options-list">
<li>Вид: </li>
<li><img id="style-grid" src="/images/icon-grid.png" /></li>
<li><img id="style-list" src="/images/icon-list.png" /></li>
<li>Сортировать:</li>
<li><a id="select-sort"><?php echo $sort_name; ?></a>
<ul id="sorting-list">
<li><a href="index.php?sort=price-asc" >От дешевых к дорогим</a></li>
<li><a href="index.php?sort=price-desc" >От дорогих к дешевым</a></li>
<li><a href="index.php?sort=popular" >Популярное</a></li>
<li><a href="index.php?sort=news" >Новинки</a></li>
<li><a href="index.php?sort=brand" >От А до Я</a></li>
</ul>
</li>
</ul>
</div>
<ul id="block-tovar-grid" >
<?php
$num = 12; // Здесь указываем сколько хотим выводить товаров.
$page = (int)$_GET['page'];
$count = mysql_query("SELECT COUNT(*) FROM table_products WHERE visible = '1'",$link);
$temp = mysql_fetch_array($count);
If ($temp[0] > 0)
{
$tempcount = $temp[0];
// Находим общее число страниц
$total = (($tempcount - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить товары
$start = $page * $num - $num;
$qury_start_num = " LIMIT $start, $num";
}
$result = mysql_query("SELECT * FROM table_products WHERE visible='1' ORDER BY $sorting $qury_start_num ",$link);
if (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
do
{
if ($row["image"] != "" && file_exists("./uploads_images/".$row["image"]))
{
$img_path = './uploads_images/'.$row["image"];
$max_width = 200;
$max_height = 200;
list($width, $height) = getimagesize($img_path);
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);
$width = intval($ratio*$width);
$height = intval($ratio*$height);
}else
{
$img_path = "/images/no-image.png";
$width = 110;
$height = 200;
}
// Количество отзывов
$query_reviews = mysql_query("SELECT * FROM table_reviews WHERE products_id = '{$row["products_id"]}' AND moderat='1'",$link);
$count_reviews = mysql_num_rows($query_reviews);
echo '
<li>
<div class="block-images-grid" >
<img src="'.$img_path.'" width="'.$width.'" height="'.$height.'" />
</div>
<p class="style-title-grid" ><a href="view_content.php?id='.$row["products_id"].'" >'.$row["title"].'</a></p>
<ul class="reviews-and-counts-grid">
<li><img src="/images/eye-icon.png" /><p>'.$row["count"].'</p></li>
<li><img src="/images/comment-icon.png" /><p>'.$count_reviews.'</p></li>
</ul>
<a class="add-cart-style-grid" tid="'.$row["products_id"].'" ></a>
<p class="style-price-grid" ><strong>'.group_numerals($row["price"]).'</strong> руб.</p>
<div class="mini-features" >
'.$row["mini_features"].'
</div>
</li>
';
}
while ($row = mysql_fetch_array($result));
}
?>
</ul>
<ul id="block-tovar-list" >
<?php
$result = mysql_query("SELECT * FROM table_products WHERE visible='1' ORDER BY $sorting $qury_start_num",$link);
if (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
do
{
if ($row["image"] != "" && file_exists("./uploads_images/".$row["image"]))
{
$img_path = './uploads_images/'.$row["image"];
$max_width = 150;
$max_height = 150;
list($width, $height) = getimagesize($img_path);
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);
$width = intval($ratio*$width);
$height = intval($ratio*$height);
}else
{
$img_path = "/images/noimages80x70.png";
$width = 80;
$height = 70;
}
// Количество отзывов
$query_reviews = mysql_query("SELECT * FROM table_reviews WHERE products_id = '{$row["products_id"]}' AND moderat='1'",$link);
$count_reviews = mysql_num_rows($query_reviews);
echo '
<li>
<div class="block-images-list" >
<img src="'.$img_path.'" width="'.$width.'" height="'.$height.'" />
</div>
<ul class="reviews-and-counts-list">
<li><img src="/images/eye-icon.png" /><p>'.$row["count"].'</p></li>
<li><img src="/images/comment-icon.png" /><p>'.$count_reviews.'</p></li>
</ul>
<p class="style-title-list" ><a href="view_content.php?id='.$row["products_id"].'" >'.$row["title"].'</a></p>
<a class="add-cart-style-list" tid="'.$row["products_id"].'" ></a>
<p class="style-price-list" ><strong>'.group_numerals($row["price"]).'</strong> руб.</p>
<div class="style-text-list" >
'.$row["mini_description"].'
</div>
</li>
';
}
while ($row = mysql_fetch_array($result));
}
echo '</ul>';
if ($page != 1){ $pstr_prev = '<li><a class="pstr-prev" href="index.php?page='.($page - 1).'"><</a></li>';}
if ($page != $total) $pstr_next = '<li><a class="pstr-next" href="index.php?page='.($page + 1).'">></a></li>';
// Формируем ссылки со страницами
if($page - 5 > 0) $page5left = '<li><a href="index.php?page='.($page - 5).'">'.($page - 5).'</a></li>';
if($page - 4 > 0) $page4left = '<li><a href="index.php?page='.($page - 4).'">'.($page - 4).'</a></li>';
if($page - 3 > 0) $page3left = '<li><a href="index.php?page='.($page - 3).'">'.($page - 3).'</a></li>';
if($page - 2 > 0) $page2left = '<li><a href="index.php?page='.($page - 2).'">'.($page - 2).'</a></li>';
if($page - 1 > 0) $page1left = '<li><a href="index.php?page='.($page - 1).'">'.($page - 1).'</a></li>';
if($page + 5 <= $total) $page5right = '<li><a href="index.php?page='.($page + 5).'">'.($page + 5).'</a></li>';
if($page + 4 <= $total) $page4right = '<li><a href="index.php?page='.($page + 4).'">'.($page + 4).'</a></li>';
if($page + 3 <= $total) $page3right = '<li><a href="index.php?page='.($page + 3).'">'.($page + 3).'</a></li>';
if($page + 2 <= $total) $page2right = '<li><a href="index.php?page='.($page + 2).'">'.($page + 2).'</a></li>';
if($page + 1 <= $total) $page1right = '<li><a href="index.php?page='.($page + 1).'">'.($page + 1).'</a></li>';
if ($page+5 < $total)
{
$strtotal = '<li><p class="nav-point">...</p></li><li><a href="index.php?page='.$total.'">'.$total.'</a></li>';
}else
{
$strtotal = "";
}
if ($total > 1)
{
echo '
<div class="pstrnav">
<ul>
';
echo $pstr_prev.$page5left.$page4left.$page3left.$page2left.$page1left."<li><a class='pstr-active' href='index.php?page=".$page."'>".$page."</a></li>".$page1right.$page2right.$page3right.$page4right.$page5right.$strtotal.$pstr_next;
echo '
</ul>
</div>
';
}
?>
</div>
<?php
include("include/block-random.php");
include("include/block-footer.php");
?>
</div>
</body>
</html>
<?php
define('myeshop', true);
include("include/db_connect.php");
include("functions/functions.php");
session_start();
include("include/auth_cookie.php");
$go = clear_string($_GET["go"]);
switch ($go) {
case "news":
$query_aystopper= " WHERE visible = '1' AND new = '1'";
$name_aystopper = "Новинки товаров";
break;
case "leaders":
$query_aystopper= " WHERE visible = '1' AND leader = '1'";
$name_aystopper = "Лидеры продаж";
break;
case "sale":
$query_aystopper= " WHERE visible = '1' AND sale = '1'";
$name_aystopper = "Распродажа товаров";
break;
default:
$query_aystopper = "";
break;
}
$sorting = $_GET["sort"];
switch ($sorting)
{
case 'price-asc';
$sorting = 'price ASC';
$sort_name = 'От дешевых к дорогим';
break;
case 'price-desc';
$sorting = 'price DESC';
$sort_name = 'От дорогих к дешевым';
break;
case 'popular';
$sorting = 'count DESC';
$sort_name = 'Популярное';
break;
case 'news';
$sorting = 'datetime DESC';
$sort_name = 'Новинки';
break;
case 'brand';
$sorting = 'brand';
$sort_name = 'Новинки';
break;
default:
$sorting = 'products_id DESC';
$sort_name = 'Нет сортировки';
break;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="css/reset.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="trackbar/trackbar.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/jcarousellite_1.0.1.js"></script>
<script type="text/javascript" src="js/shop-script.js"></script>
<script type="text/javascript" src="js/jquery.cookie.min.js"></script>
<script type="text/javascript" src="trackbar/jquery.trackbar.js"></script>
<script type="text/javascript" src="js/TextChange.js"></script>
<title>Интернет-Магазин E-MOGILEV</title>
</head>
<body>
<div id="block-body">
<?php
include("include/block-header.php");
?>
<div id="block-right">
<?php
include("include/block-category.php");
include("include/block-parameter.php");
include("include/block-news.php");
?>
</div>
<div id="block-content">
<?php
if ($query_aystopper != "")
{
$num = 12; // Здесь указываем сколько хотим выводить товаров.
$page = (int)$_GET['page'];
$count = mysql_query("SELECT COUNT(*) FROM table_products $query_aystopper",$link);
$temp = mysql_fetch_array($count);
If ($temp[0] > 0)
{
$tempcount = $temp[0];
// Находим общее число страниц
$total = (($tempcount - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить товары
$start = $page * $num - $num;
$qury_start_num = " LIMIT $start, $num";
}
If ($temp[0] > 0)
{
?>
<div id="block-sorting">
<p id="nav-breadcrumbs"><a href="index.php" >Главная страница</a> \ <span><?php echo $name_aystopper; ?></span></p>
<ul id="options-list">
<li>Вид: </li>
<li><img id="style-grid" src="/images/icon-grid.png" /></li>
<li><img id="style-list" src="/images/icon-list.png" /></li>
<li>Сортировать:</li>
<li><a id="select-sort"><?php echo $sort_name; ?></a>
<ul id="sorting-list">
<li><a href="view_aystopper.php?go=<?php echo $go; ?>&sort=price-asc" >От дешевых к дорогим</a></li>
<li><a href="view_aystopper.php?go=<?php echo $go; ?>&sort=price-desc" >От дорогих к дешевым</a></li>
<li><a href="view_aystopper.php?go=<?php echo $go; ?>&sort=popular" >Популярное</a></li>
<li><a href="view_aystopper.php?go=<?php echo $go; ?>&sort=news" >Новинки</a></li>
<li><a href="view_aystopper.php?go=<?php echo $go; ?>&sort=brand" >От А до Я</a></li>
</ul>
</li>
</ul>
</div>
<ul id="block-tovar-grid" >
<?php
$result = mysql_query("SELECT * FROM table_products $query_aystopper ORDER BY $sorting $qury_start_num ",$link);
if (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
do
{
if ($row["image"] != "" && file_exists("./uploads_images/".$row["image"]))
{
$img_path = './uploads_images/'.$row["image"];
$max_width = 200;
$max_height = 200;
list($width, $height) = getimagesize($img_path);
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);
$width = intval($ratio*$width);
$height = intval($ratio*$height);
}else
{
$img_path = "/images/no-image.png";
$width = 110;
$height = 200;
}
echo '
<li>
<div class="block-images-grid" >
<img src="'.$img_path.'" width="'.$width.'" height="'.$height.'" />
</div>
<p class="style-title-grid" ><a href="view_content.php?id='.$row["products_id"].'" >'.$row["title"].'</a></p>
<ul class="reviews-and-counts-grid">
<li><img src="/images/eye-icon.png" /><p>0</p></li>
<li><img src="/images/comment-icon.png" /><p>0</p></li>
</ul>
<a class="add-cart-style-grid" ></a>
<p class="style-price-grid" ><strong>'.$row["price"].'</strong> руб.</p>
<div class="mini-features" >
'.$row["mini_features"].'
</div>
</li>
';
}
while ($row = mysql_fetch_array($result));
}
?>
</ul>
<ul id="block-tovar-list" >
<?php
$result = mysql_query("SELECT * FROM table_products $query_aystopper ORDER BY $sorting $qury_start_num",$link);
if (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
do
{
if ($row["image"] != "" && file_exists("./uploads_images/".$row["image"]))
{
$img_path = './uploads_images/'.$row["image"];
$max_width = 150;
$max_height = 150;
list($width, $height) = getimagesize($img_path);
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);
$width = intval($ratio*$width);
$height = intval($ratio*$height);
}else
{
$img_path = "/images/noimages80x70.png";
$width = 80;
$height = 70;
}
echo '
<li>
<div class="block-images-list" >
<img src="'.$img_path.'" width="'.$width.'" height="'.$height.'" />
</div>
<ul class="reviews-and-counts-list">
<li><img src="/images/eye-icon.png" /><p>0</p></li>
<li><img src="/images/comment-icon.png" /><p>0</p></li>
</ul>
<p class="style-title-list" ><a href="view_content.php?id='.$row["products_id"].'" >'.$row["title"].'</a></p>
<a class="add-cart-style-list" ></a>
<p class="style-price-list" ><strong>'.$row["price"].'</strong> руб.</p>
<div class="style-text-list" >
'.$row["mini_description"].'
</div>
</li>
';
}
while ($row = mysql_fetch_array($result));
}
echo '</ul>';
}else
{
echo '<p>Товаров нет!</p>';
}
}else
{
echo '<p>Данная категория не найдена!</p>';
}
if ($page != 1){ $pstr_prev = '<li><a class="pstr-prev" href="view_aystopper.php?go='.$go.'&page='.($page - 1).'"><</a></li>';}
if ($page != $total) $pstr_next = '<li><a class="pstr-next" href="view_aystopper.php?go='.$go.'&page='.($page + 1).'">></a></li>';
// Формируем ссылки со страницами
if($page - 5 > 0) $page5left = '<li><a href="view_aystopper.php?go='.$go.'&page='.($page - 5).'">'.($page - 5).'</a></li>';
if($page - 4 > 0) $page4left = '<li><a href="view_aystopper.php?go='.$go.'&page='.($page - 4).'">'.($page - 4).'</a></li>';
if($page - 3 > 0) $page3left = '<li><a href="view_aystopper.php?go='.$go.'&page='.($page - 3).'">'.($page - 3).'</a></li>';
if($page - 2 > 0) $page2left = '<li><a href="view_aystopper.php?go='.$go.'&page='.($page - 2).'">'.($page - 2).'</a></li>';
if($page - 1 > 0) $page1left = '<li><a href="view_aystopper.php?go='.$go.'&page='.($page - 1).'">'.($page - 1).'</a></li>';
if($page + 5 <= $total) $page5right = '<li><a href="view_aystopper.php?go='.$go.'&page='.($page + 5).'">'.($page + 5).'</a></li>';
if($page + 4 <= $total) $page4right = '<li><a href="view_aystopper.php?go='.$go.'&page='.($page + 4).'">'.($page + 4).'</a></li>';
if($page + 3 <= $total) $page3right = '<li><a href="view_aystopper.php?go='.$go.'&page='.($page + 3).'">'.($page + 3).'</a></li>';
if($page + 2 <= $total) $page2right = '<li><a href="view_aystopper.php?go='.$go.'&page='.($page + 2).'">'.($page + 2).'</a></li>';
if($page + 1 <= $total) $page1right = '<li><a href="view_aystopper.php?go='.$go.'&page='.($page + 1).'">'.($page + 1).'</a></li>';
if ($page+5 < $total)
{
$strtotal = '<li><p class="nav-point">...</p></li><li><a href="view_aystopper.php?go='.$go.'&page='.$total.'">'.$total.'</a></li>';
}else
{
$strtotal = "";
}
if ($total > 1)
{
echo '
<div class="pstrnav">
<ul>
';
echo $pstr_prev.$page5left.$page4left.$page3left.$page2left.$page1left."<li><a class='pstr-active' href='view_aystopper.php?go=".$go."&page=".$page."'>".$page."</a></li>".$page1right.$page2right.$page3right.$page4right.$page5right.$strtotal.$pstr_next;
echo '
</ul>
</div>
';
}
?>
</div>
<?php
include("include/block-footer.php");
?>
</div>
</body>
</html>
<?php
define('myeshop', true);
include("include/db_connect.php");
include("functions/functions.php");
session_start();
include("include/auth_cookie.php");
$cat = clear_string($_GET["cat"]);
$type = clear_string($_GET["type"]);
$sorting = $_GET["sort"];
switch ($sorting)
{
case 'price-asc';
$sorting = 'price ASC';
$sort_name = 'От дешевых к дорогим';
break;
case 'price-desc';
$sorting = 'price DESC';
$sort_name = 'От дорогих к дешевым';
break;
case 'popular';
$sorting = 'count DESC';
$sort_name = 'Популярное';
break;
case 'news';
$sorting = 'datetime DESC';
$sort_name = 'Новинки';
break;
case 'brand';
$sorting = 'brand';
$sort_name = 'Новинки';
break;
default:
$sorting = 'products_id DESC';
$sort_name = 'Нет сортировки';
break;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="css/reset.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="trackbar/trackbar.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/jcarousellite_1.0.1.js"></script>
<script type="text/javascript" src="js/shop-script.js"></script>
<script type="text/javascript" src="js/jquery.cookie.min.js"></script>
<script type="text/javascript" src="trackbar/jquery.trackbar.js"></script>
<script type="text/javascript" src="js/TextChange.js"></script>
<title>Интернет-Магазин E-MOGILEV</title>
</head>
<body>
<div id="block-body">
<?php
include("include/block-header.php");
?>
<div id="block-right">
<?php
include("include/block-category.php");
include("include/block-parameter.php");
include("include/block-news.php");
?>
</div>
<div id="block-content">
<?php
if (!empty($cat) && !empty($type))
{
$querycat = "AND brand='$cat' AND type_tovara='$type'";
$catlink = "cat=$cat&";
}else
{
if (!empty($type))
{
$querycat = "AND type_tovara='$type'";
}else
{
$querycat = "";
}
if (!empty($cat))
{
$catlink = "cat=$cat&";
}else
{
$catlink = "";
}
}
$num = 12; // Здесь указываем сколько хотим выводить товаров.
$page = (int)$_GET['page'];
$count = mysql_query("SELECT COUNT(*) FROM table_products WHERE visible = '1' $querycat",$link);
$temp = mysql_fetch_array($count);
If ($temp[0] > 0)
{
$tempcount = $temp[0];
// Находим общее число страниц
$total = (($tempcount - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить товары
$start = $page * $num - $num;
$qury_start_num = " LIMIT $start, $num";
}
$result = mysql_query("SELECT * FROM table_products WHERE visible='1' $querycat ORDER BY $sorting $qury_start_num",$link);
if (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
echo '
<div id="block-sorting">
<p id="nav-breadcrumbs"><a href="index.php" >Главная страница</a> \ <span>Все товары</span></p>
<ul id="options-list">
<li>Вид: </li>
<li><img id="style-grid" src="/images/icon-grid.png" /></li>
<li><img id="style-list" src="/images/icon-list.png" /></li>
<li>Сортировать:</li>
<li><a id="select-sort">'.$sort_name.'</a>
<ul id="sorting-list">
<li><a href="view_cat.php?'.$catlink.'type='.$type.'&sort=price-asc" >От дешевых к дорогим</a></li>
<li><a href="view_cat.php?'.$catlink.'type='.$type.'&sort=price-desc" >От дорогих к дешевым</a></li>
<li><a href="view_cat.php?'.$catlink.'type='.$type.'&sort=popular" >Популярное</a></li>
<li><a href="view_cat.php?'.$catlink.'type='.$type.'&sort=news" >Новинки</a></li>
<li><a href="view_cat.php?'.$catlink.'type='.$type.'&sort=brand" >От А до Я</a></li>
</ul>
</li>
</ul>
</div>
<ul id="block-tovar-grid" >
';
do
{
if ($row["image"] != "" && file_exists("./uploads_images/".$row["image"]))
{
$img_path = './uploads_images/'.$row["image"];
$max_width = 200;
$max_height = 200;
list($width, $height) = getimagesize($img_path);
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);
$width = intval($ratio*$width);
$height = intval($ratio*$height);
}else
{
$img_path = "/images/no-image.png";
$width = 110;
$height = 200;
}
echo '
<li>
<div class="block-images-grid" >
<img src="'.$img_path.'" width="'.$width.'" height="'.$height.'" />
</div>
<p class="style-title-grid" ><a href="view_content.php?id='.$row["products_id"].'" >'.$row["title"].'</a></p>
<ul class="reviews-and-counts-grid">
<li><img src="/images/eye-icon.png" /><p>0</p></li>
<li><img src="/images/comment-icon.png" /><p>0</p></li>
</ul>
<a class="add-cart-style-grid" ></a>
<p class="style-price-grid" ><strong>'.$row["price"].'</strong> руб.</p>
<div class="mini-features" >
'.$row["mini_features"].'
</div>
</li>
';
}
while ($row = mysql_fetch_array($result));
?>
</ul>
<ul id="block-tovar-list" >
<?php
$result = mysql_query("SELECT * FROM table_products WHERE visible='1' $querycat ORDER BY $sorting $qury_start_num",$link);
if (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
do
{
if ($row["image"] != "" && file_exists("./uploads_images/".$row["image"]))
{
$img_path = './uploads_images/'.$row["image"];
$max_width = 150;
$max_height = 150;
list($width, $height) = getimagesize($img_path);
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);
$width = intval($ratio*$width);
$height = intval($ratio*$height);
}else
{
$img_path = "/images/noimages80x70.png";
$width = 80;
$height = 70;
}
echo '
<li>
<div class="block-images-list" >
<img src="'.$img_path.'" width="'.$width.'" height="'.$height.'" />
</div>
<ul class="reviews-and-counts-list">
<li><img src="/images/eye-icon.png" /><p>0</p></li>
<li><img src="/images/comment-icon.png" /><p>0</p></li>
</ul>
<p class="style-title-list" ><a href="view_content.php?id='.$row["products_id"].'" >'.$row["title"].'</a></p>
<a class="add-cart-style-list" ></a>
<p class="style-price-list" ><strong>'.$row["price"].'</strong> руб.</p>
<div class="style-text-list" >
'.$row["mini_description"].'
</div>
</li>
';
}
while ($row = mysql_fetch_array($result));
}
}else
{
echo '<h3>Категория не доступна или не создана!</3>';
}
echo '</ul>';
if ($page != 1){ $pstr_prev = '<li><a class="pstr-prev" href="view_cat.php?page='.($page - 1).'"><</a></li>';}
if ($page != $total) $pstr_next = '<li><a class="pstr-next" href="view_cat.php?page='.($page + 1).'">></a></li>';
// Формируем ссылки со страницами
if($page - 5 > 0) $page5left = '<li><a href="view_cat.php?page='.($page - 5).'">'.($page - 5).'</a></li>';
if($page - 4 > 0) $page4left = '<li><a href="view_cat.php?page='.($page - 4).'">'.($page - 4).'</a></li>';
if($page - 3 > 0) $page3left = '<li><a href="view_cat.php?page='.($page - 3).'">'.($page - 3).'</a></li>';
if($page - 2 > 0) $page2left = '<li><a href="view_cat.php?page='.($page - 2).'">'.($page - 2).'</a></li>';
if($page - 1 > 0) $page1left = '<li><a href="view_cat.php?page='.($page - 1).'">'.($page - 1).'</a></li>';
if($page + 5 <= $total) $page5right = '<li><a href="view_cat.php?page='.($page + 5).'">'.($page + 5).'</a></li>';
if($page + 4 <= $total) $page4right = '<li><a href="view_cat.php?page='.($page + 4).'">'.($page + 4).'</a></li>';
if($page + 3 <= $total) $page3right = '<li><a href="view_cat.php?page='.($page + 3).'">'.($page + 3).'</a></li>';
if($page + 2 <= $total) $page2right = '<li><a href="view_cat.php?page='.($page + 2).'">'.($page + 2).'</a></li>';
if($page + 1 <= $total) $page1right = '<li><a href="view_cat.php?page='.($page + 1).'">'.($page + 1).'</a></li>';
if ($page+5 < $total)
{
$strtotal = '<li><p class="nav-point">...</p></li><li><a href="view_cat.php?page='.$total.'">'.$total.'</a></li>';
}else
{
$strtotal = "";
}
if ($total > 1)
{
echo '
<div class="pstrnav">
<ul>
';
echo $pstr_prev.$page5left.$page4left.$page3left.$page2left.$page1left."<li><a class='pstr-active' href='view_cat.php?page=".$page."'>".$page."</a></li>".$page1right.$page2right.$page3right.$page4right.$page5right.$strtotal.$pstr_next;
echo '
</ul>
</div>
';
}
?>
</div>
<?php
include("include/block-footer.php");
?>
</div>
</body>
</html>
<?php
define('myeshop', true);
include("include/db_connect.php");
include("functions/functions.php");
session_start();
include("include/auth_cookie.php");
$id = clear_string($_GET["id"]);
$seoquery = mysql_query("SELECT seo_words,seo_description FROM table_products WHERE products_id='$id' AND visible='1'",$link);
If (mysql_num_rows($seoquery) > 0)
{
$resquery = mysql_fetch_array($seoquery);
}
If ($id != $_SESSION['countid'])
{
$querycount = mysql_query("SELECT count FROM table_products WHERE products_id='$id'",$link);
$resultcount = mysql_fetch_array($querycount);
$newcount = $resultcount["count"] + 1;
$update = mysql_query ("UPDATE table_products SET count='$newcount' WHERE products_id='$id'",$link);
}
$_SESSION['countid'] = $id;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="Description" content="<? echo $resquery["seo_description"]; ?>"/>
<meta name="keywords" content="<? echo $resquery["seo_words"]; ?>" />
<link href="css/reset.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="trackbar/trackbar.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/jcarousellite_1.0.1.js"></script>
<script type="text/javascript" src="js/shop-script.js"></script>
<script type="text/javascript" src="js/jquery.cookie.min.js"></script>
<script type="text/javascript" src="trackbar/jquery.trackbar.js"></script>
<script type="text/javascript" src="js/TextChange.js"></script>
<link rel="stylesheet" type="text/css" href="fancybox/jquery.fancybox.css" />
<script type="text/javascript" src="fancybox/jquery.fancybox.js"></script>
<script type="text/javascript" src="js/jTabs.js"></script>
<title>Интернет-Магазин E-MOGILEV</title>
<script type="text/javascript">
$(document).ready(function(){
$("ul.tabs").jTabs({content: ".tabs_content", animate: true, effect:"fade"});
$(".image-modal").fancybox();
$(".send-review").fancybox();
});
</script>
</head>
<body>
<div id="block-body">
<?php
include("include/block-header.php");
?>
<div id="block-right">
<?php
include("include/block-category.php");
include("include/block-parameter.php");
include("include/block-news.php");
?>
</div>
<div id="block-content">
<?php
$result1 = mysql_query("SELECT * FROM table_products WHERE products_id='$id' AND visible='1'",$link);
If (mysql_num_rows($result1) > 0)
{
$row1 = mysql_fetch_array($result1);
do
{
if (strlen($row1["image"]) > 0 && file_exists("./uploads_images/".$row1["image"]))
{
$img_path = './uploads_images/'.$row1["image"];
$max_width = 300;
$max_height = 300;
list($width, $height) = getimagesize($img_path);
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);
$width = intval($ratio*$width);
$height = intval($ratio*$height);
}else
{
$img_path = "/images/no-image.png";
$width = 110;
$height = 200;
}
// Количество отзывов
$query_reviews = mysql_query("SELECT * FROM table_reviews WHERE products_id = '$id' AND moderat='1'",$link);
$count_reviews = mysql_num_rows($query_reviews);
echo '
<div id="block-breadcrumbs-and-rating">
<p id="nav-breadcrumbs2"><a href="index.php">Все товары</a> \ <span>'.$row1["brand"].'</span></p>
<div id="block-like">
<p id="likegood" tid="'.$id.'" >Нравится</p><p id="likegoodcount" >'.$row1["yes_like"].'</p>
</div>
</div>
<div id="block-content-info">
<img src="'.$img_path.'" width="'.$width.'" height="'.$height.'" />
<div id="block-mini-description">
<p id="content-title">'.$row1["title"].'</p>
<ul class="reviews-and-counts-content">
<li><img src="/images/eye-icon.png" /><p>'.$row1["count"].'</p></li>
<li><img src="/images/comment-icon.png" /><p>'.$count_reviews.'</p></li>
</ul>
<p id="style-price" >'.group_numerals($row1["price"]).' руб</p>
<a class="add-cart" id="add-cart-view" tid="'.$row1["products_id"].'" ></a>
<p id="content-text">'.$row1["mini_description"].'</p>
</div>
</div>
';
}
while ($row1 = mysql_fetch_array($result1));
$result = mysql_query("SELECT * FROM uploads_images WHERE products_id='$id'",$link);
If (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
echo '<div id="block-img-slide">
<ul>';
do
{
$img_path = './uploads_images/'.$row["image"];
$max_width = 70;
$max_height = 70;
list($width, $height) = getimagesize($img_path);
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);
$width = intval($ratio*$width);
$height = intval($ratio*$height);
echo '
<li>
<a class="image-modal" href="#image'.$row["id"].'"><img src="'.$img_path.'" width="'.$width.'" height="'.$height.'" /></a>
</li>
<a style="display:none;" class="image-modal" rel="group" id="image'.$row["id"].'" ><img src="./uploads_images/'.$row["image"].'" /></a>
';
}
while ($row = mysql_fetch_array($result));
echo '
</ul>
</div>
';
}
$result = mysql_query("SELECT * FROM table_products WHERE products_id='$id' AND visible='1'",$link);
$row = mysql_fetch_array($result);
echo '
<ul class="tabs">
<li><a class="active" href="#" >Описание</a></li>
<li><a href="#" >Характеристики</a></li>
<li><a href="#" >Отзывы</a></li>
</ul>
<div class="tabs_content">
<div>'.$row["description"].'</div>
<div>'.$row["features"].'</div>
<div>
<p id="link-send-review" ><a class="send-review" href="#send-review" >Написать отзыв</a></p>
';
$query_reviews = mysql_query("SELECT * FROM table_reviews WHERE products_id='$id' AND moderat='1' ORDER BY reviews_id DESC",$link);
If (mysql_num_rows($query_reviews) > 0)
{
$row_reviews = mysql_fetch_array($query_reviews);
do
{
echo '
<div class="block-reviews" >
<p class="author-date" ><strong>'.$row_reviews["name"].'</strong>, '.$row_reviews["date"].'</p>
<img src="/images/plus-reviews.png" />
<p class="textrev" >'.$row_reviews["good_reviews"].'</p>
<img src="/images/minus-reviews.png" />
<p class="textrev" >'.$row_reviews["bad_reviews"].'</p>
<p class="text-comment">'.$row_reviews["comment"].'</p>
</div>
';
}
while ($row_reviews = mysql_fetch_array($query_reviews));
}
else
{
echo '<p class="title-no-info" >Отзывов нет</p>';
}
echo '
</div>
</div>
<div id="send-review" >
<p align="right" id="title-review">Публикация отзыва производится после предварительной модерации.</p>
<ul>
<li><p align="right"><label id="label-name" >Имя<span>*</span></label><input maxlength="15" type="text" id="name_review" /></p></li>
<li><p align="right"><label id="label-good" >Достоинства<span>*</span></label><textarea id="good_review" ></textarea></p></li>
<li><p align="right"><label id="label-bad" >Недостатки<span>*</span></label><textarea id="bad_review" ></textarea></p></li>
<li><p align="right"><label id="label-comment" >Комментарий</label><textarea id="comment_review" ></textarea></p></li>
</ul>
<p id="reload-img"><img src="/images/loading.gif"/></p> <p id="button-send-review" iid="'.$id.'" ></p>
</div>
';
}
?>
</div>
<?php
include("include/block-footer.php");
?>
</div>
</body>
</html>
Рисунок 1 – Диаграмма вариантов использования
Рисунок 2 – Диаграмма последовательности
Рисунок 3 – Диаграмма компонентов
Рисунок 4 – Диаграмма развертывания
Рисунок 5 – Диаграмма состояний
Рисунок 6 – Диаграмма классов
Министерство образования Республики Беларусь
Учреждение образования
Белорусский государственный университет информатики и радиоэлектроники
Факультет непрерывного и инновационного обучения
Кафедра проектирования информационно-компьютерных систем
«УТВЕРЖДАЮ» Заведующий кафедрой ________________ В.В. Хорошко «____» __________ 2020 |
З А Д А Н И Е
к курсовой работе по дисциплине «Современные технологии проектирования информационных систем»
Фамилия, имя, отчество Зейдин Назар Сергеевич
группа 784371
1.Тема проекта: Интернет-каталога по продаже мобильных устройств
2.Сроки сдачи студентом законченного проекта: 3 мая 2020 г.
3.Исходные данные к проекту:
3.1.Описание к выполнению Автоматизация продаж товаров для мебельного магазина с использованием архитектурного шаблона проектирования MVC .
3.2.Язык и среда программирования – на выбор студента. Однако разработанное программное обеспечение должно быть реализовано на объектно-ориентированном языке.
3.3.В реализации программного обеспечения учесть возможность использования сервера.
3.4.Пояснительную записку и графический материал выполнять по СТП БГУИР 01-2013.
3.5.Другие требования уточняются студентом в процессе работы.
4. Содержание расчётно-пояснительной записки (перечень подлежащих разработке вопросов):
Титульный лист. Заполненный бланк задания с приложением. Содержание (1-2 стр.)
Введение (1 – 3 стр. Актуальность темы курсовой работы; цель и перечень задач, которые планируется решить; детальная постановка задачи).
4.1.Описание проекта (10 – 15 стр. Описание серверной и клиентской части разрабатываемого проекта).
4.2.Обоснование выбора технологий (7-15 стр. Технологии программирования, используемые для решения поставленных задач. Реализация объектно-ориентированных технологий программирования в современных программно-математических средах).
4.3.Инструментарий (5-7 стр. Обоснование используемых инструментов. Использование системы контроля версий GIT. Обязательна ссылка на репозиторий с проектом, например github.com.).
4.4.Архитектурный шаблон проектирования MVC (5-7 стр. Разработка схемы алгоритма, диаграммы последовательности и диаграммы состояний (схемы в Приложении) с детальными пояснениями каждого компонента шаблона проектирования MVC или его модификаций).
4.5.Шаблон проектирования практических решений (7-10 стр. Использование шаблонов проектирования практических решений для решения практических задач).
Заключение (1 стр. Выводы по курсовой работе).
Список литературных источников (1, 2 стр. Перечень литературы и интернет-источников, которые были реально использованы при выполнении курсовой работы).
Приложения (3 и более стр. Ведомость документов, листинг программного кода и др.).
5.Перечень графического материала (с указанием обязательных чертежей и графиков):
5.1.Структура графического пользовательского интерфейса (формат А3 или несколько А4)
5.2.Схема алгоритма (формат А3 или несколько А4)
5.3.Диаграмма последовательности (формат А3 или несколько А4)
5.4.Диаграмма состояний (формат А3 или несколько А4)
6.Консультант по работе: Михалькевич Александр Викторович
7.Дата выдачи задания:
8.Календарный график работы над проектом на весь период проектирования:
№ п/п |
Наименование этапов курсового проекта |
Срок выполнения этапов проекта |
Примечание |
1. |
1-я опроцентовка (пп. 4.1, 4.2, 5.1) |
04.03.2020 |
40% |
2. |
2-я опроцентовка (пп. 4.3, 4.4, 5.2, 5.3) |
01.04.2020 |
70%...80% |
3. |
3-я опроцентовка (пп. 4.5, 4.6, 5.4, приложения) |
29.04.2020 |
95% |
4. |
Сдача на проверку и защита курсового проекта |
03.05.2020 |
100% |
5. |
Защита курсового проекта |
10-11.05.2020 |
Согласно |
Руководитель А.В.Михалькевич
Задание принял к исполнению