ТОП 10:

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



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

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

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

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

· типізовані – задаються за допомогою зарезервованих слів 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 У вікні вбудованого редактора списку ввести види спорту: a. Лижі 30 км, жінки; b. Лижі, естафета 4х7,5 км; c. Ковзани 1500м, чоловіки; d. Ковзани 5000м, жінки; e. Біатлон 30 км, чоловіки.
RadioGroup 1 Properties Items У вікні вбудованого редактора списку ввести типи медалей: золота, срібна, бронзова

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

Таблиця 2

Компонент Вкладка вікна «Інспектор об’єктів» (Object Inspector) Властивість (Properties)/ Подія (Events) Значення властивості/ обробка події (тіло процедури обробки події)
Button1 Properties Caption Додати запис
Button2 Properties Caption Показати весь журнал

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

 

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

Таблиця 3

Компонент Вкладка вікна «Інспектор об’єктів» (Object Inspector) Властивість (Properties)/ Подія (Events) Значення властивості/ обробка події (тіло процедури обробки події)
Form2 Properties Name Result
Caption Журнал олімпіади
Memo1 Properties Align alClient – для заповнення всього поля форми компонентом Memo1

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

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

TKind =(gold,silver,bronze);

tmedal=record

country:string[20];

sport:string[30];

person:string[40];

kind:TKind;

end;

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

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

10. Створити для головної форми 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;

11. Запрограмувати натискання на кнопку «Додати запис» (подія 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;

12. Запрограмувати натискання на кнопку «Показати весь журнал» (подія 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;

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

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

begin

closefile(f);

end;

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

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

 

 

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

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

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

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

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

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

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

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


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

Тема:Визначення типів. Створення нової компоненти.

Мета: Навчитися створювати нові компоненти засобами Delphi, а також їх встановлювати та тестувати.

Завдання

Створити новий клас, мутант TBitBtn1, в якому змінити значення за умовчанням властивості ShowHint на True і додати нову властивість – лічильник натиснень на кнопку.

Хід роботи

1. Перед початком роботи із створення нового компоненту потрібно створити окремий каталог для модуля і інших файлів компоненту. Після цього можна приступити до створення модуля компоненту.

Для того, щоб створити модуль компоненту, необхідно з меню Component вибрати команду New Component і в поля діалогового вікна New Component (мал. 1), що відкрилося ввести інформацію про створюваний компонент.

Рис. 1. Діалогове вікно New Component

Поле Ancestor type повинне містити базовий тип для створюваного компоненту. Базовий тип компоненту можна задати безпосереднім введенням імені типу або вибором із списку, що розкривається. Для компоненту, що розробляється, базовим компонентом є стандартний компонент BitBtn (поле введення-редагування). Тому базовим типом для типу компоненту, що розробляється, є тип TBitBtn [Buttons].

В полі Class Name необхідно ввести ім'я класу компоненту, що розробляється, наприклад TBitBtn1. Пригадайте, що в Delphi імена типів повинні починатися буквою т.

В полі Palette Page потрібно ввести ім'я вкладки палітри компонентів, на яку після створення компоненту буде доданий його значок. Назву вкладки палітри компонентів можна вибрати із списку, що розкривається. Якщо в полі Palette Page ввести ім'я ще не існуючої вкладки палітри компонентів, то безпосередній перед додаванням компоненту вкладка з вказаним ім'ям буде створена.

В полі Unit, file name знаходиться автоматично сформоване ім'я файла модуля створюваного компоненту. Delphi привласнює модулю компоненту ім'я, яке співпадає з ім'ям типу компоненту, але без букви T. Клацнувши на кнопці з трьома крапками, можна вибрати каталог, в якому повинен бути збережений модуль компоненту.

Після натиснення кнопки ОК до поточного проекту додається сформований Delphi-модуль, що є заготівкою (шаблон) модуля компоненту. Текст цього модуля приведений в лістингу 1.

unit Unit1;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls;

type

TMyButton = class(TBitBtn1)

private

{ Private declarations }

protected

{ Protected declarations }

public

{ Public declarations }

published

{ Published declarations }

end;

procedure Register;

implementation

procedure Register;

begin

RegisterComponents('Samples', [TBitBtn1]);

end;

end.

Для прикладу створимо новий клас, мутант TBitBtn1, в якому змінимо значення за умовчанням властивості ShowHint на True і додамо нову властивість – лічильник натиснень на кнопку. Тепер початковий текст виглядає так:

unit BitBtn1;

interface

uses

SysUtils, Classes, Controls, StdCtrls, Buttons;

type

TBitBtn2 = class(TBitBtn)

private

{ Private declarations }

FClickCount : Longint;

FNote: string;

protected

{ Protected declarations }

public

{ Public declarations }

constructor Create(AOwner : TComponent); override;

procedure Click; override;

property ClickCount : Longint read FClickCount write FClickCount;

published

{ Published declarations }

property Note: string read FNote write FNote;

end;

 

procedure Register;

implementation

constructor TBitBtn2.Create(AOwner : TComponent);

begin

inherited Create(AOwner);

ShowHint:=True;

FClickCount:=0;

end;

 

procedure TBitBtn2.Click;

begin

Inc(FClickCount);

inherited Click;

end;

procedure Register;

begin

RegisterComponents('Samples', [TBitBtn1]);

end;

end.

Установка компоненту

Для того щоб значок компоненту з'явився в палітрі компонентів, компонент повинен бути доданий в один з пакетів (Packages) компонентів

Пакет компонентів - це файл з розширенням dpk (Delphi Package File). Наприклад, компоненти, створені програмістом, знаходяться в пакеті Dclusr70.dpk.

Під час додавання компоненту в пакет Delphi використовує модуль компоненту і файл ресурсів компоненту, в якому повинен знаходитися бітовий образ значка компоненту. Ім'я файла ресурсів компоненту повинне обов'язково співпадати з ім'ям файла модуля компоненту. Файл ресурсів має розширення dcr (Dynamic Component Resource). Бітовий образ, що знаходиться усередині файла ресурсів, повинен мати ім'я, співпадаюче з ім'ям класу компоненту.

 

Ресурси компоненту

Файл ресурсів компоненту можна створити за допомогою утиліти Image Editor, яка запускається вибором з меню Tools команди Image Editor.

Для того щоб створити новий файл ресурсу компоненту, потрібно з меню File вибрати команду New і із списку, що з'явився, вибрати тип створюваного файла - Component Resource File.

В результаті відкривається вікно файла ресурсів Untitledl.dcr, а в меню діалогового вікна Image Editor з'являється новий пункт - Resource. Тепер потрібно з меню Resource вибрати команду New/Bitmap і у вікні Bitmap Properties, що відкрилося встановити характеристики бітового образу значка компоненту: Size - 24х24 пікселя, Colors - 16.

В результаті цих дій в створюваний файл ресурсів компоненту буде доданий новий ресурс - бітовий образ з ім'ям Bitmap1 Подвійне клацання на імені ресурсу (Bitmapl) розкриває вікно редактора бітового образу, в якому можна намалювати потрібну картинку.

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

Увага! Ім'я файла ресурсів компоненту (Edit.dcr) повинне співпадати з ім'ям модуля компоненту (Edit.pas), а ім'я бітового образу (Edit) - з ім'ям класу компоненту (Edit).

Установка

Після створення файла ресурсів компоненту, в якому знаходиться бітовий образ значка компоненту, можна приступити до установки компоненту. Для цього треба з меню Component вибрати команду Install Component і заповнити поля вікна Install Component, що відкрилося (мал. 2).

Рис. 2. Діалогове вікно Install Component

В полі Unit file name потрібно ввести ім'я файла модуля. Для цього скористатися кнопкою Browse.

Поле Search path (Шлях пошуку) повинне містити розділені крапкою з комою імена каталогів, в яких Delphi під час установки компоненту буде шукати необхідні файли, зокрема файл ресурсів компоненту. Якщо ім'я файла модуля було введено в полі Unit file name вибором файла із списку, отриманого за допомогою кнопки Browse, то Delphi автоматично додає в полі Search path імена необхідних каталогів.

Примітка Файл ресурсу компоненту повинен знаходитися в одному з каталогів, перерахованих в полі Search path. Якщо його там немає, то компоненту буде призначений значок його батьківського класу.

Поле Package file name повинне містити ім'я пакету, в який буде встановлений компонент. За умовчанням компоненти, створювані програмістом, додаються в пакет Dclusr70.dpk.

Поле Package description містить назву пакету. Для пакету Dclusr70.dpk

ЦЕ текст: Borland User's Components.

Після заповнення перерахованих полів і натиснення кнопки ОК починається процес установки. Спочатку на екрані з'являється вікно Confirm (мал. 3), в якому Delphi просить підтвердити оновлення пакету.

Рис.3. Запит підтвердження оновлення пакету в процесі установки компоненту

 

Після натиснення кнопки Yes процес установки продовжується. Якщо він завершується успішно, то на екрані з'являється інформаційне повідомлення (мал. 4) про те, що в результаті оновлення пакету палітра компонентів оновлена, тобто в неї доданий значок компоненту, і новий компонент зареєстрований.

Рис. 4. Повідомлення про неуспішну установку компоненту

Після установки компоненту в пакет відкривається діалогове вікно Package (Редактор пакету компонентів) (мал. 5), в якому перераховані компоненти, що знаходяться в пакеті.

Рис. 5. Вікно редактора пакету компонентів

На цьому процес установки компоненту закінчується. В результаті на вкладці палітри компонентів, ім'я якої було задано при створенні модуля компоненту, з'являється значок встановленого компоненту (мал.6).

Рис.6. Вкладка Samples після установки компоненту NkEdit







Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.172.213 (0.02 с.)