Лабораторная работа 11

Тема: Структура данных – файл. Файловые потоки С++

Цель. Получение навыков по обработке данных, хранящихся во внешней памяти.

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

  1. Разработать функции для выполнения операций над текстовым файлом С++:

· создание текстового файла, содержащего числовые значения по одному на строку;

· вывод содержимого текстового файла;

· добавление новой записи в конец файла:

· разработать функции для дополнительных операций, указанных в варианте

  1. Разработать приложение и выполнить тестирование всех функций.
  2. Создать модуль и перенести в него все отлаженные функции. Исключить функции из приложения. Отладить приложение, подключив к нему модуль с функциями.
  3. Разработать функции для реализации дополнительных операций, определенных вариантом и сохранить их в модуле с остальными функциями.

Текстовый файл

Дополнительные операции
  Удаление значения строки с заданным номером, путем создания нового файла, удаление старого и переименование нового, указав ему имя удаленного файла.
  Скопировать числа исходного файла, которые кратны 7, в новый файл
  Добавить в файл новую строку перед первой строкой. Путем создания нового файла.
  Создать новый файл из значений исходного, записав в него числа, полученные путем деления каждого числа исходного файла на минимальное число, хранящееся в исходном файле.
  Создать новый файл из значений исходного, умножив каждое число на значение последнего элемента исходного файла.
  Создать новый файл из значений исходного, умножив каждое число на сумму первого и последнего чисел исходного файла.
  Создать новый файл из значений исходного, поделив каждое числое на число, равное количеству строк в файле.
  Создать новый файл из значений исходного, поменяв местами первое число и и последнее.
  Создать новый файл из значений исходного, заменив все отрицательные числа файла, на квадрат минимального числа исходного файла.
  Создать новый файл из значений исходного, умножив каждое четное число на максимальное число в файле.
  Создать новый файл из значений исходного, разделив все нечетные по абсолютной величине числа на среднее арифметическое чисел в файле
  Создать новый файл из значений исходного, сформировав число по правилу: прибавить к каждому числу первое четное число исходного файла.
  Создать новый файл из значений исходного, поделив каждое число на наибольший общий делитель чисел файла.
  Создать новый файл из значений исходного, добавив к каждому числу наибольшее и наименьшее из чисел файла исходного файла.
  Создать новый файл из значений исходного, увеличив его на среднее арифметическое всех отрицательных чисел исходного файла.
16* Создать новый файл из значений исходного, размещая в одной строке исходное число и через пробел количество цифр в числе.
17* Создать новый файл из значений исходного, размещая в каждой строке три числа: исходное, количество цифр в числе, сумма цифр в числе.
18* Создать новый файл из значений исходного, размещая на строке по три числа из исходного файла.
19* Создать новый файл из значений исходного, размещая на строке значения: количество чисел до конца строки, сами числа через пробел.
20* Создать новый файл из значений исходного, размещая на строке значения: четное число – количество чисел до конца строки, сами числа через пробел.

Задание 2. Создание модуля с операциями над двоичными файлами. Файл состоит из записей определенной структуры. Записи имеют ключ, уникальный в пределах файла, создается он как счетчик: количество записей + 1.

  1. Подготовьте тестовые данные в текстовом файле с кодировкой ASCII.
  2. Разработайте структуру записи двоичного файла согласно варианту задания.
  3. Разработайте функции для операций:

· преобразование тестовых данных в двоичный файл

· отображение всех записей двоичного файла

· манипулирование записями в двоичном файле: согласно операций определенных в варианте

Удаление записи производить путем замены на последнюю запись.

  1. Сохраните функции в новом модуле.
  2. Разработать приложение, демонстрирующее выполнение всех операций, подключив к нему модуль с функциями.
 
  Структура записи Читательский абонемент: номер читательского - целое пятизначное число, ФИО, Адрес
Доп. операция 1. Поиск записи с заданным значением ключа. 2. Удаление найденного значения.
  Структура записи Счет в банке: номер счета 7 разрядное число, ФИО, Адрес
Доп. операция 1. Поиск записи с заданным значением ключа. 2. Обновить значение одного поля.
  Структура записи Владелец телефона: номер телефона – последовательность символов, адрес, ФИО
Доп. операция 3. Сформировать текстовый файл из фамилий владельцев, чьи номера начинаются с введенных первых трех цифр(например, 434) 4. Удалить сведения о владельцах телефонов, которые начинаются с заданной цифры.
  Структура записи Владельцев автомобилей. номер машины, марка, сведения о владельце, сведения об угоне (логического типа).
Доп. операция 5. Список автомобилей числящихся в угоне. 6. Установить факт угона автомобиля с заданным номером.
  Структура записи Пациент поликлиники: номер карточки, код хронического заболевания, Фамилия лечащего врача
Доп. операция 7. Сформировать двоичный файл с записями о пациентах с заданным кодом заболевания. 8. Заменить фамилию, имя, отчество врача у указанных пациентов(список пациентов – это массив номеров карточек)
  Структура записи Товар: название, код – шестиразрядное число, завод изготовитель, цена, страна(название0
Доп. операция 9. Сформировать текстовый файл о поставках заданной страны, размещая на строке все сведения о товаре, кроме страны. Название страны записать в первой строке файла. 10. Добавить новую запись о товаре в конец файла.
  Структура записи Специализация вуза: код специальности, название вуза, название специальности
Доп. операция 11. Сформировать список вузов, которые ведут подготовку специалистов по специальности с указанным номером. Список представить в текстовом файле. 12. Изменить код специальности по названию специальности
  Структура записи Книга: ISBN – двенадцатизначное число, Автор, Название, год издания
Доп. операция 13. Создать новый типизированный файл и перенести в него записи о книгах указанного автора за указанный год. 14. Удалить книги изданные в указанном году.
  Структура записи Страховой полис: номер, компания, фамилия владельца
Доп. операция 15. Сформировать список клиентов заданной страховой компании. Список сохранить в текстовом файле, где сведения об одном клиенте в одной строке. 16. Изменить название компании у всех клиентов. Старое и новое названия известны.
  Структура записи Англо – русский словарь: английское слово, русское слово
Доп. операция 17. Сформировать список английских слов, начинающихся с указанной буквы и их русский перевод. 18. Обновить запись, записав новый вариант русского переводв по заданному слову.
  Структура записи Железнодорожная справка: номер поезда, пункт отправления, пункт назначения, время отправления
Доп. операция 19. Сформировать справку по поездам, отправляющимся в указанный пункт назначения. Результаты записать в новый двоичный файл такой же структуры, как и исходный. 20. Удалить сведения по указанному поезду.
  Структура записи Регистрация малого предприятия: номер лицензии(текстовое значение), название, учредитель, признак действия лицензии(0 действует, 1 отозвана)
Доп. операция 21. Сформировать список лицензий одного заданного учредителя. Записать полученные данные в текстовый файл, располагая записи построчно. 22. Отозвать указанные лицензии. Номера отзываемых лицензий находятся в текстовом файле, каждый номер на отдельной строке.
  Структура записи Студент: номер зачетной книжки, номер группы, ФИО
Доп. операция 23. Сформировать список студентов одной группы в двоичном файле той же структуры, что и исходный. 24. Перевести некоторых студентов в другую группу. Номера зачетных книжек переводимых студентов находятся в текстовом файле, каждый номер на отдельной строке. Номер новой группы известен и передается в операцию.
  Структура записи Справочная межгорода: код города, название города, страна
Доп. операция 25. Сформировать в текстовом файле таблицу кодов указанной страны. В строке файла должны храниться: название города и код. 26. Обновить код города по названию города.
  Структура записи Расписание занятий группы: номер группы, Название дисциплины, номер пары, номер недели, номер дня недели, вид занятия, номер аудитории.
Доп. операция 27. Сформировать в двоичном файле расписание заданной группы на заданный день недели. 28. Обновить расписание, найти дисциплины, которые стоят на одинаковых парах в одну аудиторию и у определить для них новые аудитории.
  Структура записи Частотный словарь: слово, количество вхождений в текст
Доп. операция 29. Определить, какое слово встречалось чаще всего в тексте. 30. Добавить в файл новую запись по слову. Обновить количество вхождений некоторых слов, увеличив их количество на 1.
  Структура записи Читательский билет: Номер, инвентарный номер книги, дата выдачи, дата возврата
Доп. операция 31. Сформировать список читателей, которые не вернули книги в срок (дата возврата<текущей), полученные данные записать в двоичный файл. 32. Найти запись по заданным критериям: номер, инвентарный номер и вернуть указатель на запись. 33. Удалить запись о книге, которую читатель вернул в библиотеку.
  Структура записи Вызов такси: Номер, Фамилия водителя, время выезда, отметка о присутствии в гараже
Доп. операция 34. Сформировать список машин, находящихся в гараже. Полученные данные записать в двоичный файл с той же структурой. 35. Обновить сведения о машины при выезде из гаража.
  Структура записи Продажи товаров: Код товара, название, цена, дата продажи.
Доп. операция 36. Посчитать сумму, на которую были продан товары за указанную дату. 37. Сформировать двоичный файл на основе записей исходного файла, содержащий сведения о товаре: код товара, количество продаж, цена товара. 38. Произвести расчет выручки от продаж на основе данных нового файла.
  Структура записи Сотрудник: Табельный номер, Должность, оклад, количество детей
Доп. операция 39. Увеличить оклад вдвое тех сотрудников, которые занимают указанные в текстовом файле должности. 40. Удалить сотрудников с табельными номерами, которые хранятся в двоичном файле.

1 Файловые потоки.

1.1. Классы потоков

ifstream – класс входных файловых потоков (для чтения данных)

ostream – класс выходных файловых потоков (для создания файлов и добавления записей)

fstream – класс двунаправленных потоков (для обеих типов операций)

Файл – это экземпляр соответствующего класса.

1.2. Операции над файлами

Файл – это экземпляр соответствующего класса – поток..

1.2.1. Создание потока

Способ 1. Без связывания с файлом

ifstream if; // для ввода данных в файл

ostream of; // для чтения данных из файла

fstream ff; // для чтения и записи

Способ 2. Связывая его с файлом

ifstream if(“A.txt”);

ostream of(“A.txt”);

fstream ff(“A.txt”);

1.2.2. Открытие потока и связывание его с файлом

Так как поток это объект класса, то открытие осуществляет метод

open([имя файла,][способ открытия файла])

имя файла – строковое значение, которое задает имя физического файла или переменную типа строка.

Способ открытия файла

Способ открытия файла задается перечисляемой переменной


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: