Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы 1-15_Delphi.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.13 Mб
Скачать

Постановка задачи

Составить программу и блок-схему для решения каждой из следующих задач:

1.      Пусть текстовый файл t разбит на непустые строки. Описать функцию count(t) для подсчета числа строк, которые:

a.       Начинаются с буквы d;

b.      Оканчиваются буквой z.

  1. Описать процедуру prisv (t1, t2), переписывающую в текстовый файл t1 содержимое текстового файла t2 но без пустых строк.

СРС(3 часа)

Дополнительное задание

1.      Описать процедуру triangle(t), формирующую текстовый файл t из 9 строк, в первой из которых – одна литера ‘1’, во второй – две литеры ‘2’, …, в девятой – девять литер ‘9’.

2.      Пусть текстовый файл t разбит на непустые строки. Описать функцию count (t) для подсчета числа строк, начинающихся и оканчивающихся одной и той же литерой.

Лабораторная работа №15

Тема: «Типизированные файлы»

Цели работы

        Закрепить умения и навыки работы с типизированными файлами

        Углубить знания о файлах

Методический материал

Постановка задачи: Создать проект для формирования файла с информацией о ведущих спортсменах мира. О каждом спортсмене хранится сведения о его фамилии, имени, отчестве, стране, которую он представляет, вид спорта, которым занимается и медали, завоеванной им. На основе сформированного файла организовать поиск информации по всем видам, хранящейся информации.

Для решения задачи объявим тип-запись:

Type

sportsmen=record

name:shortstring;

strana:shortstring;

vid: shortstring;

medal: shortstring;

end;

Объявим глобальные переменные (в интерфейсной части основного модуля):

f: file of sportsmen;

spr:sportsmen;// рабочая переменная, хранящая сведения о текущем спортмене

Создадим проект, в котором на отдельной форме организовано заполнение файла информации о спортсменах. При этом фамилия и инициалы вводятся в поле ввода, страна и вид спорта выбираются из выпадающих списков, медаль выбирается из радио-списка.

Поиск информации следует выполнять после заполнения файла. При этом выбор вида поиска выполняется из выпадающего списка. Значение для поиска определяется по полям и спискам используемых для ввода данных.

Разместим на форму три компонента:

Combobox1 – для выбора страны из выпадающего списка;

Combobox2 – для выбора вида спорта;

Combobox3 – для выбора вида поиска.

Списки следует набирать в окне построителя, открывающемся в поле Items.

Поместим на форму компонент RadioGroup1 и в поле Items наберем список медалей: золотая, серебряная и бронзовая.

Для вывода найденных записей поместим на форму Memo – поле.

Для сохранения записей поместим на форму кнопку и пропишем ее код.

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

Для события OnClick компонента Combobox3 пропишем код поиска записей.

Рисунок 13.

Код проекта:

unit Unitsport;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

ComboBox1: TComboBox;

Edit1: TEdit;

ComboBox2: TComboBox;

RadioGroup1: TRadioGroup;

Button1: TButton;

ComboBox3: TComboBox;

Label1: TLabel;

Memo1: TMemo;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure ComboBox3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

sportsmen=record

name:shortstring;

strana:shortstring;

vid: shortstring;

medal: shortstring;

end;

var

f: file of sportsmen;

spr:sportsmen;

Form1: TForm1;

implementation

{$R *.DFM}

// создание файла

procedure TForm1.FormCreate(Sender: TObject);

begin

assignfile(f,'sport.dat');

rewrite(f);

end;

// сохранение записи

procedure TForm1.Button1Click(Sender: TObject);

begin

with spr do

begin

name:=edit1.Text;

strana:=combobox1.Text;

vid:=combobox2.Text;

medal:=radiogroup1.Items[radiogroup1.itemindex];

write(f,spr);

end;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

closefile(f);

end;

// поиск записей по критериям поиска

procedure TForm1.ComboBox3Click(Sender: TObject);

begin

memo1.Clear;

if combobox3.text='поиск по стране' then

begin

seek(f,0);

while not eof(f) do

begin

read(f,spr);

if spr.strana=combobox1.text then

begin

memo1.Lines.Add(spr.name);

memo1.Lines.Add(spr.strana);

memo1.Lines.Add(spr.medal);

memo1.Lines.Add(spr.vid);

end;

end;

end;

if Combobox3.text='поиск по фамилии' then

begin

seek(f,0);

while not eof(f) do

begin

read(f,spr);

if spr.name=edit1.text then

begin

memo1.Lines.Add(spr.name);

memo1.Lines.Add(spr.strana);

memo1.Lines.Add(spr.medal);

memo1.Lines.Add(spr.vid);

end;

end;

end;

if Combobox3.text='поиск по виду спорта' then

begin

seek(f,0);

while not eof(f) do

begin

read(f,spr);

if spr.vid=combobox2.text then

begin

memo1.Lines.Add(spr.name);

memo1.Lines.Add(spr.strana);

memo1.Lines.Add(spr.medal);

memo1.Lines.Add(spr.vid);

end;

end;

end;

if Combobox3.text='поиск по медали' then

begin

seek(f,0);

while not eof(f) do

begin

read(f,spr);

if spr.medal=radiogroup1.Items[radiogroup1.ItemIndex] then

begin

memo1.Lines.Add(spr.name);

memo1.Lines.Add(spr.strana);

memo1.Lines.Add(spr.medal);

memo1.Lines.Add(spr.vid);

end;

end;

end;

end;

end.

СРСП(3 часа)