к оглавлению   к 4GL - визуальному программированию

Составление расписания

Цель урока

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

Конструируя данное приложение, вы узнаете на практике, что такое:

Практика

Трус, Балбес и Бывалый построили небольшой магазинчик "Придорожный лопух, 24 часа" у деревне Неелово на трассе Москва—Санкт-Петербург. Работу в магазинчике они разбили на две смены по 12 часов. В начале очередной недели они вместе составляют график своего дежурства на неделю, в котором подсчитывается число рабочих смен каждого компаньона. Через месяц они решили автоматизировать процесс создания расписания. С этой целью они разработали приложение, процесс создания которого обсуждается ниже.

В редакторе форм создадим диалоговое окно магазин придорожный лопух, 24 часа (рис. У13.1).

Кроме этого, в любом графическом редакторе, например Paint, создадим файл ball.bmp с изображением красного шара и фоном рисунка того же цвета, что и цвет диалогового окна.

Расписание составляется очень просто:

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

Рис. У13.1. Диалоговое окно Магазин Придорожный лопух, 24 часа

  1. Для более наглядного представления надписи, соответствующие сменам с О до 12 часов, имеют белый цвет фона, а надписи, соответствующие сменам с 12 до 24 часов, — желтый цвет фона.

Рис. У13.2. Заполнение диалогового окна

Магазин Придорожный лопух, 24 часа

  1. Ввод имени дежурного в смену производится перемещением указателя на надпись соответствующей смены и щелчком кнопкой мыши. Программа автоматически вставляет имя дежурного в надпись смены (рис. У13.2).
  2. Удалить имя дежурного из смены можно, указав на пустую надпись в группе компаньон и выполнив щелчок, а затем переместив указатель на надпись смены, из которой требуется удалить имя дежурного, и также щелкнув кнопкой мыши.
  3. Подсчет числа рабочих смен каждого из компаньонов производится нажатием на кнопку ок.

Обсудим, как приведенная ниже программа решает описанную задачу и что в ней происходит.

UserForm Initialize

  1. Активизирует диалоговое окно.
  2. Очищает все надписи и задает свойства элементов управления Image .
  3. Устанавливает тип границы и цвет фона надписей.

Нажатие кнопки ок запускает на выполнение процедуру

CommandButtonl Click

Производит расчет числа рабочих смен компаньонов.

Нажатие кнопки Отмена запускает на выполнение процедуру

CommandButton2 Click

Закрывает диалоговое окно.

От Labell Click до Label4_Click

Считывает имя кандидата в дежурные при выборе соответствующей надписи из группы компаньоны. Сигнализирует об этом отображением красного круга рядом с именем выбранного кандидата.

От Labels Click до Label18 Click

Вводит имя кандидата в дежурные в надпись соответствующей смены.


' Переменные уровня модуля

Dim Имя As String

Dim Надписи(1 То 2, 1 То 7) As Object

Private Sub CommandButtonl_Click()

Dim Смены_1, Смены_2, Смены_3 As Integer

Смены_1 = 0

Смены_2 = 0

Смены_3 = 0

For i = 1 То 2

For j = 1 То 7

If Надписи(i, j).Caption = Label1.Caption Then Смены_1 = Смены_1 + 1

If Надписи(i, j).Caption = Label2.Caption Then Смены_2 = Смены_2 + 1

If Надписи(i, j).Caption = Label3.Caption Then Смены_3 = Смены_3 + 1

Next j

Next i

TextBoxl.Text = CStr(Смены_1)

TextBox2.Text = CStr(Смены_2)

TextBoxS.Text = CStr(Смены_3)

End Sub

'

Private Sub CommandButton2_Click()

UserForml.Hide End Sub

' Процедуры считывания имени дежурного из группы Компаньоны

'

Private Sub Labell_Click ()

Имя = Label1.Caption Действие True, False, False

End Sub

'

Private Sub Label2_Click() Имя = Label2.Caption Действие False, True, False

End Sub

'

Private Sub Label3_Click()

Имя = Labels.Caption

Действие False, False, True

End Sub

'

Private Sub Label4_Click()

Имя = Label4.Caption Действие False, False, False

End Sub

'

' Процедуры ввода имени дежурного

'

Private Sub Label5_Click() Labels.Caption = Имя

End Sub

'

Private Sub Label6_Click0 Label6.Caption = Имя

End Sub

Private Sub Label7_Click() Label7.Caption = Имя

End Sub

Private Sub Label8_Click() Labels.Caption = Имя

End Sub

Private Sub Label9_Click() Label9.Caption = Имя

End Sub

Private Sub Labell0_Click() Labell0.Caption = Имя

End Sub

Private Sub Labelll_Click() Labelll.Caption = Имя

End Sub '

Private Sub Labell2_Click() Labell2.Caption = Имя

End Sub '

Private Sub Labell3__Click ()

Labell3.Caption = Имя

End Sub

'

Private Sub Labell4_Click() Labell4.Caption = Имя

End Sub

'

Private Sub Labell5_Click() Label15.Caption = Имя

End Sub

'

Private Sub Labell6_Click() Labell6.Caption = Имя

End Sub

'

Private Sub Labell7_Click() Labell7 .Caption = Имя

End Sub

Private Sub Labell8_Click() LabellS.Caption = Имя

End Sub

'

Private Sub UserForm_Initialize()

'

' Инициализация диалогового окна

Dim i, j As Integer

Set Надписи(1, 1) = Label5

Set Надписи(2, 1} = Label6

Set Надписи(1, 2) = Label7

Set Надписи(2, 2) = Label8

Set Надписи(1, 3) = Label9

Set Надписи(2, 3) = Labell0

Set Надписи(1, 4) = Label11

Set Надписи(2, 4) = Labell2

Set Надписи(1, 5) = Label13

Set Надписи(2, 5) = Label14

Set Надписи(1, 6) = Labell5

Set Надписи(2, 6) = Labell6

Set Надписи(1, 7) = Labell7

Set Надписи(2, 7) = Label18

'

With Label4

.Caption = ""

.BorderStyle = fmBorderStyleSingle

End With

With Imagel

.Picture = LoadPicture("ball.bmp")

.BorderStyle = fmBorderStyleNone

.PictureSizeMode = fmPictureSizeModeZoom

.PictureAlignment = fmPictureAlignmentTopLeft

.Visible = False

End With

'

With Image2

.Picture = LoadPicture("ball.bmp")

.BorderStyle = fmBorderStyleNone

.PictureSizeMode = fmPictureSizeModeZoom

.PictureAlignment = fmPictureAlignmentTopLeft

.Visible = False

End With

'

With Image3

.Picture = LoadPicture("ball.bmp")

.BorderStyle = fmBorderStyleNone

.PictureSizeMode = fmPictureSizeModeZoom

.PictureAlignment = fmPictureAlignmentTopLeft

.Visible = False

End With

'

For i = 1 To 2 For j = 1 To 7

With Надписи(i, j)

.Caption = ""

.BorderStyle = fmBorderStyleNone Select Case i Case 1

.BackColor = vbWhite Case 2

.BackColor = vbYellow End Select

End With

Next j

Next i

'

End Sub

Sub Действие(Flagl, Flag2, Flag3 As Boolean)

'

' Процедура, устанавливающая отображение или скрытие рисунков

'

Imagel.Visible = Flagl

Image2.Visible = Flag2

Image3.Visible = Flag3

End Sub

Самостоятельное задание

Разработать приложение, которое позволит составить расписание рабочих смен Труса, Балбеса и Бывалого в магазинчике "Придорожный лопух, 24 часа" на текущий месяц. При создании приложения надо помнить, что разные месяцы имеют разное число дней и программа при инициализации диалогового окна должна отображать только то количество надписей, отводимых под смены, сколько их имеется в текущем месяце.

к оглавлению   к 4GL - визуальному программированию

Знаете ли Вы, что такое мысленный эксперимент, gedanken experiment?
Это несуществующая практика, потусторонний опыт, воображение того, чего нет на самом деле. Мысленные эксперименты подобны снам наяву. Они рождают чудовищ. В отличие от физического эксперимента, который является опытной проверкой гипотез, "мысленный эксперимент" фокуснически подменяет экспериментальную проверку желаемыми, не проверенными на практике выводами, манипулируя логикообразными построениями, реально нарушающими саму логику путем использования недоказанных посылок в качестве доказанных, то есть путем подмены. Таким образом, основной задачей заявителей "мысленных экспериментов" является обман слушателя или читателя путем замены настоящего физического эксперимента его "куклой" - фиктивными рассуждениями под честное слово без самой физической проверки.
Заполнение физики воображаемыми, "мысленными экспериментами" привело к возникновению абсурдной сюрреалистической, спутанно-запутанной картины мира. Настоящий исследователь должен отличать такие "фантики" от настоящих ценностей.

Релятивисты и позитивисты утверждают, что "мысленный эксперимент" весьма полезный интрумент для проверки теорий (также возникающих в нашем уме) на непротиворечивость. В этом они обманывают людей, так как любая проверка может осуществляться только независимым от объекта проверки источником. Сам заявитель гипотезы не может быть проверкой своего же заявления, так как причина самого этого заявления есть отсутствие видимых для заявителя противоречий в заявлении.

Это мы видим на примере СТО и ОТО, превратившихся в своеобразный вид религии, управляющей наукой и общественным мнением. Никакое количество фактов, противоречащих им, не может преодолеть формулу Эйнштейна: "Если факт не соответствует теории - измените факт" (В другом варианте " - Факт не соответствует теории? - Тем хуже для факта").

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

Эксперимент на то и эксперимент, что он есть не изощрение мысли, а проверка мысли. Непротиворечивая внутри себя мысль не может сама себя проверить. Это доказано Куртом Гёделем.

Понятие "мысленный эксперимент" придумано специально спекулянтами - релятивистами для шулерской подмены реальной проверки мысли на практике (эксперимента) своим "честным словом". Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 18.11.2019 - 19:10: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
16.11.2019 - 16:57: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
16.11.2019 - 16:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Марины Мелиховой - Карим_Хайдаров.
16.11.2019 - 12:16: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Игоря Кулькова - Карим_Хайдаров.
16.11.2019 - 07:23: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
15.11.2019 - 06:45: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
14.11.2019 - 12:35: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Светланы Вислобоковой - Карим_Хайдаров.
13.11.2019 - 19:20: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
12.11.2019 - 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Бориса Сергеевича Миронова - Карим_Хайдаров.
12.11.2019 - 11:49: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Веры Лесиной - Карим_Хайдаров.
10.11.2019 - 23:14: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Кирилла Мямлина - Карим_Хайдаров.
05.11.2019 - 21:56: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Декларация Академической Свободы - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution