Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi -Мет по лабраб_ Часть_2.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

8.2.3.Создание процедур обработки событий FormCreate и ButtonClick

Двойным нажатием клавиши «мыши» на Форме и на кнопках Button1, Button2, Button3 создайте соответствующие процедуры обработки событий. Используя текст модуля UnZap, внимательно наберите операторы этих процедур.

8.2.4. Работа с приложением

Закончив создание приложения, сохраните его с помощью пунктов меню File | Save All... Выполните приложение. Проанализируйте результаты. В случае необходимости откорректируйте приложение, снова сохраните его аналогичным образом. Выполните приложение и проанализируйте результаты. После каждой корректировки следует выполнять сохранение приложения с помощью пунктов File | Save All…

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

Unit UnZap;

interface

uses

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

Dialogs, StdCtrls, Grids;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

StringGrid3: TStringGrid;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

type // Создание типа данных "запись"(record), имя типа - zap

zap=record

nzach :integer;

fio:string[20];

mat,fiz,inf:integer;

srb: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]:='223254';Cells[2,1]:='Первый Н.П.'; Cells[3,1]:='3'; Cells[4,1]:='4';

Cells[5,1]:='4';

Cells[1,2]:='233254';Cells[2,2]:='Второй А.Н.'; Cells[3,2]:='5'; Cells[4,2]:='5';

Cells[5,2]:='5';

Cells[1,3]:='123754'; Cells[2,3]:='Третий Н.П.'; Cells[3,3]:='4'; Cells[4,3]:='5';

Cells[5,3]:='4';

Cells[1,4]:='216254';Cells[2,4]:='Четвертый Н.П.';Cells[3,4]:='3'; Cells[4,4]:='3';

Cells[5,4]:='2';

Cells[1,5]:='329270';Cells[2,5]:='Пятый Н.П.';Cells[3,5]:='5'; Cells[4,5]:='4';

Cells[5,5]:='5';

Cells[1,6]:='290176';Cells[2,6]:='Шестой Н.П.'; Cells[3,6]:='5'; Cells[4,6]:='3';

Cells[5,6]:='4';

Cells[1,7]:='218425';Cells[2,7]:='Седьмой Н.П.';Cells[3,7]:='3';Cells[4,7]:='2';

Cells[5,7]:='4';

Cells[1,8]:='223054';Cells[2,8]:='Восьмой Н.П.';Cells[3,8]:='2';Cells[4,8]:='2';

Cells[5,8]:='4';

Cells[1,9]:='219325';Cells[2,9]:='Девятый Н.П.';Cells[3,9]:='5';Cells[4,9]:='5';

Cells[5,9]:='4';

for i:=1 to 9 do

with MZap[i] do

begin // формирование полей массива записей

nzach:=StrToInt(Cells[1,i]);

fio:=Cells[2,i];

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

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

inf:=StrToInt(Cells[5,i]);

end;

end;

end;

{ Сортировка записей в порядке убывания среднего балла}

procedure TForm1.Button1Click(Sender: TObject); var

i,j: integer;

rab: zap; // Рабочая переменная для обмена значениями двух элементов

// массива при сортировке

begin

for i:=1 to 9 do

with StringGrid1,MZap[i] do

begin // формирование полей массива записей при нажатии Button1

nzach:=StrToInt(Cells[1,i]);

fio:=Cells[2,i];

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

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

inf:=StrToInt(Cells[5,i]);

srb:=(mat+fiz+inf)/3 // Расчет среднего балла

end;

for i:=2 to 9 do // Сортировка массива записей по убыванию среднего

//балла

for j:=9 downto i do // методом пузырька

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

begin

rab:=MZap[j-1];

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

MZap[j]:=rab;

end;

with StringGrid2 do // Очистка ячеек StringGrid2

for i:=0 to 9 do

for j:=0 to 9 do

Cells[j,i]:=' ';

with StringGrid2 do

begin // Пересылка заголовков столбцов в первую строку

//StringGrid2

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

Cells[1,0]:='№ зачетной книжки';

Cells[2,0]:='Фамилия';

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

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

Cells[5,0]:='Информатика';

Cells[6,0]:='Средний балл';

for i:=1 to 9 do

with MZap[i] do

begin // Занесение информации в остальные ячейки

//StringGrid2

Cells[0,i]:=IntToStr(i); // из рассортированного массива Mzap

Cells[1,i]:=IntToStr(nzach);

Cells[2,i]:=fio;

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

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

Cells[5,i]:=IntToStr(inf);

Cells[6,i]:=floatToStrF(srb,ffFixed,5,2);

end;

end;

end;

{ Вывод списка неуспевающих студентов}

procedure TForm1.Button2Click(Sender: TObject); var

i,j:integer;

begin

for i:=1 to 9 do

with StringGrid1,MZap[i] do

begin // Занесение данных в массив записей

nzach:=StrToInt(Cells[1,i]);

fio:=Cells[2,i];

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

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

inf:=StrToInt(Cells[5,i]);

srb:=(mat+fiz+inf)/3

end;

with StringGrid3 do // Очистка ячеек StringGrid3

for i:=0 to 9 do

for j:=0 to 9 do

Cells[j,i]:=' ';

with StringGrid3 do

begin // Занесение заголовков столбцов в первую строку StringGrid3

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

Cells[1,0]:='№ зачетной книжки';

Cells[2,0]:='Фамилия';

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

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

Cells[5,0]:='Информатика';

Cells[6,0]:='Средний балл';

j:=0;

for i:=1 to 9 do //Занесение только данных о неуспевающих студентах в

// StringGrid3

with MZap[i] do

if (mat=2) or (fiz=2) or (inf=2) then

begin

j:=j+1;

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

Cells[1,j]:=IntToStr(nzach);

Cells[2,j]:=fio;

Cells[3,j]:=IntToStr(mat);

Cells[4,j]:=IntToStr(fiz);

Cells[5,j]:=IntToStr(inf);

Cells[6,j]:=floatToStrF(srb,ffFixed,5,2);

end;

end;

end;

{ Определение наибольшего и наименьшего номеров зачетных книжек}

procedure TForm1.Button3Click(Sender: TObject);

var

i, min, max, k, l: integer;

begin

for i:=1 to 9 do

with StringGrid1,MZap[i] do

begin // Занесение данных в массив записей при нажатии кнопки Batton3

nzach:=StrToInt(Cells[1,i]);

fio:=Cells[2,i];

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

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

inf:=StrToInt(Cells[5,i]);

srb:=(mat+fiz+inf)/3

end;

max:=MZap[1].nzach; k:=1; // занесение № первой зачетки в ячейку max

min:=MZap[1].nzach; l:=1; // занесение № первой зачетки в ячейку min

for i:=1 to 9 do // Поиск максимального и минимального № зачеток

with MZap[i] do // и номеров в массиве их обладателей

begin

if MZap[i].nzach>max then

begin

max:=nzach;

k:=i;

end;

if MZap[i].nzach<min then

begin

min:=nzach;

l:=i;

end;

end;

Memo1.Lines.Add('РЕЗУЛЬТАТ'); // Занесение результатов в Memo поле

Memo1.Lines.Add(#13#10+'Наибольший № зачетки '+IntToStr(max)+' имеет '+MZap[k].fio);

Memo1.Lines.Add(#13#10+'Наименьший № зачетки '+IntToStr(min)+' имеет '+MZap[l].fio);

end;

end.