Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шаблон курсовой ММ.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
226.82 Кб
Скачать

2.3 Разработка пользовательского интерфейса

В программе используется текстовый интерфейс.

Программы выводит сообщения:

- 'kol-vo stolbcov= ' когда надо вводить количество столбцов таблицы;

- 'kol-vo strok= ' когда надо вводить количество строк таблицы;

- 'E ' когда надо вводить стремление целевой функции;

- 'B  max or E  min' когда стремление задано неверно;

- 'c[1] = ' когда надо вводить коэффициенты целевой функции;

- 'b[1] = ' когда надо вводить свободные члены;

- 'a[11] = ' когда надо вводить элементы таблицы;

- 'ne opornoe' когда решение не является опорным;

- 'opornoe' когда решение является опорным.

Исходные данные вводятся с клавиатуры по одному значению на каждый вопрос, в конце надо нажимать Enter.

ИЛИ

Основу графического интерфейса составляет форма, на которой размещаются визуальные компоненты. Компоненты выбираются из набора, имеющегося в библиотеках Delphi на странице Standard.

При создании формы использовались следующие визуальные компо­ненты:

- надпись «Метод северо-западного угла»;

- кнопка с надписью «Расчет»;

- таблица для ввода – вывода размером 8*8 без заголовка.

ОПИСАТЬ ИНТЕРФЕЙС СВОЕЙ ЗАДАЧИ

2.4 Описание программы по листингу

В программе используются две процедуры:

- procedure FormCreate(Sender: TObject) – процедура заполнения формы;

- procedure Button4Click(Sender: TObject) – процедура выполнения вычислений, вызывается щелчком по кнопке «Расчет».

Рассмотрим операторы, используемые в программе. Вначале выполняется заполнение исходной таблицы:

m:=8 – задание количества поставщиков;

n:=8 – задание количества потребителей.

Задание размеров таблицы:

- StringGrid1.ColCount:=n+2; - задание количества столбцов;

- StringGrid1.RowCount:=m+2; - задание количества строк.

Заполнение шапки таблицы:

StringGrid1.Cols[n+1].Strings[0]:='Запасы';

StringGrid1.Cols[0].Strings[m+1]:='Потребности';

StringGrid1.Cols[0].Strings[0]:='Поставщики';

В цикле записываем номера поставщиков А1 до А8:

for i:=1 to m do

StringGrid1.Cols[0].Strings[i]:='A'+IntToStr(i);

В цикле записываем номера потребителей B1 до B8:

for j:=1 to n do

StringGrid1.Cols[j].Strings[0]:='B'+IntToStr(j);

Для перевода целого значения счетчика цикла в строковое используем метод IntToStr.

Введенные исходные данные выбираем из полей формы и записываем в массивы. Массив а[8] используется для хранения количества запасов груза:

for i:=1 to m do

a[i]:=StrToInt(StringGrid1.Cols[n+1].Strings[i]);

Массив b[8] используется для хранения количества потребностей груза:

for j:=1 to n do

b[j]:=StrToInt(StringGrid1.Cols[j].Strings[m+1]);

ОПИСАТЬ СВОЙ ЛИСТИНГ

ЗАКОНЧИТЬ ПРЕДЛОЖЕНИЕМ:

Листинг программы приводится в приложении Б.

2.5 Тестирование и отладка программы

Выполняем тестирование программы. Запускаем программу и вводим данные контрольного примера.

Вводим количество столбцов:

kol-vo stolbcov= 3

Вводим количество строк:

kol-vo strok= 4

Вводим стремление целевой функции:

E --> max

Вводим коэффициенты целевой функции – это элементы первой строки таблицы:

c[0] = 7

c[1] = -2

c[2] = 5

c[3] = 0

После ввода всех данных программа выполняет расчет, и на экран выводится результат: ………..

ИЛИ

После создания формы, размещения в ней компонентов и создания обработчиков событий запускаем программу командой Run из меню. Для тестирования программы введем данные контрольного примера, который решен ранее.

Имеется восемь поставщиков груза и восемь потребителей. Груз считается однородным. Запасы груза составляют: ………

Вводим данные в таблицу (рисунок 2.4).

Рисунок 2.4 – Ввод исходных данных

Нажимаем кнопку «Расчет». В форму выводится опорный план перевозок, как показано на рисунке 2.5.

Рисунок 2.5 – Вывод результата

ЗАКОНЧИТЬ ПУНКТ ПРЕДЛОЖЕНИЯМИ:

Тестирование показало, что результаты решения задачи на компьютере совпали с решением контрольного примера. Программа работает в соответствии с заданием.