Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по VB. Часть2.doc
Скачиваний:
23
Добавлен:
02.02.2015
Размер:
870.4 Кб
Скачать

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

Общей величиной, которая используется на всех трех этапах решения задачи, является имя файла. Оно вводится в текстовом поле на главной форме «Потребность в стали» (рис. 10.5).

Рис. 10.5 Главная форма «Потребность в стали»

Выполнение каждого этапа начинается после нажатия соответствующей кнопки на этой же форме. Этап создания файла реализуется путем щелчка на кнопке «Создание», что приводит к выводу формы «Вид продукции» (рис. 10.6). В самом начале эту форму можно закрыть, щелкнув на кнопке закрытия формы.

В этом случае в файл не будет записано ни одной записи. Если же ввести на форме данные по одному виду продукции, а затем щелкнуть на кнопке «Записать», то эти данные будут сохранены в файле. После этого можно либо закрыть форму «Вид продукции» (прекратив при этом заполнение файла), либо ввести данные по новому виду продукции и щелкнуть на кнопке «Записать». Этот процесс можно повторять столько раз, сколько видов продукции выпускает предприятие. Таким образом, реализуется цикл с предусловием по заполнению файла записями.

Рис. 10.6. Форма «Вид продукции»

Второй этап решения задачи реализуется путем щелчка на кнопке «Вывод» и выводом всех записей файла на первоначально пустую форму «Содержимое файла» (рис. 10.7). При этом каждая запись занимает отдельную строку.

Третий этап выполняется подобно второму. Нужно щелкнуть на кнопке «Максимальная потребность» и на соответствующую форму будет выведена информация о виде продукции с максимальным расходом стали (рис. 10.8). Данные при этом выводятся в один столбец.

Рис. 10.7. Форма Рис. 10.8. Форма

«Содержимое файла» «Максимальная потребность»

10.5.6. Код проекта

Общие для всего приложения величины описываются в отдельном модуле «Общие описания». Он содержит следующие операторы:

Option Explicit

'Пользовательский тип данных

Public Type Запись

strНаименование As String * 7

sngНорма As Single

intКоличество As Integer

End Type

'Переменная пользовательского типа

Public udtСведения As Запись

'Счетчик записей

Public i As Integer

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

Option Explicit

Private Sub cmdСоздание_Click()

'Открытие файла

Open txtИмя_файла For Random As #1 Len = Len(udtСведения)

i = 1 'Номер для первой записи

'Ввод данных по одному виду продукции и запись на диск

' (повторяется многократно)

frmВид_продукции.Show

End Sub

Private Sub cmdВывод_Click()

Dim intКол_зап As Integer

'Открытие файла для чтения

Open txtИмя_файла For Random Access Read As #1 Len = Len(udtСведения)

'Вывод пустой формы для содержимого файла

frmСодержимое_файла.Show

'Определение количества записей в файле

intКол_зап = LOF(1) / Len(udtСведения)

'Чтение данных из файла и вывод их на форму

For i = 1 To intКол_зап

Get #1, i, udtСведения

frmСодержимое_файла.Print udtСведения.strНаименование, _

udtСведения.sngНорма, udtСведения.intКоличество

Next i

'Закрытие файла

Close #1

End Sub

Private Sub cmdМаксимальная_потребность_Click()

Dim sngПотребность As Single

Dim sngMaxПотребность As Single

Dim iMax As Integer 'Номер изделия с максим. потребностью

'Открытие файла

Open txtИмя_файла For Random As #1 Len = Len(udtСведения)

'Чтение первой записи

i = 1

Get #1, i, udtСведения

With udtСведения

'Вычисление потребности в стали на первое изделие

sngПотребность = .sngНорма * .intКоличество

'Предположение, что максимум будет у первого изделия

sngMaxПотребность = sngПотребность

iMax = i

'Определение максимума путем сравнения

' потребностей по остальным изделиям

Do

i = i + 1

Get #1, i, udtСведения

sngПотребность = .sngНорма * .intКоличество

If sngПотребность > sngMaxПотребность Then

sngMaxПотребность = sngПотребность

iMax = i

End If

Loop Until EOF(1)

'Чтение записи с максим. потребностью

Get #1, iMax, udtСведения

'Вывод пустой формы для информации по максим. потребности

frmМаксимальная_потребность.Show

'Вывод информации по изделию с максим. потребностью

frmМаксимальная_потребность.Print _

Tab(1), "Наименование:"; Tab(33); .strНаименование, _

Tab(1), "Норма:"; Tab(33); .sngНорма, _

Tab(1), "Количество:"; Tab(33); .intКоличество, _

Tab(1), "Потребность:"; Tab(33); sngMaxПотребность

End With

'Закрытие файла

Close #1

End Sub

Форма «Вид продукции» предназначена для ввода данных по одному виду продукции и сохранения их в файле. Эти действия выполняются после события "Щелчок на кнопке «Записать»". Кроме этого по событию «Закрытие формы» происходит закрытие файла. Тексты процедур, обрабатывающих два эти события, содержатся в коде формы «Вид продукции» и представлены ниже.

Private Sub cmdЗаписать_Click()

With udtСведения

'Ввод данных по одному виду продукции

.strНаименование = txtНаименование

.sngНорма = CSng(txtНорма)

.intКоличество = CInt(txtКоличество)

'Запись в файл

Put #1, i, udtСведения

'Номер для следующей записи

i = i + 1

End With

End Sub

Private Sub Form_Unload(Cancel As Integer)

'Закрытие файла

Close #1

End Sub

Формы «Содержимое файла» и «Максимальная потребность» не имеют процедур.