Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB-2012 / 2-cеместр / Заочники(весна) / Методика / Практ-2-Типизированные файлы.doc
Скачиваний:
8
Добавлен:
26.03.2015
Размер:
783.36 Кб
Скачать

'Общие описания

Option Explicit

'Тип данных пользователя

Public Type zap

Name As String * 7

Norma As Single

Kol As Integer

End Type

'Переменная типа данных пользователя

Public sved As zap

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

Public i As Integer

Форма «Потребность в стали» имеет три кнопки. Нажатие на каждую из них обрабатывается соответствующей процедурой. Коды процедур представлены ниже:

Private Sub Command1_Click() ‘Создание файла

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

Open Text1 For Random As #1 Len = Len(sved)

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

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

i = LOF(1) / Len(sved) + 1 номер первой свободной записи в файле

Form2.Show

End Sub

Private Sub Command3_Click() Вывод содержимого файла

Dim kol_zap As Integer

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

Open Text1 For Random Access Read As #1 Len = Len(sved)

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

Form3.Show

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

kol_zap = LOF(1) / Len(sved)

' Чтение из файла, отображение записей на форму

For i = 1 To kol_zap

Get #1, i, sved

'Печать записи на форму

Form3.Print sved.Name, sved.Norma, sved.Kol

Next i

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

Close #1

End Sub

Private Sub Command2_Click() Вычисление максимальной потребности

Dim Potr, MaxPotr As Single

Dim imax As Integer

Dim kol_zap As Integer

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

Open Form1.Text1 For Random Access Read As #1 Len = Len(sved)

i = 1

Get #1, i, sved

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

Potr = sved.Norma * sved.Kol

MaxPotr = Potr

imax = i

'Вычисление максимума путем сравнения

' потребностей по другим изделиям

kol_zap = LOF(1) / Len(sved)

For i = 2 To kol_zap

Get #1, i, sved

Potr = sved.Norma * sved.Kol

If Potr > MaxPotr Then

MaxPotr = Potr

imax = i

End If

Next i

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

Get #1, imax, sved

'Отображение информационной формы

Form4.Show

'Отображение результирующей информации

Form4.Print

Form4.Print Tab(3), "Наименование"; Tab(33); sved.Name

Form4.Print Tab(3), "Норма"; Tab(33); sved.Norma

Form4.Print Tab(3), "Количество"; Tab(33); sved.Kol

Form4.Print Tab(3), "Потребность"; Tab(33); MaxPotr

Close #1

End Sub

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

Private Sub Command1_Click() ‘ Занесение данных в файл 'Ввод данных по виду продукции

sved.Name = Text1.Text

sved.Norma = CSng(Text2.Text)

sved.Kol = CInt(Text3.Text)

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

Put #1, i, sved

'Очистка полей от предыдущих данных

i = i + 1

Text1.Text = ""

Text2.Text = "0"

Text3.Text = "0"

End Sub

Private Sub Form_Unload(Cancel As Integer)Закрытие формы

Close #1

End Sub

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

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

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

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

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

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

    3. В окно кода, что появилось, ввести необходимые описания (код модуля «Общие описания»).

    4. На стандартной панели инструментов нажать на кнопку «Сохранить». В диалоговом окне Save File As, которое появилось, в полеПапка указать необходимую папку, а в поле Имя файла ввести название модуляob-opis-1,после чего нажать на кнопку «Сохранить».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для вывода пустой формы в коде используется метод Show соответствующей формы, например:Form3.Show

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

Обратим внимание, что при чтении/записи в файл используется сложная переменная типа данных пользователя Sved. Одновременно передаются значения всех её трёх полей (Name, Norma, Kol). В методеPrint необходимо указать либо каждое поле отдельно в полной форме, указывая имя переменной-записиSved, или в сокращенной, используя операторWith.

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

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

Выполнение программы и получение результатов.

Цех по изготовлению крепёжных изделий получил заказ, данные о котором даны в табл. 1.2. Необходимо найти вид изделий с наибольшей материалоёмкостью.

Таблица 9.2. Данные о заказе на крепежные изделия

Наименование

Норма расхода стали

на одно изделие, кг

Количество, шт.

Болт

0,05

1 000

Гайка

0,025

1 000

Шуруп

0,03

5 000

гвинт

0,02

2 000