
- •ВВЕДЕНИЕ
- •1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ
- •1.1 Введение
- •1.1.1 Наименование программы
- •1.1.1 Краткая характеристика области применения программы
- •1.2 Основание для разработки
- •1.3 Назначение разработки
- •1.4 Требования, предъявляемые к программе
- •1.4.1 Требования к функциональным характеристикам программы
- •1.5 Требования к программной документации
- •1.6 Требования к программной документации
- •2.1 Хеш-таблица
- •2.2 Дерево
- •2.3 Вектор
- •2.4 Граф
- •2.5 Динамический массив
- •2.6 Выбор структуры данных
- •3 ОПИСАНИЕ ПРОГРАММЫ
- •3.1 Общие сведения
- •3.1.1 Наименование программы
- •3.1.2 Программное обеспечение, необходимое для функционирования программы
- •3.3 Общие сведения
- •3.3.1 Алгоритмы, используемые в программе
- •3.3.1.1 Алгоритм запуска программы
- •3.3.1.2 Алгоритм добавления элемента в словарь
- •3.3.1.2 Алгоритм исключения элемента из словаря
- •3.3.1.3 Алгоритм поиска элемента словаря по ключу
- •3.3.1.4 Алгоритм изменения значения элемента
- •3.3.1.6 Алгоритм чтения словаря из файла
- •3.3.1.7 Алгоритм записи словаря в файл
- •Для запуска программы пользователю необходимо открыть предоставляемый пользователю файл «.exe». Как было отмечено ранее, для корректной работы продукта необходимо наличие графического адаптера и операционной системы Windows.
- •3.5 Вызов программы
- •3.7 Выходные данные
- •ЗАКЛЮЧЕНИЕ
- •СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- •приложение А

номер телефона абонента, потом, обращаясь к значению entry его ФИО и
паспортные данные.
Рисунок 3.5-Алгоритм вывода словаря в порядке возрастания ключей
3.3.1.6 Алгоритм чтения словаря из файла
Алгоритм чтения словаря из файла использует в качестве параметров словарь “Phonebook”, который передаётся по ссылке, название файла “fileName”,
которое передаётся как константная ссылка на строку. 22
Программа создает объект ifstream, который используется для чтения из файла с именем, переданным в качестве аргумента fileName. Далее, при помощи метода is_open для объекта infile, происходит проверка на успешное открытие файла. Если файл не удалось открыть (например, файл не существует или нет прав на чтение), выводится сообщение об ошибке в стандартный поток ошибок cerr, и
функция завершается. Если же файл удалось открыть, тогда внутри цикла создаются три переменных строкового типа: number, fio и passportData. С
помощью getline считываются строки из файла. Предполагается, что каждая запись абонента в файле занимает три строки: первая — номер телефона, вторая
— ФИО, третья — паспортные данные. Далее происходит проверка значений этих переменных. Если все считанные строки не пустые (то есть файл содержит корректные данные), создается объект Abonent, который инициализируется ФИО и паспортными данными. Затем вызывается функция addAbonent, которая добавляет абонента в phoneBook, используя номер телефона в качестве ключа.
После завершения чтения данных, при помощи метода close для объекта infile, файл закрывается, освобождая системные ресурсы.
23

Рисунок 3.6-Алгоритм чтения словаря из файла
24
3.3.1.7 Алгоритм записи словаря в файл
Алгоритм записи словаря в файл использует в качестве параметров словарь
“Phonebook”, который передаётся по ссылке, название файла “fileName”, которое передаётся как константная ссылка на строку.
Создается объект ofstream, который будет использоваться для записи в файл с именем, переданным в качестве аргумента fileName. Далее, при помощи метода is_open для объекта infile, происходит проверка на успешное открытие файла.
Если файл не удалось открыть (например, если у программы нет прав на запись в указанное место), выводится сообщение об ошибке в стандартный поток ошибок cerr, и функция завершает выполнение. Если же файл открыть удалось, то происходит запись данных в файл: используется цикл for, который проходит по каждой записи в phoneBook. entry представляет собой пару, где entry.first — это ключ (номер телефона), а entry.second — это значение (объект Abonent),
содержащий данные абонента. Сначала записывается номер телефона (entry.first),
затем ФИО (entry.second.fio), затем паспортные данные (entry.second.passportData).
Каждое значение записывается на новой строке, а после каждой записи добавляется дополнительная пустая строка для разделения записей.
После завершения чтения данных, при помощи метода close для объекта infile, файл закрывается, освобождая системные ресурсы.
25

Рисунок 3.7-Алгоритм записи словаря в файл
26