Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа ТПР.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
613 Кб
Скачать
☆

Выполнение третьего шага

Управление U3

Состояние предыдущего второго этапа

D2,1

D2,2

…

D2,j

D2,z(2)

U3 = d3,1

…

…

U3 = d3,i

…

…

U3 = d3,N(3)

…

…

…

…

…

…

    1. Проектирование сценария диалога

При создании сценария диалога необходимо учитывать следующие возможности:

  • Ввод данных, их корректировку;

  • Задание условий

  • Просмотр исходных данных;

  • Вывод результата и ход решения задачи.

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

При первом запуске приложения перед пользователем появится стартовое окно программы «Оптимизация формирования численности бригад», на которой представлена вся информация, касающаяся этой темы. На рисунке 2.1 представлено это действие.

Рисунок 2.1 – Стартовое окно программы

Перед пользователем появляется выбор. Он может задать таблицу времени выполнения работы по умолчанию, при выборе пункта «Пример задачи», в следствии чего таблица заполнился автоматически Либо задать таблицу самостоятельно. Для этого ему необходимо выбрать из контекстного меню количество необходимого ему элементов задачи: количество складов, грузчиков, вариантов распределения грузчиков. После необходимо сохранить изменения таблицы и приступить к заполнению таблицы. Примеры этих действий представлены на рисунке 2.2.

Рисунок 2.2 – Реализация самостоятельного заполнения таблицы

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

Рисунок 2.3 – Результат решения программы

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

    1. Описание структур данных

В таблице 1 представлены функции, процедуры используемые в программе.

Таблица 2.1

numM

Задает количество складов

numN

Задает количество грузчиков

numStr

Задает количество вариантов распределения грузчиков

buttonRazmer

Сохраняет введенные изменения таблицы времени выполнения работ

buttonDemo

Задает таблицу по умолчанию

buttonResh

Производит решение

buttonSteps

Демонстрирует пошаговое решение задачи

В таблице 2 представлены структуры и классы, используемые в программе

Таблица 2.2

Form

class

Создает окно

M

int

Столбцы

Str

Int

Строки

N

Int

Количество рабочих

Text

string

Решение

Answ

String

Ответ

Int[,] a

Int

Исходная матрица

Int[,] T

Int

Матрица времени выполнения

Int[] rabs

Int

Массив с количество работников

Int[] U

Int

Массив управления

Int[] sost2, sost3,sost4, sost5, sost6

Int

Состояния

Step

Int

Шаги

Int[] difMas1, difMas1, difMas3

Int

Временные массивы для хранения уникальных состояний

Int[,] temp21 temp22, temp31, temp32, temp41, temp42, temp51, temp52, temp61, temp62

Int

Временные матрицы для определенных шагов 1,2,3,4,5,6

Int[,] tab2, tab3, tab4, tab5, , tab6;

int

Итоговые таблицы

i=0, j=0, s=0, p=N, t=0;

int

Переменные, счетчики

Print(int[,] mas)

Public string

Функция вывода двумерного массива

niz(ref int[,] temp1, int[,] a, int[,] tab)

Public string

Функция заполнения матрицы, соответствующая значениям нижней части

verh(int[,] temp1, ref int[,] temp2, int[,] a, int[] difMas, int step)

Public string

Функция заполнения матрицы, соответствующая значениям верхней части

max(int a, int b)

public int

Функция нахождения максимального элемента из двух

min(int a, int b)

public int

Функция нахождения минимального элемента из двух

countDifEl(int[,] mas, int[,] mas2, int [] U, int[,] tab, ref int[] difMas1, ref int[] difMas2, ref int[] difMas3, ref int[] sost)

public void

Функция нахождения различных значений (количеств работников) в нижней части клетки и минимальных в верхней

search(int[,] mas, int[,] mas2, int a, int b, ref int f)

public void

Функция поиска состояния (количества работников) для обратного просмотра

minTime(int step, int[,] tab, ref int[] answer, ref int t)

public string

Функция нахождения минимального времени выполнения работ

printAnswer(int[] answer)

public string

Функция вывода ответа