Автор работы: Пользователь скрыл имя, 28 Мая 2012 в 01:46, курсовая работа
Delphi — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal — динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией — данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекци
ВВЕДЕНИЕ 4
1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 6
1.1 Обзор программных средств 6
1.2 Постановка задачи 8
1.3 Алгоритм решения задачи 8
1.4 Блок-схема алгоритма решения задачи 9
2 ПРАКТИЧЕСКАЯ ЧАСТЬ 11
2.1 Решение поставленной задачи в Delphi 11
2.2 Описание интерфейса среды Delphi 11
2.3 Перечень используемых в программе идентификаторов 13
2.4 Тексты основных модулей и вид форм приложения 14
2.5 Графическое представление результатов 18
2.6 Анализ полученных результатов 19
ЗАКЛЮЧЕНИЕ 20
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 21
На компоненте 5 расположены компоненты 6, 7, 8, 9. В компонент 6 мы вписываем количество полок, а в компонент 7 количество ячеек на полке.
С помощью компонента 12 мы указываем количество деталей.
Компонент 13 позволяет выводить результат нашей работы на печать.
На компонент 10 выводится расположение деталей на стеллаже так, чтобы он сохранил устойчивое положение: на нижней полке находились самые тяжелые детали, выше – детали меньшего веса и т.д.
Перечень используемых в программе идентификаторов представим в виде таблицы 2.3.
Таблица 2.3 - Таблица использованных в программе идентификаторов
переменная |
тип |
назначение |
i |
integer |
порядковый номер товара |
kolich |
integer |
количество контейнеров |
ves |
real |
вес контейнеров |
imax |
integer |
количество наименований товаров максимальное |
j |
integer |
порядковый номер товара |
m |
integer |
порядковый номер полки с наибольшим весом |
polki |
integer |
количество полок |
yacheiki |
integer |
количество ячеек |
p_temp |
integer |
порядковый номер полки |
ya_temp |
integer |
порядковый номер ячейки |
tvr |
bool |
логическая переменная, которая может принимать 2 значения (true или false) |
Программа реализуется в графического приложения с одной формой следующего вида (рисунок 2.3-рисунок 2.5).
Рисунок 2.3 – Форма программы (редактор)
Рисунок 2.4 – Форма программы (до выполнения)
Рисунок 2.4 – Форма программы (после выполнения)
Основные модули программы:
procedure TForm1.Button1Click(Sender: TObject);
type Ttovar = record
name:string[15];
kolich:integer;
ves:real; end;
var all:array[1..50] of Ttovar;
temp: Ttovar;
imax,i, j, m :integer;
polki, yacheiki, p_temp, ya_temp:integer;
tvr:bool;
begin
Memo1.Clear;
imax:=SpinEdit1.Value;
for i:=1 to imax do begin
all[i].name:=StringGrid1.
all[i].kolich:=strtoint(
all[i].ves:=strtofloat(
end;
for i:=1 to imax do begin
m:=i;
for j:=i+1 to imax do
if all[j].ves>all[m].ves then m:=j;
temp:=all[m]; all[m]:=all[i]; all[i]:=temp;
end;
polki:=strtoint(Edit1.Text);
yacheiki:=strtoint(Edit2.Text)
p_temp:=1;
m:=1;
ya_temp:=all[m].kolich;
tvr:=true;
for i:=1 to polki do begin
memo1.Lines.Add(' ');
memo1.Lines.Add('---на '+inttostr(i)+'-ю полку ----');
for j:=1 to yacheiki do begin
if tvr then begin
memo1.Lines.Add(inttostr(j)+')
ya_temp:=ya_temp-1;
else memo1.Lines.Add(inttostr(j)+')
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var NameSaveParFile:string;
begin
if SaveDialog1.Execute then
NameSaveParFile:= SaveDialog1.FileName;
Memo1.Lines.SaveToFile(
end;