Размещение компонентов по Форме 


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



ЗНАЕТЕ ЛИ ВЫ?

Размещение компонентов по Форме



Один из возможных вариантов панели интерфейса создаваемого приложением показан на рис. 8.1.

При работе с записями ввод и вывод информации на экране удобно организовать с помощью компонента StringGrid, который находится на странице Additional.

Как видно, на форме размещены три компонента StringGrid: первый (StringGrid1) предназначен для ввода исходной ведомости, второй (StringGrid2) для вывода ведомости, содержащей средний балл в порядке убывания среднего балла, третий (StringGrid3) для вывода списка неуспевающих студентов.

В задании для соответствующих заголовков колонок и номеров строк используется фиксированная зона компонента StringGrid, поэтому в Инспекторе Объектов значение FixedCols и FixedRows установите равными 1 для всех компонентов StringGrid.

Рис. 8.1. Размещение компонентов на форме

В соответствии с заданием установите значение свойства ColCoun t =6 (количество столбцов) для StringGrid2 и ColCount =7 для StringGrid1 и StringGrid3, а значение свойства RowСount =10 (количество строк) для всех компонентов StringGrid. Для наличия вертикальной или горизонтальной или обеих линеек прокрутки в компоненте StringGrid установите свойство ScrollBars в состояние ssVertical, ssGorizontal или ssBoth соответственно. Но старайтесь устанавливать такой размер поля компонента StringGrid, чтобы вся таблица умещалась в поле.

Откройте список опций свойства +Options и установите значение goEditing в True– это даст возможность вводить и редактировать информацию в компоненте StringGrid с помощью клавиатуры и “мыши’’.

На форме также размешены три кнопки (Batton). Каждая из них выполняет функцию задания соответственно надписи.

Компонент Memo предназначен для вывода фамилий студентов с максимальным и минимальным номерами зачетных книжек.

Три компонента Label (Метка) служат для вывода пояснительных надписей.

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

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

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

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

Текст модуля 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.

8.3. Выполнение индивидуального задания

По указанию преподавателя выберете свое индивидуальное задание. Создайте приложения и протестируйте его работу

Индивидуальные задания

1. В магазине формируется список лиц, записавшихся на покупку товара повышенного спроса. Каждая запись этого списка содержит: порядковый номер, Ф.И.О., домашний адрес покупателя и дату постановки на очередь, дату выполнения заказа. Вывести список в порядке возрастания даты постановки на очередь и список выполненных заказов.

2. Список товаров, имеющихся на складе, включает в себя наименование товара, количество единиц товара, цену единицы и дату поступления товара на склад. Вывести список товаров, хранящихся больше месяца, стоимость которых превышает 10 000 руб., а также общую стоимость всех таких товаров,

3. Для получения места в общежитии формируется список студентов, который включает Ф.И.О. студента, группу, средний балл, доход на каждого члена семьи. Общежитие в первую очередь предоставляется тем, у кого доход на каждого члена семьи меньше двух минимальных зарплат, и у кого средний балл не меньше 6. Вывести список первоочередников, претендующих на места в общежитии в порядке возрастания дохода на члена семьи.

4. Сведения о наличии лекарственных средств в аптеках города содержат следующие данные: наименование лекарства, фирма-изготовитель, номер аптеки, количество упаковок, стоимость одной упаковки. Получить список аптек, в которых можно купить N упаковок заданного лекарства, включив все имеющиеся сведения о лекарстве. Список вывести в порядке возрастания цены за упаковку.

5. Фирма реализует изделия клиентам. Имеются следующие данные о продажах: изделие, цена, клиент, количество, дата продажи. Для заданного изделия вывести сведения о продажах его клиентам в порядке убывания количества проданных изделий.

6. В библиотеке хранится информация о наличии книг. Имеются следующие данные о каждой книге: инвентарный номер, фамилии авторов, название книги, год издания, количество страниц, цена. Вывести список книг самого раннего года издания в алфавитном порядке авторов и определить общую стоимость этих книг.

7. В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отправления и прибытия. Вывести информацию о рейсах, которыми можно воспользоваться для прибытия в заданный пункт назначения раньше заданного времени в порядке убывания времени прибытия.

8. На междугородней АТС информация о разговорах содержит дату разговора, код и название города, время разговора, тариф, номер телефона в этом городе и номер телефона абонента. Вывести все данные с расчетом стоимости разговора в порядке возрастания даты разговора и общую стоимость всех разговоров, а так же вывести сведения о самом коротком разговоре.

9. Информация о сотрудниках фирмы включает: Ф.И.О., табельный номер, количество отработанных часов за месяц, почасовый тариф. Рабочее время свыше 144 часов считается сверхурочным и оплачивается в двойном размере. Подсчитать размер заработной платы каждого сотрудника фирмы за вычетом подоходного налога, который составляет 12% от суммы заработка. Вывести ведомость в алфавитном порядке фамилий сотрудников.

10. Информация об участниках спортивных соревнований содержит: наименование страны, название команды, Ф.И.О. игрока, игровой номер, возраст, рост, вес. Вывести информацию о самом молодом участнике, а так же список участников, рост которых больше двух метров.

11. Для книг, хранящихся в библиотеке, задаются: регистрационный номер книги, автор, название, год издания, издательство, количество страниц. Сформировать указанный список и вывести в алфавитном порядке названий, а также вывести список книг, изданных за последние 4 года.

12. Различные цеха завода выпускают продукцию нескольких наименований. Сведения о выпушенной продукции включают: наименование, количество, номер цеха. Вывести информацию по всем цехам в порядке возрастания номера цеха, а также вывести информацию об изделиях, выпуск которых составил 1 000 и более единиц.

13. Информация о сотрудниках предприятия содержит: Ф.И.О., номер отдела, должность, дату начала работы. Вывести списки сотрудников по отделам, а также список сотрудников, поступивших на работу в текущем году.

14. Ведомость абитуриентов, сдавших вступительные экзамены в университет, содержит: Ф.И.О., адрес, оценки по 4-м дисциплинам. Определить количество абитуриентов; проживающих в г. Минске и сдавших экзамены со средним баллом не ниже 7,5, вывести всю информацию об этих студентах.

15. В справочной аэропорта хранится расписание вылета самолетов на следующие сутки. Для каждого рейса указаны: номер рейса, тип самолета, пункт назначения, время вылета. Вывести все номера рейсов, типы самолетов и времена вылета для заданного пункта назначения в порядке возрастания времени вылета.

16. У администратора железнодорожных касс хранится информация о свободных местах в поездах дальнего следования на ближайшую неделю в следующем виде: номер поезда, дата выезда, время отправления, пункт назначения, число свободных мест. Оргкомитет международной конференции обращается к администратору с просьбой зарезервировать 12мест до города N на к-й день недели. Вывести список вариантов или сообщение о невозможности выполнить заказ в полном объеме.

17. Ведомость абитуриентов, сдавших вступительные экзамены в университет, содержит Ф.И.О. абитуриента, оценки по трем дисциплинам. Определить средний балл по университету и вывести список абитуриентов, средний балл которых выше среднего балла по университету в порядке убывания среднего балла.

18. В радиоателье хранятся квитанции о сданной в ремонт радиоаппаратуре. Каждая квитанция содержит следующую информацию: наименование группы изделий (телевизор, радиоприемник и т. п.), марка изделия, дата приемки в ремонт, состояние готовности заказа (выполнен, не выполнен). Вывести информацию о состоянии заказов по группам изделий. Вывести список выполненных заказов.

19. Разработать программу формирования ведомости об успеваемости студентов. Каждая запись этой ведомости должна содержать: номер группы, Ф.И.О. студента, оценки за последнюю сессию (4 дисциплины) средний балл. Вывести списки по группам. Подсчитать средний балл по университету.

20. В исполкоме формируется список учета нуждающихся в улучшении жилищных условий. Каждая запись этого списка содержит: порядковый номер, Ф.И.О., величину жилплощади на одного члена семьи и дату постановки на очередь. Вывести список очередников, ставших на очередь раньше всех остальных (в самом первом году) по возрастанию величины жилплощади на каждого члена семьи.

21. Имеется список женихов и список невест. Каждая запись списка содержит пол, имя, возраст, рост, вес, а также требования к партнеру: наименьший и наибольший возраст, наименьший и наибольший вес, наименьший и наибольший рост. Для первого в списке (по алфавиту имени) жениха составить список возможных невест.

22. В библиотеке имеется список книг. Каждая запись этого списка содержит: фамилии авторов, название книги, год издания. Вывести информацию о книгах, заданного автора, изданных в текущем году в алфавитном порядке наименований.

23. В магазине имеется список поступивших в продажу автомобилей. Каждая запись этого списка содержит: марку автомобиля, стоимость, расход топлива на 100 км, надежность (число лет безотказной работы), комфортность (отличная, хорошая, удовлетворительная). Вывести перечень автомобилей, удовлетворяющих требованиям покупателя, которые вводятся с клавиатуры в виде некоторого интервала допустимых значений.

24. Каждая запись списка вакантных рабочих мест содержит: наименование организации, расстояние (в км. от центра города), должность, квалификацию (разряд или образование), стаж работы по специальности, заработную плату, наличие социального страхования (да/нет), продолжительность ежегодного оплачиваемого отпуска. Вынести список рабочих мест в соответствии с требованиями клиента.

25. Для определения потребности в горючем техническая служба запрашивает расписание полетов. Каждая запись расписания содержит следующую информацию: Дату вылета, номер рейса, пункт назначения, дальность полета, расход горючего на 1 000 км пути. Вывести суммарное количество горючего, необходимое дли обеспечения полетов на следующие сутки.

26. Для участия в конкурсе на замещение вакантной должности сотрудника фирмы желающие подают следующую информацию: Ф.И.О., год рождения, образование (среднее, специальное, высшее), знание иностранных языков (английский, немецкий, французский), владение компьютером (MSDOS, Windows), стаж работы, наличие рекомендаций. Вывести список претендентов в соответствии с требованиями руководства фирмы.

27. При постановке на учет в ГАИ автолюбители указывают следующие данные: марка автомобиля, год выпуска, номер двигателя, номер кузова, цвет, номерной знак, Ф.И.О и адрес владельца. Вывести список автомобилей, проходящих техосмотр в текущем году, сгруппированных по маркам автомобилей. Учесть, что если текущий год четный, техосмотр проходят автомобили с четными номерами двигателей, иначе с нечетными номерами.

28. Для участия в конкурсе исполнителей необходимо заполнить следующую анкету: Ф.И.О., год рождения, название страны, класс музыкального инструмента (гитара, фортепиано, скрипка, виолончель). Вывести список самых молодых лауреатов конкурса по классам инструментов в порядке занятых мест.

29. Список группы студентов содержит следующую информацию: Ф.И.О., рост и вес. Вывести Ф.И.О. студентов, рост и вес которых совпадает с наименьшим.

30. Список группы студентов содержит следующую информацию: Ф.И.О., рост и вес. Вывести Ф.И.О. студентов в алфавитном порядке фамилий, рост и вес которых превышает заданные величины.



Поделиться:


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

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