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

Лабораторна робота №6 Програмування алгоритмів з використанням записів

Мета лабораторної роботи: створити застосування, в якому використовуються дані типу запис.

6.1. Приклад створення застосування

Завдання: створити Windows-додаток для обробки відомості про успішність учнів в кількості 9 чоловік. Кожен запис повинен містити прізвище, ініціали, а також оцінки з фізики, математики і твору. Вивести список учнів, відсортований в порядку зменшення їх середнього балу.

Один з можливих варіантів панелі інтерфейсу створюваного застосування показаний на рис.6.1.

6.1.1. Розміщення компонентів на Формі

При роботі із записами введення і виведення інформації на екран зручно організовувати за допомогою компонента StringGrid.

Рис. 6.1

У цьому завданні для нанесення відповідних написів в колонках і рядках використовується фіксована зона компонента StringGrid, тому в Інспекторові Об'єктів значення властивостей FixedCols і FixedRows встановите рівними 1. Відповідно до завдання встановите значення властивості ColCount=6, а значення властивості RowCount=10. Для можливості перегляду всього списку що вчаться в компоненті StringGrid зручно використовувати вертикальну лінійку прокрутки, тому встановите властивість ScrollBars в стан ssVertical. Відкрийте список опцій властивості +Options і встановите значення goEditing в True – це дасть можливість редагувати інформацію в компоненті StringGrid за допомогою клавіатури і “миші”.

6.1.2. Створення процедур обробки подій FormCreate і Button1Click

Подвійним натисненням клавіші “миші” на Формі і кнопці Button1 створіть відповідні процедури обробки подій. Використовуючи текст модуля UnZap, уважно наберіть операторів цих процедур.

6.1.3. Текст модуля UnZap

Unit UnZap;

interface

uses

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

StdCtrls, Buttons, Grids;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

type

zap=record // оголошення запису

fio :string[20];

mat,fiz,soch:integer;

srbal :extended

end;

var

MZap:array[1..9] of zap; // оголошення масиву записів

procedure TForm1.FormCreate(Sender: TObject);

var

i:integer;

begin

with StringGrid1 do

begin // занесення інформації в осередки StringGrid1

Cells[0,0]:='№пп’;

Cells[1,0]:='Прізвище, ініціали';

Cells[2,0]:='Математика';

Cells[3,0]:='Фізика';

Cells[4,0]:='Твір';

Cells[5,0]:='Ср.бал';

for i:=1 to 9 do

Cells[0,i]:=IntToStr(i);

Cells[1,1]:='Перший'; Cells[2,1]:='3'; Cells[3,1]:='3'; Cells[4,1]:='3';

Cells[1,2]:='Другий'; Cells[2,2]:='3'; Cells[3,2]:='3'; Cells[4,2]:='4';

Cells[1,3]:='Третій'; Cells[2,3]:='3'; Cells[3,3]:='4'; Cells[4,3]:='4';

Cells[1,4]:='Четвертий'; Cells[2,4]:='4'; Cells[3,4]:='4'; Cells[4,4]:='4';

Cells[1,5]:='П’ятий'; Cells[2,5]:='3'; Cells[3,5]:='4'; Cells[4,5]:='5';

Cells[1,6]:='Шостий'; Cells[2,6]:='5'; Cells[3,6]:='4'; Cells[4,6]:='4';

Cells[1,7]:='Сьомий'; Cells[2,7]:='5'; Cells[3,7]:='5'; Cells[4,7]:='4';

Cells[1,8]:='Восьмий'; Cells[2,8]:='5'; Cells[3,8]:='5'; Cells[4,8]:='5';

Cells[1,9]:='Дев’ятий'; Cells[2,9]:='3'; Cells[3,9]:='5'; Cells[4,9]:='5';

for i:=1 to 9 do

with MZap[i] do

begin // формування полів масиву записів

fio:=Cells[1,i];

mat:=StrToInt(Cells[2,i]);

fiz:=StrToInt(Cells[3,i]);

soch:=StrToInt(Cells[4,i]);

srbal:=(mat+fiz+soch) /3; // обчислення значення ср. балу

Cells[5,i]:=FloatToStrF(srbal,ffFixed,5,2); // виведення значення ср.балла

end; // в останню колонку StringGrid1

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

i,j :integer;

vper:zap;

begin

for i:=1 to 9 do

with StringGrid1,MZap[i] do

begin

fio:=Cells[1,i];

mat:=StrToInt(Cells[2,i]);

fiz:=StrToInt(Cells[3,i]);

soch:=StrToInt(Cells[4,i]);

srbal:=(mat+fiz+soch) /3;

Cells[5,i]:=FloatToStrF(srbal,ffFixed,5,2);

end;

for i:=2 to 9 do // сортування методом "бульбашки"

for j:=9 downto i do

if MZap[j-1].srbal<MZap[j].srbal then

begin

vper:=MZap[j-1];

MZap[j-1]:=MZap[j];

MZap[j]:=vper;

end;

for i:=1 to 9 do // заповнення комірок StringGrid1 полями масиву записів

with StringGrid1,MZap[i] do

begin

Cells[1,i]:=fio;

Cells[2,i]:=IntToStr(mat);

Cells[3,i]:=IntToStr(fiz);

Cells[4,i]:=IntToStr(soch);

Cells[5,i]:=FloatToStrF(srbal,ffFixed,5,2);

end;

end;

end.