Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB-2012 / 1-семестр / Методика / lab7(масс-эл-упр).doc
Скачиваний:
11
Добавлен:
26.03.2015
Размер:
1.07 Mб
Скачать

Используемые данные

Реквизит

Имя

Назначение

Необходимо

Необходимо

Плані

і

Вместе

Вместе

Отклонение

Отклонение

Text1

Neobhod

Text2(i)

i

label5

Vmeste

Label4

Text4

Необходимое значение показателя (элемент на форме)

Необходимое значение показателя (переменная в коде)

Плановое значение показателя на і-й день (массив элементов на форме)

Номер дня недели

Сумма плановых значений по дням (элемент на форме)

Сумма плановых значений по дням (переменная в коде)

Текстовая информация о результат сравнения («Перевыполнено», «Недовыполнено»,«Норма»).

Числовая информация о результате сравнения

Интерфейс с пользователем.

Задачу решают с помощью формы с одним простым текстовым полемtext1 и массивом текстовых полей text2 (рис. 7.1.). В эти текстовые поля вводят соответствующие входные данные. Результаты расчётов выводятся в области надписей label5 (сумма плановых значений по дням недели) и label4 (текстовая информация о результате сравнения величин Neobhod и Vmeste), а соответ-

Рис 4.1. Форма для решения задачи планирования

ствующее числовое значение – в текстовое поле text4.

Рис. 7.2. Схема алгоритма решения второго этапа (вычисление суммы плановых значений и выведение результатов).

Поскольку на форме нет командных кнопок, то процесс вычисления и вывод результата запускается событиями в полях ввода входных данных (событие потеря фокуса - LostFocus) и изменения в плановых данных по любому дню недели (событиеChange).

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

Числовое значение отклонения даёт представление о том, какую величину показателя необходимо ещё распределить или, наоборот, - на какую уменьшить.

Для большей выразительности качественную характеристику состояния процесса планирования (слова «Перевыполнение», «Недовыполнение» и «Норма») выводят на соответствующем фоне (желтом, красном или зелёном).

Код программы.

Для реализации задачи планирования в коде необходимо предвидеть обработку следующих двух событий:

  1. потерю фокуса текстовым полем txtНеобходимо;

  2. изменение какого-либо значения в массиве текстовых полей txtПлан.

Причём обработка обоих событий выполняется одинаково – по алгоритму представленному на рис 7.2. Поэтому для обработки первого события создаётся процедура по схеме алгоритма, а тело второй процедуры является вызовом первой. Тексты соответствующих процедур представлены ниже.

Option Explicit

Вычисление отклонения плана заданного на неделю

' от необходимого значения показателя

Dim Vmeste As Single 'сумма плана по дням

Dim Neobhod As Single ' Требуемое значение

Dim i As Byte ' Номер дня недели

' Вычисление суммы плановых значений по дням недели

Vmeste = 0

For i = 1 To 6

Vmeste = Vmeste + CSng(Text2(i - 1))

Next i

'Вывод на форму

Label5 = Format(Vmeste, "0.00")

'Подготовка к использованию в вычислении

Neobhod = CSng(Text1.Text)

'Вывод сообщения об отклонении

If Vmeste > Neobhod Then

Label4.Caption = "Перевыполнено"

Label4.BackColor = vbYellow

ElseIf Vmeste < Neobhod Then

Label4.Caption = "Недовыполнено"

Label4.BackColor = vbRed

Else

Label4.BackColor = vbGreen

Label4.Caption = "Норма"

End If

' Вычисление и вывод величины отклонения

Text4.Text = Str(Abs(Vmeste - Neobhod))

End Sub

Private Sub Text2_Change(Index As Integer)

Text1_LostFocus

End Sub

Реализация проекта

Для реализации проекта необходимо выполнить такие действия:

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

  2. Задать заголовок формы и её имя.

  3. Для ввода требуемого значения показателя создать текстовое поле text1 и надпись к нему label1.

  4. Для контейнера данных по дням недели создать рамку frame1 такого размера, чтобы в ней поместился массив текстовых полей из семи элементов.

  5. Для ввода плановых значений по дням недели создать в рамке текстовое поле text2 и надпись label2 (для понедельника) к нему. Свойствам Text для поля text2 присвоить значение ноль. Скопировать пары этих элементов в буфер, а потом вставить их из буфера в рамку. При вставке подтвердить запрос VB о создании массива элементов. Потом ещё пять раз сделать вставку из буфера. Таким образом, в рамке появится семь текстовых полей с соответствующими надписями (заголовками надписей станут названия дней недели.).

  6. Для вывода суммы плановых значений по дням недели (величина «Вместе») создать под рамкой две надписи (label3, label5)на одном уровне – свойствам Caption левой надписи задать значение Вместе, а для правого установить значение следующих свойств:

Name: label5,

Caption: пусто,

BorderStyle: 1.

  1. Для вывода текстовой и числовой информации об отклонении суммы плановых значений от требуемой величины показателя под предыдущей парой надписей создать текстовое поле text4 с надписью левее от него label4. Установить значения таких свойств надписи:

Name: label4

Caption: пусто

Для текстового поля установить значение таких свойств:

Name: text4

Text: пусто

  1. Для создания процедуры обработки события «Потеря фокуса текстовым полем text1» дважды щелкнуть на этом поле, в поле со списком <Procedure> выбрать событие LostFocus и ввести тело процедуры.

  2. Для создания процедуры обработки события «Изменение значения в массиве текстовых полей text2» дважды щелкнуть на любом текстовом поле массива элементов управления text2 и в заготовку процедуры скопировать имя предыдущей процедуры Text1_LostFocus

  3. Сохранить форму и проект в папке на диске.

Соседние файлы в папке Методика