Добавлен: 18.05.2023
Просмотров: 428
Скачиваний: 4
СОДЕРЖАНИЕ
1. Техническое задание и выбор средств реализации.=
2. Описание модулей серверной части программы и их взаимодействие.
2.1. Описание пользовательской части
2.1.1. Структура пользовательской части промо-сайта
2.1.2. Основные программные модули
2.2. Описание административной части
2.2.1. Структура административной части промо-сайта
2.1.2. Основные программные модули
3. Описание структуры базы данных и ее функций
3.1. Описание структуры базы данных
3.2. Пользовательские функции и запросы к базе данных
4. Описание структуры клиентской части
4.1. Описание интерфейса «Обычный пользователь»
4.2 Описание интерфейса «Администратор»
4.3.1. Инструкция простого пользователя
В заключительной части работы можно выделить несколько основных положений данного исследования и практической работы.
Основные положения теоретической части проекта:
- Был проведен анализ исходных данных и разработка технического задания;
- Было произведён выбор программного обеспечения;
Основные положения практической части проекта:
- согласно выводам теоретической части проекта был составлен и реализован план разработки промо–сайта;
- был собран информационный материал для наполнения сайта;
- была составлена структура промо–сайта;
- были определены функции и разработан функционал, необходимый для размещения на промо–сайте;
- была выбрана среда разработки;
- был разработан прототип промо–сайта;
- была разработана административная панель, позволяющая редактировать всю информацию, содержащуюся на сайте.
Данный прототип информационного промо-сайта торговой компании является вполне работоспособным образцом, который можно применять на практике отдельной компании.
Относительно дальнейших перспектив исследования темы можно было бы дать следующие советы. В рамках данной работы охватить все аспекты предоставления информации на информационном промо–сайте невозможно. Но если развивать эту тему, можно было бы более глубоко вникнуть в вопросы более продуктивного взаимодействия самой компании и пользователей, нуждающихся в ее услугах. Отдельной полноценной исследовательской работы заслуживает SEO–оптимизация сайта с целью поднятия его рейтинга в поисковых системах.
Итак, перед разработчиком была поставлена цель: создание сайта торговой компании «Галактика». Гипотеза о том, что данная тема исследования важна и необходима, была подтверждена аналитически и реализован проект согласно этой гипотезе практически.
Согласно техническому заданию, сайт должен быть создан с помощью языка гипертекстовой разметки HTML, языка программирования CSS и каскадной таблицы сталей CSS. Он должен содержать актуальную информацию о деятельности компании и предоставляемых услугах и контактные данные компании.
Интерфейс сайта должен быть дружественным и понятным даже неопытному пользователю.
Дизайн должен быть управляем при помощи каскадных таблиц стилей и быть адаптивным для всех типов устройств.
Общая концепция сайта
В целом проект реализован с дружественным интерфейсом, понятным даже неопытному пользователю.
Дизайн
Сайт содержит единый дизайн на всем страницах. Интерфейс дружественный для посетителя и понятен даже неопытным пользователям. Дизайн сайта управляем каскадными стилями CSS и является адаптивным для всех типов устройств.
Набор веб–разработчика и локальный сервер
Для реализации проекта использован локальный сервер «Openserver».
Он включает в себя локальный сервер, систему управления базами данных и среду программирования PHP.
Другими словами, openserver позволяет полностью эмулировать работу сайта на локальном компьютере, что существенно упрощает разработку и реализацию проекта [4].
В результате разработки проекта было проведено знакомство и освоение разработки промо–сайта, форматирование отображаемых элементов при помощи каскадных таблиц стилей CSS, а также при помощи языка программирования PHP.
Особую помощь проекту оказала CSS–библиотека BOOTSTRAP, которая отвечает за адаптивный дизайн сайта.
В целом, проект успешно реализован и полностью работоспособен.
СПИСОК ЛИТЕРАТУРЫ
1. Ipipe.ru Установка OpenServer. [Электронный ресурс] // iPipe.ru. - https://www.ipipe.ru/info/ustanovka-openserver.html
2. HTML5BOOK.RU Адаптивная верстка сайта [Электронный ресурс] // HTML5BOOK.RU. - https://html5book.ru/adaptivnaya-vyorstka-sayta.
3. WebReference Уроки по HTML и CSS [Электронный ресурс] // WebReference. - https://webref.ru/layout/learn-html-css.
4. Open Server — профессиональный инструмент веб-разработчика под Windows [Электронный ресурс] // Википедия. - https://habr.com/ru/post/137388
5. PHP, SQL [Электронный ресурс] / блог. - Россия, 2010.: http://phpsql.ru/.
6. PHPForum [Электронный ресурс] /форум.- Россия, 2003. - Режим доступа: http://phpforum.ru. - Дата доступа: 09.02.2012.
7. Богданов, М.Р. Перспективные языки веб-разработки / М.Р. Богданов. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016
8. Википедия Bootstrap_(Фреймворк) [Электронный ресурс] https://ru.wikipedia.org/wiki/Bootstrap_(Фреймворк)
9. Гущин А.Н. Базы данных: учебник. - М.: Директ-Медиа, 2014. - 266с
10. Мазуркевич, А. PHP: настольная книга программиста / А. Мазуркевич. - М.: Новое знание, 2003. - 480 с.
11. Макфарланд Д. Большая книга CSS. 3-е изд. [Текст]. - СПб : Питер, 2014. - 608 стр.
12. Мейер, Б. Инструменты, алгоритмы и структуры данных / Б. Мейер. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016.
13. Никсон, Р. Создаем динамические web-сайты с помощью PHP, MySQL и JavaScript / Р. Никсон. - П.: Питер, 2011. - 496 с.
14. Парк, Д. PHP и MySQL. Библия программиста / Д. Парк, С. Суэринг. - Диалектика, 2010. - 912 с.
15. Прохоренок, Н. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера / Н. Прохоренок. - СПб.: БХВ - Петербург., 2010. - 900 с.
16. Савельева, Н.В. Язык программирования PHP / Н.В. Савельева. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016
17. Томсон, Л. Разработка Web-приложений на РНР и MySQL/ Л. Томсон. - М.: ДиаСофтЮП, 2003. - 672 с.
18. Филиппов, С.А. Основы современного веб-программирования [Электронный ресурс].— М. : НИЯУ МИФИ, 2011 .— 160 с.
19. Фримен Эрик и Робсон Элизабет Изучаем HTML, XHTML [Текст]. - СПб : Питер, 2014. – 720 стр.
20. Харрис, Э. PHP/MySQL для начинающих / Э. Харрис. - М.: Кудиц - образ, 2005.
ПРИЛОЖЕНИЯ
Приложение А
Листинг программного файла Category.php
<?php
// Вывод всех записей в панель
function index(){
?>
<script>
function confirmSpelll() {
if (confirm("Вы действительно хотите удалить этот элемент?")) return true;
else return false;
}
</script>
<h1>Категории</h1>
<center><a href='?table=category&action=insertform'>Добавить новую</a></center>
<table>
<tr>
<th></th>
<th>Номер</th>
<th>Наименование</th>
<th>Родительская категория</th>
</tr>
<?php
$sql = "SELECT id,name,image,(SELECT name FROM category WHERE id = C.parent_id) AS parent_id FROM category AS C WHERE 1 ORDER BY id";
$result = getMysqliResult($sql);
if($result) while ($category = $result->fetch_assoc()) {
?>
<tr>
<td style='width:70px;'>
<?php if($category[id]<>1) { ?>
<a onclick='return confirmSpelll();' href='?table=category&action=delete&id=<?php echo $category['id']; ?>'><img src='images/del.png'></a>
<a href='?table=category&action=updateform&id=<?php echo $category['id']; ?>'><img src='images/edit.png'></a>
<?php } ?>
</td>
<td><?php echo $category['id']; ?> </td>
<td><?php echo $category['name']; ?> </td>
<td><?php echo $category['parent_id']; ?> </td>
</tr>
<?php
}
echo "</table>";
}
// Обновления записи (форма)
function updateform($id = NULL){
if(!empty($id)) {
$sql = "SELECT * FROM category WHERE id=".$id." ORDER BY id";
$result = getMysqliResult($sql);
if($result)
$category = $result->fetch_assoc();
}
else {
$fields = "id,name,image,parent_id";
foreach(explode(",",$fields) as $f) $category[$f] = '';
}
if(!empty($id)) echo "<h1 class='text-center' style='margin-top:60px;'>Редактирование записи № ".$id." в таблице Категории</h1></center>".PHP_EOL;
else echo "<center><h1 class='text-center' style='margin-top:60px;'>Добавление записи в таблицу Категории</h1></center>".PHP_EOL;
echo "<div class='row'>".PHP_EOL;
echo ' <div class="col-xs-1 col-sm-3 col-md-4 col-lg-4"></div>'.PHP_EOL;
echo ' <div class="p-3 col-xs-10 col-sm-6 col-md-4 col-lg-4" style="margin:10px auto 20px auto; padding:5px 10px; border:1px solid #ddd; border-radius:10px;">'.PHP_EOL;
echo ' <div style="position:relative;width:100%; text-align:right; float:right;right:-13px;">'.PHP_EOL;
echo ' <a href="admin.php"><span style="color:grey; font-size:20px" class="btnicon icon-close"></span></a>'.PHP_EOL;
echo ' </div>'.PHP_EOL;
echo " <form enctype='multipart/form-data' action='?table=category' method='post'>".PHP_EOL;
echo " <input type='hidden' name='id' value = '".$id."'>".PHP_EOL;
?>
<div class='form-group'>
<label style='word-wrap: break-word;'>Наименование</label>
<div>
<input class='form-control' id='name' name='name' type='text' value='<?php echo $category['name']; ?>'/>
</div>
</div>
<div class='form-group'>
<label style='word-wrap: break-word;'>Изображение</label>
<div>
<?php if(!empty($category['image'])) echo '<img width = "25%" src="'.$category['image'].'">'; ?>
<input id = "image" name = "image" type="file" />
<input cols = "70" name = "imagename" type = "hidden" value="<?php echo $category['image']; ?>" />
</div>
</div>
<div class='form-group'>
<label style='word-wrap: break-word;'>Родительская категория</label>
<div>
<select class="form-control" id="parent_id" name="parent_id">
<?php
if(!empty($category['id'])) $sql = "SELECT id,name FROM category AS C WHERE (id<>".$category['id'].") AND (id<>1) ORDER BY name";
else $sql = "SELECT id,name FROM category WHERE 1 ORDER By name";
$result = getMysqliResult($sql);
$options = array();
while ($option = $result->fetch_assoc())
$options[] = getPathCategory($option['id'])." ".$option['id'];
asort($options);
echo '<option value="1" '.is_sel(1,$category['parent_id']).'>Каталог</option>';
foreach($options as $option) {
$cid = (int)substr($option, -3);
echo '<option value="'.$id.'" '.is_sel($cid,$category['parent_id']).'>'.substr($option,0,strlen($option)-5).'</option>';
}
?>
</select>
</div>
</div>
<?php
if(!empty($id)) echo " <input type='hidden' name='action' value = 'update'>".PHP_EOL;
else echo " <input type='hidden' name='action' value = 'insert'>".PHP_EOL;
echo " <input type='hidden' name='table' value = 'category'>".PHP_EOL;
if(!empty($id)) echo ' <div class="text-center"><input class="submit" id="Submit" value="Сохранить изменения" type="submit" name="Submit" ></div>'.PHP_EOL;
else echo ' <div class="text-center"><input class="submit" id="Submit" value="Добавить" type="submit" name="Submit" ></div>'.PHP_EOL;
echo " </form>".PHP_EOL;
echo " </div>".PHP_EOL;
echo "</div>".PHP_EOL;
}
// Обновление записи
function update() {
$post = $_POST;
$files = $_FILES;
if (!empty($files)) {
$uploaddir = 'uploads/';
foreach($files as $ki=>$f) {
$var = $ki."name";
$uploadfile = $uploaddir . str_replace("-".$end,".".$end,str2url(basename($files[$ki]['name'])));
if (basename($files[$ki]['name'])) {
move_uploaded_file($files[$ki]['tmp_name'] , $uploadfile);
$post[$ki] = $uploadfile;
} else $post[$ki] = $post[$var];
unset($post[$var]);
}
}
$table = $post['table'];
$id = $post['id'];
unset($post['Submit'],$post['action'],$post['table'],$post['id']);
$values = array();
foreach($post as $key=>$val) $values[] = $key." = '".$val."'";
$sql = "UPDATE category SET ".implode(",",$values)." WHERE id=".$id;
$result = getMysqliResult($sql);
index();
}
// Добавление записи
function insert() {
$post = $_POST;
$files = $_FILES;
if (!empty($files)) {
$uploaddir = 'uploads/';
foreach($files as $ki=>$f) {
$var = $ki."name";
$uploadfile = $uploaddir . str_replace("-".$end,".".$end,str2url(basename($files[$ki]['name'])));
if (basename($files[$ki]['name'])) {
move_uploaded_file($files[$ki]['tmp_name'] , $uploadfile);
$post[$ki] = $uploadfile;
} else $post[$ki] = $post[$var];
unset($post[$var]);
}
}
$table = $post['table'];
$id = $post['id'];
unset($post['Submit'],$post['action'],$post['table'],$post['id']);
$values = "'".implode("','",array_values($post))."'";
$keys = implode(",",array_keys($post));
$sql = "INSERT INTO category (".$keys.") VALUES (".$values.")";
$result = getMysqliResult($sql);
index();
}
function delete() {
$id = $_GET['id'];
$sql = "DELETE FROM category WHERE id=".$id;
$result = getMysqliResult($sql);
index();
}
// Добавления записи (форма)
function insertform(){
updateform();
}
Приложение Б
Дамп базы данных проекта promo.sql
--
-- База данных: `promo`
--
-- --------------------------------------------------------
--
-- Структура таблицы `cart`
--
CREATE TABLE IF NOT EXISTS `cart` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned DEFAULT NULL,
`product_id` int(11) unsigned DEFAULT NULL,
`kol` int(5) NOT NULL,
PRIMARY KEY (`id`),
KEY `index_foreignkey_cart_user` (`user_id`),
KEY `index_foreignkey_cart_product` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=21 ;
--
-- Дамп данных таблицы `cart`
--
INSERT INTO `cart` (`id`, `user_id`, `product_id`, `kol`) VALUES
(11, 3, 2, 1),
(18, 6, 13, 1),
(19, 6, 12, 5),
(20, 6, 3, 3);
-- --------------------------------------------------------
--
-- Структура таблицы `category`
--
CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`image` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`parent_id` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_foreignkey_category_parent` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=6 ;
--
-- Дамп данных таблицы `category`
--
INSERT INTO `category` (`id`, `name`, `image`, `parent_id`) VALUES
(1, 'Каталог', '', NULL),
(2, 'Бытовая техника', 'uploads/cat1.jpg', 1),
(3, 'Климатическая техника', 'uploads/cat2.jpg', 1),
(4, 'Электроника', 'uploads/cat3.jpg', 1),
(5, 'Встраиваемая техника', 'uploads/cat4.jpg', 1);
-- --------------------------------------------------------
--
-- Структура таблицы `menu`
--
CREATE TABLE IF NOT EXISTS `menu` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`image` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`url` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`content` text COLLATE utf8mb4_unicode_ci,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=13 ;
--
-- Дамп данных таблицы `menu`
--
INSERT INTO `menu` (`id`, `name`, `image`, `url`, `content`) VALUES
(1, 'Главная', '', 'main', ''),
(2, 'О компании', 'uploads/Какая-то картинка.jpg', 'about', '<p>«ГАЛАКТИКА» — сеть торговых центров, один из крупнейших налогоплательщиков региона в категории ритейл и лидер розничной торговли. «ГАЛАКТИКА» стабильно развивается, профессионально совершенствуется, предоставляя возможность покупателям приобретать качественный товар для строительства, ремонта, декорирования и оформления жилья в формате «от и до» и воспользоваться дополнительными услугами в торговых центрах.</p>\r\n\r\n<h3 class="text-primary">Философия и принципы работы компании</h3>\r\n<p>У торговых центров «ГАЛАКТИКА» четко сформирована собственная философия, которая заключается в максимальном удовлетворении потребностей покупателей: индивидуальном подходе, предоставлении лучших цен, обеспечении отличного сервиса и постоянной заботе о потребителях. Ведь залогом успешной деятельности сети «ГАЛАКТИКА» есть главное правило обслуживания клиентов — «ПОКУПАТЕЛЬ ВСЕГДА ПРАВ!». Лояльная ценовая политика и демократический подход к потребностям клиентов показывают, что торговые центры «ГАЛАКТИКА» рассчитаны на разные слои населения.</p>\r\n\r\n<p>Традиционный принцип работы компании — «ПРОИЗВОДИТЕЛЬ-ГАЛАКТИКА-ПОТРЕБИТЕЛЬ» позволяет избежать посредников и дает возможность компании гарантированно получать лучшие цены на рынке и качество товаров для покупателей торговых центров «ГАЛАКТИКА».</p>\r\n<h3 class="text-primary">Социальная ответственность компании</h3>\r\n<p>Социальная ответственность — это неотъемлемая часть стратегии развития компании «ГАЛАКТИКА». Регулярно «ГАЛАКТИКА» принимает активное участие в жизни региона.\r\n</p>\r\n<p>К новогодним праздникам торговые центры «ГАЛАКТИКА» проводят детские утренники, где детей радуют аниматоры, конкурсы, игры и бесплатные подарки.\r\n</p>\r\n<h3 class="text-primary">Уникальность формата компании</h3>\r\n<p>«ГАЛАКТИКА» работает в уникальном формате, который сочетает строительное, хозяйственное и продовольственное направления. Следует отметить, что на сегодняшний день такого формата среди других операторов региона нет. Открытие таких новых ассортиментных групп, как: посуда, текстиль, подарки, «Спорттовары» — широкий ассортимент тренажеров и аксессуаров, товаров для спортивных игр, фитнеса и т.д.; «Детские товары» — игрушки, средства гигиены и ухода, детское питание, «Канцтовары» — товары для творчества, обучения и офиса, «Бытовая техника» — широкая линейка товаров для дома, работы и отдыха, предоставило покупателю возможность комплексно приобрести все необходимое для ведения хозяйства, обустройства дома и быта в одной торговой точке.\r\n</p>\r\n<p>Сейчас компания системно развивается, постоянно совершенствуется и постепенно трансформируется в мультиформатный центр торговли.</p>'),