Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пользовательские модули




В проекте используется два стандартных модуля, не связанных ни с какими формами. Один из них, с именем Declar, используется для объявления пользовательских типов, констант и переменных. Другой, с именем Sorting, содержит пользовательские процедуры сортировки данных различных типов.

Сначала в проект нужно добавить новый стандартный модуль командой Project / Add Module и дать ему имя, затем ввести программный код.

Приведем программный код модуля Decl.

‘ Подключение библиотек ввода и вывода для работы с файлами

Imports System.IO

Imports System.Text

 

‘ создание нового пространства имен для

‘ возможности подключения модуля к формам проекта

Namespace Decl

 

Module Declar

‘ Объявление пользовательского типа,

‘ описывающего структуру записи для

‘ входных данных – информации о студенте

Public Class TStud

Public Kurs As Byte ' курс

Public Group As Byte ' номер группы

Public FIO As String ' фамилия, имя и отчество

Public Spec As Integer' учетный номер специальности

Public DataR As Date ' дата рождения

Public Pol As Byte ' пол

Public Kol As Byte ' количество экзаменов

Public M(4) As Byte ' полученные оценки

Public len As Integer = 1 + 1 + 40 + 4 + 20 + 1 + 1 + 5

' размер переменной

 

Public Sub writeToFile(ByVal ff As FileStream)

Dim writer As BinaryWriter = New BinaryWriter(ff)

Dim tempstr As String

 

If FIO.Length > 20 Then

FIO = Left(FIO, 20)

Else

tempstr = New String(" ", 20 - FIO.Length)

FIO = FIO + tempstr

End If

 

writer.Write(Kurs)

writer.Write(Group)

 

Dim temp() As Byte = _

UnicodeEncoding.Unicode.GetBytes(FIO)

writer.Write(temp)

writer.Write(Spec)

 

temp = _

UnicodeEncoding.Unicode.GetBytes(DataR.ToString("dd.MM.yyyy"))

writer.Write(temp)

 

writer.Write(Pol)

writer.Write(Kol)

writer.Write(M)

End Sub

 

Public Sub writeToFile(ByVal ff As FileStream, _

ByVal i As Integer)

ff.Seek((i - 1) * len, SeekOrigin.Begin)

writeToFile(ff)

End Sub

 

Public Sub ReadFromFile(ByVal ff As FileStream, _

ByVal i As Integer)

ff.Seek((i - 1) * len, SeekOrigin.Begin)

 

Dim reader As BinaryReader = New BinaryReader(ff)

Dim temp() As Byte

 

Kurs = reader.ReadByte()

Group = reader.ReadByte()

 

temp = reader.ReadBytes(40)

FIO = UnicodeEncoding.Unicode.GetString(temp, 0, 40)

 

Spec = reader.ReadInt32()

 

temp = reader.ReadBytes(20)

DataR = _

CType(UnicodeEncoding.Unicode.GetString(temp, 0, 20), Date)

 

Pol = reader.ReadByte()

Kol = reader.ReadByte()

M = reader.ReadBytes(5)

End Sub

End Class

 

' Объявление пользовательского типа,

' описывающего структуру записи для

' входных данных справочника – информации о специальности

Public Class TSpec

Public Code As Integer ' учетный номер специальности

Public Number As String = New String(" ", 6)

' шестизначный код специальности

Public Name As String = New String(" ", 100)

' наименование специальности

Public len As Integer = 4 + 7 + 200 ' размер переменной

 

Public Sub writeToFile(ByVal ff As FileStream)

Dim writer As BinaryWriter = New BinaryWriter(ff)

Dim tempstr As String

 

If Number.Length > 6 Then

Number = Left(Number, 6)

Else

tempstr = New String(" ", 6 - Number.Length)

Number = Number + tempstr

End If

 

If Name.Length > 100 Then

Name = Left(Name, 100)

Else

tempstr = New String(" ", 100 - Name.Length)

Name = Name + tempstr

End If

 

Dim temp() As Byte = _

UnicodeEncoding.Unicode.GetBytes(Number)

 

writer.Write(Code)

writer.Write(temp)

temp = UnicodeEncoding.Unicode.GetBytes(Name)

writer.Write(temp)

End Sub

 

Public Sub writeToFile(ByVal ff As FileStream, _

ByVal i As Integer)

ff.Seek((i - 1) * len, SeekOrigin.Begin)

 

writeToFile(ff)

 

End Sub

 

Public Sub ReadFromFile(ByVal ff As FileStream, _

ByVal i As Integer)

ff.Seek((i - 1) * len, SeekOrigin.Begin)

 

Dim reader As BinaryReader = New BinaryReader(ff)

Dim temp() As Byte

 

Code = reader.ReadInt32()

temp = reader.ReadBytes(12)

Number = UnicodeEncoding.Unicode.GetString(temp, 0, 12)

 

temp = reader.ReadBytes(200)

Name = UnicodeEncoding.Unicode.GetString(temp, 0, 200)

End Sub

End Class

 

' Объявление пользовательского типа,

' описывающего структуру записи

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

Public Class TBall

Public Kurs As Byte ' курс

Public Group As Byte ' номер группы

Public FIO As String = New String(" ", 20)

Public Sb As Single ' средний балл

Public len As Integer = 1 + 1 + 40 + 4 ' размер

‘ переменной

 

Public Sub writeToFile(ByVal ff As FileStream)

Dim writer As BinaryWriter = New BinaryWriter(ff)

Dim tempstr As String

 

If FIO.Length > 20 Then

FIO = Left(FIO, 20)

Else

tempstr = New String(" ", 20 - FIO.Length)

FIO = FIO + tempstr

End If

 

Dim temp() As Byte = _

UnicodeEncoding.Unicode.GetBytes(FIO)

 

writer.Write(Kurs)

writer.Write(Group)

writer.Write(temp)

writer.Write(Sb)

End Sub

 

Public Sub writeToFile(ByVal ff As FileStream, _

ByVal i As Integer)

ff.Seek((i - 1) * len, SeekOrigin.Begin)

 

writeToFile(ff)

 

End Sub

Public Sub ReadFromFile(ByVal ff As FileStream, _

ByVal i As Integer)

ff.Seek((i - 1) * len, SeekOrigin.Begin)

 

Dim reader As BinaryReader = New BinaryReader(ff)

 

Kurs = reader.ReadByte()

Group = reader.ReadByte()

Dim temp() As Byte = reader.ReadBytes(40)

FIO = UnicodeEncoding.Unicode.GetString(temp, 0, 40)

Sb = reader.ReadSingle()

End Sub

End Class

 

' Объявление констант и переменных,

' используемых в модулях форм,

' пользовательских процедурах и функциях

Public Const Nmax As Integer = 100

Public Const PathUntitled As String = "с:\untitled.dan"

Public Const PathTemp As String = "c:\$$$$.tmp"

 

Public Path As String

Public PathSpec As String

Public Path1 As String

Public Path2 As String

Public FName As String

Public richName As String

 

Public f1 As FileStream

Public F2 As FileStream

Public F3 As FileStream

Public F4 As Integer

Public F1_sp As FileStream

 

Public N As Integer

Public NSpec As Integer

Public Pos As Integer

 

Public Ind(Nmax) As Integer

Public Del(Nmax) As Integer

 

Public Button As MsgBoxResult

 

‘ функция, которая закрывает все открытые рабочие файлы

Public Sub CloseAllFiles()

If Not (f1 Is Nothing) Then f1.Close()

If Not (F1_sp Is Nothing) Then F1_sp.Close()

If Not (F2 Is Nothing) Then F2.Close()

If Not (F3 Is Nothing) Then F3.Close()

End Sub

End Module

End Namespace

 

После описания пользовательского модуля Declar необходимо изменить функцию обработки события выбора пункта меню «Выход». Измененная функция имеет вид:

 

Private Sub mnuFileExitItem_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles mnuFileExitItem.Click

If (vbYes =MsgBox("Действительно хотите выйти?",vbYesNo)) Then

Decl.CloseAllFiles()

End

End If

End Sub




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


Дата добавления: 2015-05-09; Просмотров: 336; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.