Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторні роботи_ООП.doc
Скачиваний:
0
Добавлен:
01.01.2020
Размер:
7.3 Mб
Скачать

Лабораторна робота №9

Тема: Робота з файлами у Delphi.

Мета роботи: Написати програму з використанням файлів.

Розробка проекту «Журнал олімпіади»

Завдання. Розробити програму для створення журналу олімпіади та внесення до нього результатів змагань.

Аналіз проекту

У проекті будемо організовувати роботу з журналом олімпіади, використовуючи структурований тип даних – файл. Структурований тип даних файл – це послідовність елементів одного типу, які зазвичай розташовано у зовнішній пам'яті (жорсткому диску, гнучкому диску тощо). Елементи файла можуть бути будь-якого типу, за винятком типу «файл».

У файлі можуть зберігатися будь-які відомості: текст, числа і т.д. У кожного файла є своє унікальне ім’я. залежно від способу опису файли поділяються на:

  • типізовані – задаються за допомогою зарезервованих слів file, of;

  • текстові – визначаються типом TextFile;

  • не типізовані – визначаються типом File.

Доступ до файла з програми можливий лише після виконання процедури відкриття файла. В цій процедурі відбувається прив’язка раніше описаної файлової змінної до імені вже існуючого або створюваного файла. Цю операцію виконують процедура: Assign (файлова_змінна, ім’я_файлу).

Для подальшої роботи з файлом необхідно вказати способи роботи з файлом – читання з файла, або запис у ньому, або читання та запис одночасно. Для цього використовуються процедури Reset, rewrite, Append. Для зчитування записів з файла використовують процедуру Readln, а для запису даних у файл – процедуру Writeln.

Хід роботи

Алгоритм розробки проекту

  1. Створити папку С:\Delphi\lab_9.

  2. Завантажити середовище візуального програмування Delphi.

  3. Розмістити на головній формі Form1 візуальні компоненти Edit1, ComboBox1, ComboBox2, RadioGroup1.

Для підпису цих полів розмістити на формі компоненти Label1-label4. встановити вищесказаним компонентам властивості як у табл.. 1.

Таблиця 1

Компонент

Вкладка вікна «Інспектор об’єктів» (Object Inspector)

Властивість (Properties)/ Подія (Events)

Значення властивості/ обробка події (тіло процедури обробки події)

Edit1

Properties

Text

Чисте поле

ComboBox1

Properties

Text

Чисте поле

Items

У вікні вбудованого редактора списку ввести назви країн: Україна, Росія, Німеччина, Норвегія, Франція, Польща, Чехія, США

ComboBox1

Properties

Text

Чисте поле

Items

У вікні вбудованого редактора списку ввести види спорту:

    1. Лижі 30 км, жінки;

    2. Лижі, естафета 4х7,5 км;

    3. Ковзани 1500м, чоловіки;

    4. Ковзани 5000м, жінки;

    5. Біатлон 30 км, чоловіки.

RadioGroup 1

Properties

Items

У вікні вбудованого редактора списку ввести типи медалей: золота, срібна, бронзова

  1. Для занесення даних до файла та перегляду вмісту файла розмістити на формі Form1 компоненти Button1, Button2 (табл. 2).

Таблиця 2

Компонент

Вкладка вікна «Інспектор об’єктів» (Object Inspector)

Властивість (Properties)/ Подія (Events)

Значення властивості/ обробка події (тіло процедури обробки події)

Button1

Properties

Caption

Додати запис

Button2

Properties

Caption

Показати весь журнал

  1. Для відображення вмісту журналу олімпіади створити додаткову форму і розмістити на ній компонент Memo1. Для цього виконати послідовність дій: у головному меню середовища Delphi вибрати File, New, Forms. На створеній формі розмістити компонент Memo1.

  1. Для створеної форми та розміщеного на ній компонента встановити властивості згідно з табл. 3.

Таблиця 3

Компонент

Вкладка вікна «Інспектор об’єктів» (Object Inspector)

Властивість (Properties)/ Подія (Events)

Значення властивості/ обробка події (тіло процедури обробки події)

Form2

Properties

Name

Result

Caption

Журнал олімпіади

Memo1

Properties

Align

alClient – для заповнення всього поля форми компонентом Memo1

  1. Для створеної форми Result середовищем Delphi було згенеровано програмний код, який необхідно зберегти в папці проекту. Для цього виконати File, Save.

  2. В програмному коді головної форми Form1 додати типи перед розділом var:

TKind =(gold,silver,bronze);

tmedal=record

country:string[20];

sport:string[30];

person:string[40];

kind:TKind;

end;

  1. У програмному коді головної форми Form1 додати опис змінних:

var f:file of Tmedal; // файл записів

  1. Створити для головної форми Form1 процедуру опрацювання події OnActivate:

procedure TForm1.FormActivate(Sender: TObject);

var resp:word; //vidpovidi

begin

assignfile(f,'medals.txt');

{$I-}

reset(f); // відкриття файла для читання

seek(f,filesize(f)); //встановити покажчик запису в кінець файлу

{$I+}

if ioresult=0

then

Button1.Enabled:=true

else

begin

resp:=messagedlg('Файл журналу олімпіади не знайдено. '+'Створити новий файл?', mtinformation,[mbyes,mbno],0);

if resp=mryes then

begin

{$I-}

rewrite(f); // відкриття файлу для запису

{$I+}

if ioresult=0

then

Button1.Enabled:=true

else

begin

showmessage('Помилка при створенні файла');

close;

end;

end;

end;

end;

  1. Запрограмувати натискання на кнопку «Додати запис» (подія OnClick):

procedure TForm1.Button1Click(Sender: TObject);

var medal:Tmedal;

begin

with medal do

begin

country:=ComboBox1.Text;

sport:=combobox2.text;

person:=edit1.Text;

case RadioGroup1.ItemIndex of

0:kind:=gold;

1:kind:=silver;

2:kind:=bronze;

end;

end;

write(f,medal);

Edit1.Text:='';

ComboBox1.Text:='';

ComboBox2.Text:='';

RadioGroup1.ItemIndex:=-1;

end;

  1. Запрограмувати натискання на кнопку «Показати весь журнал» (подія OnClick):

procedure TForm1.Button2Click(Sender: TObject);

var medal:Tmedal;

m:string[15];

begin

closefile(f); // закрити файл

reset(f); // відкрити файл для читання

rezult.Memo1.Lines.Clear; // очистити поле компонента

while not eof(f) do

begin

read(f,medal); // зчитати запис з файла у змінну medal

with medal do

begin

case kind of

gold:m:='gold';

silver:m:='silver';

bronze:m:='bronze';

end;

// вивести в полі Memo1 дані з файла

rezult.Memo1.Lines.Add(person+'--'+country+'--'+

'--'+sport+'--'+m);

end;

end;

rezult.Memo1.Font.Color:=clblack;

rezult.Memo1.Font.Size:=12;

rezult.ShowModal; // завантаження форми «Журнал олімпіади»

end;

Зауваження. Для забезпечення зв’язку головного модуля з модулем Unit2 треба описати в головному модулі зовнішнє ім’я Unit2, включивши його до блоку реалізації (implementation):

Uses Unit2;

  1. Після закриття форми необхідно закрити файл таки чином (подія OnClose для форми Form1):

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

begin

closefile(f);

end;

  1. Зберегти проект у папці С:\Delphi\lab_9.

  2. Запустити проект та перевірити правильність його виконання.

Питання для самоконтролю:

1. Що таке файл?

2. Як поділяються файли залежно від способу опису?

3. Яка процедура пов’язує файлову змінну з конкретним файлом?

4. Яка процедура відкриває файл для записування в нього даних?

5. Яка процедура відкриває файл для зчитування з нього даних?

6. Яка процедура закриває файл після опрацювання?

7. Яка функція визначає чи кінець файлу?