Лабораторная работа № 7.
Работа с типизированными файлами.
— Знакомство с файловыми типами в Паскале.
— Получение навыков операций с файлами
— Применение навыков проектирования сложных программ
— Применение навыков создания пользовательского интерфейса
Содержание отчета
Отчет должен содержать:
1) Постановка задачи
2) Таблица спецификаций, включая структуру записи файла.
3) Схема иерархии модулей.
4) Блок-схемы основных модулей или словесное описание алгоритма по пунктам.
5) Таблица тестов.
6) Результаты тестирования (копии экранов).
7) Листинг основных подпрограмм.
Задания
Программа должна включать следующие функции: открытие (создание в случае его отсутствия), сохранение файла, добавление, изменение полей записи, удаление записи, просмотр содержимого файла, обработка запросов. Выбор действия осуществляется посредством меню (MainMenu). Обработка ошибок пользовательского ввода обязательна! При выполнении данного задания следует показать умение пользоваться изученными компонентами.
Для открытия/сохранения файлов использовать стандартные диалоговые окна (компоненты OpenDialog и SaveDialog со страницы Dialogs). Данные читать в переменную типа record, структура которой соответствует варианту задания (использовать типизированный файл). Для отображения данных использовать компонент StringGrid.
Также на форме следует разместить кнопки «Изменить», «Удалить», «Добавить» или использовать контекстное меню (PopupMenu). При выборе редактирования/добавления новой записи следует вызывать форму, на которой размещаются компоненты (Edit, MaskEdit, CheckBox, RadioGroup и др. в соответствии с заданием). Для запоминания выбранной строки в StringGrid для редактирования использовать событие onSelectCell (параметр ARow – номер выбранной строки).
Следует учитывать, что в StringGrid для доступа к конкретной ячейке используется метод Cell[j,i], в котором сначала указывается столбец, а потом строка (счет с 0).
Все изменения, производимые во время выполнения приложения, хранятся в StringGrid, при выборе пункта «Сохранить» – заносятся в файл.
Дополнительное задание: переделать приложение таким образом, чтобы все изменения параллельно отражались на форме и в файле (для удаления записи из файла необходимо создать временный файл, в который перенести все записи, кроме удаляемой; затем старый файл удалить, а временный переименовать по имени удаленного).
Варианты заданий
1 (17). Дан файл student.dat. Поля записи содержат следующие данные: фамилия, имя, отчество, шифр группы, пол, семейное положение (0/1), номер комнаты в общежитии (0-если не в общежитии).
Обработка следующих запросов:
— по номеру комнаты вывести список жильцов;
— вывести список всех семейных студентов;
— по ФИО и шифру группы указать N комнаты проживания;
— выдать список студентов с фамилией на заданную букву.
2 (18). База данных heap.dat. Структура записей: номер изделия, наименование изделия, количество изделий, цена 1 изделия, стоимость.
Обработка следующих запросов:
— по номеру изделия выдать справку о наличии его на складе;
— выдать общую стоимость всех изделий, хранящихся на складе
— выдать список всех изделий c номерами в заданном интервале;
— найти изделие с самой большой ценой.
— выдать список изделий на складе, наименование которых начинается с заданной буквы.
3 (19). Записи файла plan.dat имеют вид: шифр специальности, наименование дисциплины, шифр кафедры [БукваЦифраЦифра], количество лекций, количество практик, количество лабораторных, признак: 2 – экзамен, 1 – зачет, 0 – нет ничего.
Обработка следующих запросов:
— по шифру кафедры подсчитать общее количество проводимых ею занятий;
— вывести список дисциплин для заданной специальности;
— найти план занятий по заданным специальности и дисциплине;
— вывести список дисциплин, читаемых заданной кафедрой.
4 (20). База данных table.dat содержит данные о расписании занятий на факультете. Структура записей: шифр группы, день недели, время начала занятия, предмет, номер аудитории, фамилия преподавателя.
Обработка следующих запросов:
— выдать расписание на всю неделю для указанной группы;
— выдать расписание для указанной группы в указанный день;
— найти выходные дни для указанной группы;
— выдать номера аудиторий, где проходят занятия по заданному предмету.
5 (21). Справочная gai.dat содержит записи следующего наполнения: марка автомобиля, номер, цвет, год регистрации в ГАИ, фамилия владельца.
Обработка следующих запросов:
— выдать фамилии владельцев и номера автомобилей заданной марки;
— выдать количество автомобилей заданной марки;
— выдать список всех а/м заданной марки, зарегистрированных не раньше заданного года;
— поиск владельца а/м по цвету, по марке и по первой букве номера а/м.
6 (22). База данных study.dat содержит записи вида: номер зачетки, фамилия И.О., номер варианта, отметка о выдаче задания 1 (1/0), отметка о выполнении задания 1 в баллах, отметка о выдаче задания 2 (1/0), отметка о выполнении задания 2 в баллах, отметка о выдаче задания 3 (1/0), отметка о выполнении задания 3 в баллах.
Требуется обеспечить выдачу:
— общей ведомости;
— справки о студенте по номеру зачетки;
— ведомости о выполнении студентами задания с указанным номером;
— списка студентов с заданным номером варианта, имеющих заданную сумму баллов по всем 3 задачам;
— списка студентов, не получивших задание с указанным номером.
7 (23). База данных table.dat содержит данные о расписании занятий на факультете. Структура записей: шифр группы, день недели, время начала занятия, предмет, номер аудитории, фамилия преподавателя.
Обработка следующих запросов:
— выдать расписание на всю неделю для указанного преподавателя;
— выдать номер аудитории для указанной группы в заданные день и время;
— найти выходные дни для указанного преподавателя;
— выдать список групп, занимающихся в указанный день в заданной
аудитории.
8 (24). В базе book.dat хранятся записи, содержащие: номер каталога, номер книги, наименование книги, год издания, цена 1 экземпляра.
Обеспечить выдачу следующих справок:
— по автору книги найти все его книги;
— по номеру книги найти наименование книги и автора;
— выдать список книг, изданных в указанном году;
— найти книги по фамилии автора, году издания.
9 (25). В базе bus.dat хранятся записи, содержащие: номер маршрута, начало маршрута, конец маршрута, тип автобуса, количество автобусов на линии, номер автобазы.
Обеспечить выдачу следующих справок:
— определить общее число городских автобусов;
— по номеру автобуса определить его маршрут;
— выдать список номеров автобусов, маршруты которых проходят через заданный пункт;
— выдать список маршрутов, которые обслуживает автобаза с указанным номером.
10 (26). В базе export.dat содержатся сведения об экспорте товаров: наименование товара, страна, импортирующая товар, объем поставляемой партии в штуках, страна-производитель.
Обработка следующих запросов:
— найти страны, в которые экспортируется данный товар;
— вывести список товаров, поставляемых указанной страной;
— вывести наименование товаров, начинающихся с заданной буквы;
— вывести общий объем товаров, поставляемых в указанную страну.
11 (27). Дан файл toys.dat, содержащий сведения об игрушках: указывается название игрушки (кукла, мяч, кубики и т.д.), ее стоимость в тыс. руб. и возрастные границы детей, для которых игрушка предназначена.
Получить следующую информацию:
— названия самых дорогих игрушек (цена которых отличается от цены самой дорогой не более чем на 1 тыс. руб.);
— цены всех игрушек с заданным названием;
— найти игрушки, предназначенные детям от N лет;
— найти игрушку на заданную букву.
12 (28). База содержит phone.dat номера телефонов сотрудников учреждения: указывается фамилия, инициалы сотрудника, номер телефона и его адрес.
Обработка следующих запросов:
— найти телефон сотрудника по его фамилии;
— найти список телефонов сотрудников, чьи фамилии начинаются с заданной буквы;
— найти список сотрудников, чьи телефоны начинаются с заданной цифры;
— найти адрес сотрудника по номеру его телефона.
13 (29). В базе apteka.dat хранятся записи, содержащие информацию о лекарствах: номер аптеки, название лекарства, цена, количество.
Обработка следующих запросов:
— получить сведения о наличии лекарства в определенной аптеке;
— получить общую стоимость всех лекарств во всех аптеках;
— по названию лекарства выдать список аптек, в которых оно имеется;
— найти самое дешевое лекарство.
14 (30). В базе данных school.dat хранятся сведения о годовых оценках учеников школы: ФИО ученика, класс (4-11), индекс класса (А-Ж), оценки за год по литературе, русскому языку, математике, физкультуре, истории.
Обработка следующих запросов:
— выдать список учеников-отличников определенного класса;
— выдать названия классов, в которых учеников больше 20;
— подсчитать неуспевающих учеников в школе;
— подсчитать число медалистов.
15 (31). База данных worker.dat содержит записи вида: номер отдела, название отдела, ФИО, пол, год рождения, стаж работы, количество детей.
Требуется выдать:
— по номеру отдела информацию обо всех сотрудниках;
— фамилии сотрудников, имеющих детей;
— список сотрудников со стажем работы больше заданного;
— список сотрудников с заданным годом рождения.
16 (32). Дан файл reader.dat с записями вида: индекс издания, наименование, период подписки (количество месяцев), цена 1-го месяца, ФИО подписчика, адрес подписчика, стоимость подписки, N почтового отделения связи.
Обеспечить выдачу следующих справок:
— для заданного N почтового отделения создать файл reestr.dat с записями вида: индекс издания, наименование, количество подписчиков по месяцам, общая стоимость подписки;
— по фамилии подписчика выдать справку обо всех выписанных им изданиях;
— по индексу издания выдать список всех подписавшихся на него;
найти ФИО подписчика, который выписал издания на самую большую сумму в заданном почтовом отделении.
Теоретические сведения, необходимые для выполнения курсовой работы