КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |