\documentclass[a4paper, final]{article}
%\usepackage{literat} % Нормальные шрифты
\usepackage[14pt]{extsizes} % для того чтобы задать нестандартный 14-ый размер шрифта
\usepackage[T2A]{fontenc}
\usepackage[UTF8]{inputenc}
\usepackage[russian]{babel}
\usepackage{listings} %листинги
\usepackage{amsmath}
\usepackage{multicol}
\usepackage{amssymb} % Для красивого значка пустого множества
\usepackage[left=25mm, top=20mm, right=20mm, bottom=20mm, footskip=10mm]{geometry}
\usepackage{ragged2e} %для растягивания по ширине
\usepackage{setspace} %для межстрочного интервала
\usepackage{indentfirst} % для абзацного отступа
\usepackage{moreverb} %для печати в листинге исходного кода программ
\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{listingsutf8}
\usepackage{xcolor} % цвета
\usepackage{hyperref}% для гиперссылок
\usepackage{enumitem} %для перечислений
\usepackage{titlesec}
\usepackage{graphicx}
\graphicspath{ {./Рисунки/} }
%\usepackage{float}
\usepackage{booktabs}
\usepackage{floatrow}
\usepackage{scalerel} % Stretching images
\usepackage[final]{pdfpages}
\usepackage{dashrule}
\usepackage{multirow} 
\usepackage{tabularx}
\usepackage{titlesec}

\setcounter{secnumdepth}{4}

\titleformat{\paragraph}
{\normalfont\normalsize\bfseries}{\theparagraph}{1em}{}
\titlespacing*{\paragraph}
{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}

\definecolor{apricot}{HTML}{FFF0DA}
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{string}{HTML}{B40000} % цвет строк в коде
\definecolor{comment}{HTML}{008000} % цвет комментариев в коде
\definecolor{keyword}{HTML}{1A00FF} % цвет ключевых слов в коде
\definecolor{morecomment}{HTML}{8000FF} % цвет include и других элементов в коде
\definecolor{captiontext}{HTML}{FFFFFF} % цвет текста заголовка в коде
\definecolor{captionbk}{HTML}{999999} % цвет фона заголовка в коде
\definecolor{bk}{HTML}{FFFFFF} % цвет фона в коде
\definecolor{frame}{HTML}{999999} % цвет рамки в коде
\definecolor{brackets}{HTML}{B40000} % цвет скобок в коде





\AtBeginDocument{\renewcommand{\contentsname}{Содержание}}
\AtBeginDocument{\renewcommand{\refname}{Список источников}}

\floatsetup[table]{style=plain,capposition=bottom}
\setlist[enumerate,itemize]{leftmargin=1.2cm} %отступ в перечислениях

\hypersetup{colorlinks,
  allcolors=[RGB]{010 090 200}} %красивые гиперссылки (не красные)

% подгружаемые языки — подробнее в документации listings (это всё для листингов)
\lstloadlanguages{ [LaTeX] TeX}
% включаем кириллицу и добавляем кое−какие опции
\lstset{language =[LaTeX] TeX, % выбираем язык по умолчанию
extendedchars=true , % включаем не латиницу
escapechar = | , % |«выпадаем» в LATEX|
frame=tb , % рамка сверху и снизу
commentstyle=\itshape , % шрифт для комментариев
stringstyle =\bfseries} % шрифт для строк

\textheight=24cm % высота текста
\textwidth=16cm % ширина текста
\oddsidemargin=0pt % отступ от левого края
\topmargin=-1.5cm % отступ от верхнего края
\parindent=0pt % абзацный отступ
\parskip=0pt % интервал между абзацами
\tolerance=2000 % терпимость к "жидким" строкам
\flushbottom % выравнивание высоты страниц

\begin{document} % начало документа
\lstset{
  language=SQL, % Язык кода по умолчанию
  morekeywords={*,...}, % если хотите добавить ключевые слова, то добавляйте
  % Цвета
  keywordstyle=\color{keyword}\ttfamily\bfseries,
  %stringstyle=\color{string}\ttfamily,
  stringstyle=\ttfamily\color{red!50!brown},
  commentstyle=\color{comment}\ttfamily,
  morecomment=[l][\color{morecomment}]{\#},
  % Настройки отображения
  breaklines=true, % Перенос длинных строк
  basicstyle=\ttfamily\footnotesize, % Шрифт для отображения кода
  backgroundcolor=\color{bk}, % Цвет фона кода
  frame=single,xleftmargin=\fboxsep,xrightmargin=-\fboxsep, % Рамка, подогнанная к заголовку
  rulecolor=\color{frame}, % Цвет рамки
  tabsize=3, % Размер табуляции в пробелах
  % Настройка отображения номеров строк. Если не нужно, то удалите весь блок
  numbers=left, % Слева отображаются номера строк
  stepnumber=1, % Каждую строку нумеровать
  numbersep=5pt, % Отступ от кода
  numberstyle=\small\color{black}, % Стиль написания номеров строк
  % Для отображения русского языка
  extendedchars=true,
  literate={Ö}{ {\"O} }1
  {~}{ {\textasciitilde} }1
  {а}{ {\selectfont\char224} }1
  {б}{ {\selectfont\char225} }1
  {в}{ {\selectfont\char226} }1
  {г}{ {\selectfont\char227} }1
  {д}{ {\selectfont\char228} }1
  {е}{ {\selectfont\char229} }1
  {ё}{ {\"e} }1
  {ж}{ {\selectfont\char230} }1
  {з}{ {\selectfont\char231} }1
  {и}{ {\selectfont\char232} }1
  {й}{ {\selectfont\char233} }1
  {к}{ {\selectfont\char234} }1
  {л}{ {\selectfont\char235} }1
  {м}{ {\selectfont\char236} }1
  {н}{ {\selectfont\char237} }1
  {о}{ {\selectfont\char238} }1
  {п}{ {\selectfont\char239} }1
  {р}{ {\selectfont\char240} }1
  {с}{ {\selectfont\char241} }1
  {т}{ {\selectfont\char242} }1
  {у}{ {\selectfont\char243} }1
  {ф}{ {\selectfont\char244} }1
  {х}{ {\selectfont\char245} }1
  {ц}{ {\selectfont\char246} }1
  {ч}{ {\selectfont\char247} }1
  {ш}{ {\selectfont\char248} }1
  {щ}{ {\selectfont\char249} }1
  {ъ}{ {\selectfont\char250} }1
  {ы}{ {\selectfont\char251} }1
  {ь}{ {\selectfont\char252} }1
  {э}{ {\selectfont\char253} }1
  {ю}{ {\selectfont\char254} }1
  {я}{ {\selectfont\char255} }1
  {А}{ {\selectfont\char192} }1
  {Б}{ {\selectfont\char193} }1
  {В}{ {\selectfont\char194} }1
  {Г}{ {\selectfont\char195} }1
  {Д}{ {\selectfont\char196} }1
  {Е}{ {\selectfont\char197} }1
  {Ё}{ {\"E} }1
  {Ж}{ {\selectfont\char198} }1
  {З}{ {\selectfont\char199} }1
  {И}{ {\selectfont\char200} }1
  {Й}{ {\selectfont\char201} }1
  {К}{ {\selectfont\char202} }1
  {Л}{ {\selectfont\char203} }1
  {М}{ {\selectfont\char204} }1
  {Н}{ {\selectfont\char205} }1
  {О}{ {\selectfont\char206} }1
  {П}{ {\selectfont\char207} }1
  {Р}{ {\selectfont\char208} }1
  {С}{ {\selectfont\char209} }1
  {Т}{ {\selectfont\char210} }1
  {У}{ {\selectfont\char211} }1
  {Ф}{ {\selectfont\char212} }1
  {Х}{ {\selectfont\char213} }1
  {Ц}{ {\selectfont\char214} }1
  {Ч}{ {\selectfont\char215} }1
  {Ш}{ {\selectfont\char216} }1
  {Щ}{ {\selectfont\char217} }1
  {Ъ}{ {\selectfont\char218} }1
  {Ы}{ {\selectfont\char219} }1
  {Ь}{ {\selectfont\char220} }1
  {Э}{ {\selectfont\char221} }1
  {Ю}{ {\selectfont\char222} }1
  {Я}{ {\selectfont\char223} }1
  {\{}{ { {\color{brackets}\{} } }1 % Цвет скобок {
  {\} }{ { {\color{brackets}\} } } }1 % Цвет скобок }
}

% НАЧАЛО ТИТУЛЬНОГО ЛИСТА
\begin{center}
  Санкт - Петербургский Политехнический Университет Петра Великого \\
  Институт компьютерных наук и кибербезопасности  \\
  Высшая школа технологий искусственного интеллекта\\
  \vspace{-15pt}
  \hdashrule[-2mm]{\textwidth}{0.5pt}{}
  \vspace*{15pt}
  \small{наименование организации - разработчика ТЗ на АС}\\
  \vspace{2mm}
\end{center}
  \begin{center}
    \begin{multicols}{2}
        \begin{flushleft}
            \small{УТВЕРЖДАЮ} \\
            \small{Руководитель} \\
            \vspace{0.3cm}
            \small{Курочкин Михаил Александрович} \\
            \vspace{0.5cm}
            \rule{4cm}{0.1mm} \\
            \small{Личная подпись} \\
            \vspace{0.5cm}
            \rule{4cm}{0.1mm} \\
            \small{Расшифровка подписи} \\
            \vspace{0.2cm}
            \small{Печать} \\
            \vspace{0.2cm}
            \small{Дата} \\
          \end{flushleft}
    
        \columnbreak
    
        \begin{flushleft}
            \small{УТВЕРЖДАЮ} \\
            \small{Разработчик (студент группы} \\
            \small{5130201/20102)} \\
            \vspace{0.3cm}
            \small{Тищенко Артём Андреевич} \\
            \vspace{0.5cm}
            \rule{4cm}{0.1mm} \\
            \small{Личная подпись} \\
            \vspace{0.5cm}
            \rule{4cm}{0.1mm} \\
            \small{Расшифровка подписи} \\
            \vspace{0.2cm}
            \small{Печать} \\
            \vspace{0.2cm}
            \small{Дата} \\
        \end{flushleft}
    \end{multicols}
    \end{center}


\begin{center}
   
  Приложение <<Словарь-КЧД>> \\
  \vspace{-15pt}
  \hdashrule[-2mm]{\textwidth}{0.5pt}{}
  \small{наименование АС} \\
  \vspace{0.5cm}
  \normalsize{
  Процесс управления данными в красно-чёрном дереве}\\
  \vspace{-15pt}
  \hdashrule[-2mm]{\textwidth}{0.5pt}{}
  \small{наименование объекта автоматизации} \\
  \vspace{0.5cm}
  
  Словарь-КЧД \\
  \vspace{-15pt}
  \hdashrule[-2mm]{\textwidth}{0.5pt}{}
  \small{краткое наименование АС} \\
  \vspace{0.7cm}
  
  \large{\textbf{Техническое задание}} \\
  \vspace{0.5cm}
  \small{На  }\rule{4cm}{0.1mm} \small{листах} \\
  \small{Действует с} \\
  \vspace{0.7cm}
\end{center}

\small{СОГЛАСОВАНО} \\
\small{Руководитель (должность, наименование} \\
\small{согласующей организации)} \\
\small{Курочкин Михаил Александрович, к.т.н., профессор} \\
  \rule{4cm}{0.1mm} \\
  \small{Личная подпись} \\
  \rule{4cm}{0.1mm} \\
  \small{Расшифровка подписи} \\
  \small{Печать} \\
  \small{Дата}
  \thispagestyle{empty}



\begin{center}
\small{Санкт-Петербург, 2024}
\end{center}

% КОНЕЦ ТИТУЛЬНОГО ЛИСТА

\newpage
\tableofcontents

\newpage
\section{Общие сведения}
\subsection{Полное наименование системы и её условное обозначение}
Полное наименование системы: Приложение словарь на основе красно-черных деревьев <<Словарь-КЧД>>.

Краткое наименование системы: Словарь-КЧД.

\subsection{Номер договора (контракта)}
Отсутствует.

\subsection{Наименования организации-заказчика и организаций-участников работ}
Заказчиком системы является федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский политехнический университет Петра Великого»,  \\
Адрес заказчика: 195251 г. Санкт-Петербург, ул. Политехническая, д. 29. \\

Разработчиком системы является студент группы 5130201/20102 Тищенко Артём Андреевич.\\
Адрес разработчика: 195257 г. Санкт-Петербург, ул. Вавиловых, д. 10, к. 3.

\subsection{Перечень документов, на основании которых создается система}
Отсутствует.

\subsection{Плановые сроки начала и окончания работы по созданию системы}
Плановый срок начала работ по созданию системы <<Словарь-КЧД>> 
– 1 сентября 2024 года.\\
Плановый срок окончания работ по созданию системы <<Словарь-КЧД>> 
– 20 декабря 2024 года.

\subsection{Источники и порядок финансирования работ}
Инициативная работа.
Финансирование отсутствует.

\subsection{Порядок оформления и предъявления заказчику результатов работ по созданию системы}

При предъявлении результатов работ Заказчику передаётся находящийся на гарантийном обслуживании ПК базовой комплектации с установленной лицензионной ОС <<Windows 10>>, загрузочный модуль приложения <<Словарь-КЧД>>, руководство оператора, написанное в соответствии с ГОСТ 19.505–79, набор функциональных тестов и программа испытаний.

\subsection{Перечень нормативно-технических документов, методических материалов, использованных при разработке ТЗ}

ГОСТ 34.602-89 «Информационная технология. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы».

\subsection{Определения, обозначения и сокращения}

\begin{table}[h!]
  \begin{tabularx}{\textwidth}{|c|X|X|}
  \cline{1-3}
  \textbf{№} & \textbf{Сокращение} & \textbf{Расшифровка} \\
  \cline{1-3}

  1 & ТЗ & Техническое задание \\
  \hline
  2 & ОС & Операционная система \\
  \hline
  3 & КЧД & Красно-чёрное дерево \\
  \hline
  4 & ПК & Персональный компьютер \\
  \hline
  \end{tabularx}
\end{table}




\newpage
\section{НАЗНАЧЕНИЕ И ЦЕЛИ СОЗДАНИЯ СИСТЕМЫ}

\subsection{Назначение системы}

Приложение <<Словарь-КЧД>> предназначено для автоматизации процесса управления данными в красно-чёрном дереве.

\subsection{Цели создания системы}
Целью приложения <<Словарь-КЧД>> является сокращение времени управления данными в красно-чёрном дереве.


\newpage
\section{ХАРАКТЕРИСТИКА ОБЪЕКТА АВТОМАТИЗАЦИИ}

Объектом автоматизации является процесс управления данными в красно-черном дереве. Под данными подразумеваются словарные записи, состояющие из двух строк длиной от 1 до 100 в кодировке ASCII. Всего дерево может содержать от 0 до 10000 словарных записей.


\newpage
\section{ТРЕБОВАНИЯ К СИСТЕМЕ}
\subsection{Требования к системе в целом}
\subsubsection{Требования к структуре и функционированию системы}
\paragraph{Перечень подсистем, их назначение и основные характеристики}

Аппаратная часть состоит из персонального компьютера базовой комплектации, находящегося на гарантийном обслуживании.
Программная часть состоит из приложения <<Словарь-КЧД>> и лицензионной ОС Windows 10.

Для запуска приложения <<Словарь-КЧД>> ПК должен обладать следующими техническими характеристиками:

\begin{itemize}
  \item[$-$] Процессор с тактовой частотой минимум 1,2 ГГц;
  \item[$-$] Объем оперативной памяти минимум 256 Мб;
  \item[$-$] Свободное место на диске минимум 100 Мб.
\end{itemize}


\paragraph{Требования к способам и средствам связи для информационного обмена между
компонентами системы}

Требования не предъявляются.

\paragraph{Требования к характеристикам взаимосвязей создаваемой системы со смежными
системами}

Требования не предъявляются.

\paragraph{Требования к режимам функционирования системы}
Приложение должно иметь активный режим функционирования и использоваться не более 2-х часов в день, 7 дней в неделю.

\paragraph{Требования по диагностированию системы}

Требования не предъявляются.

\paragraph{Перспективы развития, модернизации системы}

Требования не предъявляются.

\subsubsection{Требования к численности и квалификации персонала системы}

Для эксплуатации приложения <<Словарь-КЧД>> достаточно одного человека. Пользователи системы должны иметь опыт работы с персональным компьютером на базе операционных систем Microsoft Windows и свободно осуществлять базовые операции в стандартных Windows. Перед началом работы пользователь должен ознакомиться с руководством оператора, написанным в соответствии с ГОСТ 19.505–79.

\subsubsection{Показатели назначения}

Приложение <<Словарь-КЧД>> должно обеспечивать следующие количественные
показатели, которые характеризуют степень соответствия
назначению:

\begin{itemize}
  \item[$-$] Время добавления словарной записи в КЧД не должно превышать 1 секунду, если в словаре меньше 10000 записей;
  \item[$-$] Время удаления словарной записи из КЧД не должно превышать 1 секунду, если в словаре меньше 10000 записей;
  \item[$-$] Время поиска словарной записи в КЧД не должно превышать 1 секунду, если в словаре меньше 10000 записей.
\end{itemize}

\subsubsection{Требования к надежности}

Надежность системы <<Словарь-КЧД>> обеспечивается:
\begin{itemize}
    \item[$-$] аппаратным обеспечением, находящимся на гарантийном обслуживании;
    \item[$-$] лицензионной ОС <<Windows 10>>;
    \item[$-$] математически корректным обеспечением;
    \item[$-$] соответствием процесса разработки приложения ГОСТ Р ИСО/МЭК 25010-2015 «Требования и оценка качества систем и программного обеспечения».
\end{itemize}


\subsubsection{Требования к безопасности}

Факторы, оказывающие вредные воздействия на здоровье со стороны всех элементов системы не должны превышать действующих норм СанПиН 2.2.2./2.4.1340-03 «Гигиенические требования к персональным электронно-вычислительным машинам и организации
работы»(п.10, п.11).
% Все внешние элементы технических средств системы, находящиеся под напряжением,
% должны соответствовать ГОСТ 12.1.030-81 «Система стандартов безопасности труда»(п.7).

\subsubsection{Требования к эргономике и технической эстетике}

Рабочее место должно быть удобным, оборудовано стулом и столом, соответствовать ГОСТ Р 50923-96 <<Дисплеи. Рабочее место оператора. Общие эргономические требования и требования к производственной среде. Методы измерения>>. 

\subsubsection{Требования к транспортабельности для подвижных АС}
Требования не предъявляются.

\subsubsection{Требования к эксплуатации, техническому обслуживанию, ремонту и хранению
компонентов системы}

Требования не предъявляются.

\subsubsection{Требования к защите информации от несанкционированного доступа}

Требования не предъявляются.

\subsubsection{Требования по сохранности информации при авариях}

Авариями считаются скачки напряжения и отключение электропитания. В результате таких аварий могут быть потеряны данные приложения <<Словарь-КЧД>>.

Для уменьшения риска потери данных приложение <<Словарь-КЧД>> должно запускаться на ПК, оснащённом источником бесперебойного питания, обеспечивающим работу в течение как минимум 5 минут при скачках напряжения или полном отсутствии электропитания, чтобы у пользователя было время для корректного завершения работы с приложением <<Словарь-КЧД>>. 

\subsubsection{Требования к защите от влияния внешних воздействий}

Рабочее помещение должно удовлетворять требованиям радиационной безопасности, изложенным в СанПиН 2.6.1.2800-10 «Требования радиационной безопасности при облучении
населения природными источниками ионизирующего излучения» (п. 3.2, п. 4.2)

\subsubsection{Требования к патентной чистоте}
Требования не предъявляются.

\subsubsection{Требования по стандартизации и унификации}
Требования не предъявляются.

\subsubsection{Дополнительные требования}

Требования не предъявляются.

\subsection{Требования к функциям (задачам), выполняемым системой}
Система управления данными <<Словарь-КЧД>> должна выполнять следующие задачи:
\begin{itemize}  
    % \item[$-$] Создание структуры КЧД;
    \item[$-$] Обработка пользовательского ввода;
    \item[$-$] Добавление словарных записей в КЧД;
    \item[$-$] Удаление словарных записей из КЧД;
    \item[$-$] Поиск и просмотр словарных записей в КЧД;
    % \item[$-$] Сохранение данных и структуры КЧД на диск;
    % \item[$-$] Чтение данных и структуры КЧД с диска;
    \item[$-$] Вывод тектового представления КЧД на экран.
\end{itemize}

Для выполнения поставленных задач должны быть реализованы следующие функции:
\begin{itemize}
    % \item Функция для создания структуры КЧД.
    % \item Функция для инициализации структуры КЧД с заданными параметрами.
    \item Функция для обработки ввода числа.
    \item Функция для обработки ввода строки.
    \item Функция для обработки подтверджения действия.
    \item Функция для добавления новой словарной записи в бинарное дерево поиска.
    \item Функция для балансировки КЧД после добавления словарной записи.
    \item Функция для удаления словарной записи из бинарного дерева поиска.
    \item Функция для балансировки КЧД после удаления словарной записи.
    \item Функция для поиска словарной записи в КЧД.
    \item Функция для вывода словарной записи на экран.
    \item Функция для создания текстового представления узлов КЧД.
    \item Функция для создания текстового представления структуры КЧД.
    % \item Функция для сохранения структуры и данных КЧД на диск.
    % \item Функция для загрузки структуры и данных КЧД с диска.
    \item Функция для вывода текстового представления КЧД на экран.
    % \item Функция для проверки целостности структуры КЧД при загрузке.
    % \item Функция для контроля и обработки входных данных от пользователя.
\end{itemize}


\subsection{Требования к видам обеспечения}

\subsubsection{Требования к математическому обеспечению системы}

При реализации системы <<Словарь-КЧД>> используются математически корректные алгоритмы.

\subsubsection{Требования к информационному обеспечению системы}

Структура данных:
\begin{itemize}
    \item Класс \textbf{RBTree} (наследуется от \texttt{BinarySearchTree}):
    \begin{itemize}
        \item Методы:
        \begin{itemize}
            \item \texttt{void insert(std::string key, std::string value)}: Метод для вставки узла с заданными ключом и значением в дерево, с последующей балансировкой.
            \item \texttt{void remove(std::string key)}: Метод для удаления узла с заданным ключом из дерева, с последующей балансировкой.
        \end{itemize}
    \end{itemize}
    
    \item Класс \textbf{BinarySearchTree}:
    \begin{itemize}
        \item Атрибуты:
        \begin{itemize}
            \item \texttt{Node* root}: Указатель на корневой узел дерева.
        \end{itemize}
        \item Методы:
        \begin{itemize}
            \item \texttt{Node* search(Node* node, std::string key)}: Метод для поиска узла с заданным ключом, начиная с узла \texttt{node}.
            \item \texttt{Node* getMin(Node* node)}: Метод для получения узла с минимальным ключом, начиная с узла \texttt{node}.
            \item \texttt{Node* getMax(Node* node)}: Метод для получения узла с максимальным ключом, начиная с узла \texttt{node}.
            \item \texttt{void removeTree()}: Метод для удаления всего дерева.
            \item \texttt{void printTree()}: Метод для вывода дерева.
            \item \texttt{Node* insert(std::string key, std::string value)}: Метод для вставки нового узла с заданными ключом и значением.
            \item \texttt{Node* remove(std::string key, Node* \&saveChildPtr)}: Метод для удаления узла с заданным ключом, сохраняя указатель на узел потомка.
        \end{itemize}
    \end{itemize}

    \item Класс \textbf{Node}:
    \begin{itemize}
        \item Атрибуты:
        \begin{itemize}
            \item \texttt{std::string key}: Ключ узла.
            \item \texttt{std::string value}: Значение узла.
            \item \texttt{bool color}: Цвет узла (красный или черный).
            \item \texttt{Node* left}: Указатель на левый дочерний узел.
            \item \texttt{Node* right}: Указатель на правый дочерний узел.
            \item \texttt{Node* parent}: Указатель на родительский узел.
        \end{itemize}
        \item Методы:
        \begin{itemize}
            \item \texttt{void createLeafs()}: Метод для создания дочерних узлов-листьев.
            \item \texttt{Node* grandparent() const}: Метод для получения указателя на дедушку узла.
            \item \texttt{Node* uncle() const}: Метод для получения указателя на дядю узла.
            \item \texttt{Node* brother() const}: Метод для получения указателя на брата узла.
            \item \texttt{std::string toString() const}: Метод для преобразования узла в строку, включающую ключ, значение и цвет.
            \item \texttt{bool isLeaf()}: Метод для проверки, является ли узел листом.
        \end{itemize}
    \end{itemize}

    \item Типы данных:
    \begin{itemize}
        \item \texttt{std::string}: Строковый тип данных, используемый для хранения ключей и значений узлов.
        \item \texttt{bool}: Логический тип данных, применяемый для указания цвета узла в красно-черном дереве (красный или черный).
        \item \texttt{int}: Целочисленный тип данных для хранения значений, таких как счетчики или индексы.
    \end{itemize}
\end{itemize}


\subsubsection{Требования к лингвистическому обеспечению системы}

Ввод-вывод данных, а также пользовательский интерфейс должен быть реализован на русском языке.

\subsubsection{Требования к программному обеспечению системы}

При разработке должна использоваться лицензионная версия Microsoft Visual Studio 2019.
Базовой программной платформой должна являться лицензированная операционная система Microsoft Windows 10.

\subsubsection{Требования к техническому обеспечению}

Для запуска приложения <<Словарь-КЧД>> ПК должен обладать следующими техническими характеристиками:

\begin{itemize}
  \item[$-$] Процессор с тактовой частотой минимум 1,2 ГГц;
  \item[$-$] Объем оперативной памяти минимум 256 Мб;
  \item[$-$] Свободное место на диске минимум 100 Мб.
\end{itemize}

\subsubsection{Требования к метрологическому обеспечению}

Требования не предъявляются.

\subsubsection{Требования к организационному обеспечению}
Требования не предъявляются.

\subsubsection{Требования к методическому обеспечению}
Требования не предъявляются.


\newpage
\section{СОСТАВ И СОДЕРЖАНИЕ РАБОТ ПО СОЗДАНИЮ (РАЗВИТИЮ) СИСТЕМЫ}
Календарный план работ:


\begin{table}[h!]
    \centering
    \footnotesize
    \begin{tabularx}{\textwidth}{|c|X|X|X|X|}
    \hline
    \textbf{Этап} & \textbf{Название этапа} & \textbf{Сроки
    выполнения} & \textbf{Содержание работ} & \textbf{Результат}\\
    \hline
    1 & Проектирование приложения & 01.09.2024 - 20.09.2024 & Необходимо провести декомпозицию поставленной задачи. А также составить список функций, классов и методов, которые необходимо реализовать.  & Список подзадач, а также функций, классов и методов, которые необходимо реализовать, соответствующие требованиям из п. 4.2 и п. 4.3.2. настоящего технического задания. Математическое описание структуры красно-чёрного дерева и алгоритмов, используемых для работы с ним. \\
    \hline
    2 & Разработка приложения & 21.09.2024 - 20.10.2024 & Реализовать функции, классы и методы, список которых был составлен на этапе проектирования.  & Реализован список функций, классов и методов, составленный на этапе проектирования. Реализованные функции приложения <<Словарь-КЧД>> соответствуют требованиям из п. 4.2. настоящего технического задания. \\
    \hline
    3 & Разработка функциональных тестов & 21.10.2024 - 01.11.2024 & Разработка тестов для выявления ошибок и проверки соответствия функционала требованиям. Составляется программа испытаний приложения, соответствующая ГОСТ 19.301–79. & Набор функциональных тестов и программа испытаний, утверждённые Разработчиком и Заказчиком. \\
    \hline
    4 & Тестирование и отладка приложения & 02.11.2024 - 16.11.2024 &  Применение разработанных тестов, поиск и исправление ошибок. & Составлен протокол тестирования. Ошибки исправлены. \\
    \hline
\end{tabularx}
\end{table}

\newpage
\begin{table}[h!]
    \centering
    \footnotesize
    \begin{tabularx}{\textwidth}{|c|X|X|X|X|}
    \hline
    \textbf{Этап} & \textbf{Название этапа} & \textbf{Сроки
    выполнения} & \textbf{Содержание работ} & \textbf{Результат}\\
    \hline
    5 & Написание руководства оператора & 17.11.2024 - 01.12.2024 & Написание руководства оператора в соответствии с ГОСТ 19.505–79. & Руководство оператора, написанное в соответствии с ГОСТ 19.505–79. \\
    \hline
    6 & Сдача приложения & 02.12.2024 - 20.12.2024 &
    Заказчику передаётся: находящийся на гарантийном обслуживании ПК базовой комплектации с установленной лицензионной ОС <<Windows 10>>, загрузочный модуль приложения <<Словарь-КЧД>>, руководство оператора, написанное в соответствии с ГОСТ 19.505–79, набор функциональных тестов и программа испытаний.
    & Подписанный Заказчиком и Разработчиком акт приёмки-сдачи приложения. \\
    \hline
    \end{tabularx}
\end{table}

\newpage
\section{ПОРЯДОК КОНТРОЛЯ И ПРИЕМКИ СИСТЕМЫ}

\subsection{Виды, состав, объем и методы испытаний системы}

Виды, состав, объем, и методы испытаний изложены в программе испытаний, которую подготавливает Разработчик. Также разработчик подготавливает набор функциональных тестов. Функциональные тесты и программа испытаний утверждаются Разработчиком и Заказчиком.

\subsection{Общие требования к приемке работ по стадиям}

Во время приёмки работ Заказчику передаётся находящийся на гарантийном обслуживании ПК базовой комплектации с установленной лицензионной ОС <<Windows 10>>, загрузочный модуль приложения <<Словарь-КЧД>>, руководство оператора, написанное в соответствии с ГОСТ 19.505–79, набор функциональных тестов и программа испытаний.

Заказчик и Разработчик подписывают акт приёмки-сдачи приложения.


\subsection{Статус приемочной комиссии}

Статус приемочной комиссии определяется Заказчиком до проведения испытаний.

\newpage
\section{ТРЕБОВАНИЯ К СОСТАВУ И СОДЕРЖАНИЮ РАБОТ ПО ПОДГОТОВКЕ ОБЪЕКТА
АВТОМАТИЗАЦИИ К ВВОДУ СИСТЕМЫ В ДЕЙСТВИЕ}

Подготовить рабочее место в соответствии с требованиями, установленными в разделе 4 технического задания. Загрузить загрузочный модуль на ПК базовой комплектации на гарантийном обслуживании с установленной лицензионной ОС Windows. Запустить загрузочный модуль и подождать около 5 секунд до полной загрузки приложения.

Перед началом работы с приложением пользователь должен ознакомиться с руководством оператора, написанным в соответствии с ГОСТ 19.505–79.

\newpage
\section{ТРЕБОВАНИЯ К ДОКУМЕНТИРОВАНИЮ}
Руководство оператора, предъявляемое Заказчику вместе с приложением, должно быть
написано в соответствии с ГОСТ 19.505–79 «Единая система программной документации.
Руководство оператора. Требования к содержанию и оформлению».

\newpage
\section{ИСТОЧНИКИ РАЗРАБОТКИ}
Данное техническое задание разработано на основе ГОСТ 34.602–89 «Информационная технология. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы».


\end{document}