Академический Документы
Профессиональный Документы
Культура Документы
Инженерно-технологический институт
Выполнил(а)
Беккер В.Э _____________________________
(Фамилия И.О. обучающегося, подпись)
Группа 49______________________________
Курс 4_________________________________
Форма обучения очная___________________
Научный руководитель: ст. преподаватель
кафедры ЦТиД Яковлев Д.А._
Абакан 2022
РЕФЕРАТ
Пояснительная записка 34 с. без учета приложений, 3 главы, 16 рис., 9
табл., 16 источников, 2 приложения.
Курсовая работа:
Тема курсовой работы: разработка информационной системы
виртуального музея на основе методологии структурно-функционального
анализа.
Объект исследования курсовой работы: процесс просмотра экспонатов:
их фотографии, 3D-модели, новости, информацию проводимых раскопок, их
видео и фото материалы.
Предмет исследования: разработка информационной системы
виртуального музея на основе методологии структурно-функционального
анализа.
Цель работы – создание информационного ресурса вириального музея
«Истории, археологии и этнографии».
В процессе выполнения использовались методы: эмпирические
(описание), теоретические (анализ, сравнительный анализ, моделирование). В
Главе 1 рассматривается организация для внедрения информационной
системы, выбор средств для программирования и языка программирования и
описания технического задания. В Главе 2 проводится разработка базы
данных, прототипов страниц веб-сайта. В Главе 3 проводиться разработка
интерфейса сайта, описание плагинов, использованных во время разработки
и представлена часть кода верстки и javascript функций.
Содержание включает: введение, наименование всех разделов и
подразделов, заключение, список использованных источников, наименование
приложений с указанием номеров страниц, с которых начинаются данные
элементы.
3
СОДЕРЖАНИЕ
ВВЕДЕНИЕ..............................................................................................................5
3 Разработка Веб-сайта.........................................................................................25
ЗАКЛЮЧЕНИЕ.....................................................................................................32
ПРИЛОЖЕНИЕ А.................................................................................................35
ПРИЛОЖЕНИЕ Б..................................................................................................55
4
ВВЕДЕНИЕ
В наше время представить любое предприятие, организацию,
популярную личность без своего сайта, профиля в соцсетях или
мессенджеров невозможно, они позволяют увеличить охват
потребительского спроса и оставить постоянный контакт.
В нашем случае необходим ресурс для музея «Истории, археологии и
этнографии», чтобы демонстрировать 3D-модели экспонатов, а также другие
материалы из музея, например, фотографии экспонатов древних культур,
новости, информацию проводимых раскопок, их видео и фото материалы.
Основываясь на вышесказанном – сайт является одним из самых
многофункциональных систем, так как на нём можно размещать всю
необходимую информацию, а также внедрять js-код для разных
функциональных возможностей, которые нельзя сделать в соцсетях и
мессенджерах.
Актуальность работы заключается в том, что созданный сайт
демонстрирует 3D-модели экспонатов музея, их фотографии, новости,
информацию проводимых раскопок, их видео и фото материалы.
Объектом исследования является процесс просмотра экспонатов: их
фотографии, 3D-модели, новости, информацию проводимых раскопок, их
видео и фото материалы.
Предметом исследования является разработка информационной
системы виртуального музея на основе методологии структурно-
функционального анализа.
Целью работы является создание информационного ресурса
вириального музея «Истории, археологии и этнографии».
В соответствии с целью были поставлены следующие задачи:
1) Составить техническое задание на выполняемы проект;
2) Собрать и изучить информацию о предметной области;
3) Реализовать физическую модель базы данных;
4) Разработка веб-сайта виртуального музея;
5
Методы исследования:
Эмпирические: изучение источников литературы.
Теоретические: анализ перемётной области по теме курсовой работы,
сравнительный анализ ПО, моделирование бизнес-процессов.
Практическая значимость заключается в том, что созданный
виртуальный музей будет содержать в себе: 3D-музея университета, где
будут представлены фотографии экспонатов древних культур, их 3D-модели,
новости, проводимые раскопки, их видео и фото материалы.
В качестве внедрения базы планируются Институт истории и права
(ИИиП).
6
1 Описание департамента, обоснование темы и выбор средств
разработки
1.1 Выбор и обоснование темы проекта
Музей истории, археологии и этнографии» основан 9 октября 2003
года. Музей ИИП ХГУ им. Н.Ф. Катанова имеет статус учебного музея.
Главная задача музея – обеспечение многообразия содержания
образовательного процесса [1].
Одной из главных ролей музея – это подготовка студентов по
историческому направлению, для которых он является необходимой учебной
и научной базой, а также для других студентов. В музее проводятся лекции,
семинарские и лабораторные занятия по археологии, этнографии и
историческому краеведению.
Музей «Истории, археологии и этнографии» имеет в своем активе
множество экспонатов, которые в данный момент обычные обыватели не
могут посмотреть. Также данные экспонаты хранятся на кафедре не более 3
лет, а затем сдаются в Краеведческий музей, поэтому студенты не могут все
их осмотреть, что решает сайт с 3D-моделями
1.2 Сбор и анализ исходных данных предметной области
В музее представлены артефакты в хронологическом диапазоне от
эпохи каменного века и до середины ХХ века. Все археологические и
этнографические экспонаты собраны преподавателями и студентами ИИиП
ХГУ во время летних полевых практик. Работа музея направлена на
приобщение студентов к традиционным культурным ценностям нашего
региона. Посетители музея знакомятся с хакасскими национальными
традициями, убранством юрты, хакасским музыкальным творчеством,
самобытным национальным костюмом [1].
1.3 Наименование, территориальное расположение и основные
виды деятельности музея
Федеральное государственное бюджетное образовательное учреждение
высшего образования «Хакасский государственный университет им. Н. Ф.
7
Катанова», Институт истории и права.
Территориальное расположение организации: 655017, Республика
Хакасия, город Абакан, проспект Ленина, д. 92/1, каб. 510, 512, 514, 516, 521,
421
Музей является учебным структурным подразделением Института,
выполняющим учебные функции. Музей создан на основании Решения
Ученого Совета Хакасского государственного университета им. Н.Ф.
Катанова.
1.4 Выбор современной СУБД для создания БД проекта
MySQL – это система управления реляционными базами данных с
открытым исходным кодом (СУРБД) с моделью клиент-сервер. СУРБД —
это программное обеспечение или служба, используемая для создания и
управления базами данных на основе реляционной модели [2].
SQL Server является одной из наиболее популярных систем управления
базами данных (СУБД) в мире. Данная СУБД подходит для самых различных
проектов: от небольших приложений до больших высоконагруженных
проектов [3].
IBM Db2 — это семейство продуктов для управления данными,
включающее реляционную базу данных Db2. В продуктах реализованы
функции на основе ИИ, помогающие управлять как структурированной, так и
неструктурированной информацией в локальных и мультиоблачных средах
[4].
SQLite — это быстрая и легкая встраиваемая однофайловая СУБД на
языке C, которая не имеет сервера и позволяет хранить всю базу локально на
одном устройстве. Для работы SQLite не нужны сторонние библиотеки или
службы [5].
Access – это еляционная система управления базами данных
корпорации Microsoft. Входит в состав пакета Microsoft Office. Имеет
широкий спектр функций, включая связанные запросы, связь с внешними
таблицами и базами данных [6].
8
Таблица 1.1 – Сравнительная характеристика наиболее известных систем
управления базами данных
Характеристики MySQL MS SQL IBM DB2 SQLite MS Access
Server
Язык
Си, C++ Java, SQL SQL,
программирован Transact-SQL Си
2000 XQuery
ия
Объектно-
ориентированно
е Да Нет Да Нет Да
проектирование
БД
Мультимедийны Ограниче Ограничен
Да Ограниченно Да
е типы данных нно но
Макс. Размер
4 Гб Не огр. 64 Гбайт 140 Тбайт 2 ГБ
таблиц
Макс. Число Практически
Не Не
таблиц в БД не Не огр. 2048
ограничено ограничено
ограничено
Макс. Число Практически
пользователей 10 000 Не огр. не Не огр. 255
БД ограничено
Цена MySQL SQL Server SQLite
Community 2019 Express От 18 480 является От
является является руб бесплатно 2763 руб.
бесплатной бесплатной й
Проанализировав выше изложенную таблицу, пришел к выводу того,
что самая подходящая СУБД для данного проекта, является СУБД MySQL,
так как она распространяется бесплатно и при этом легко изучаема.
1.5 Выбор среды программирования для создания клиентской
части проекта
Список программных средств для разработки WEB-сайта:
Eclipse – одна из самых популярных мультиязычных сред.
Ориентирована преимущественно на разработку Java-приложений, но
полезна и для кодов на JavaScript, имеющая следующие плюсы [7]:
Множество плагинов. У Eclipse едва ли не самое большое число
надстроек — «на все случаи жизни»;
Активное сообщество. Помогает быстрее освоить среду разработки,
выпускает новые плагины;
Отличные компилятор и отладчик. Первый работает на порядок
9
быстрее, чем у конкурентов, второй — показывает потоки, пересечения,
позволяет гибко управлять ходом отладки;
Кастомизация. Благодаря плагинам и настройкам можно полностью
персонализировать Eclipse;
Бесплатность. Это open-source проект, абсолютно бесплатный;
Высокая функциональность. Благодаря разработчикам-официалам и
членам сообщества с помощью Eclipse можно провести любой C#-продукт по
полному циклу разработки.
MonoDevelop – свободная среда разработки от Xamarin для создания
приложений и сайтов на множестве языков, в том числе на JavaScript,
имеющая следующие плюсы [8]:
Мультиплатформенность. Поддерживает Linux, Windows и Mac OS;
Кастомизация. На рабочем столе можно расположить функции и
окна по своему усмотрению;
Unity 3D. Полноценная поддержка популярной платформы для
разработки игр;
Бесплатность.
Visual Studio – интегрированная среда разработки (IDE) от Microsoft,
имеющая следующие плюсы [9]:
Официальная, так как и язык, и среда разработки созданы в
Microsoft, что позволяет использовать, например, технологии UWP и WPF;
Бесплатная. Версии «Community edition» для рядового пользователя
будет достаточно. Тем более, теперь можно подключать плагины;
Функциональная. В Visual Studio множество качественных плагинов.
С их помощью можно расширить функциональность приложения и
подключить другие языки;
Поддерживает платформы .NET. Visual Studio имеет широкие
возможности по разработке приложений под Windows, в том числе в .NET-
сегменте;
10
Облачные хранилища. Возможность получить доступ к облачному
хранилищу, зарегистрировавшись в сообществе Visual Studio, где сможете
располагать файлы проектов;
Корпоративность. Технология бэклога позволяет членам команды
взаимодействовать при гибкой методологии разработки.
Проанализировав данные программные средства, взята Visual Studio,
так как данная IDE удобна и понятна разработчику, при этом в самой среде
можно установить все недостающие плагины для разработки от визуальных,
до помощников-конструкторов, что позволяет по-максимуму упростить этап
разработки.
1.6 Выбор фреймворка для разработки фронтенда сайта
Для реализации обмена данных внутри сайта используются
фреймворки. На базе javascript существует несколько фреймворков, самые
популярные именуются следующим образом: Vue.js, React и Angular.
В следующей таблице представлена сравнительная характеристика
данных фреймворков [10].
Таблица 1.2 – Сравнительная характеристика наиболее известных
фреймворков
Рендеринг – Архитектура Направленност Обратная
отображени компонентов ь и классы совместимость
е конечного зависимостей
результата
Angu Разделение Высокоуровнев Поддержка MV Полноценный
lar на два ый API VM (Model- фреймворк.
потока, обеспечивает View- Абсолютная
причем за обратную ViewModel) зависимость от
рендеринг совместимость допускает предыдущих
DOM для всех решение версий и
«отвечает» библиотек. Это разных задач в компонентов.
браузер позволяет одном разделе Прямой переход с
(клиентская подключиться к приложения с 4.0 на 5.0
часть), а за проекту использование невозможен,
создание стороннему м одного придется
директив, программисту набора данных. последовательно
загрузку без длительного Зависимость устанавливать все
кода и изучения функций обновления
сервисов – архитектуры определяет между версиями.
11
общий приложения. двустороннюю Это приведет к
поток направленность необоснованному
(серверная передачи увеличению
часть). данных. объема
Каждая приложения.
процедура
может
запустить
другой
процесс.
15
Рисунок 1.1 – Контекстная диаграмма
В таблице № 1.3 представлена характеристика для каждой стрелки,
расположенной в контекстной диаграмме
Таблица № 1.3 – Стрелки на контекстной диаграмме
Имя стрелки Определение стрелки Тип стрелки
Материалы для HTML- Информация для внедрения в HTML- Вход
разметки разметку
Материалы новых экспонатов Материалы экспонатов, включающие в себя Вход
заголовок, краткое и полное описание,
аудиозапись, фотографию и 3D-модель
Материалы новых новостей Материалы новостей, включающие в себя Вход
заголовок, краткое и полное описание,
фотографию
Материалы новых Материалы видеоматериалов, включающие в Вход
видеоматериалов себя заголовок, краткое и полное описание,
фотографию и видеоролик
Веб-контент основной Информация расположенная в HTML- Выход
информации сайта разметке
Отредактированный веб- Страницы сайта, заполненные новой Выход
контент заполненных страниц информацией
Отчеты по работоспособности Отчеты по выполненной работе Выход
сайта администратора
Руководство администратора Руководство работы с сайтом для Контроль
администратора
Информационная система Веб-сайт с интерфейсом и базой-данных Механизм
Персональный компьютер Техническое устройство для работы с Механизм
информационной системой
Администратор Работник, администрирующий Механизм
информационную систему
16
Декомпозиция – принцип, применяемый при разбиении сложного
процесса на составляющие его функции, при этом уровень детализации
процесса определяется непосредственно разработчиком модели [11].
Результатом декомпозиции представлен на рисунке 1.2.
23
Рисунок 2.3 – Прототип вкладки «Новости»
25
3 Разработка Веб-сайта
3.1 Дизайн сайта
Самое главное для сайта – это разработать удобный, понятный и
красивый интерфейс. Интерфейс – это то, что видит пользователь в браузере:
рамки, изображения, ссылки, надписи и т.д. В целях привлечения большего
числа клиентов и лучшего визуального восприятия сайта, необходимо
создать интерфейс максимально привлекательным и в то же время
максимально простым, чтобы комфортно пользоваться сайтом могли даже
неопытные пользователи. Также необходимо наполнить сайт информацией и
соответствующим контентом, для того, чтобы сделать сайт наиболее
информативным и привлекательным. Страницы создавались с помощью
редактора Visual code.
Начнём создание сайта с главной страницы. Главная страница - это
страница, на которую попадает пользователь, как только входит на сайт,
дизайн показан на рисунке 3.1. На ней должна предоставляться информация
о музее, о том, что есть на данном сайте. Также информация должна быть
подана в надлежащем виде.
Рисунок 3.1 – Главная страница сайта
Как видно, на главной странице сайта содержится самая главная
информация о центре фитнеса и красоты и её услугах
Следующая страница сайта - это страница «Новости», что показано на
рисунке 3.2. На этой странице располагается информация о новостях. Цель
данной страницы - познакомить клиента с последними новостями музея,
например, добавление нового экспоната, новости раскопок и т.д.
Рисунок 3.2 – Страница «Новости»
Следующая страница сайта «Экспонаты», представлена на рисунке 3.3.
На этой странице располагается галерея экспонатов, при нажатии на
экспонат, открывается его 3D-модель, что показано на рисунке 3.4. Цель
данной страницы - познакомить клиента с экспонатами, изучить их и другое.
Рисунок 3.3 – Страница «Экспонаты»
26
Рисунок 3.4 – Модально окно с экспонатом
Последняя страница сайта «Видеоматериалы», представлена на
рисунке 3.5. На этой странице располагаются различные видеоматериалы,
такие как: лекции, видео с раскопок, интервью и другое. Цель данной
страницы – познакомить клиента с разными аспектами музея, особенно в
образовательной сфере.
Рисунок 3.5 – Страница «Видеоматериалы»
3.2 Использованные плагины при разработке проекта
Для верстки сайта использованы следующие плагины:
1) TailwindCSS – фреймворк для работы с CSS, позволяющий вносить
изменение в CSS прямо в HTML-разметке, при этом не используя тег <style>,
что упрощает верстку проектов [12].
2) Swiper.js – это сенсорный слайдер с аппаратным ускорением
переходов и нативным поведением, который позволяет создавать слайдеры
на странице сайта [13].
3) PostCSS – это инструмент Node.js который берет валидный CSS и
улучшает его. PostCSS – это синтаксический разборщик, который
токенизирует код CSS для создания абстрактного синтаксического дерева.
Плагины могут обработать это дерево и соответствующим образом обновить
свойства [14].
Для работы с JavaScript использованы следующие плагины:
1) Node.js – это приложение C++, которое получает на входе код
JavaScript и выполняет его. Чтобы взаимодействовать с устройствами ввода-
вывода на компьютере, в платформе предусмотрен собственный интерфейс
на C++. Таким образом, платформа превращает специализированный
скриптовый язык JavaScript в язык общего назначения, поэтому на Node.js
можно писать любые компьютерные программы. Node.js позволяет
пользоваться единым языком JavaScript для написания кода и на стороне
клиента, и на сервере [15].
2) Three.js – это кроссбраузерная JavaScript библиотека и API,
27
используемая для создания и отображения анимированной трехмерной
компьютерной графики в веб-браузере [16].
3.3 Верстка страниц и реализация JavaScript кода
В данной главе представлен основной код разработки проекта
С помощью фреймворка Vue3.js разработан скелет сайта с помощью
компонентов, в которых находится HTML и JavaScript, как показано на
рисунке 3.6.
28
BodyHomePage – главная страница;
BodyNewsPage – страница с новостями;
BodyVideoPage – страница с видеоматериалами.
SwiperComponent – компонент для реализации слайдера на странице
BodyHomePage.
Loading – компонент появляющийся при загрузке ModalWindow.
Exhibit – компонент для формирования галереи с 3D-моделями на
странице BodyExhibitsPage.
ModalVideoWindow – компонент для воспроизведения видеоролика
29
Рисунок 3.7 – Листинг компонента «App.vue»
Header и Footer являются шапкой и подвалом сайта соответственно.
ModalWindow – компонент для реализации обработки 3D-моделей,
часть кода функции представлен на рисунке 3.8.
30
Рисунок 3.8 – Листинг части кода для обработки 3D-моделей
Выводы:
Разработан дизайн сайта, который соответствует техническому
заданию;
Описаны плагины, использованные в разработке сайта, такие как:
TailwindCSS, Swiper.js, PostCSS, Node.js, Three.js;
Описана часть кода HTML и JavaScript.
31
ЗАКЛЮЧЕНИЕ
Поставленная в данной работе цель достигнута – разработан
информационный ресурс «Вириальный музей «Истории, археологии и
этнографии» на основе методологии функционального-структурного анализа
разработан и находится в рабочем состоянии, но для внедрения
информационный ресурс ещё не готов.
Все поставленные задачи выполнены:
1) Составлено техническое задание на выполнение курсовой работы. В
результате анализа предметной области была выявлена потребность в
создании информационной системы.
2) Построен бизнес-процесс «Заполнение сайта материалами», который
описывает модель работы с данными администратором сайта.
3) Собран материал по предметной области и проведен анализ по теме.
Определены границы информационной системы.
4) Реализована физическая модель: построены 4 таблицы с
измененными свойствами полей для того, чтобы улучшить работу и
уменьшить использования ресурсов памяти;
5) Созданы карта навигации сайта и прототипы страниц, по которым
последствии происходит разработка сайта. Разработан дизайн сайта по
техническому заданию, описаны все плагины, использованные в разработке
сайта и части кода HTML и JavaScript.
32
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1) Музей истории, археологии и этнографии [Электронный ресурс]
URL: http://iip.khsu.ru/structure/museum/ (дата обращения: 21.11.2022).
2) Что Такое MySQL: Объяснение MySQL Для Начинающих
[Электронный ресурс] URL: https://www.hostinger.ru/rukovodstva/shto-takoje-
mysql/ (дата обращения: 21.11.2022).
3) Введение в MS SQL Server и T-SQL: Что такое SQL Server и T-SQL
[Электронный ресурс] URL: https://metanit.com/sql/sqlserver/1.1.php (дата
обращения: 18.12.2022).
4) Что такое IBM® Db2®? [Электронный ресурс] URL:
https://www.ibm.com/ru-ru/analytics/db2 (дата обращения: 19.12.2022).
5) Skillfactory.БЛОГ: SQLite [Электронный ресурс] URL:
https://blog.skillfactory.ru/glossary/sqlite/ (дата обращения: 19.12.2022).
6) Compos: Microsoft Access для чайников – что это за программа и как
ей пользоваться [Электронный ресурс] URL: http://composs.ru/access-chto-eto-
za-programma/ (дата обращения: 20.12.2022).
7) Proglib: ТОП-10 IDE для Java-разработки [Электронный ресурс]
URL: https://proglib.io/p/top-10-ide-dlya-java-razrabotki-2022-10-20 (дата
обращения: 20.12.2022).
8) Континентсвободы.рф: MonoDevelop - Интегрированная Среда
Разработки [Электронный ресурс] URL:https://xn--90abhbolvbbfgb9aje4m.xn--
p1ai/monodevelop-integrirovannaya-sreda-razrabotki/ (дата обращения:
21.12.2022).
9) Microsoft: Добро пожаловать в интегрированную среду разработки
Visual Studio [Электронный ресурс] URL:
https://learn.microsoft.com/ru-ru/visualstudio/get-started/visual-studio-ide?
view=vs-2022 (дата обращения: 22.12.2022).
10) Mkdev Personal: Сравнение JavaScript фреймворков Vue.js, React и
Angular (2019) [Электронный ресурс] URL:
33
https://mkdev.me/ru/posts/sravnenie-javascript-freymvorkov-vue-js-react-i-
angular-2019 (дата обращения: 22.12.2022).
11) Верников Г. Основные методологии обследования организаций.
Стандарт IDEF0. [Электронный текст] / Г. Верников – URL:
https://www.cfin.ru/vernikov/idef/idef0.shtml (дата обращения: 23.12.2022).
12) Хабр: TailwindCSS – очередной фреймворк или новый шаг
эволюции? [Электронный ресурс] URL: https://habr.com/ru/post/508844/ (дата
обращения: 23.12.2022).
13) Хабр: Несколько интересностей и полезностей для веб-
разработчика #40 [Электронный ресурс] URL:
https://habr.com/ru/post/251759/ (дата обращения: 23.12.2022).
14) Teletype: Введение в PostCSS [Электронный ресурс] URL:
https://teletype.in/@budnifronta/ZYpNqR9Z1sl (дата обращения: 24.12.2022).
15) Skillfactory.БЛОГ: Node.js [Электронный ресурс] URL:
https://blog.skillfactory.ru/glossary/node-js/ (дата обращения: 24.12.2022).
16) Customizer Github: three.js справочное руководство [Электронный
ресурс] URL: https://customizer.github.io/three.js-doc.ru/three.js-ru.htm (дата
обращения: 25.12.2022).
34
ПРИЛОЖЕНИЕ А
Техническое задание
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
ПРИЛОЖЕНИЕ Б
Листинг
1 листинг App:
<template>
<div class="bg-beige">
<GeneralHeader />
<GeneralFooter />
</div>
</template>
<script>
import GeneralHeader from "./components/Header.vue";
import GeneralFooter from "./components/Footer.vue";
export default {
name: "App",
components: {
GeneralHeader,
GeneralFooter,
},
};
</script>
2 листинг BodyExhibitsPage:
<template>
<section class="text-gray-600 body-font">
<div class="container px-5 py-6 mx-auto">
<div class="flex flex-wrap sm:-m-4 -mx-4 -mb-10 -mt-4">
<exhibit
v-for="exhibit in exhibits"
:key="exhibit.id"
:exhibit_data="exhibit"
@showModalExhibit="showModal"
>
</exhibit>
</div>
</div>
</section>
<Suspense v-if="VisibleModal">
<template #default>
<ModalWindow @close="closeModal" :model="modelSrc" />
</template>
<template #fallback>
<Loading />
</template>
</Suspense>
</template>
<script>
55
import Loading from "./Loading.vue";
import { defineAsyncComponent } from "vue";
import Exhibit from "./Exhibit.vue";
import axios from "axios";
components: {
ModalWindow,
Loading,
Exhibit,
},
data() {
return {
VisibleModal: false,
exhibits: null,
modelSrc: null,
};
},
methods: {
showModal(model) {
this.VisibleModal = true;
this.modelSrc = model;
},
closeModal() {
this.VisibleModal = false;
},
},
created() {
axios
.get("http://localhost:3000/exhibits")
.then((response) => {
this.exhibits = response.data;
console.log(this.exhibits);
})
.catch((error) => {
console.log(error);
});
},
};
</script>
3 листинг BodyHomePage:
<template>
<section class="text-gray-600 body-font">
<SwiperComponent />
56
</section>
<div class="container max-w-4xl mx-auto py-20 px-5 md:py-5">
<ul>
<li>
<p class="pt-4 md:pt-2 text-xl">
Музей истории, археологии и этнографии каб. 510, 512, 514, 516, 521,
421
</p>
</li>
<li>
<p class="pt-4 md:pt-2 text-xl">Заказ экскурсий: 8-961-740-58-22</p>
</li>
<li>
<p class="pt-4 md:pt-2 text-xl">E-mail: apograv@yandex.ru</p>
</li>
<li>
<p class="pt-4 md:pt-2 text-xl">
Заведующий музеем – Поселянин Александр Иванович, кандидат
исторических наук, доцент кафедры всеобщей истории.
</p>
</li>
</ul>
<p class="pt-4 md:pt-2 text-xl">
Музей истории, археологии и этнографии был основан 9 октября 2003 года
сотрудниками кафедры археологии, этнографии и исторического краеведения.
Музей ИИП ХГУ им. Н.Ф. Катанова имеет статус учебного музея. Главная
задача учебного историко-этнографического музея – обеспечение многообразия
содержания образовательного процесса.
</p>
</div>
<section>
<div
class="bg-fixed"
style="background-image: url('img/Петроглифы/Петроглифы.jpg')"
>
<ul
class="py-20 px-32 flex justify-between md:flex-none items-center
invisible md:visible"
>
<li
class="h-36 w-36 md:h-20 md:w-20"
style="
background-image: url('img/Петроглифы/free-icon-lightning.png');
background-size: cover;
"
></li>
<li
class="h-36 w-36 md:h-20 md:w-20"
style="
background-image: url('img/Петроглифы/free-icon-sun.png');
background-size: cover;
57
"
></li>
<li
class="h-36 w-36 md:h-20 md:w-20"
style="
background-image: url('img/Петроглифы/free-icon-triskele.png');
background-size: cover;
"
></li>
<li
class="h-36 w-36 md:h-20 md:w-20"
style="
background-image: url('img/Петроглифы/free-icon-wind.png');
background-size: cover;
"
></li>
</ul>
</div>
</section>
<div class="container max-w-4xl mx-auto py-20 px-5 md:py-10">
<p class="pt-4 md:pt-2 text-xl">
Музей истории, археологии и этнографии был основан 9 октября 2003 года
сотрудниками кафедры археологии, этнографии и исторического краеведения.
Музей ИИП ХГУ им. Н.Ф. Катанова имеет статус учебного музея. Главная
задача учебного историко-этнографического музея – обеспечение многообразия
содержания образовательного процесса.
</p>
<p class="pt-4 md:pt-2 text-xl">
Особую роль музей играет в подготовке студентов направления «История», для
которых он является необходимой учебной и научной базой, а также для
других студентов ХГУ, проявляющих повышенный интерес к истории региона. В
музее проводятся лекции, семинарские и лабораторные занятия по археологии,
этнографии и историческому краеведению. Представленные в музее экспонаты
уникальны и являются необходимым наглядным материалом в учебном процессе.
</p>
<p class="pt-4 md:pt-2 text-xl">
В музее представлены артефакты в хронологическом диапазоне от эпохи
каменного века и до середины ХХ века. Все археологические и
этнографические экспонаты собраны преподавателями и студентами ИИП ХГУ во
время летних полевых практик. Работа музея направлена на приобщение
студентов к традиционным культурным ценностям нашего региона. Посетители
музея знакомятся с хакасскими национальными традициями, убранством юрты,
хакасским музыкальным творчеством, самобытным национальным костюмом.
</p>
<p class="pt-4 md:pt-2 text-xl">
На базе музея открылся и стабильно функционирует этнографо-археологический
кружок. На заседаниях кружка со студентами углубленно изучаются методы
формально-типологического анализа археологических материалов. Также
проводятся практические занятия по камеральной обработке полевых
материалов. Музей привлекает внимание не только представителей науки
Республики Хакасия, но и студентов ведущих российских вузов, таких как
58
СПГУ, ТГУ, МГИМО, а так же ученых из-за рубежа – Голландии, Турции, Китая,
посетивших музей и оставивших положительные отзывы. В настоящее время
проводится работа по обновлению экспозиций музея, приданию музею статуса
структурного подразделения при Институте истории и права, включению
экспонатов в Государственную часть Музейного фонда РФ.
</p>
</div>
</template>
<script>
import SwiperComponent from "./SwiperComponent.vue";
export default {
name: "BodyHomePage",
components: {
SwiperComponent,
},
};
</script>
4 листинг BodyNewsPage:
<template>
<div class="container px-5 py-5 mx-auto">
<article class="flex my-6 py-2 bg-white transition hover:shadow-xl">
<div class="rotate-180 p-2 [writing-mode:_vertical-lr]">
<time
datetime="2022-10-10"
class="flex items-center justify-between gap-4 text-xs font-bold
uppercase text-gray-900"
>
<span>2022</span>
<span class="w-px flex-1 bg-gray-900/10"></span>
<span>Окт 10</span>
</time>
</div>
<script>
export default {
name: "BodyNewsPage",
};
</script>
5 листинг BodyVideoPage:
<template>
<div class="container px-5 py-5 mx-auto">
<article class="flex my-6 py-2 bg-white transition hover:shadow-xl">
<div class="rotate-180 p-2 [writing-mode:_vertical-lr]">
<time
datetime="2022-10-10"
class="flex items-center justify-between gap-4 text-xs font-bold
uppercase text-gray-900"
>
<span>2022</span>
<span class="w-px flex-1 bg-gray-900/10"></span>
<span>Окт 10</span>
</time>
</div>
64
<p class="mt-2 text-sm leading-relaxed text-gray-700 line-clamp-3">
В XVII веке русские застали Хонгорай в виде конфедерации, состоящей
из четырёх улусов: Алтырского, Алтысарского, Исарского (Езерского) и
Тубинского, населённых предками современных хакасов, шорцев,
телеутов, алтайцев и тувинцев. Другая часть кыргызов несколькими
волнами мигрировала на Тянь-Шань начиная с середины IX века, с эпохи
Кыргызского великодержавия, вплоть до середины XIII века.
</p>
</div>
<div class="sm:flex sm:items-end sm:justify-end">
<button
@click="showModal"
class="block bg-yellow-300 px-5 py-3 text-center text-xs font-bold
uppercase text-gray-900 transition hover:bg-yellow-400"
>
Посмотреть видео
</button>
</div>
</div>
</article>
</div>
<Suspense v-if="VisibleModal">
<template #default>
<ModalVideoWindow @close="closeModal" :model="modelSrc" />
</template>
<template #fallback>
<Loading />
</template>
</Suspense>
</template>
<script>
import Loading from "./Loading.vue";
import { defineAsyncComponent } from "vue";
66
import "swiper/css";
import "swiper/css/pagination";
import "swiper/css/navigation";
export default {
name: "SwiperComponent",
components: {
Swiper,
SwiperSlide,
},
setup() {
return {
modules: [Navigation, Autoplay],
};
},
};
</script>
7 листинг Loading:
<template>
<div
class="m-auto h-full w-full fixed flex items-center z-1 inset-0 bg-black bg-
opacity-50"
>
<div class="container m-auto h-5/6 w-5/6 flex z-2 inset-0 bg-[#CCCCCC]">
<p>Loading</p>
</div>
</div>
</template>
<script>
export default {
name: "GeneralLoading",
};
</script>
8 листинг Exhibit:
<template>
<div class="p-4 md:w-1/3 sm:mb-0 mb-6">
<button
@click="showModalExhibit"
class="rounded-lg h-64 w-full overflow-hidden"
>
<img
alt="content"
class="object-cover object-center h-full w-full"
:src="exhibit_data.image"
/>
</button>
<h2 class="text-xl font-medium title-font text-gray-900 mt-5">
{{ exhibit_data.title }}
</h2>
67
<p class="text-base leading-relaxed mt-2">
{{ exhibit_data.description }}
</p>
<a class="text-indigo-500 inline-flex items-center mt-3"
>Узнать больше
<svg
fill="none"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
class="w-4 h-4 ml-2"
viewBox="0 0 24 24"
>
<path d="M5 12h14M12 5l7 7-7 7"></path>
</svg>
</a>
</div>
</template>
<script>
export default {
name: "ExhibitId",
props: {
exhibit_data: {
type: Object,
required: true,
},
},
methods: {
showModalExhibit() {
this.$emit("showModalExhibit", this.exhibit_data.model);
},
},
};
</script>
9 листинг ModalWindow:
<template>
<div
class="m-auto h-full w-full fixed flex items-center z-1 inset-0 bg-black bg-
opacity-50"
type="button"
@click.self="close"
>
<div class="container m-auto h-5/6 w-5/6 flex z-2 inset-0 bg-[#CCCCCC]">
<div id="containerthree"></div>
</div>
</div>
</template>
68
<script>
import * as THREE from "three";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader";
export default {
name: "ModalWindow",
props: {
model: {
type: String,
required: true,
},
},
methods: {
close() {
this.$emit("close");
},
init() {
const container = document.getElementById("containerthree");
const scene = new THREE.Scene();
scene.add(object);
},
(xhr) => {
console.log((xhr.loaded / xhr.total) * 100 + "% loaded");
},
(error) => {
console.log(error);
}
);
scene.background = new THREE.Color("#CCCCCC");
controls.update();
render();
}
function render() {
renderer.render(scene, camera);
}
animate();
},
},
mounted() {
this.init();
},
};
</script>
70
<style scoped>
#containerthree {
height: 100%;
width: 100%;
}
</style>
10 листинг Header:
<template>
<div
class="w-full m-0 p-0 bg-cover bg-bottom"
style="
background-image: url('img/hakasiya.jpg');
height: 60vh;
max-height: 300px;
"
>
<div
class="container max-w-4xl mx-auto pt-28 md:pt-14 text-center break-
normal"
>
<!--Title-->
<div class="text-white font-extrabold text-3xl md:text-5xl">
Музей истории, археологии и этнографии
</div>
</div>
</div>
<!--Container-->
<div class="container -mt-16 md:px-0 max-w-6xl mx-auto">
<div class="mx-0 sm:mx-6">
<!--Nav-->
<nav class="mt-0 w-full">
<div
class="container bg-white mx-auto flex items-center justify-center
text-sm rounded-lg"
>
<ul
class="my-2 list-reset flex justify-between flex-1 md:flex-none
items-center"
>
<button
class="inline-block py-2 px-2 text-gray-600 hover:text-gray-400
no-underline hover:underline"
v-for="navs in nav_sel"
:key="navs.id"
@click="selected = navs.nsel"
>
{{ navs.title }}
</button>
</ul>
71
</div>
</nav>
</div>
</div>
<BodyHomePage v-if="selected === 'BodyHomePage'" />
<BodyNewsPage v-if="selected === 'BodyNewsPage'" />
<BodyExhibitsPage v-if="selected === 'BodyExhibitsPage'" />
<BodyVideoPage v-if="selected === 'BodyVideoPage'" />
</template>
<script>
import BodyHomePage from "./BodyHomePage.vue";
import BodyNewsPage from "./BodyNewsPage.vue";
import BodyVideoPage from "./BodyVideoPage.vue";
import BodyExhibitsPage from "./BodyExhibitsPage.vue";
export default {
name: "GeneralHeader",
components: {
BodyHomePage,
BodyNewsPage,
BodyVideoPage,
BodyExhibitsPage,
},
data() {
return {
selected: "BodyHomePage",
nav_sel: [
{ id: 1, title: "Главная", nsel: "BodyHomePage" },
{ id: 2, title: "Новости", nsel: "BodyNewsPage" },
{ id: 3, title: "Экспонаты", nsel: "BodyExhibitsPage" },
{ id: 4, title: "Видеоматериалы", nsel: "BodyVideoPage" },
],
};
},
};
</script>
11 листинг Footer:
<template>
<footer class="text-gray-600 body-font">
<div
class="container px-5 pb-4 pt-8 mx-auto flex flex-center justify-center
md:items-center lg:items-center md:flex-center"
>
<div
class="w-64 flex-shrink-0 md:mx-0 mx-auto text-center md:items-center"
>
<a
class="flex title-font font-medium items-center md:justify-center
justify-center text-gray-900"
72
>
<span class="text-xl">
<font style="vertical-align: inherit">
<font style="vertical-align: inherit"
>Музей истории, археологии и этнографии</font
>
</font>
</span>
</a>
</div>
</div>
<div class="bg-gray-100">
<div
class="container mx-auto py-4 px-10 flex flex-wrap flex-col sm:flex-row"
>
<p class="text-gray-500 text-sm text-center sm:text-left">
<font style="vertical-align: inherit">
<font style="vertical-align: inherit">© 2022 ХГУ — </font>
</font>
<a
href="https://twitter.com/knyttneve"
rel="noopener noreferrer"
class="text-gray-600 ml-1"
target="_blank"
>
<font style="vertical-align: inherit">
<font style="vertical-align: inherit">apograv@yandex.ru</font>
</font>
</a>
</p>
<span
class="inline-flex sm:ml-auto sm:mt-0 mt-2 justify-center sm:justify-
start"
>
<a class="text-gray-500">
<svg
fill="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
class="w-5 h-5"
viewBox="0 0 24 24"
>
<path
d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-
1h3z"
></path>
</svg>
</a>
<a class="ml-3 text-gray-500">
<svg
73
fill="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
class="w-5 h-5"
viewBox="0 0 24 24"
>
<path
d="M23 3a10.9 10.9 0 01-3.14 1.53 4.48 4.48 0 00-7.86 3v1A10.66
10.66 0 013 4s-4 9 5 13a11.64 11.64 0 01-7 2c9 5 20 0 20-11.5a4.5 4.5 0
00-.08-.83A7.72 7.72 0 0023 3z"
></path>
</svg>
</a>
<a class="ml-3 text-gray-500">
<svg
fill="none"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
class="w-5 h-5"
viewBox="0 0 24 24"
>
<rect width="20" height="20" x="2" y="2" rx="5" ry="5"></rect>
<path
d="M16 11.37A4 4 0 1112.63 8 4 4 0 0116 11.37zm1.5-4.87h.01"
></path>
</svg>
</a>
<a class="ml-3 text-gray-500">
<svg
fill="currentColor"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0"
class="w-5 h-5"
viewBox="0 0 24 24"
>
<path
stroke="none"
d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6
6 0 016-6zM2 9h4v12H2z"
></path>
<circle cx="4" cy="4" r="2" stroke="none"></circle>
</svg>
</a>
</span>
</div>
</div>
74
</footer>
</template>
<script>
export default {
name: "GeneralFooter",
};
</script>
12 листинг ModalVideoWindow:
<template>
<div
class="m-auto h-full w-full fixed flex items-center z-1 inset-0 bg-black bg-
opacity-50"
type="button"
@click.self="close"
>
<div class="container m-auto h-5/6 w-5/6 flex z-2 inset-0">
<iframe
width="100%"
height="100%"
src="https://www.youtube.com/embed/uGkDlDe6BbM?autoplay=1"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media;
gyroscope; picture-in-picture"
allowfullscreen
></iframe>
</div>
</div>
</template>
<script>
export default {
name: "ModalVideoWindow",
methods: {
close() {
this.$emit("close");
},
},
};
</script>
75