
- •Лабораторная работа №9 Комбиированный тип - запись Тип данных – Запись
- •Формат определения типа.
- •Правила создания записного типа
- •Представление переменной типа запись в памяти
- •Доступ к значению поля в записи
- •Расчет объема памяти, выделяемого переменной типа запись
- •Требования к выполнению лабораторной работы
- •Варианты заданий
- •Пример разработки одномодульного приложения.
- •Контрольные вопросы
- •Лабораторная работа 10 Разработка приложений под Windows средст вами Delphi Создание оконного приложения
- •Требования к выполнению лабораторной работы
- •Контрольные вопросы
- •Лабораторная работа №11 Объектно-ориентированное программирование Определение класса
- •Наследование
- •Требовния к выполнению лабораторной работы
- •Варианты заданий
- •Контрольные вопросы.
- •Лабораторная работа №12 файлы Текстовый файл
- •Типизированный файл
- •Требования к выполнению лабораторной работы
- •Варианты заданий
- •Контрольные вопросы
- •Библиографический список
Требования к выполнению лабораторной работы
Создать текстовый файл с тестовыми данными для варианта задания с помощью текстового редактора.
Разработать процедуру создания типизированного файла для хранения записей, структура которых определена вариантом.
Разработать процедуру заполнения типизированного файла данными из текстового файла. Процедура с параметрами одним из которых – имя файла, из которого читаются данные, а второй, в который записываются данные.
Разработать подпрограмму для дополнительной операции над типизированным файлом
Разработать подпрограмму для дополнительной операции над текстовым файлом
Сохранить все подпрограммы в модуле.
Разработать проект формы для выполнения операций с файлами, предусмотренными вариантом:
Открыть текстовый файл, используя элемент управления OpenDialog.
Открыть типизированный файл, используя элемент управления OpenDialog.
Создать типизированный файл из записей, определенных вариантом, данные для которых взять из текстового файла.
Отобразить содержимое текстового файла в элемент формы Мемо.
Отобразить содержимое типизированного файла в элемент формы StrinGrid
заполнение полей записи;
добавление записи в файл.
Таблица 7
Варианты заданий
|
Структура данных |
Дополнительная операция над текстовым файлом |
Дополнительная операция над типизированным файлом |
1 |
Массив анкетных данных о студента вуза. Сведения о студенте: Номер зачетной книжки, Фамилия, Имя, Дата рождения, Номер телефона, Дата поступления, Признак удаления записи |
Введите данные по новому студенту и добавьте его в текстовый файл и типизированный |
Найти и удалить всех окончивших институт (т.е. более 6 лет) |
2 |
Массив сведений о спортсменах клуба. О каждом спортсмене известны данные: Фамилия, Имя, Дата рождения, Вес, Рост, Пол |
Покажите содержимое К-ой записи текстового файла |
Измените значение веса спортсмена Фамилия которого вводиться |
3 |
Структура данных – телефонная книжка хранит данные по знакомым: Фамилия, Номер телефона, Дата рождения. Книжка состоит из листов, каждый лист проиндексирован заглавной буквой, на каждой странице несколько записей (не более 20) |
Запишите еще одну запись в вашу книжку |
Удалите запись об одном из друзей. Удалите текстовый файл и запишите в него данные из типизированного файла. |
4 |
Структура данных хранит список жителей. О каждом жителе хранится информация: Фамилия, Город, Адрес: улица, дом, квартира. |
Используя дополнительный файл внесите изменения в данные по одному жителю, сменив у него Фамилию. |
Внесите изменения, которые вы сделали в текстовом файле и в типизированный файл.(можно операцию выполнить автоматически сразу после внесения данных в текстовый файл) |
5 |
Список книг. Сведения о книге: Автор, Название, Инвентарный номер, Издательство, Количество страниц, Цена |
Вставьте в файл сведения о новой книге. |
Удалите сведения о книге, выбрав ее по ее инвентарному номеру |
6 |
Успеваемость группы студентов. Сведения об успеваемости одного студента по одной дисциплине: Номер зачетной книжки, Шифр группы, Название дисциплины, Дата получения оценки, Оценка, Фамилия преподавателя При вводе данных в строковые поля предусмотреть преобразование их к формату: первая буква большая, остальные маленькие) |
Выведите фамилии преподавателей принимавших экзамены в заданной группе |
Исправьте оценку у заданного студента по заданной дисциплине |
7 |
Учет выдачи книг пользователям библиотеки. Карточка пользователя библиотеки содержит сведения, о выданной книге: Номер карточки, Инвентарный номер, Автор, Название, Дата выдачи, Дата возврата |
Сформировать список которые должны быть возвращены к дате |
Сменить дату возврата указанной книги (инв. Номер) на указанной карточке |
8 |
Успеваемость группы студентов. Сведения по одному экзамену одного студента: Номер зачетной книжки, Название дисциплины, Дата получения оценки, Оценка, Фамилия преподавателя. ( по каждому студенту будет столько записей сколько экзаменов он сдал). При вводе данных в строковые поля предусмотреть преобразование их к формату: первая буква большая, остальные маленькие |
Вывести две последних записи файла. |
Удалить все записи, содержащие оценку 2. |
9 |
Список экспортируемых товаров. Об отдельном товаре хранятся данные: Наименование товара, Страна импортирующая товар, Количество (в штуках). |
Добавить данные по новому товару |
Удалить сведения о заданном товаре(по наименованию) и по заданной |
10 |
Магазин игрушек. Сведения об игрушке: Название(например: кукла, конструктор и т.д.), стоимость в копейках(вводится может дробное число, содержащее рубли и копейки), возрастные границы детей, для кого игрушка предназначена( два поля – начальный возраст и конечный) |
Добавить сведения по новой игрушке |
Удалить записи об игрушках по определенной возрастной группе.. |
11 |
Служба знакомств. Структура данных хранит сведения о претендентах. Об отдельном претенденте: Фамилия, Имя Отчество, Возраст, Рост, Цвет глаз, Цвет волос, Зарплату, Наличие квартиры, Наличие машины. |
Вставить данные о новом претенденте вначале файла. Для этого воспользуйтесь временным файлом |
Создайте типизированный файл, запись которого будет содержать подобранную пару |
12 |
Продажа квартир. Сведения о продаваемой квартире: Код объекта, Общая площадь, Жилая площадь, Площадь кухни, Наличие лоджии, Наличие санузла и его характеристики(совмещенный или нет), Панельный или кирпичный дом, Этаж, Общее количество этажей, Адрес, Стоимость, Район города |
Выведите построчно адреса однокомнатных квартир. |
Испавьте ошибку: у объекта с заданным кодом общая жилая площадь указана неверно |
13 |
Поликлиника. Структура содержит данные о жителях, обслуживаемых данной поликлиникой. О жителе хранятся сведения: Номер карточки, Фамилия , Имя, Отчество, Адрес, Место работы, Наличие прививки от гриппа, Дата последней флюорографии |
Сфорируйте список пациентов, кто должен пройти флюрографию ( от даты прошел год) |
Изменить старую дату прохождения флюрографии на новую у указанного пациента (по номеру карточки) |
14 |
ГИБДД. Структура хранит данные об автомашинах, О каждой машине: Номер учета ,Модель, Номер(код региона, цифровой код, буквенный код), Цвет, Сведения о владельце(Фамилия, Имя , Адрес), дата последнего техосмотра. |
Список владельце машин марки Volvo. |
Изменить дату техосмотра у машин с указанными номерами учета (ввод нескольких номеров в одной входной строке) |
15 |
Справочник владельца видеотеки. О каждом видеофильме хранятся данные: Название, Студия, Жанр, Год выпуска, Режиссер, Исполнители главных ролей(не более 10): фамилия. |
Список видиофильмов заданного режиссера |
Удалить записи заданного года выпуска |
16 |
Справочник фаната. Содержит данные о спортсменах: Анкетные и антропологические данные, Гражданство, Вид спорта, Клуб, Данные о личном рекорде(дата, призовое место) |
Включить в справочник нового фаната |
Сменить клуб у заданного спорсмена указав фамилию |
17 |
Справочник коммерческих банков. Об отдельном банке хранятся данные: Наименование, Адрес, Статус (форма собственности), условия хранения средств на личном счету(годовые проценты на различных видах вкладов) |
Сформировать список банков с максимальным процентом годовых |
Изменит проценты годовых по одному банку (выбор по наименованию) на значения запрашиваемые интерактивно |
18 |
Автосалон. Хранит данные об автомобилях и покупателях. Структура хранит сведения о новых и подержанных автомобилях. Об отдельном автомобиле: Марка, Год выпуска, Технические характеристики(Мощность двигателя, Количество цилиндров, и т.д.), Особенности исполнения, Техническое состояние, Запрашиваемая цена. Другая структура хранит сведения о покупателях: контактный телефон, Марка, Технические характеристики, Техническое состояние, Финансовые возможности. |
Сформировать список подержанных автомобилей |
Удалить записи о подержанных автомобилях. |
19 |
Справочник туриста. Турагенство предлагает услуги: Страна, Город, Условия проживания (Звезд у отеля, Автобус и т. д.), Условия проезда, Экскурсионное обслуживание, Сервис принимающей стороны, Стоимость путевки. |
Вывести туры с минимальной стоимостью. |
Изменить стоимость тура в страну. |
Пример открытия файла с помощью компоненты OpenDialog
На рис.12. представлен проект формы, для демонстрации выполнения операции открытия файла с помощью OpenDialog.
Рис.12. Проект формы
Элемент управления Edit1 предназначен для отображения имени выбранного файла, кнопка Открыть файл обеспечит выполнение операции открытия файла посредством элемента управления OpenDialog, который является не визуальным элементом, но в проекте формы представлен пиктограммой.
Обработчик кнопки Открыть файл
procedure TForm1.Button1Click(Sender: TObject);
begin
with OpenDialog1 do
begin
if not Execute then Exit; //размещение диалогового окна
//если окно открылось можно использовать переменную FileName
//в которую система поместила имя выбранного файла
Edit1.text:=FileName;
end
end;
При выполнении операции Открыть файл откроется диалоговое окно, вид которого представлен на рис.13, выбора файла.После выбора файла и щелчка по кнопке Open, окна выбора файла, имя файла запишется в переменную OpenDialog1.filename и согласно алгоритма обработчика кнопки Открыть файл оно отобразится в элементе формы Edit1.
Рис.13. Окно выбора файла
На рис.14. отображена форма после выполнения операции.
Рис.14. Отображение в форме имени открытого файла
Примеры подпрограмм по обработке файлов
Unit Unit1;
interface
const
line='-----------------------------------------------------------------------';
type
//струтура записи типизированного файла
tkassa=record
nomer:word;
FIO:string[20];
num:word;
sum:real;
data:string[10];
end;
ttxt=textfile; //тип для текстового файла
ttype=file of tkassa; //тип для типизированного файла из записей
tf=file of integer; //типизированный файл из целых значений
//создание типизированного из текстового
procedure create_tf(var f1:ttxt; var f2:ttype);
//поиск в типизированном файле
procedure search(var f2:ttype;fam:string);
//вставка записи в середину тип. ф.
procedure insert_mid(var f2:ttype; x:tkassa; s1:string);
//вставка перед первой записью procedure insert_first(var f2:ttype; x:tkassa; s1:string);
//вставка в конец файла
procedure insert_end(var f2:ttype; x:tkassa);
//вывод файла
procedure out(var f2:ttype);
//удаление из записи по указанной позиции
procedure delete_pos (var f2:ttype; pos:integer);
implementation
procedure create_tf(var f1:ttxt; var f2:ttype);
var
w: tkassa;
begin
reset(f1);
rewrite(f2);
while not eof(f1) do
begin
readln(f1,w.nomer);
readln(f1,w.FIO);
readln(f1,w.num);
readln(f1,w.sum);
readln(f1,w.data);
write(f2,w);
end;
closefile(f1);
closefile(f2);
end;
procedure insert_first(var f2:ttype; x:tkassa; s1:string);
var
f3:ttype;
i:integer;
begin
assignfile(f3,'tmp.doc');
rewrite(f3);
write(f3,x);
reset(f2);
for i:=1 to filesize(f2) do
begin
read(f2,x);
write(f3,x);
end;
closefile(f2);
closefile(f3);
erase(f2);
rename( f3, s1);
end;
procedure insert_mid(var f2:ttype; x:tkassa; s1:string);
var
f3:ttype;
i:integer;
x1:tkassa;
begin
assignfile(f3,'tmp.doc');
rewrite(f3);
reset(f2);
for i:=1 to filesize(f2)div 2 do
begin
read(f2,x1);
write(f3,x1);
end;
write(f3,x);
for i:=filesize(f2)div 2+1 to filesize(f2) do
begin
read(f2,x);
write(f3,x);
end;
closefile(f2);
closefile(f3);
erase(f2);
rename( f3, s1);
end;
procedure insert_end(var f2:ttype; x:tkassa);
var
f3:ttype;
i:integer;
x1:tkassa;
begin
reset (f2);
seek(f2, filesize(f2));
write(f2, x);
closefile(f2);
end;
procedure out(var f2:ttype);
var
x:tkassa;
i:integer;
begin
reset(f2);
writeln;
shapka;
for i:=1 to filesize(f2) do
begin
read(f2,x);
writeln ('| ', x.nomer:6,' | ',x.FIO:7,' | ',x.num:16,' | ',x.sum:9,' |
',x.data:6,' |');
end;
closefile(f2);
end;
procedure delete_pos (var f2:ttype; pos:integer);
var
i:integer;
x:tkassa;
begin
reset(f2);
if pos<=filesize(f2) then
begin
for i:=pos to filesize (f2)-1 do
begin
seek (f2, i);
read(f2,x);
seek(f2, filepos (f2)-2);
write(f2,x);
end;
seek(f2, filesize(f2)-1);
truncate(f2);
closefile(f2);
end;
end;
procedure writey(var x:tkassa);
var
y:real;
begin
writeln('Vvedite nomer kassi');
readln (x.nomer );
writeln('Vvedite FIO');
readln (x.FIO );
writeln('Vvedite kol-vo');
readln (x.num );
writeln('Vvedite stoimost bileta');
readln (y );
x.sum:=y*x.num;
writeln('Vvedite daty');
readln (x.data );
end;
procedure search(var f2:ttype;fam:string);
var
x:tkassa;
k,i:integer;
begin
reset(f2);
k:=0;
for i:=1 to filesize (f2) do
begin
read(f2, x);
if x.FIO=fam then
begin
if k=0 then
shapka;
k:=k+1;
writeln ('| ', x.nomer:6,' | ',x.FIO:7,' | ',x.num:16,' | ',x.sum:9,' |
',x.data:6,' |');
end;
end;
if k=0 then
writeln ('Takix kassirov net');
end;
procedure vivf(var f:tf);
var i,x:integer;
begin
writeln;
reset(f);
for i:=1 to filesize (f) do
begin
read(f,x);
write(x,' ');
end;
closefile(f);
Reset(f);
end ;
end.