Files
application-design/report.tex

298 lines
22 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[a4paper, final]{article}
%\usepackage{literat} % Нормальные шрифты
\usepackage[14pt]{extsizes} % для того чтобы задать нестандартный 14-ый размер шрифта
\usepackage{tabularx}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage{amsmath}
\usepackage[left=25mm, top=20mm, right=20mm, bottom=20mm, footskip=10mm]{geometry}
\usepackage{ragged2e} %для растягивания по ширине
\usepackage{setspace} %для межстрочного интервала
\usepackage{moreverb} %для работы с листингами
\usepackage{indentfirst} % для абзацного отступа
\usepackage{moreverb} %для печати в листинге исходного кода программ
\usepackage{pdfpages} %для вставки других pdf файлов
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{afterpage}
\usepackage{longtable}
\usepackage{float}
% \usepackage[paper=A4,DIV=12]{typearea}
\usepackage{pdflscape}
% \usepackage{lscape}
\usepackage{array}
\usepackage{multirow}
\renewcommand\verbatimtabsize{4\relax}
\renewcommand\listingoffset{0.2em} %отступ от номеров строк в листинге
\renewcommand{\arraystretch}{1.4} % изменяю высоту строки в таблице
\usepackage[font=small, singlelinecheck=false, justification=centering, format=plain, labelsep=period]{caption} %для настройки заголовка таблицы
\usepackage{listings} %листинги
\usepackage{xcolor} % цвета
\usepackage{hyperref}% для гиперссылок
\usepackage{enumitem} %для перечислений
% Настраиваем листинги, чтобы они использовали счётчик figure
\AtBeginDocument{
\renewcommand{\thelstlisting}{\thefigure} % Листинги используют тот же счетчик, что и рисунки
\renewcommand{\lstlistingname}{Рис.} % Меняем подпись на "Рисунок"
}
% Автоматически увеличиваем счетчик figure перед каждым листингом
\let\oldlstlisting\lstlisting
\renewcommand{\lstlisting}[1][]{%
\refstepcounter{figure}% Увеличиваем счетчик figure
\oldlstlisting[#1]% Вызываем оригинальную команду lstlisting
}
\newcommand{\specialcell}[2][l]{\begin{tabular}[#1]{@{}l@{}}#2\end{tabular}}
\setlist[enumerate,itemize]{leftmargin=1.2cm} %отступ в перечислениях
\hypersetup{colorlinks,
allcolors=[RGB]{010 090 200}} %красивые гиперссылки (не красные)
% подгружаемые языки — подробнее в документации listings (это всё для листингов)
\lstloadlanguages{ SQL}
% включаем кириллицу и добавляем кое−какие опции
\lstset{tabsize=2,
breaklines,
basicstyle=\footnotesize,
columns=fullflexible,
flexiblecolumns,
numbers=left,
numberstyle={\footnotesize},
keywordstyle=\color{blue},
inputencoding=cp1251,
extendedchars=true
}
\lstdefinelanguage{MyC}{
language=SQL,
% ndkeywordstyle=\color{darkgray}\bfseries,
% identifierstyle=\color{black},
% morecomment=[n]{/**}{*/},
% commentstyle=\color{blue}\ttfamily,
% stringstyle=\color{red}\ttfamily,
% morestring=[b]",
% showstringspaces=false,
% morecomment=[l][\color{gray}]{//},
keepspaces=true,
escapechar=\%,
texcl=true
}
\textheight=24cm % высота текста
\textwidth=16cm % ширина текста
\oddsidemargin=0pt % отступ от левого края
\topmargin=-1.5cm % отступ от верхнего края
\parindent=24pt % абзацный отступ
\parskip=5pt % интервал между абзацами
\tolerance=2000 % терпимость к "жидким" строкам
\flushbottom % выравнивание высоты страниц
% Настройка листингов
\lstset{
language=SQL,
extendedchars=\true,
inputencoding=utf8,
keepspaces=true,
captionpos=b,
}
\begin{document} % начало документа
% НАЧАЛО ТИТУЛЬНОГО ЛИСТА
\begin{center}
\hfill \break
\hfill \break
\normalsize{МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ\\
федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский политехнический университет Петра Великого»\\[10pt]}
\normalsize{Институт компьютерных наук и кибербезопасности}\\[10pt]
\normalsize{Высшая школа технологий искусственного интеллекта}\\[10pt]
\normalsize{Направление: 02.03.01 <<Математика и компьютерные науки>>}\\
\hfill \break
\hfill \break
\hfill \break
\hfill \break
\large{Отчет по лабораторным работам}\\
\large{<<Проектирование приложений>>}\\
\hfill \break
% \hfill \break
\hfill \break
\end{center}
\small{
\begin{tabular}{lrrl}
\!\!\!Студент, & \hspace{2cm} & & \\
\!\!\!группы 5130201/20102 & \hspace{2cm} & \underline{\hspace{3cm}} &Тищенко А. А. \\\\
\!\!\!Преподаватель & \hspace{2cm} & \underline{\hspace{3cm}} & Попов С. Г. \\\\
&&\hspace{4cm}
\end{tabular}
\begin{flushright}
<<\underline{\hspace{1cm}}>>\underline{\hspace{2.5cm}} 2025г.
\end{flushright}
}
\hfill \break
% \hfill \break
\begin{center} \small{Санкт-Петербург, 2025} \end{center}
\thispagestyle{empty} % выключаем отображение номера для этой страницы
% КОНЕЦ ТИТУЛЬНОГО ЛИСТА
\newpage
\tableofcontents
\newpage
% \section*{Введение}
% \addcontentsline{toc}{section}{Введение}
\newpage
% \section {Постановка задачи}
% В ходе прохождения данного курса необходимо выполнить пять лабораторных работ.
% \begin{enumerate}
% \item Создать представление, инкапсулирующее запрос. Написать запрос, использующий в себе представление.
% \item Написать триггеры, автоматизирующие сбор статистической информации о количестве соревнований, в которых участвовал каждый судья.
% \item Создать двух пользователей. Первый должен иметь доступ только на просмотр представления из первого задания. Второй также должен уметь редактировать таблицы, участвующие в запросе представления.
% \end{enumerate}
\newpage
\section {Лабораторные работы}
\subsection{Работа 1: Анализ текста с помощью ER-диаграмм}
\textbf{Задача:} Провести анализ одного абзаца текста с помощью ER-диаграммы.
\textbf{Исходный абзац:} \textit{Когда организатор проводит соревнования, в первую очередь он должен определиться с местом и датами проведения. После этого он должен предоставить спортсменам возможность оставить заявку на соревнования, сейчас многие используют для этого Yandex или Google формы, в этой заявке спортсмены указывают персональные данные, а также спортивный разряд, тип лука, федерацию или клуб, от имени которого они участвуют в соревновании. По мимо спортсменов важно подобрать судей. Соответственно судьи также должны оставить заявку, в которой они указывают свои персональные данные, а также свою судейскую категорию, номер и дату приказа об её присвоении. Заявки от спортсменов и судей обычно начинают приниматься за две-три недели до начала соревнования.}
\textbf{Обновлённый абзац}: \textit{Когда организатор проводит соревнования, в первую очередь он должен определиться с местом и датами проведения. После этого он должен предоставить спортсменам шаблон заявки на соревнование. Многие организаторы создают шаблоны заявок в Yandex или Google формах. Используя эти шаблоны, спортсмены создают заявки, в которых указывают персональные данные, а также спортивный разряд, тип лука, спортивнюю федерацию и клуб, от имени которого они участвуют в соревновании. Также организаторам важно подобрать судей для соревнования. Соответственно судьи также должны оставить заявку, в которой указываются: персональные данные, судейская категория, номер и дата приказа об её присвоении.}
\textbf{Чтение ER-диаграммы:} \textit{Организатор проводит соревнования.
Организатор определяет место и даты проведения соревнований.
Организатор создаёт шаблоны заявок в Яндекс или Google формах.
Организатор предоставляет спортсменам шаблон заявки.
Спортсмен создаёт заявку спортсмена, используя шаблон заявки.
Спортсмен создаёт заявку по шаблону заявки.
Спортсмен указывает в заявке спортсмена свои персональные данные, спортивный разряд, спортивную федерацию, тип лука и клуб.
Спортсмены участвуют в соревновании от имени клубов.
Организатор подбирает судей для соревнования.
Судья оставляет заявку судьи.
В заявке судьи указываются: персональные данные, судейская категория, номер приказа о присвоении судейской категории, дата приказа о присвоении судейской категории.}
\addtocounter{figure}{1}
\includepdf[pages={1}, fitpaper, pagecommand={
\thispagestyle{empty}
\begin{tikzpicture}[remember picture, overlay]
\node at (current page.south) [anchor=north, yshift=35pt] {\large{Рис 1. ER-диаграмма, построенная на основе одного абзаца из текста описания предметной области.}};
\end{tikzpicture}
}]{pdf/er_diagram.pdf}
\subsection{Работа 2: Описание процессов предметной области}
\textbf{Задача:} Выделить и описать основные и вспомогательные процессы в выбранной предметной области.
Основным процессом в выбранной предметной области является процесс проведения соревнований по стрельбе из лука. Тогда в качестве вспомогательных можно выделить, например, следующие процессы:
\begin{itemize}
\item процесс сбора заявок от спортсменов;
\item процесс подбора судей;
\item процесс подготовки помещения;
\item процесс организации безопасности;
\item процесс подготовки протоколов соревнований.
\end{itemize}
\subsubsection*{Процесс проведения соревнований}
\subsubsection*{Процесс сбора заявок от спортсменов}
\begin{enumerate}
\item \textbf{Определение необходимых данных.} Организатор определяет, какие данные нужно получить от спортсменов, например: ФИО, пол, тип лука, спортивный разряд, спортивная федерация или клуб, контактные данные.
\item \textbf{Создание шаблона заявки.} Организатор создаёт шаблон заявки (например, в Google Формах), добавляя все необходимые поля.
\item \textbf{Публикация и распространение шаблона.} Организатор публикует ссылку на шаблон на сайте соревнований и в социальных сетях, рассылает по закрытым спискам клубов или размещает объявления.
\item \textbf{Получение информации о соревновании.} Спортсмен узнаёт о соревновании через сайт, объявления в клубе, социальные сети или от других спортсменов.
\item \textbf{Заполнение заявки.} Спортсмен открывает шаблон заявки, заполняет необходимые поля и отправляет её организатору.
\item \textbf{Подтверждение регистрации.} Организатор обрабатывает заявку, проверяет корректность данных и отправляет спортсмену подтверждение регистрации или запрос на исправление данных.
\item \textbf{Обновление списков участников.} Организатор формирует список зарегистрированных участников и публикует его, чтобы спортсмены могли проверить наличие своей заявки.
\end{enumerate}
\textbf{Выход процесса:}
Формируется список спортсменов, допущенных до участия в соревнованиях.
\subsubsection*{Процесс подбора судей}
\begin{enumerate}
\item \textbf{Определение потребности в судьях.} Организатор определяет, сколько судей потребуется в зависимости от масштаба соревнований, количества участников и этапов.
\item \textbf{Определение критериев отбора.} Организатор решает, какие требования будут предъявляться к судьям: судейская категория, опыт работы, регион, принадлежность к определённой спортивной федерации и т.д.
\item \textbf{Создание и публикация шаблона заявки.} Организатор создаёт шаблон заявки, включая обязательные поля: ФИО, судейская категория, номер и дата приказа о присвоении категории, контактные данные, регион и федерация. Шаблон публикуется на сайте, рассылается клубам и судьям.
\item \textbf{Получение информации о соревновании.} Судьи узнают о соревновании через сайт, рассылку, объявления или от коллег.
\item \textbf{Заполнение и отправка заявки.} Судья открывает шаблон, заполняет свои данные и отправляет заявку организатору.
\item \textbf{Проверка заявок.} Организатор проверяет поступившие заявки на соответствие критериям и корректность данных.
\item \textbf{Отбор судей.} Организатор отбирает необходимых судей в соответствии с установленными критериями и количеством позиций.
\item \textbf{Уведомление отобранных судей.} Организатор уведомляет выбранных судей о включении в состав и отправляет им подтверждение участия.
\item \textbf{Формирование списка судей.} Организатор формирует и публикует список судей, которые будут судить соревнование.
\end{enumerate}
\textbf{Выход процесса:}
Сформирован список судей, утверждённых для работы на соревнованиях.
\subsubsection*{Процесс подготовки помещения}
\subsubsection*{Процесс организации безопасности}
\subsubsection*{Процесс подготовки протоколов соревнований}
\newpage
\section*{Заключение}
\addcontentsline{toc}{section}{Заключение}
% В ходе освоения данного курса было выполнено пять лабораторных работ:
% \begin{enumerate}
% \item Создано представление, инкапсулирующее запрос. Продемонстрирована невозможность модификации представления; написан запрос, использующий в себе созданное представление.
% \item Создана таблица подсчёта количества соревнований для каждого судьи. Также созданы 5 триггеров, автоматизирующие сбор статистики в таблице.
% \item Созданы 2 пользователя с различными правами доступа. Первый пользователь наделён правами только на просмотр представления, а второй наделён правами просмотра, вставки, удаления и обновления данных во всех таблицах, участвующих в представлении. На 8 примерах продемонстрировано поведение СУБД при различных операциях для каждого пользователя, в том числе при недопустимых.
% \item Созданы процедура и функция. Функция принимает на вход фамилию, имя и отчество человека и возвращает фамилию и его инициалы.
% \item Управление транзакциями. Задан уровень изоляции транзакций как Read Committed и продемонстрировано отсутствие артефакта <<Грязное чтение>> и наличие артефактов <<Неповторяемое чтение>> и <<Фантомы>>.
% \end{enumerate}
% На работу было потрачено около 2-х месяцев, за которые было написано более 500 строк кода.
% Работа была выполнена в системе управления базами данных PostgreSQL 16.2.
% Полученные знания могут быть и будут использованы в работе над последующими проектами и заданиями.
\newpage
\section*{Список литературы}
\addcontentsline{toc}{section}{Список литературы}
\vspace{-1.5cm}
\begin{thebibliography}{0}
\bibitem{MySQL}
MySQL Documentation URL: \url{https://dev.mysql.com/doc/}, Дата обращения: 01.11.2024
\bibitem{PostgreSQL}
PostgreSQL documentation URL: \url{https://www.postgresql.org/docs/}, Дата обращения: 01.11.2024
\end{thebibliography}
\end{document}