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


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

 

 

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

 

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

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

 

 

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

 

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

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

 

 

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

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

Код проекта

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

 

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

 

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

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

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

2. Создать модуль «Общие описания».

2. 1. На стандартной панели инструментов нажать стрелку справа от кнопки добавления нового объекта (вторая слева) и выбрать команду Add Module.

2.2. В появившемся диалоговом окне во вкладке Nеw выбрать значение Module и нажать кнопку «Открыть».

2.3. В появившемся окне кода ввести нужные описания (код модуля «Общие описания»).

2.4. На стандартной панели инструментов щелкнуть на кнопке «Сохранить» и в появившемся диалоговом окне Save File As в поле «Папка» указать нужную папку, а в поле «Имя файла» ввести название модуля «Общие описания», после чего щелкнуть на кнопке «Сохранить».

2.5. В окне свойств модуля в свойстве Name ввести имя «Общие_описания».

3. Создание формы «Потребность в стали».

3.1. Перейти в окно формы, которая появилась при открытии нового проекта.

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

3.3. Создать текстовое поле с соответствующей надписью для ввода имени файла.

3.4. Создать три командные кнопки «Создание», «Вывод» и «Максимальная потребность».

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

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

4. Создать форму «Вид продукции».

4.1. На стандартной панели инструментов щелкнуть на стрелке справа от кнопки добавления нового объекта и выбрать команду Add Form.

4.2. В появившемся диалоговом окне «Add Form» выбрать значок Form и нажать кнопку «Открыть».

4.3. Задать заголовок формы «Вид продукции» и ее имя.

4.4. Создать три текстовых поля «Наименование», «Норма» и «Количество» и соответствующие надписи к ним.

4.5. Создать командную кнопку «Записать» и ввести код процедуры, которая обрабатывает событие щелчка мышью на ней.

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

5. Создать форму «Содержимое файла».

5.1. Повторить п.п.4.1 и 4.2.

5.2. Задать заголовок формы «Содержимое файла» и ее имя.

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

6. Создать форму «Максимальная потребность». Выполняется аналогично п.5.

7. Сохранить весь проект в папке на диске D:.

Анализ проекта

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

Поскольку каждый из трех этапов начинается открытием файла и заканчивается его закрытием, то можно считать, что они работают независимо. Из этого следует, что после ввода имени файла работу можно начинать с любого этапа. Если файл с введенным именем уже существует, то сразу можно найти вид продукции с максимальным расходом стали, или предварительно ознакомиться с содержимым всего файла. Для вывода пустой формы в коде используется метод Show соответствующей формы, например:

 

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

 

Для вывода данных на форму используется метод Print этой формы. Например:

 

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

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

 

 

 

 

 

 


Рис. 10.9. Схема взаимодействия форм

 

Обратим внимание, что при чтении/записи в файл используется сложная переменная пользовательского типа udtСведения. При этом передаются значения всех ее трех полей (strНаименование, sngНорма и intКоличество). В методе Print нужно указывать каждое поле отдельно. При этом каждое поле указывается в полной форме (с указанием имени переменной-записи udtСведения) либо в сокращенной (с использованием оператора With).

Отдельные элементы вывода в методе Print разделяются либо запятой, либо точкой с запятой. Если разделителем является запятая, то значения будут помещаться в 14-символьные зоны вывода, а если же точка с запятой – то значения выводятся подряд, без разрыва. Кроме того, в элементах вывода могут присутствовать функции Sps(n) (для вставки n пробелов между значениями в текстовой строке) и Tab(n) (для указания номера n позиции для начала вывода следующего элемента. Если в текущей строке позиция с номером n уже занята и используется функция Tab(n), то вывод будет осуществлен в следующей строке с n-ой позиции. В примере функция Tab(n) использована для вывода в один столбец данных по виду продукции с максимальным расходом стали. При этом название реквизита выводится, начиная с первой позиции каждой строки, а его значение – с 33 позиции этой же строки.

Используя функции Sps(n) и Tab(n) можно организовать вывод данных в виде табличного документа.



Дата добавления: 2020-10-14; просмотров: 283;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.021 сек.