Про формы
This commit is contained in:
BIN
img/form1.png
Normal file
BIN
img/form1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
BIN
img/form2.png
Normal file
BIN
img/form2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
BIN
img/form3.png
Normal file
BIN
img/form3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 57 KiB |
BIN
img/graph.png
Normal file
BIN
img/graph.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 104 KiB |
340
report.tex
340
report.tex
@@ -106,6 +106,36 @@
|
|||||||
captionpos=b,
|
captionpos=b,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
% Определение языка JSON для листингов
|
||||||
|
\lstdefinelanguage{JSON}{
|
||||||
|
basicstyle=\normalfont\ttfamily,
|
||||||
|
numbers=left,
|
||||||
|
numberstyle=\scriptsize,
|
||||||
|
stepnumber=1,
|
||||||
|
numbersep=8pt,
|
||||||
|
showstringspaces=false,
|
||||||
|
breaklines=true,
|
||||||
|
frame=lines,
|
||||||
|
backgroundcolor=\color{white},
|
||||||
|
literate=
|
||||||
|
*{0}{{{\color{teal}0}}}{1}
|
||||||
|
{1}{{{\color{teal}1}}}{1}
|
||||||
|
{2}{{{\color{teal}2}}}{1}
|
||||||
|
{3}{{{\color{teal}3}}}{1}
|
||||||
|
{4}{{{\color{teal}4}}}{1}
|
||||||
|
{5}{{{\color{teal}5}}}{1}
|
||||||
|
{6}{{{\color{teal}6}}}{1}
|
||||||
|
{7}{{{\color{teal}7}}}{1}
|
||||||
|
{8}{{{\color{teal}8}}}{1}
|
||||||
|
{9}{{{\color{teal}9}}}{1}
|
||||||
|
{:}{{{\color{gray}{:}}}}{1}
|
||||||
|
{,}{{{\color{gray}{,}}}}{1}
|
||||||
|
{\{}{{{\color{gray}{\{}}}}{1}
|
||||||
|
{\}}{{{\color{gray}{\}}}}}{1}
|
||||||
|
{[}{{{\color{gray}{[}}}}{1}
|
||||||
|
{]}{{{\color{gray}{]}}}}{1},
|
||||||
|
}
|
||||||
|
|
||||||
\begin{document} % начало документа
|
\begin{document} % начало документа
|
||||||
|
|
||||||
|
|
||||||
@@ -174,7 +204,7 @@
|
|||||||
% \end{enumerate}
|
% \end{enumerate}
|
||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
\section {Лабораторная работа №1}
|
\section {Аналитика предметной области}
|
||||||
\subsection{Часть 1: Описание процессов предметной области}
|
\subsection{Часть 1: Описание процессов предметной области}
|
||||||
\subsubsection*{Исходное описание предметной области}
|
\subsubsection*{Исходное описание предметной области}
|
||||||
Стрельба из лука, олимпийский вид спорта с 1900 года. Правила и порядок проведения соревнований в России регламентируются Всемирной федерацией стрельбы из лука (FITA) и Российской федерацией по стрельбе из лука (РФСЛ). РФСЛ проводит несколько десятков соревнований по различным видам стрельбы из лука ежегодно. Спорт также приобретает популярность в любительской среде, например, только в Санкт-Петербурге функционируют около двух десятков спортивных стрелковых клубов и лучных клубов, где может тренировать любой желающий. Частные клубы также регулярно проводят спортивные соревнования.
|
Стрельба из лука, олимпийский вид спорта с 1900 года. Правила и порядок проведения соревнований в России регламентируются Всемирной федерацией стрельбы из лука (FITA) и Российской федерацией по стрельбе из лука (РФСЛ). РФСЛ проводит несколько десятков соревнований по различным видам стрельбы из лука ежегодно. Спорт также приобретает популярность в любительской среде, например, только в Санкт-Петербурге функционируют около двух десятков спортивных стрелковых клубов и лучных клубов, где может тренировать любой желающий. Частные клубы также регулярно проводят спортивные соревнования.
|
||||||
@@ -311,7 +341,7 @@
|
|||||||
|
|
||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
\section{Лабораторная работа №2}
|
\section{Use-case диаграммы}
|
||||||
|
|
||||||
Название: организация соревнований по стрельбе из лука.
|
Название: организация соревнований по стрельбе из лука.
|
||||||
|
|
||||||
@@ -701,17 +731,16 @@
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
\section{Часть 3}
|
\section{BPMN диаграмма процесса <<Сбор заявок на соревнования>>}
|
||||||
\subsection{BPMN диаграмма процесса <<Сбор заявок на соревнования>>}
|
|
||||||
Название: Сбор заявок на соревнования.
|
Название: Сбор заявок на соревнования.
|
||||||
|
|
||||||
Триггер: принято решение о проведении соревнований.
|
Триггер: принято решение о проведении соревнований.
|
||||||
|
|
||||||
Входные данные: незаполненный ограниченный список участников дивизиона.
|
Входные данные: незаполненный список участников дивизиона.
|
||||||
|
|
||||||
Выходные данные: заполненный список участников дивизиона.
|
Выходные данные: заполненный список участников дивизиона.
|
||||||
|
|
||||||
BPMN диаграмма процесса приведена на Рис.~12.
|
BPMN диаграмма процесса приведена на Рис.~12-13.
|
||||||
|
|
||||||
\addtocounter{figure}{1}
|
\addtocounter{figure}{1}
|
||||||
\includepdf[pages={1}, fitpaper, pagecommand={
|
\includepdf[pages={1}, fitpaper, pagecommand={
|
||||||
@@ -729,37 +758,290 @@
|
|||||||
\end{tikzpicture}
|
\end{tikzpicture}
|
||||||
}]{pdf/bpmn-2.pdf}
|
}]{pdf/bpmn-2.pdf}
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
\section{Описание экранных форм}
|
||||||
|
\subsection{Граф экранных форм}
|
||||||
|
|
||||||
|
Граф экранных форм приведен на Рис.~\ref{fig:graph}.
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=1\linewidth]{img/graph.png}
|
||||||
|
\caption{Граф экранных форм.}
|
||||||
|
\label{fig:graph}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
Были выделены следующие экранные формы:
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Форма создания заявки;
|
||||||
|
\item Форма проверки справки о разряде;
|
||||||
|
\item Форма редактирования справки о разряде;
|
||||||
|
\item Уведомление об отказе от редактирования справки о разряде;
|
||||||
|
\item Форма подтверждения или отказа от участия в соревнованиях;
|
||||||
|
\item Уведомление об отказе от участия в соревнованиях;
|
||||||
|
\item Уведомление о согласии участвовать в соревнованиях;
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
Каждый экземпляр процесса может иметь один из следующих статусов:
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Заполнение заявки участником;
|
||||||
|
\item Проверка секретарем справки о разряде участника;
|
||||||
|
\item Редактирование справки о разряде участником;
|
||||||
|
\item Ознакомление секретаря с отказом участника от редактирования справки о разряде;
|
||||||
|
\item Отказ участника от редактирования справки о разряде;
|
||||||
|
\item Ожидание от участника подтверждения или отказа от участия в соревнованиях;
|
||||||
|
\item Ознакомление секретаря с отказом участника от участия в соревнованиях;
|
||||||
|
\item Отказ участника от участия в соревнованиях;
|
||||||
|
\item Ознакомление секретаря с согласием участника участвовать в соревнованиях;
|
||||||
|
\item Заявка участника зарегистрирована.
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
Пример экземпляра процесса в JSON:
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
{
|
||||||
|
"participant_request": {
|
||||||
|
"status": "Заявка участника зарегистрирована",
|
||||||
|
"participant_id": 1234,
|
||||||
|
"contact_info": {
|
||||||
|
"email": "ivan@example.com",
|
||||||
|
"phone": "+79991234567"
|
||||||
|
},
|
||||||
|
"personal_info": {
|
||||||
|
"name": "Иван Иванов",
|
||||||
|
"year_of_birth": "2000-01-01",
|
||||||
|
"region": "Москва"
|
||||||
|
},
|
||||||
|
"rank_confirmation_versions": [
|
||||||
|
{
|
||||||
|
"rank": "1-й разряд",
|
||||||
|
"rank_date": "2021-01-01",
|
||||||
|
"rank_certificate": "rank_certificate_1234_version_1.pdf",
|
||||||
|
"status": "not_checked",
|
||||||
|
"comment": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rank": "3-й разряд",
|
||||||
|
"rank_date": "2021-01-01",
|
||||||
|
"rank_certificate": "rank_certificate_1234_version_2.pdf",
|
||||||
|
"status": "rejected",
|
||||||
|
"comment": "На скане справки не видно дату присвоения разряда."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rank": "2-й разряд",
|
||||||
|
"rank_date": "2023-01-01",
|
||||||
|
"rank_certificate": "rank_certificate_1234_version_3.pdf",
|
||||||
|
"status": "approved",
|
||||||
|
"comment": " Справка одобрена."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
\subsection{Форма создания заявки}
|
||||||
|
Перечень данных:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Имя;
|
||||||
|
\item Дата рождения;
|
||||||
|
\item Регион;
|
||||||
|
\item Телефон;
|
||||||
|
\item Электронная почта;
|
||||||
|
\item Разряд;
|
||||||
|
\item Дата присвоения разряда;
|
||||||
|
\item Справка о присвоении разряда;
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Проверки:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Все поля должны быть заполнены;
|
||||||
|
\item Имя участника должно содержать только буквы;
|
||||||
|
\item Дата рождения должна быть минимум на 18 лет меньше текущей даты, то есть участник должен быть старше 18 лет;
|
||||||
|
\item Регион должен быть выбран из списка;
|
||||||
|
\item Телефон должен соответствовать регулярному выражению: \\
|
||||||
|
\verb|/^(\+7)[- .]?\(?(?:\d{3})\)?[- .]?\d{3}[- .]?\d{4}$/|;
|
||||||
|
\item Электронная почта должна соответствовать регулярному выражению: \\
|
||||||
|
\verb|/^[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}$/i|;
|
||||||
|
\item Разряд должен быть выбран из списка;
|
||||||
|
\item Дата присвоения разряда должна быть меньше текущей даты;
|
||||||
|
\item Файл со справкой о присвоении разряда должен иметь расширение pdf, png, jpg или jpeg;
|
||||||
|
\item Заявки участника с такой электронной почтой и номером телефона не должно быть в реестре заявок.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.5\linewidth]{img/form1.png}
|
||||||
|
\caption{Форма создания заявки.}
|
||||||
|
\label{fig:form1}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Пример JSON после заполнения формы:
|
||||||
|
\begin{verbatim}
|
||||||
|
{
|
||||||
|
"participant_request": {
|
||||||
|
"status": "Проверка секретарем справки о разряде",
|
||||||
|
"participant_id": 1234,
|
||||||
|
"contact_info": {
|
||||||
|
"email": "ivan@example.com",
|
||||||
|
"phone": "+79991234567"
|
||||||
|
},
|
||||||
|
"personal_info": {
|
||||||
|
"name": "Иван Иванов",
|
||||||
|
"year_of_birth": "2000-01-01",
|
||||||
|
"region": "Москва"
|
||||||
|
},
|
||||||
|
"rank_confirmation_versions": [
|
||||||
|
{
|
||||||
|
"rank": "1-й разряд",
|
||||||
|
"rank_date": "2021-01-01",
|
||||||
|
"rank_certificate": "rank_certificate_1234_version_1.pdf",
|
||||||
|
"status": "not_checked",
|
||||||
|
"comment": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
\subsection{Форма проверки справки о разряде}
|
||||||
|
|
||||||
|
Перечень данных:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Комментарий;
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Проверки:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Комментарий должен быть заполнен;
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.5\linewidth]{img/form2.png}
|
||||||
|
\caption{Форма проверки справки о разряде.}
|
||||||
|
\label{fig:form2}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Пример JSON после заполнения формы:
|
||||||
|
\begin{verbatim}
|
||||||
|
{
|
||||||
|
"participant_request": {
|
||||||
|
"status": "Проверка секретарем справки о разряде",
|
||||||
|
"participant_id": 1234,
|
||||||
|
"contact_info": {
|
||||||
|
"email": "ivan@example.com",
|
||||||
|
"phone": "+79991234567"
|
||||||
|
},
|
||||||
|
"personal_info": {
|
||||||
|
"name": "Иван Иванов",
|
||||||
|
"year_of_birth": "2000-01-01",
|
||||||
|
"region": "Москва"
|
||||||
|
},
|
||||||
|
"rank_confirmation_versions": [
|
||||||
|
{
|
||||||
|
"rank": "1-й разряд",
|
||||||
|
"rank_date": "2021-01-01",
|
||||||
|
"rank_certificate": "rank_certificate_1234_version_1.pdf",
|
||||||
|
"status": "rejected",
|
||||||
|
"comment": "Не видно дату присвоения разряда."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
\subsection{Форма редактирования справки о разряде}
|
||||||
|
|
||||||
|
Перечень данных:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Разряд;
|
||||||
|
\item Дата присвоения разряда;
|
||||||
|
\item Справка о присвоении разряда;
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Проверки:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Разряд должен быть выбран из списка;
|
||||||
|
\item Дата присвоения разряда должна быть меньше текущей даты;
|
||||||
|
\item Файл со справкой о присвоении разряда должен иметь расширение pdf, png, jpg или jpeg;
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.5\linewidth]{img/form3.png}
|
||||||
|
\caption{Форма редактирования справки о разряде.}
|
||||||
|
\label{fig:form3}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Пример JSON после заполнения формы:
|
||||||
|
\begin{verbatim}
|
||||||
|
{
|
||||||
|
"participant_request": {
|
||||||
|
"status": "Проверка секретарем справки о разряде",
|
||||||
|
"participant_id": 1234,
|
||||||
|
"contact_info": {
|
||||||
|
"email": "ivan@example.com",
|
||||||
|
"phone": "+79991234567"
|
||||||
|
},
|
||||||
|
"personal_info": {
|
||||||
|
"name": "Иван Иванов",
|
||||||
|
"year_of_birth": "2000-01-01",
|
||||||
|
"region": "Москва"
|
||||||
|
},
|
||||||
|
"rank_confirmation_versions": [
|
||||||
|
{
|
||||||
|
"rank": "1-й разряд",
|
||||||
|
"rank_date": "2021-01-01",
|
||||||
|
"rank_certificate": "rank_certificate_1234_version_1.pdf",
|
||||||
|
"status": "rejected",
|
||||||
|
"comment": "Не видно дату присвоения разряда."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rank": "1-й разряд",
|
||||||
|
"rank_date": "2021-01-01",
|
||||||
|
"rank_certificate": "rank_certificate_1234_version_2.pdf",
|
||||||
|
"status": "not_checked",
|
||||||
|
"comment": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
\section*{Заключение}
|
\section*{Заключение}
|
||||||
\addcontentsline{toc}{section}{Заключение}
|
\addcontentsline{toc}{section}{Заключение}
|
||||||
% В ходе освоения данного курса было выполнено пять лабораторных работ:
|
|
||||||
% \begin{enumerate}
|
|
||||||
% \item Создано представление, инкапсулирующее запрос. Продемонстрирована невозможность модификации представления; написан запрос, использующий в себе созданное представление.
|
|
||||||
% \item Создана таблица подсчёта количества соревнований для каждого судьи. Также созданы 5 триггеров, автоматизирующие сбор статистики в таблице.
|
|
||||||
% \item Созданы 2 пользователя с различными правами доступа. Первый пользователь наделён правами только на просмотр представления, а второй наделён правами просмотра, вставки, удаления и обновления данных во всех таблицах, участвующих в представлении. На 8 примерах продемонстрировано поведение СУБД при различных операциях для каждого пользователя, в том числе при недопустимых.
|
|
||||||
% \item Созданы процедура и функция. Функция принимает на вход фамилию, имя и отчество человека и возвращает фамилию и его инициалы.
|
|
||||||
% \item Управление транзакциями. Задан уровень изоляции транзакций как Read Committed и продемонстрировано отсутствие артефакта <<Грязное чтение>> и наличие артефактов <<Неповторяемое чтение>> и <<Фантомы>>.
|
|
||||||
% \end{enumerate}
|
|
||||||
|
|
||||||
% На работу было потрачено около 2-х месяцев, за которые было написано более 500 строк кода.
|
В ходе выполнения данной лабораторной работы была описана предметная область организации соревнований по стрельбе из лука:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Составлено текстовое описание 8 различных процессов из предметной области. Выделено 9 основных ролей, которые участвуют в процессах.
|
||||||
|
\item На основе текста, описывающего процесс сбора заявок судей и участников, была построена ER-диаграмма. Полученная диаграмма содержит 14 сущностей и описывает 8 различных связей между ними.
|
||||||
|
\item Разработаны 9 use-case диаграмм для описания основного процесса и его подпроцессов на трёх уровнях детализации.
|
||||||
|
\item Создана BPMN-диаграмма, описывающая процесс сбора заявок участников на соревнования.
|
||||||
|
\item Разработан граф форм для процесса регистрации заявки участника. Граф содержит 4 формы и 3 уведомления. Разработаны эскизы для 4 форм. Разработана структура JSON, содержащая экземпляр процесса регистрации заявки участника.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
% Работа была выполнена в системе управления базами данных PostgreSQL 16.2.
|
Были получены базовые навыки работы с ER-диаграммами, Use-case диаграммами и BPMN-диаграммами.
|
||||||
|
|
||||||
% Полученные знания могут быть и будут использованы в работе над последующими проектами и заданиями.
|
% \newpage
|
||||||
|
% \section*{Список литературы}
|
||||||
|
% \addcontentsline{toc}{section}{Список литературы}
|
||||||
|
|
||||||
|
% \vspace{-1.5cm}
|
||||||
\newpage
|
% \begin{thebibliography}{0}
|
||||||
\section*{Список литературы}
|
% \bibitem{MySQL}
|
||||||
\addcontentsline{toc}{section}{Список литературы}
|
% MySQL Documentation URL: \url{https://dev.mysql.com/doc/}, Дата обращения: 01.11.2024
|
||||||
|
% \bibitem{PostgreSQL}
|
||||||
\vspace{-1.5cm}
|
% PostgreSQL documentation URL: \url{https://www.postgresql.org/docs/}, Дата обращения: 01.11.2024
|
||||||
\begin{thebibliography}{0}
|
% \end{thebibliography}
|
||||||
\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}
|
\end{document}
|
||||||
Reference in New Issue
Block a user