Содержание
Задание к курсовому проекту2
Введение4
1. Построение сетевого графика6
2. Анализ сетевого графика14
Полные пути14
3. Оптимизация сетевого графика16
Заключение27
Список использованной литературы28
Выдержка из текста работы
Главной целью является: Определить оптимальное время выпуска продукции. Усвоение методов сокращения сроков выпуска продукции путем оптимальной расстановки имеющихся трудовых ресурсов. А так же закрепление практических навыков работы с ЭВМ.
Содержание
Реферат
Ведение
1. Технические характеристики
1.1. Постановка задачи
1.1.1. Сущность задачи
Реферат
Ключевые слова в курсовой работе:
оптимизация, работа, событие, ресурс, время, критический путь.
ВВЕДЕНИЕ
1. Технические характеристики
1.1. Постановка задачи
1.1.1. Сущность задачи
Важнейшие способы сокращения времени затрачиваемого на выполнения комплексов работ заключаются в следующем:
1) Прежде всего производится пересмотр топологии сети, т.е. изменения состава последовательности выполнения или взаимосвязи между работами. Такой пересмотр топологии сети возможен в том случае, когда для одних и тех же работ могут быть применены различные способы их выполнения или может быть изменена последовательность выполнения работ, в частности заменена последовательность параллельностью при выполнении отдельных работ.
В определенных случаях может обнаруживаться нецелесообразное использование ресурсов на многочисленных параллельных работах. Если параллельные работы выполняются рабочими одной специальности и квалификации при использовании определенных типов машин и механизмов, то целесообразно сделать так, чтобы те из работ, которые не лежат на критическом пути (и, следовательно, имеют резервы времени), выполнялись бы последовательно. Тогда часть ресурсов можно использовать для ускорения критических работ.
Используется также возможность более детального членения работ с тем, чтобы ускорить начало каких-либо критических работ.
2) Другим способом сокращения критического пути является переход от нормальных продолжительностей работ, находящихся на критическом пути, к минимально возможным, в первую очередь за счет перемещения ресурсов с работ, находящихся на некритических путях.
Перемещение ресурсов с некритических работ на критические должно, разумеется, производиться в разумных пределах, с тем, чтобы некритические работы сами не стали критическими.
3) В отдельных случаях для ускорения выполнения критических работ могут привлекаться дополнительные ресурсы со стороны.
Проведя тем или иным способом сокращение продолжительности работ на критическом пути, снова выполняют обработку сетевого графика, чтобы выявить достаточность принятых мер, а также узнать, не появились ли новые критические пути. Если новый вариант сети также не обеспечивает соблюдения директивных сроков выполнения всего комплекса работ, то вся процедура повторяется снова до тех пор, пока не будет получен удовлетворительный результат. Для сокращения количества пересчетов сетевого графика и его показателей проводят мероприятия по одновременному сокращению работ не только на критическом, но и на околокритических (т.е. близких к критическому) путях. Многократные пересчеты сетевого графика не являются обременительными и не занимают много времени и затрат труда специалистов, если все эти изменения осуществляются по специально разработанной документации и если все операции по перерасчету сетевого графика проводятся на ПЭВМ.
В отдельных случаях, особенно при жестких ограничениях в ресурсах, окончательным результатом расчетов по оптимизации сетевого графика может явиться обоснованное доказательство невозможности уложиться в заданный срок без устранения этих ограничений или пересмотра заданных технико-экономических характеристик. Это положение рассматривается соответствующими инстанциями, имеющими право решать указанные вопросы.
После того как определена продолжительность всего комплекса работ, осуществляется привязка всей сети к календарной шкале времени. В результате создается директивный документ — план-график проведения работ. В нем указываются даты начала и окончания каждой работы, а также величины резервов времени.
Директивный план-график рассылается ответственным исполнителям, после чего начинается выполнение комплекса работ в соответствии с разработанным графиком.
При этом нередко возникает необходимость, прежде чем приступить к работам, проверить распределение ресурсов по календарным срокам выполнения работ. Дело в том, что, определяя продолжительность выполнения той или иной работы, включенной в сетевой график, мы исходили из фиксированного количества ресурсов, выделенного для ее выполнения. Правда, в момент составления сетевого графика еще не бывают известны точные календарные сроки выполнения работ. Это выясняется лишь позже, после расчета основных временных показателей сетевого графика. Выделяя для каждой работы определенное количество ресурсов, мы могли предполагать их достаточность, исходя из наших возможностей. При этом не всегда учитываются совпадения сроков выполнения работ, при проведении которых используются одни и те же ресурсы. В результате может оказаться, что на ту или иную календарную дату потребуется ресурсов больше, нежели мы располагаем. Вот это и требуется проверить, прежде чем приступать к выполнению планируемого комплекса работ. Поэтому необходимо быть уверенным, что ограниченные, как правило, ресурсы позволят выполнить намечаемые работы.
Продолжительность всего комплекса работ равна продолжительности критического пути. Анализ сетевого графика позволяет выделить те работы от которого она действительно зависит. Их число как правило, не велико по сравнению с общим количеством работ.
При обычных методах планирования комплекса работ для сокращения общего срока разработки не редко стремятся уменьшить продолжительность всех или большинства работ. Такой подход как правило, надает соответствующего эффекта, так как требует дополнительных затрат и незначительно сокращает продолжительность выполнения всего комплекса работ.
Важнейшим способом сокращения критического пути является использование определенной части ресурсов, для ускорения критических работ.
1.1.2. Математическая модель задачи
Для того чтобы выполнить оптимизацию сетевого графика, необходимо рассчитать и определить:
1. Необходимое число ресурсов для каждой работы:
2. Продолжительности работ:
1.2. Описание логической структуры
Блок-схема системы приведена на листе формата А1.
Блок 1 -начало работы;
Блок 2 — выбор из пунктов меню;
Блок 3 — выбор пункта меню файл;
Блок 4 — выбор подпункта меню “Открыть файл”;
Блок 5 — загрузка файла;
Блок 6 — выбор подпункта меню «сохранить файл»;
Блок 7 — сохранение файла
Блок 8 — выбор подпункта меню «Выход»;
Блок 9 — запрос на окончание работы;
Блок 10 — завершение работы программы;
Блок 11 — выбор меню «действие»;
Блок 12 — выбор подпункта меню «Оптимизация»;
Блок 13 -происходит оптимизация;
Блок 14 — выбор подпункта меню «прибавить строку»;
Блок 15 -прибавление строки;
Блок 16 — выбор подпункта меню «удалить строку»
Блок 17 -удаление строки;
Блок 18 — выбор пункта подменю “Очистить все”;
Блок 19 — очистка содержимого таблицы;
Блок 20 — выбор пункта меню “Помощь”;
Блок 21 — выбор из пунктов подменю;
Блок 22 — выбор подпункта меню “О задаче”
Блок 23 — открытие новой формы и вывод её на экран;
Блок 24 — выбор подпункта меню “О разработчике”
Блок 25 — открытие новой формы и вывод её на экран;
Блок 26 — выбор пункта подменю “Help”
Блок 27 — открытие новой формы и вывод её на экран;
Листинг программы приведен в Приложении “А”
1.3. Описание и организация входных данных
1.3.1. Описание входной и выходной информации
Данная задача использует внутреннюю входную информацию в виде полей и переменных описание которых приведено ниже:
Название поля |
Идентификатор |
Тип |
|
Начальное событие |
I |
Целый |
|
Конечное событие |
J |
Целый |
|
Объем работ |
Объем работ |
Целый |
|
Число ресурсов |
Число ресурсов |
Целый |
|
Производительность |
Производительность |
Целый |
|
Общее число ресурсов |
Общее число ресурсов |
Целый |
Начальное событие, Конечное событие, Объем работ, Число ресурсов и Производительность берутся из карточки задания, а Общее число ресурсов вычисляется автоматически как сумма по столбцу, Число ресурсов и выводятся в не редактируемое поле ввода.
Выходная информация также полностью отображается на главной форме в таблице и в не редактируемых полях ввода и содержит:
Наименование реквизита |
Идентификатор |
Тип |
|
Необходимо ресурсов |
Необход. ресурсов |
вещественный |
|
Продолжительность |
Продолжительность |
вещественный |
|
События |
События |
целый |
|
Резерв времени |
Рез. времени |
вещественный |
|
Продолжительность критического пути |
Продолжительность критического пути |
вещественный |
|
Всего необходимо ресурсов |
Общее число ресурсов |
вещественный |
Необходимо ресурсов, Продолжительность, События, Ранний срок, Поздний срок, Резерв времени выводятся в таблицу, Продолжительность критического пути, Всего необходимо ресурсов выводятся в не редактируемые поля ввода.
1.3.2. Организация ведения информационной базы
Организация ведения информационной базы осуществляется за счет наличия таких функций как ввод и сохранение исходных данных. В эту информационную базу данных входят такие элементы программы как промежуточные массивы, адреса памяти где хранятся результаты вычислений и т. д.
Промежуточные массивы создаются на время выполнения программы, в них производятся промежуточные вычисления, результаты которых потом заносятся в таблицу.
Входная информация. Карточка задания и представляет собой пример задачи которую необходимо решить с использованием компьютера, оттуда также берутся исходные данные которые используются в тех самых промежуточных массивах и решениях, используются как входная информация для программы которая в свою очередь использует ее для решения задачи.
Также имеется так называемая условно-постоянная информация(эта информация может быть изменена по желанию пользователя), которая представляет собой файл с исходными данными например той же самой карточки с задачей то есть это говорит о том что в программе предусмотрена такая функция как сохранение исходных данных и их загрузка.
А также имеется постоянная информация — это помощь, которая в процессе работы программы никак не меняется.
1.4. Описание программных средств
1.4.1. Описание среды программирования
Среда Delphi — это сложный механизм, обеспечивающий высокоэффективную работу программиста. В основе нее лежит язык Object Pascal, разработанный профессором Высшего технического училища (г. Цюрих, Швейцария) Никлаусом Виртом. Предложенный им алгоритмический язык он назвал именем великого французского ученого Блэза Паскаля (1623-1662). В качестве стандартного Pascal был утвержден в 1979 г. Первая версия Delphi была выпущена в начале 1995 года и явилась результатом разработки, которая велась компанией Borland в течение двух с половиной лет. Программный продукт был назван именем греческого города.
В первую очередь Delphi предназначена для профессионалов-разработчиков корпоративных информационных систем. При этом она предназначен не только для программистов-профессионалов, но и для всех тех, кто используют компьютер с чисто прикладной целью, и кому необходимо быстро решить какие-то свои задачи, не привлекая для этого программистов со стороны. В Delphi удачно сочетаются средства визуального проектирования приложений и оптимизирующий компилятор. Delphi является единым полноценным средством промышленной разработки систем клиент/сервер. В состав среды входит обширная библиотека компонентов. С другой стороны, программист всегда сможет прибегнуть к низкоуровневым ассемблерным процедурам. Можно создавать приложения в визуальном режиме. Работая с Delphi, программист может с помощью нажатия одной клавиши создать выполняемый файл в формате EXE, однако, при необходимости, можно компилировать и файлы DLL, драйверов устройств, а также консольных приложений.
Синтаксис Delphi включает буквы, цифры, шестнадцатеричные цифры, специальные символы, пробелы и зарезервированные слова.
Буквы — это буквы латинского алфавита от a до z и от A до Z, а также знак подчеркивания «_». В языке нет различия между заглавными и строчными буквами алфавита, если только они не входят в символьные и строковые выражения. Цифры — арабские цифры от 0 до 9. Каждая шестнадцатеричная цифра имеет значение от 0 до 15. Первые 10 значений обозначаются арабскими цифрами 0…9, остальные шесть — латинскими буквами A…F или a…f. Специальные символы Delphi — это символы + — * / > < = <> >= <= : ; ‘ () [] {} и др.
Особое место в алфавите языка занимают пробелы, к которым относятся любые символы в диапазоне кодов от 0 до 32. Эти символы рассматриваются как ограничители идентификаторов, констант, чисел, зарезервированных слов. Несколько следующих друг за другом пробелов считаются одним пробелом.
Тип данных определяет значения, которые может иметь переменная, и операции, выполняемые над этой переменной. Существует несколько предопределенных типов данных, которые можно разделить на 3 группы: перечисляемые, вещественные типы и строки. Три наиболее важных предопределенных перечисляемых типа — Integer (целочисленные), Boolean (логический) и Char (символьный). Полный список перечисляемых типов: Integer, Cardinal, ShortInt, SmallInt, LongInt, Byte, Word, Boolean, ByteBool, WordBool, LongBool, Char, ANSIChar, WideChar. Вещественные типы представляют собой разнообразные форматы чисел с плавающей запятой, меньше всего памяти требуется для хранения чисел типа Single, затем Real, Double и Extended, кроме них есть еще два необычных типа данных Comp — описывает очень длинные целые числа и Currency (доступен только в Delphi) — имеет 4 десятичных знака после запятой.
В Delphi определенны следующие операции: арифметические операции, логические операции, операции со строками, операции над множествами, операции отношения и операция @ (операция получения адреса). Логические операции применимы к операндам целого и логического типов, но не выделены в отдельную группу. Приоритетность операций достаточно проста. Основной упор объектно-ориентированной модели программных компонент в Delphi делается на максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в Delphi написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми Borland или третьими фирмами, и объектами, которые вы можете создать. Исключения представлены в виде объектов, содержащих специфическую информацию о соответствующей ошибке (тип и местонахождение ошибки). Разработчик может оставить обработку ошибки, существовавшую по умолчанию, или написать свой собственный обработчик. Обработка исключений реализована в виде exception-handling blocks (также еще называется protected blocks), которые устанавливаются ключевыми словами try и end. Существуют два типа таких блоков: try…except и try…finally.
Процедуры и функции позволяют разделить логику программы на более мелкие и управляемые фрагменты и аналогичны подпрограммам в других языках. Как и в основном блоке программы, все действия в процедурах и функциях заключаются в begin и end. Каждый из этих сегментов кода выполняет конкретную задачу. Если в содержащемся в процедуре операторе внутри модуля процедуры используется идентификатор процедуры, то процедура будет выполняться рекурсивно (будет при выполнении обращаться сама к себе). В Delphi существуют разница между функциями и процедурами. Стандартными процедурами являются Exit и ShowMessage, стандартными функциями являются StrToInt, FloatToStr, Random, математические функции и д.р.
Ввод/вывод связан с обменом информацией между оператором памяти и вешнеми носителями информации. Для ввода и вывода данных в языке предусмотрены стандартные встроенные программы, которые называются процедурами. Процедура ввода вызывается с помощью оператора ввода Read , процедура вывода — с помощью оператора вывода Write .
Оператор ввода служит для ввода данных в процессе выполнения программы. Значение вводимых данных получают переменные. Данные могут быть разбиты на отдельные строки. Различают два вида операторов ввода: Read, Readln. Допускается целые, действительные и символьные данные. Логические данные вводить не разрешается. Для правильного ввода символьных данных рекомендуется перед каждым оператором ввода символьных данных ставить оператор перехода на новую строку Readln , чтобы их ввод всегда осуществлялся с новой строки.
Оператор вывода имеет две формы записи: Write, Writeln. Допускается вывод данных с форматами и без них. Файловая переменная в Delphi — это любая переменная файлового типа. В Delphi имеются три класса файлов: типизированный файл, текстовый файл и нетипизированный файл. Работа с файлами осуществляется просто, присутствует возможность произвольного доступа к данным. В Delphi имеется возможность стыковки с другими программными средствами. Например, в ней можно использовать DLL (динамически компонуемые библиотеки), написанные на других языках программирования. Кроме того, программы, написанные на других языках, могут использовать DLL, написанные на Borland Delphi. DLL, таким образом, идеально подходит для использования в программных проектах, реализуемых на нескольких языках.
На Delphi имеется стандарт. В состав документации среды программирования входят: руководство пользователя; руководство по написанию компонент; документация по построению приложений, работающих с базами данных; руководство по генератору отчетов ReportSmith; руководство по SQL Links. В состав Delphi входит 5 интерактивных обучающих систем, документация в электронном виде и около 10 Мб справочной информации, а также множество дополнительных программ.
С помощью среды программирования
1.4.2. Описание программы
1.5. Описание технических средств
1.5.1. Описание и обоснование минимальной
конфигурации технических средств
Заключение
Литература
1. Экономико-математические методы в снабжении. -М.: «Экономика», 1971.
2. И. М. Разумов. Сетевые графики в планировании. -М.: 1981.
3. Бобровский С. Delphi 5: учебный курс. -СПб.: Издательство “Питер”, 2000.
Дата выдачи __________
Приложение A
Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, Grids, Buttons, ExtCtrls, Errors, OleCtnrs;
type
TGeneral = class(TForm)
MainMenu1: TMainMenu;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
N1: TMenuItem;
SpeedButton1: TSpeedButton;
GJvjo1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
SpeedButton2: TSpeedButton;
Sg1: TStringGrid;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
SpeedButton6: TSpeedButton;
N6: TMenuItem;
PopupMenu1: TPopupMenu;
N7: TMenuItem;
Sg4: TStringGrid;
Edit1: TEdit;
Edit4: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
CheckBox1: TCheckBox;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
Panel1: TPanel;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
N12: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N7Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure N12Click(Sender: TObject);
private
{ Private declarations }
public
l:integer;
Count,Sum:integer;
buf1:array[1..100] of real;
buf2:array[0..30] of real;
err:integer;
{ Public declarations }
end;
Proizvod : String;//Производительность
Str : String;//колличество строк
Rab_I : String;//Работы
Rab_J : String;//Работы
OB_Rabot : String; //Обьем работ изделий
KolRes : String; //Колличество рабочих
Prodolgit : String; //Продолжительность
Err,i,j : Integer;
General : TGeneral;
F : Textfile;
implementation
uses Unit2, Unit3, Unit4;
{$R *.DFM}
procedure TGeneral.FormCreate(Sender: TObject);
begin
//General.WindowState:=WsMaximized;
General.Position:=poDesktopCenter;
General.Caption:=’Оптимезация сетевого графика по времени.’;
GroupBox1.Caption:=»;
GroupBox2.Caption:=»;
SG1.cells[0,0]:=’I’;
SG1.cells[1,0]:=’J’;
SG1.cells[2,0]:=’Объем работ’;
SG1.cells[3,0]:=’Необход. ресурсов’;
SG1.cells[4,0]:=’Число ресурсов’;
SG1.cells[5,0]:=’Продолжительность’;
SG1.cells[6,0]:=’События’;
SG1.cells[7,0]:=’Рез. времени’;
SG1.RowCount:=2;
end;
procedure TGeneral.N3Click(Sender: TObject);
begin
Close;
end;
procedure TGeneral.SpeedButton1Click(Sender: TObject);
i,j:Integer;
Sum,Sum2,a: Real;
begin
Panel1.Visible:=true;
label1.Visible:=true;
label2.Visible:=true;
label4.Visible:=true;
label5.Visible:=true;
label7.Visible:=true;
Sg4.Visible:=true;
edit2.Visible:=true;
edit3.Visible:=true;
edit4.Visible:=true;
//edit5.Visible:=true;
{Выясним необходимое число ресурсов}
for i:=1 to sg1.RowCount-1 do
Begin
a:=StrToInt(sg1.Cells[2,i])/StrToInt(edit1.text);
sg1.Cells[3,i]:=FloatToStr(a);
{Выясним необходимое число ресурсов}
Sum2:=Sum2+StrToFloat(sg1.Cells[4,i]);
Edit3.Text:=FloatToStr(Sum2);
{Всего необходимых ресурсов}
Sum:=Sum+StrToFloat(sg1.Cells[3,i]);
Edit2.Text:=FloatToStr(Sum);
end;
{Продолжительность работ}
for i:=1 to sg1.RowCount-1 do
Begin
a:=StrToFloat(sg1.Cells[3,i])/StrToFloat(sg1.Cells[4,i]);
sg1.Cells[5,i]:=FloatToStr(a);
end;
end;
procedure TGeneral.SpeedButton4Click(Sender: TObject);
begin
close;
end;
procedure TGeneral.SpeedButton3Click(Sender: TObject);
begin
For I:=0 to 2 do
For j:=1 to Sg1.RowCount-1 do
Begin
if Sg1.Cells[i,j]= » then err:=err+1;
end;
For j:=1 to Sg1.RowCount-1 do
if Sg1.Cells[4,j]= » then err:=err+1;
if err <>0 then
begin
MessageDlg(‘Ошибка’+#13+’Таблица заполнена не полностью.’+#13+’Сохранение не произведено!’
, mtError,[mbOk], 0);
err:=0;
else
Begin
Proizvod:=edit1.text;
Str:=IntToStr(sg1.RowCount);
For i:=1 to Sg1.RowCount-1 do
Begin
Rab_I :=(Sg1.Cells[0,i]);
Rab_J :=(Sg1.Cells[1,i]);
OB_Rabot:=(Sg1.Cells[2,i]);
write(f,Rab_I);
write(f,Rab_J);
write(f,OB_Rabot);
End;
For I:=1 to Sg1.RowCount-1 do
KolRes:=(Sg1.Cells[4,i])
end;
CloseFile(f);
end;
procedure TGeneral.SpeedButton2Click(Sender: TObject);
begin
General.N7.Click;
if OpenDialog1.Execute then
{$I-}
AssignFile(F,OpenDialog1.FileName); Reset(F);
Proizvod:=edit1.text;
Str:=IntToStr(sg1.RowCount);
For i:=1 to Sg1.RowCount-1 do
Begin
Rab_I :=(Sg1.Cells[0,i]);
Rab_J :=(Sg1.Cells[1,i]);
OB_Rabot:=(Sg1.Cells[2,i]);
write(f,Rab_I);
write(f,Rab_J);
write(f,OB_Rabot);
End;
For I:=1 to Sg1.RowCount-1 do
KolRes:=(Sg1.Cells[4,i])
{$I+}
CloseFile(f);
end;
procedure TGeneral.N5Click(Sender: TObject);
begin
if OpenDialog1.Execute then
end;
procedure TGeneral.SpeedButton6Click(Sender: TObject);
begin
Edit1.Text:=’5′;
sg1.RowCount:=12;
sg1.Cells[0,1]:=INttoStr(0);
sg1.Cells[1,1]:=INttoStr(1);
sg1.Cells[2,1]:=INttoStr(25);
sg1.Cells[4,1]:=INttoStr(5);
sg1.Cells[0,2]:=INttoStr(0);
sg1.Cells[1,2]:=INttoStr(2);
sg1.Cells[2,2]:=INttoStr(30);
sg1.Cells[4,2]:=INttoStr(6);
sg1.Cells[0,3]:=INttoStr(0);
sg1.Cells[1,3]:=INttoStr(3);
sg1.Cells[2,3]:=INttoStr(20);
sg1.Cells[4,3]:=INttoStr(4);
sg1.Cells[0,4]:=INttoStr(1);
sg1.Cells[1,4]:=INttoStr(4);
sg1.Cells[2,4]:=INttoStr(22);
sg1.Cells[4,4]:=INttoStr(5);
sg1.Cells[0,5]:=INttoStr(2);
sg1.Cells[1,5]:=INttoStr(3);
sg1.Cells[2,5]:=INttoStr(10);
sg1.Cells[4,5]:=INttoStr(4);
sg1.Cells[0,6]:=INttoStr(2);
sg1.Cells[1,6]:=INttoStr(4);
sg1.Cells[2,6]:=INttoStr(15);
sg1.Cells[4,6]:=INttoStr(3);
sg1.Cells[0,7]:=INttoStr(2);
sg1.Cells[1,7]:=INttoStr(5);
sg1.Cells[2,7]:=INttoStr(5);
sg1.Cells[4,7]:=INttoStr(4);
sg1.Cells[0,8]:=INttoStr(3);
sg1.Cells[1,8]:=INttoStr(6);
sg1.Cells[2,8]:=INttoStr(25);
sg1.Cells[4,8]:=INttoStr(5);
sg1.Cells[0,9]:=INttoStr(4);
sg1.Cells[1,9]:=INttoStr(6);
sg1.Cells[2,9]:=INttoStr(20);
sg1.Cells[4,9]:=INttoStr(4);
sg1.Cells[0,10]:=INttoStr(5);
sg1.Cells[1,10]:=INttoStr(6);
sg1.Cells[2,10]:=INttoStr(5);
sg1.Cells[4,10]:=INttoStr(4);
sg1.Cells[0,11]:=INttoStr(6);
sg1.Cells[1,11]:=INttoStr(7);
sg1.Cells[2,11]:=INttoStr(30);
sg1.Cells[4,11]:=INttoStr(6);
end;
procedure TGeneral.SpeedButton5Click(Sender: TObject);
begin
form2.show;
end;
procedure TGeneral.N6Click(Sender: TObject);
begin
form2.show;
end;
procedure TGeneral.FormClose(Sender: TObject; var Action: TCloseAction);
begin
case Application.MessageBox(‘Вы уверены, что хотите выйти?’,’Выход’,mb_yesno or mb_iconquestion or mb_defbutton2) of
idyes:action:=caFree;
idno:action:=caNone;
end;
end;
procedure TGeneral.N7Click(Sender: TObject);
var q,w:byte;
i:integer;
begin
for q:=0 to SG1.ColCount do
for w:=1 to SG1.RowCount do
SG1.Cells[q,w]:=»;
SG1.RowCount:=2;
Edit1.Text:=»;
Edit2.Text:=»;
Edit3.Text:=»;
Edit4.Text:=»;
//Edit5.Text:=»;
end;
procedure TGeneral.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case key of
‘0’.. ‘9’, chr (8):;
‘,’:;
else key:=#0;
end;
end;
procedure TGeneral.N12Click(Sender: TObject);
begin
Sg1.RowCount:=Sg1.RowCount+1;
If Sg1.RowCount>30 then
MessageDlg(‘Ошибка’+#13+’строк не может быть больше 30 !!!’, mtError,[mbOk], 0);
Sg1.RowCount:=30;
end;
end.