Добавил:
Только когда поступишь в технический вуз поймешь на сколько ты гуманитарий Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа / готовая КР (Словарь).pdf
Скачиваний:
4
Добавлен:
10.12.2024
Размер:
1.11 Mб
Скачать

номер телефона абонента, потом, обращаясь к значению 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