Пример создания приложения
Задание: создать Windows-приложение для обработки ведомости об успеваемости учащихся в количестве 9 человек. Каждая запись должна содержать фамилию, инициалы, а также оценки по физике, математике и сочинению. Вывести список учащихся, отсортированный в порядке уменьшения их среднего балла.
Один из возможных вариантов панели интерфейса создаваемого приложения показан на рис.6.1.
Размещение компонентов на Форме
При работе с записями ввод и вывод информации на экран удобно организовывать с помощью компонента StringGrid.
|
В этом задании для нанесения соответствующих надписей в колонках и строках используется фиксированная зона компонента StringGrid, поэтому в Инспекторе Объектов значения свойств FixedCols и FixedRows установите равными 1. В соответствии с заданием установите значение свойства ColCount=6, а значение свойства RowCount=10. Для возможности просмотра всего списка учащихся в компоненте StringGrid удобно использовать вертикальную линейку прокрутки, поэтому установите свойство ScrollBars в состояние ssVertical. Откройте список опций свойства +Options и установите значение goEditing в True – это даст возможность редактировать информацию в компоненте StringGrid с помощью клавиатуры и “мыши”.
Создание процедур обработки событий FormCreate и Button1Click
Двойным нажатием клавиши “мыши” на Форме и кнопке Button1 создайте соответствующие процедуры обработки событий. Используя текст модуля UnZap, внимательно наберите операторы этих процедур.
Текст модуля 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.
Выполнение индивидуального задания
По указанию преподавателя выберите свое индивидуальное задание. Создайте приложение и протестируйте его работу.