Выберите задачу вашего варианта.
1. Алгоритм решения задачи разделить на функции, каждая из которых выполняет одну из следующих процедур:
· Функция, получает поток, связанный с файлом, и добавляет одну запись в файл или в текущую позицию в файле, либо в позицию, номер которой задан через параметры; функция должна контролировать правильность записи в файл. При возникновении ошибки записи выдавать сообщение об ошибке записи. Применить механизм обработки исключений.
· функция получает поток и читает из файла, связанного с потоком, в память запись либо с текущей позиции, либо с позиции, номер которой задан через ее параметры. Если операция чтения прошла успешно, функция возвращает через возвращаемое значение поток по ссылке в состоянии ios::good, если найден конец файла – в состоянии ios::end. При возникновении состояния ios::bad, выдается сообщение об ошибке чтения. Применить механизм обработки исключений.
· функция выдает на экран информацию из одной записи файла в виде строки таблицы. Для построения таблиц используйте манипуляторы;
· функция выдает на экран всю информацию из файла в виде много строковой таблицы. Функция должна организовывать постраничное представление информации на одном экране. Размер страницы (количество строк в ней) задается через параметры этой функции. Создайте для организации работы этой функции свои функции-манипуляторы, выводящие в поток линии (одну или несколько, в зависимости от рисуемой таблицы) и «шапку – заголовок» таблицы;
· функция получает поток, связанный с файлом, и помечает на удаление (или снимает признак удаления) из файла одну или несколько записей. Критерий по которому происходит пометка записей на удаление определяется в вашем варианте.
· функция получает поток, связанный с файлом, и удаляет из файла все помеченные записи.
· функция решает задачу индивидуальной обработки информации Вашего варианта.
2. Составить главную функцию, выполняющую по требованию пользователя через меню одного из следующих действий:
· ввод с клавиатуры N записей в файл;
· чтение из файла всех записей;
· чтение записи с указанным номером на экран;
· пометка записей на удаление;
· снятие с записей пометок на удаление;
· удаление записей, помеченных на удаление, из файла;
· решение индивидуальной задачи.
В функции main() предусмотреть возможность многократного выполнения действий обработки информации по желанию пользователя Вашей программы.
При организации таблиц на экране использовать манипуляторы (форматированный потоковый ввод-вывод ). Для организации «шапки» таблицы спроектируйте свою функцию манипулятор.
Функции объединить по назначению в отдельные модули-файлы. В приложении необходимо создать и использовать свой заголовочный файл.
P.S.
Студенты, выполняющие в лабораторной работе вариант с нечетным номером, создают в ней текстовый файл с расширением .txt, используя для их создания потоковые операции << и >>. В курсовой работе эти студенты создают файл c режимом binary с расширением .bin.
Студенты, выполняющие в лабораторной работе вариант с четным номером, создают в ней файл в режиме binary с расширением .bin, используя для их создания потоковые функции write() и read(). В курсовой работе эти студенты создают текстовый файл с расширением .txt.
Варианты индивидуальных заданий
Каждая запись файла должна иметь помимо содержательных полей служебное поле, назначение которого фиксировать при необходимости отметку об удалении записи.
В каждом индивидуальном задании дается структура записей файла (содержательные поля) и текст задания на разработку индивидуальных функций.
Вариант 1.
Структура записи: Номер по порядку, фамилия абитуриента, год его рождения. Оценка по физике, оценка по математике, оценка по русскому языку, средний балл сданных экзаменов.
Составить списки абитуриентов, имеющих положительные оценки и средний балл выше указанного с клавиатуры.
Отметить на удаление все записи, имеющие средний балл сданных экзаменов ниже заданного среднего балла. Вывести таблицы помеченных и непомеченных записей.
Вариант 2.
Структура записи: Номер маршрута автобуса, фамилия водителя. Номер билета в начале смены, номер билета в конце смены, количество перевезенных пассажиров за смену.
Подсчитать количество автобусов, выполнивших план перевозок за сутки (план перевозок задается для каждого маршрута с клавиатуры) и выдать таблицу водителей - передовиков.
Отметить на удаление все записи, имеющие количество перевезенных пассажиров меньше указанного с клавиатуры числа перевозок. Вывести таблицы помеченных и непомеченных записей
Вариант 3.
Структура записи: Курс, номер группы, фамилия студента, оценка по программированию, оценка по физике, оценка по математике.
Составить списки студентов по группам в алфавитном порядке.
Отметить на удаление все записи с неудовлетворительными оценками. Вывести таблицы помеченных и непомеченных записей
Вариант 4.
Структура записи: Название оборудования, шифр оборудования, шифр неисправности, стоимость ремонта.
Изменить стоимость ремонта во всех записях с заданным шифром неисправности. Выдать на экран таблицы с перечнем оборудования, для которого не изменилась стоимость ремонта, и для которого такие изменения произошли.
Отметить на удаление все записи, имеющие шифр неисправности, заданный с клавиатуры. Вывести таблицы помеченных и непомеченных записей
Вариант 5.
Структура записи: Шифр детали, ее наименование, завод - изготовитель, количество на складе.
Изменить у деталей с заданными шифрами наименование. Подсчитать количество и вывести на экран информацию о деталях, у которых изменилось наименование.
Отметить на удаление все записи, запасы которых на складе минимальны и максимальны. Вывести таблицы помеченных и непомеченных записей
Вариант 6.
Структура записи: Номер завода, название завода, план выпуска машин, фактический выпуск.
Подсчитать количество заводов, не выполнивших план выпуска изделий, и выдать на экран информацию о них в виде таблицы.
Отметить на удаление все записи, выполнившие план выпуска продукции меньше чем на 50%. Вывести таблицы помеченных и непомеченных записей
Вариант 7.
Структура записи: Фамилия студента, название трех дисциплин, вынесенных на экзаменационную сессию, оценки за 3 экзамена.
Составить рейтинговый список студентов, расположив их в списке в порядке ухудшения их успеваемости.
Отметить на удаление все записи о студентах, имеющих больше двух неудовлетворительных оценок. Вывести таблицы помеченных и непомеченных записей
Вариант 8.
Структура записи: Шифр изделия, трудоемкость изготовления (кол/мин), коэффициент производственной мощности, плановый фонд работы оборудования.
Составить функцию поиска записи по шифру изделия и редактирования одного из полей записи.
Отметить на удаление все записи, имеющие трудоемкость изготовления меньше заданной с клавиатуры. Вывести таблицы помеченных и непомеченных записей.
Вариант 9.
Структура записи: Тип станка, его наименование, порядковый номер станка, стоимость.
Вывести на экран запись с заданным типом станка и изменить его стоимость. Вывести на экран суммарную стоимость станков, перечень которых задается с клавиатуры.
Отметить на удаление все записи, имеющие стоимость больше стоимости, указанной с клавиатуры. Вывести таблицы помеченных и непомеченных записей.
Вариант 10.
Структура записи: Табельный номер рабочего, его фамилия, номер цеха, в котором работает, средняя зарплата.
Увеличить на n% заработную плату рабочим цеха, номер которого задается. Выдать список рабочих этого цеха с указанием размера новой и старой заработной платы.
Отметить на удаление все запись рабочего, фамилия которого задается с клавиатуры. Вывести таблицу помеченных записей в алфавитном порядке фамилий рабочих, подготовленных к увольнению.
Вариант 11.
Структура записи: Номер поезда, конечный пункт следования, количество мест в поезде, количество проданных билетов.
Добавить в файл запись о дополнительном поезде в тот пункт, в который нет билетов ни на один из поездов.
Отметить на удаление все записи тех поездов, в которых нет свободных мест. Вывести таблицы помеченных и непомеченных записей.
Вариант 12.
Структура записи: Название стройки, министерство-заказчик, местоположение, дата начала строительства, дата предполагаемого конца строительства, дата конца строительства.
Составить функцию, которая заносит дату окончания строительства той стройки, название которой указывается с клавиатуры.
Вывести на экран информацию обо всех стройках указанного с клавиатуры министерства-заказчика, стройка которых не закончена на текущий момент, расположив их в алфавитном порядке местоположения этих строек.
Отметить на удаление все запись той стройки, имя которой указано с клавиатуры. Вывести таблицы помеченных и непомеченных записей.
Вариант 13.
Структура записи: Название района, количество школ, количество больниц, количество кинотеатров
Выдать на экран информацию о районах города, имеющих максимальное и минимальное количество школ, больниц и кинотеатров.
Отметить на удаление все запись того района, название которого получено с клавиатуры. Составить в алфавитном порядке список всех районов, информация о которых помечена на удаление.
Вариант 14.
Структура записи: Шифр книги, ее название, автор, издательство, год издания.
Составить список книг автора, имя которого задано с клавиатуры. Список рассортировать в алфавитном порядке их названий.
Отметить на удаление все записи тех книг, год издания которых меньше заданного с клавиатуры года, при условии, что есть такая же книга более позднего года издания. Вывести таблицы помеченных и непомеченных записей.
Вариант 15.
Структура записи: Название документа, его входящий номер, когда получен (дата), кому поручено исполнение, срок исполнения (дата), исполнено (дата).
Составить функцию, которая для названного документа проставляет срок его исполнения.
Составить список документов, порученных исполнителю и не исполненных им в срок, расположив документы в списке по возрастанию даты их срока исполнения.
Отметить на удаление все записи о документах, исполненных в срок. Вывести таблицы помеченных и непомеченных записей.
Вариант 16.
Структура записи: Номер отдела, номер лаборатории, количество младших научных сотрудников, количество старших научных сотрудников, количество лаборантов.
Выдать на экран информацию об отделах, имеющих максимальное и минимальное процентное соотношение составу старших научных сотрудников, младших и лаборантов к общему списочному составу лаборатории.
Отметить на удаление записи о тех лабораториях, которые не имеют в своем составе ни одного старшего сотрудника. Вывести таблицы помеченных и непомеченных записей, расположив их в порядке возрастания номеров отделов.
Вариант 17.
Структура записи: Шифр изделия, наименование, остаток на складе, количество заказанных изделий, срок поступления на склад.
Составить функцию, которая по шифру изделия, заносит в запись информацию его о заказе и сроке поступления заказа на склад.
Выдать на экран информацию об изделиях, запас которых меньше количества, указанного с клавиатуры и на которые не сделан дополнительный заказ. Информацию расположить в алфавитном порядке наименований изделий.
Пометить на удаление все изделия, запас которых на складе равен нулю и на которые не сделан дополнительный заказ. Вывести таблицы помеченных и непомеченных записей.
Вариант 18.
Структура записи: Шифр радиоаппаратуры, название неисправности, стоимость ремонта.
Изменить у аппаратуры с заданным шрифтом стоимость ремонта. Составить два списка: список аппаратуры, стоимость которой не изменялась, и список аппаратуры, в стоимости которой произошли изменения.
Отметить на удаление запись с заданным с клавиатуры номером шифра. Вывести таблицы помеченных и непомеченных записей.
Вариант 19.
Структура записи: Марка часов, тип (электронные или механические часы), дата выпуска, стоимость.
Из исходного файла создать два файла, каждый из которых содержит свой тип часов. Выдать информацию о самых дорогих электронных и механических часах.
Отметить на удаление все записи, имеющие год выпуска раньше указанного с клавиатуры. Вывести таблицы помеченных и непомеченных записей.
Вариант 20.
Структура записи: Марка компьютера, фирма изготовитель, год выпуска, стоимость.
Произвести на n% уценку компьютеров заданной фирмы изготовителя, год выпуска которых раньше указанного года. Выдать на экран список всех компьютеров указанной фирмы, цены на которые не изменились.
Отметить на удаление все записи указанной с клавиатуры фирмы изготовителя. Вывести таблицы помеченных и непомеченных записей.
Вариант 21.
Структура записи: Название ткани, фабрика-производитель, количество, стоимость за один метр.
Отыскать ткань заданной фабрики-производителя и выдать информацию о ней, а также о самой дешевой и самой дорогой такой же ткани других производителей, если такие есть.
Отметить на удаление все записи, имеющие стоимость за один метр ниже указанной с клавиатуры стоимости. Отметить на удаление все записи, имеющие
Вариант 22.
Структура записи: Назначение бумаги, количество листов в пачке, толщина листа в мм., стоимость пачки.
Найти бумагу, стоимость пачки которой находится в диапазоне от n до N рублей и выдать информацию о ней в списке, рассортированном в порядке возрастания цены одного листа бумаги.
Отметить на удаление все записи, имеющие цену одного листа бумаги меньше цены, заданной с клавиатуры. Вывести таблицы помеченных и непомеченных записей.
Вариант 23.
Структура записи: Фамилия спортсмена, вид спорта, количество очков, набранных на чемпионате, спортивный разряд.
Составить список всех видов спорта, по которым проводились соревнования на чемпионате, указав количество спортсменов, выступавших в каждом из видов. Список составить в порядке убывания количества участников.
Отметить на удаление все записи тех спортсменов, которые набрали очков меньше того количества, которое введено с клавиатуры. Вывести таблицы помеченных и непомеченных записей.
Вариант 24.
Структура записи: Название гостиницы, разрядность гостиницы (***, **** и *****), количество номеров каждой категории (предполагается по три категории номеров в каждой гостинице), стоимость проживания в номере каждой из категории, наличие ресторана.
Для названной разрядности гостиницы определить гостиницу, имеющую самые дешевые номера каждой из категории. Выдать список с информацией о таких гостиницах, расположив ее в списке по алфавиту.
Отметить на удаление записи тех гостиниц, которые не имеют ресторанов. Вывести таблицы помеченных и непомеченных записей.
Вариант 25.
Структура записи: Название предприятия, мощность предприятия, количество наименований выпускаемой продукции, годовая прибыль.
Составить функцию, которая выдает на экран информацию о предприятиях, рассортированную в алфавитном порядке их названий.
Отметить на удаление все записи о предприятиях, прибыль которых отрицательная (предприятие убыточно). Вывести таблицы помеченных и непомеченных записей.
Вариант 26.
Структура записи: Деканат, название группы, специальность, курс, староста, количество студентов, количество стипендиатов.
Получить по запросу перечень групп заданного курса для каждого из деканатов, имеющих максимальное и минимальное, в процентном отношении, количество стипендиатов.
Отметить на удаление все записи последнего курса. Вывести таблицы помеченных и непомеченных записей.
Вариант 27.
Структура записи: Тип учреждения (больница, поликлиника, госпиталь, диспансер), его номер, фамилия врача, специализация (хирург, терапевт, невропатолог, окулист и прочее), стаж работы в учреждении.
Получить перечень и общее число медицинского персонала указанной специальности для конкретного типа медицинского учреждения. (например, перечень хирургов поликлиник).
Отметить на удаление все запись указанного врача. Вывести таблицы помеченных и непомеченных записей.
Вариант 28.
Структура записи: Фамилия водителя, стаж работы, тип машины (автобус, такси, маршрутное такси, грузовой транспорт), день, месяц и год работы на данной машине, количество рабочих часов, пробег в км.
Получить по запросу сведения о суммарных пробегах автотранспорта определенной категории за указанный день указанного месяца.
Отметить на удаление все записи, относящиеся к заданному с клавиатуры водителю. Вывести таблицы помеченных и непомеченных записей.
Вариант 29.
Структура записи: Название книги, автор, год издания, номер хранилища, стеллаж, полка, фамилия читателя, получившего книгу, отметка о сдачи книги (да/нет).
Выдать список книг, которые находятся на руках у указанного читателя. Выдать список наиболее и наименее популярных книг библиотеки.
Отметить на удаление все записи, относящиеся к указанному читателю. Вывести таблицы помеченных и непомеченных записей.
Вариант 30.
Структура записи: Номер аптеки, название лекарства, его регистрационный номер, дозировка, форма изготовления (готовое или производится аптекой), цена, форма применения (для наружного применения, для внутреннего).
Получить список всех лекарств одинаковых наименований, имеющих одинаковую дозировку, но разную цену и рассортировать их в порядке возрастания цены.
Отметить на удаление все записи относящиеся к аптеке с заданным номером. Вывести таблицы помеченных и непомеченных записей.
Вариант 31.
Структура записи: Тип самолета, номер рейса, категория (внутренний, международный, чаpтеpный, специальный рейс), пункт назначения, день вылета, время вылета, цена посадочного места, количество мест.
Получить перечень и общее число авиарейсов указанной категории, вылетающих в заданном направлении указанным типом самолета.
Найти рейс на заданный день вылета с минимальной ценой посадочного места.
Отметить на удаление все записи о самолетах заданного типа. Вывести таблицы помеченных и непомеченных записей.
Вариант 32.
Структура записи: Название животного, его регистрационный номер, возраст, пол, к какой климатической зоне принадлежит, есть ли потомство, ожидается ли потомство, срок пребывания в зоопарке, тип корма, количество корма в день.
Получить перечень животных указанного климатического пояса по половому признаку и по наличию потомства. Найти в зоопарке указанное животное определенного возраста, у которого ожидается потомство.
Отметить на удаление информацию о животном с заданным регистрационным номером. Вывести таблицы помеченных и непомеченных записей.
Вариант 33.
Структура записи: Категория автомобиля (легковой, грузовой автомобили, прицеп, полуприцеп, мотоцикл, трактор, автобус, микроавтобус), его номер, фамилия владельца, его адрес, марка автомобиля, дата выпуска, объем двигателя, номера двигателя и шасси, цвет кузова, числится ли машина в угоне, с какого числа, дата обнаружения.
Составить функцию, которая по номеру автомобиля проставляет его дату обнаружения.
Составить перечень наиболее часто угоняемых марок машин. По номеру двигателя обнаружить машину и выдать сообщение о том, числится ли она в угоне.
Отметить на удаление все записи, находящиеся в розыске больше года. Вывести таблицы помеченных и непомеченных записей.