Меню
Поиск



рефераты скачать Нахождение критического пути табличным методом

Время позднего конца

Полный резерв

1-2

2

0

2

6

8

6

1-4

1

0

1

1

3

2

1-5

4

0

4

0

4

0

2-3

3

2

5

8

11

6

4-3

5

1

6

6

11

4

4-6

3

1

4

3

6

2

4-7

1

1

2

4

5

3

4-9

3

1

4

8

11

7

5-6

2

4

6

4

6

0

6-10

5

6

11

6

11

0

7-8

6

2

8

5

11

3

7-9

2

2

4

9

11

7


Критический путь: 1-5-6-10

Результаты вычислений вручную и на ЭВМ совпадают.

 

5.Описание интерфейса и руководство пользователя


При запуске Excel файла появляется стартовое окно, на котором располагаются 2 кнопки:

«Начать работу» при нажатии на эту кнопку вызывается окно ввода начальных данных.

«Выход» при нажатии на эту кнопку происходит закрытие программы и Excel.

В окне ввода начальных данных пользователь задает число этапов работ (число должно быть целым в диапазоне от 3 до 254)

В форме находятся 4 кнопки и флажок

·  «ОК» - формирование таблицы исходных данных и включение режима заполнения таблицы.

·  «Отмена» - закрытие формы

·  «Справка» - вызов справки о программе

·  «Пропустить» - переход к форме решения

·  «Включить подсказки» - включение поясняющих окон.

После заполнения таблицы пользователь переходит к окну решения

На котором располагаются 3 кнопки:

·                   «Определение критического пути» - расчёт критического пути и сопутствующих данных и вывод результатов на экран.

·                   «Возврат к вводу начальных данных» - открытие окна ввода начальных данных и листа ввода.

·                   «Перевод единиц времени» - открытие окна перевода единиц времени в котором нужно выбрать текущие единицы времени и нажать кнопку «ОК», затем выбрать требуемые единицы времени и нажать кнопку «ОК».

Заключение

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

Литература

 

1.                 Беляев С.П. Курс лекций по «Исследованию операций».

2.                 Кузменко В.Г, Программирование на Microsoft Visual Basic for Applications 2003  /Москва изд. Бином;  2004г. – 880 с.: ил.

Листинг программы

 

Форма About (справка о программе)

Private Sub UserForm_Terminate()

Hide

InsForm.Show

End Sub


Форма HelpForm1 (помощь в заполнении таблицы)

Private Sub CommandButton1_Click()

Hide

OKForm.StartUpPosition = 0

OKForm.Top = 450

OKForm.Left = 580

OKForm.Show

End Sub


Private Sub CommandButton2_Click()

Hide

InsForm.Show

End Sub


Private Sub UserForm_Terminate()

Hide

InsForm.Show

End Sub


Форма HelpForm2 (помощь в понимании результатов вычислений)

Private Sub CommandButton1_Click()

check = True

Hide

SolForm.StartUpPosition = 0

SolForm.Top = 350

SolForm.Left = 480

SolForm.Show

End Sub


Private Sub CommandButton2_Click()

check = False

Hide

SolForm.StartUpPosition = 0

SolForm.Top = 350

SolForm.Left = 480

SolForm.Show

End Sub

Форма HelpForm3 (помощь в переводе единиц времени)


Private Sub CommandButton1_Click()

check = True

Hide

SolForm.StartUpPosition = 0

SolForm.Top = 350

SolForm.Left = 480

SolForm.Show

End Sub


Private Sub CommandButton2_Click()

check = False

Hide

SolForm.StartUpPosition = 0

SolForm.Top = 350

SolForm.Left = 480

SolForm.Show

End Sub


Форма InsForm (ввод количества этапов работ, проверка формата листа, проверка правильности ввода, вызов справки, выход из программы, переход к расчётной форме)

'Проверка правильности ввода

Private Sub CommandButton1_Click()

Dim Answer As String

Application.ScreenUpdating = False

If iget.Value = "" Then

MsgBox "Введите количество этапов", vbCritical + vbOKOnly, "Ошибка ввода"

Exit Sub

End If

If Not (IsNumeric(iget.Value)) Then

MsgBox "Количество этапов работы должно быть числом", vbCritical + vbOKOnly, "Ошибка ввода"

Exit Sub

End If

If iget.Value < 3 Then

MsgBox "Количество этапов работы должно быть не менее 3", vbCritical + vbOKOnly, "Ошибка ввода"

Exit Sub

End If

If iget.Value > 254 Then

MsgBox "Количество этапов работы должно быть не более 222", vbCritical + vbOKOnly, "Ошибка ввода"

Exit Sub

End If

n = Fix(iget.Value)

'Проверка листа на наличие информации

For i = 1 To 254

For j = 1 To 254

If Not ActiveSheet.Cells(i, j).Value = "" Then

Answer = MsgBox("Лист содержит информацию! При продолжении она будет уничтожена! Продолжить?", vbCritical + vbOKCancel, "Предупреждение")

End If

If Answer = vbCancel Then

i = 254

j = 254

Exit Sub

End If

If Answer = vbOK Then

i = 254

j = 254

End If

Next j

Next i

'Построение таблицы ввода и переход к ней

Range("A1:IV254").Select

Selection.Clear

InsData

Application.ScreenUpdating = True

Hide

If help.Value = True Then

hlp = True

HelpForm1.Show

Else

hlp = False

OKForm.StartUpPosition = 0

OKForm.Top = 450

OKForm.Left = 580

OKForm.Show

End If

End Sub


Private Sub CommandButton2_Click()

Hide

STF.Show

End Sub


Private Sub CommandButton3_Click()

Hide

About.Show

End Sub


Public Sub Start()

iget.Value = n

End Sub


Private Sub CommandButton4_Click()

Dim flag As Boolean

Hide

SolForm.StartUpPosition = 0

SolForm.Top = 350

SolForm.Left = 480

SolForm.Show

flag = True

n = 1

If Not ActiveSheet.Cells(1, 1).Value = "№" Then

MsgBox "Лист не отформатирован для расчёта, воспользуйтесь окном ввода данных", vbCritical + vbOKOnly, "Ошибка"

Hide

InsForm.Show

Exit Sub

End If

Do While flag

n = n + 1

If ActiveSheet.Cells(n, 1).Value = "" Then

flag = False

End If

If ActiveSheet.Cells(n, 1).Value = n - 1 Then

flag = True

Else: flag = False

End If

Loop

n = n - 2

For i = 2 To n

If Not ActiveSheet.Cells(1, i).Value = i - 1 Then

MsgBox "Лист не отформатирован для расчёта, воспользуйтесь окном ввода данных", vbCritical + vbOKOnly, "Ошибка"

Hide

InsForm.Show

Exit Sub

End If

Next i

End Sub


Private Sub SpinButton1_SpinUp()

If iget.Value <= 222 Then

iget.Value = iget.Value + 1

Else

Exit Sub

End If

End Sub


Private Sub SpinButton1_SpinDown()

If iget.Value >= 4 Then

iget.Value = iget.Value - 1

Else

Exit Sub

End If

End Sub


Private Sub UserForm_Initialize()

iget.Value = 10

Sheets("Data").Select

End Sub


Private Sub UserForm_Terminate()

Hide

STF.Show

End Sub

Форма OKForm (подтверждение окончания ввода начальных данных)


Private Sub CommandButton1_Click()

SolForm.StartUpPosition = 0

SolForm.Top = 350

SolForm.Left = 480

Hide

SolForm.Show

End Sub


Private Sub UserForm_Terminate()

Hide

SolForm.StartUpPosition = 0

SolForm.Top = 350

SolForm.Left = 480

SolForm.Show

End Sub


Форма Perevod1 (запоминание текущих единиц времени)

'Запоминание текущих единиц времени

Private Sub CommandButton1_Click()

If Minutes.Value = True Then

edin = 1

End If

If Chas.Value = True Then

edin = 2

End If

If Sutki.Value = True Then

edin = 3

End If

If Nedeli.Value = True Then

edin = 4

End If

If Mes.Value = True Then

edin = 5

End If

If Godi.Value = True Then

edin = 6

End If

Hide

Perevod2.Show

End Sub


Private Sub UserForm_Terminate()

Hide

SolForm.StartUpPosition = 0

SolForm.Top = 350

SolForm.Left = 480

SolForm.Show

End Sub


Форма Perevod2 (перевод единиц времени, возврат к расчётной форме)

'Перевод единиц времени

Private Sub CommandButton1_Click()

Hide

SolForm.Show

If ActiveSheet.Cells(1, 1).Value = "№" Then

If edin = 1 Then

If Minutes.Value = True Then

Exit Sub

End If

If Chas.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 60

End If

Next j

Next i

End If

If Sutki.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 1440

End If

Next j

Next i

End If

If Nedeli.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 10080

End If

Next j

Next i

End If

If Mes.Value = True Then

MsgBox "Точный перевод невозможен. Попробуйте другой вариант", vbCritical + vbOKOnly, "Ошибка ввода"

End If

If Godi.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 525600

End If

Next j

Next i

End If

End If

If edin = 2 Then

If Minutes.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value * 60

End If

Next j

Next i

End If

If Chas.Value = True Then

Exit Sub

End If

If Sutki.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 24

End If

Next j

Next i

End If

If Nedeli.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 168

End If

Next j

Next i

End If

If Mes.Value = True Then

MsgBox "Точный перевод невозможен. Попробуйте другой вариант", vbCritical + vbOKOnly, "Ошибка ввода"

End If

If Godi.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 8760

End If

Next j

Next i

End If

End If

If edin = 3 Then

If Minutes.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value * 1440

End If

Next j

Next i

End If

If Chas.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value * 24

End If

Next j

Next i

End If

If Sutki.Value = True Then

Exit Sub

End If

If Nedeli.Value = True Then

For i = 2 To n + 1

For j = 2 To n + 1

If Not ActiveSheet.Cells(i, j).Value = "" Then

ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 7

End If

Next j

Next i

End If

If Mes.Value = True Then

MsgBox "Точный перевод невозможен. Попробуйте другой вариант", vbCritical + vbOKOnly, "Ошибка ввода"

Страницы: 1, 2, 3




Новости
Мои настройки


   рефераты скачать  Наверх  рефераты скачать  

© 2009 Все права защищены.