Розробка проекту «Рейтинг країн 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Розробка проекту «Рейтинг країн



За результатами олімпійських змагань»

Завдання. Створити програму, за допомогою якої користувач зміг би за введеними даними про кількість золотих, срібних та бронзових медалей отриманих учасниками олімпіади кожної країни отримати інформацію про рейтинг країн за результатами олімпійських змагань: загальну кількість отриманих медалей та кількість набраних балів. Передбачити впорядкування таблиці за спаданням по стовпчику «Бали».

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

Для реалізації проекту скористатись одним із засобів середовища програмування Delphi – компонентом StringGrid (вкладка палітри компонентів Additional), який слугує для відображення даних у вигляді таблиці. Цей компонент має багато властивостей.

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

· ColCount – містить кількість стовпчиків в таблиці;

· RowCount – містить кількість рядків в таблиці;

· FixedCols – містить кількість фіксованих по лівому краю стовпчиків в таблиці;

· FixedRows – містить кількість фіксованих по верхньому краю рядків;

· FixedColor – задає колір фіксованих елементів таблиці;

· Color – задає колір таблиці;

· Rows – містить список стовпчиків;

· Row – містить номер рядка, в якому знаходиться обрана комірка;

· Cells – дає змогу звернутися до конкретної комірки за вказаними номер стовпчика та номером рядка;

· Options.goEditing – дає можливість «дозволити» (значення True) або «заборонити» (значення False) виконувати редагування комірок таблиці.

 

 

Для оздоблення форми олімпійською символікою скористаємося компонентом Shape, що слугує для розміщення на формі геометричних фігур – прямокутника, кола, квадрата, еліпса. Розмістимо на формі п’ять компонентів Shape та встановимо для цих компонентів відповідні значення певних властивостей для відображення п’ятьох кольорових кіл одного розміру.

 

ХІД РОБОТИ

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

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

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

3. Розмістити на формі візуальні компоненти StringGrid1, Button1, Shape1-Shape5 з властивостями, як у таблиці 1.

Таблиця 1

Компонент Вкладка вікна «Інспектор об’єктів» (Object Inspector) Властивість (Properties)/ Подія (Events) Значення властивості/ обробка події (тіло процедури обробки події)
Form1 Properties Caption Рейтинги країн за результатами олімпійських змагань
Color За вибором
Font Шрифт, розмір, колір за вибором
StringGrid Properties ColCount  
RowCount  
Name Tab1
FixedCols  
FixedRows  
FixedColor За вибором
Color За вибором
Options.goEditing True
Button1 Properties Caption Підсумок
Font Шрифт, розмір, колір за вибором
Shape1-Shape5 Properties Shape stCircle
Pen.Color За вибором
Pen.Style psSolid – тип лінії (суцільна)
Pen.Width 5 – товщина лінії
Brush.Style bsClear – немає зафарбування фігури

4. Для форми form1 створити процедуру опрацювання події OnActivate, в якій заповнити комірки фіксованого рядка та фіксованого стовпчика.

procedure TForm1.FormActivate(Sender: TObject);

Begin

tab1.Cells[0,0]:='Країна';

tab1.Cells[1,0]:='Золотих';

tab1.Cells[2,0]:='Срібних';

tab1.Cells[3,0]:='Бронзових';

tab1.Cells[4,0]:='Всього медалей';

tab1.Cells[5,0]:='Балів';

tab1.Cells[0,1]:='Україна';

tab1.Cells[0,2]:='Білорусія';

tab1.Cells[0,3]:='Англія';

tab1.Cells[0,4]:='Германія';

tab1.Cells[0,5]:='Італія';

tab1.Cells[0,6]:='Китай';

tab1.Cells[0,7]:='Корея';

tab1.Cells[0,8]:='Куба';

tab1.Cells[0,9]:='Нідерланди';

tab1.Cells[0,10]:='Росія';

tab1.Cells[0,11]:='США';

tab1.Cells[0,12]:='Франція';

tab1.Cells[0,13]:='Японія';

end;

 

5. Створити для кнопки Button1 процедуру опрацювання події OnClick, яка містить обчислення загальної кількості отриманих меделей та кількості набраних балів, а також команди впорядкування таблиці за спаданням по стовпчику «Бали».

procedure TForm1.Button1Click(Sender: TObject);

var c,r:integer;{номер стовпчика та номер рядка таблиці}

s:integer;{всього медалей у команди}

p:integer;{балів у команди}

m:integer;{номер рядка з максимальною кількістю балів}

buf:array[0..5] of string; {буфер для обміну рядків}

i:integer;{номер рядка - використовується у впорядкуванні}

Begin

for r:=1 to tab1.RowCount do //опрацювати всі рядки

Begin

s:=0;//загальна кількість медалей

for c:=1 to 3 do

if tab1.Cells[c,r]<>''

then s:=s+strtoint(tab1.Cells[c,r])

else tab1.Cells[c,r]:='0';

//загальна кількість балів

p:=7*strtoint(tab1.Cells[1,r])+6*strtoint(tab1.Cells[2,r])+

5*strtoint(tab1.Cells[3,r]);

// виведення результатів

tab1.Cells[4,r]:=inttostr(s); // всього медалей

tab1.Cells[5,r]:=inttostr(p); // всього балів

end;

// впорядкування таблиці за спаданням - по 5-му стовпчику

//впорядкування методом вибору

for r:=1 to tab1.RowCount-1 do

Begin

m:=r; // найбільший елемент в r-му рядку

for i:=r to tab1.RowCount-1 do

if strtoint(tab1.Cells[5,i])>strtoint(tab1.Cells[5,m])

Then

m:=i;

if r<>m then

Begin

for c:=0 to 5 do

Begin

buf[c]:=tab1.cells[c,r];

tab1.Cells[c,r]:=tab1.Cells[c,m];

tab1.Cells[c,m]:=buf[c];

end;

end;

end;

end;

 

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

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

 

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

1. Який компонент зручно використовувати для введення масиву?

2. Яка властивість визначає ім’я компоненту?

3. Яка властивість визначає кількість колонок в таблиці?

4. Яка властивість визначає кількість рядків у таблиці?

5. Яка властивість дозволяє або забороняє використовування клавіші TAB для переміщення курсора таблиці в наступний елемент таблиці?

6. Яка властивість визначає ознаку знаходження компоненту в режимі редагування?

7. Які властивості визначають ширину та висоту поля таблиці?

8. Яка властивість визначає ширину колонок таблиці?


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

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

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



Поделиться:


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

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