- •5. Проектирование разветвляющихся вычислительных процессов
- •5.1. Условный оператор
- •5.2. Проектирование приложения, реализующего разветвляющийся вычислительный процесс
- •Используемые переменные
- •5.2.5. Интерфейс с пользователем
- •5.2.6. Код программы
- •5.2.7. Реализация проекта
- •5.2.8. Анализ проекта
- •5.2.9. Выполнение программы и анализ полученных результатов
- •5.4. Пример использования оператора выбора
- •6. Проектирование приложений с циклами
- •6.1. Назначение операторов цикла
- •6.2. Условные циклы
- •6.3. Проектирование приложения на базе условного цикла с верхним окончанием
- •Используемые переменные
- •6.3.5. Интерфейс с пользователем
- •6.3.6. Код программы
- •6.3.7. Анализ проекта
- •6.3.8. Выполнение программы и анализ полученных результатов
- •6.4. Проектирование приложения с использованием условного цикла с нижним окончанием
- •Используемые переменные
- •6.4.5. Интерфейс с пользователем
- •6.4.6. Код программы
- •6.4.7. Анализ проекта
- •6.4.8. Выполнение программы и анализ полученных результатов
- •Планируемые расходы на ремонт офиса
- •6.5. Цикл со счетчиком
- •6.6. Проектирование приложения с использованием цикла со счетчиком
- •6.6.7. Реализация проекта
- •6.6.8. Анализ проекта
- •6.6.9. Выполнение программы и анализ полученных результатов
- •Остаток товаров на 17.09.01
- •7. Массивы данных
- •7.1. Общие сведения о сложных типах
- •Стоимость товаров
- •7.2. Описание и обращение к массивам
- •7.3. Динамические массивы
- •7.4. Использование массивов при решении экономической задачи
- •Используемые данные
- •7.4.5. Интерфейс с пользователем
- •7.4.6. Код программы
- •7.4.7. Реализация проекта
- •7.4.8. Анализ проекта
- •7.4.9. Выполнение программы и анализ полученных результатов
- •Прайс-лист
- •8. Массивы элементов управления
- •8.1. Назначение и создание массивов элементов управления
- •"Группа переключателей"
- •8.2.4. Структура данных
- •Используемые данные
- •8.2.5. Интерфейс с пользователем
- •8.2.6. Код программы
- •8.2.7. Реализация проекта
- •8.2.8. Анализ проекта
- •8.2.9. Выполнение программы и анализ полученных результатов
- •9. Пользовательский тип данных
- •9.1. Определение и обращение
- •9.2. Оператор присоединения With
- •10. Файлы
- •10.1. Назначение файлов
- •10.2. Операции с файлами
- •10.3. Режимы доступа
- •10.4. Файлы с произвольным доступом
- •10.5. Проектирование приложения с файлами
- •10.5.1. Постановка задачи
- •10.5.2. Экономико-математическая модель
- •10.5.3. Алгоритм решения задачи
- •10.5.4. Структура данных
- •10.5.5. Интерфейс с пользователем
- •10.5.6. Код проекта
- •10.5.7. Реализация проекта
- •10.5.8. Анализ проекта
- •9.5.9. Выполнение программы и анализ полученных результатов
- •Данные по заказу на крепежные изделия
- •11. Процедуры и функции
- •11.1. Назначение процедур и их виды
- •11.2. Описание процедур
- •11.3 Вызов процедуры
- •11.4. Функции
- •11.5. Использование процедур и функций при решении экономической задачи
- •11.5.1. Код проекта
- •11.5.2. Реализация проекта
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
Формы «Содержимое файла» и «Максимальная потребность» не имеют процедур.