Лабораторная работа № 7
"Блоковый ввод-вывод"
Цель: Работа с двоичными файлами, организация ввода-вывода структурированной информации и ее хранение на внешних носителях.
Постановка задачи
Сформировать двоичный файл из элементов, заданной в варианте структуры, распечатать его содержимое, выполнить удаление и добавление элементов в соответствии со своим вариантом, используя для поиска удаляемых или добавляемых элементов разработанную функцию. Формирование, печать, добавление и удаление элементов оформить так же в виде функций. Предусмотреть сообщения об ошибках при открытии файла и выполнении операций ввода/вывода.
Варианты
1. Структура "Абитуриент":
- фамилия, имя, отчество;
- год рождения;
- оценки вступительных экзаменов (3);
- средний балл аттестата.
Удалить элемент с указанным номером, добавить элемент после элемента с указанной фамилией.
2. Структура "Сотрудник":
- фамилия, имя, отчество;
- должность
- год рождения;
- заработная плата.
Удалить элемент с указанной фамилией, добавить элемент после элемента с указанным номером.
3. Структура "Государство":
- название;
- столица;
- численность населения;
- занимаемая площадь.
Удалить все элементы, у которых численность меньше заданной, добавить элемент после элемента с указанным номером.
4. Структура "Человек":
- фамилия, имя, отчество;
- домашний адрес;
- номер телефона;
- возраст.
Удалить все элементы с заданным возрастом, добавить элемент после элемента с заданным номером.
5. Структура "Человек":
- фамилия, имя, отчество;
- год рождения;
- рост;
- вес.
Удалить все элемент с указанным ростом и весом, добавить элемент после элемента с указанной фамилией.
6. Структура "Школьник":
- фамилия, имя, отчество;
- класс;
- номер телефона;
- оценки по предметам (математика, физика, русский язык, литература).
Удалить все элементы, у которых есть 2 хотя бы по одному предмету, добавить элемент в начало файла.
7. Структура "Студент":
- фамилия, имя, отчество;
- домашний адрес;
- группа;
- рейтинг.
Удалить все элементы, у которых рейтинг меньше заданного, добавить 1 элемент в конец файла.
8. Структура "Покупатель":
- фамилия, имя, отчество;
- домашний адрес;
- номер телефона;
- номер кредитной карточки.
Удалить 3 элемента из начала файла, добавить 3 элемента в конец файла.
9. Структура "Пациент":
- фамилия, имя, отчество;
- домашний адрес;
- номер медицинской карты;
- номер страхового полиса.
Удалить элемент с заданным номером медицинской карты, добавить 2 элемента в начало файла.
10. Структура "Информация":
- носитель;
- объем;
- название;
- автор.
Удалить первый элемент с заданным объемом информации, добавить элемент перед элементом с указанным номером.
11. Структура "Видеокассета":
- название фильма;
- режиссер;
- продолжительность;
- цена.
Удалить все элементы с ценой выше заданной, добавить 3 элемента в конец файла.
12. Структура "Музыкальный диск":
- название;
- автор;
- продолжительность;
- цена.
Удалить первый элемент с заданной продолжительностью, добавить 2 элемента после элемента с заданным номером.
13. Структура "Спортивная команда":
- название;
- город;
- количество игроков;
- количество набранных очков.
Удалить все элементы с количеством очков меньше заданного, добавить 2 элемента в начало файла.
14. Структура "Стадион":
- название;
- адрес;
- вместимость;
- виды спорта.
Удалить элемент с заданным названием, добавить 2 элемента после элемента с указанным номером.
15. Структура "Автомобиль":
- марка;
- год выпуска;
- цена;
- цвет.
Удалить все элементы, у которых год выпуска меньше заданного, добавить элемент в начало файла.
16. Структура "Владелец автомобиля":
- фамилия, имя, отчество;
- номер автомобиля;
- телефон;
- номер техпаспорта.
Удалить элемент с заданным номером, добавить 2 элемента перед элементом с заданной фамилией.
17. Структура "Фильм":
- название;
- режиссер;
- год выпуска;
- стоимость.
Удалить все элементы, у которых стоимость превышает заданную, добавить элемент в начало файла.
18. Структура "Книга":
- название;
- автор;
- год издания;
- количество страниц.
Удалить 3 элемента из начала файла, добавить элемент перед элементом с указанным названием.
19. Структура "Фильм":
- название;
- режиссер;
- страна;
- приносимая прибыль.
Удалить 2 элемента из конца файла, добавить элемент после элемента с указанным названием.
20. Структура "Государство":
- название;
- государственный язык;
- денежная единица;
- курс валюты относительно $.
Удалить элемент с указанным названием, добавить 2 элемента в конец файла.
21. Структура "Автомобиль":
- марка;
- серийный номер;
- регистрационный номер;
- год выпуска.
Удалить 3 элемента из начала файла, добавить элемент поле элемента с указанным регистрационным номером.
22. Структура "Владелец автомобиля":
- фамилия, имя, отчество;
- номер автомобиля;
- номер техпаспорта;
- отделение регистрации ГАИ.
Удалить элемент с заданным номером, добавить 2 элемента перед элементом с заданной фамилией.
23. Структура "Стадион":
- название;
- год постройки;
- количество площадок;
- виды спорта.
Удалить все элементы, у которых год постройки меньше заданного, добавить 2 элемента перед элементом с указанным номером.
24. Структура "Студент":
- фамилия, имя, отчество;
- номер телефона;
- группа;
- оценки по 3 основным предметам.
Удалить все элементы из группы с указанным номером, у которых среднее арифметическое оценок меньше заданного, добавить элемент после элемента с заданной фамилией.
25. Структура "Студент":
- фамилия, имя, отчество;
- дата рождения;
- домашний адрес;
- рейтинг.
Удалить элементы, у которых даты рождения совпадают, добавить элемент перед элементом с заданной фамилией.
Методические указания
1. Для заполнения файла можно использовать функцию, формирующую одну структуру, указанного в варианте типа. Значения элементов структуры вводятся с клавиатуры. Для ввода можно использовать операцию >> и функцию gets().
2. При вводе структур можно реализовать один из следующих механизмов:
- ввод заранее выбранного количества структур (не менее 5);
- ввод до появления структуры с заданным количеством признаков;
- диалог с пользователем о необходимости продолжать ввод.
3. Для записи структуры в файл и чтения структуры из файла использовать функции блочного ввода/вывода fread и fwrite.
4. Для удаления / добавления элементов в файл использовать вспомогательный файл.
5. Краткая информация и пример здесь.
5. Содержание отчета
1. Постановка задачи.
2. Описание используемых типов данных.
3. Текст функций для:
· формирования файла,
· печати файла,
· добавления записи в файл,
· удаления записи из файла
· поиска структуры для удаления.
4.Результат решения конкретного варианта.