Автор работы: Пользователь скрыл имя, 29 Декабря 2010 в 04:20, курсовая работа
Функциональный подход реализует принцип движения «от задач» и применяется, когда определен комплекс задач, для обслуживания которых создается информационная система. В этом случае можно выделить минимальный необходимый набор объектов предметной области, которые должны быть описаны.
В предметном подходе объекты предметной области определяются с таким расчетом, чтобы их можно было использовать при решении множества разнообразных, заранее не определенных задач.
Сначала в проект нужно добавить новый стандартный модуль командой 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.
writer.Write(temp)
writer.Write(Spec)
temp = _
UnicodeEncoding.Unicode.
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.
Spec = reader.ReadInt32()
temp = reader.ReadBytes(20)
DataR = _
CType(UnicodeEncoding.
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.
writer.Write(Code)
writer.Write(temp)
temp = UnicodeEncoding.Unicode.
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.
temp = reader.ReadBytes(200)
Name = UnicodeEncoding.Unicode.
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.
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.
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("Действительно хотите
Decl.CloseAllFiles()
End
End If
End Sub
9. Работа с файлами
9.1. Использование диалогового окна Windows
Для открытия и сохранения файлов в проекте используется стандартное диалоговое окно Windows, которое создается с использованием элементов управления соответственно OpenFileDialog и SaveFileDialog. Нанесем на главную форму с меню (frmMenu) объекты для работы с диалоговыми окнами для открытия и сохранения файлов, можно оставить им те имена, которые им присвоит система (OpenFileDialog1 и SaveFileDialog1), а можем дать другие имена. Заметим, что во время выполнения приложения данные элементы управления не видны.
Окна диалога имеют определенные свойства и методы. Используемые нами в данной реализации свойства и методы для обоих типов объектов совершенно одинаковы, поэтому остановимся на свойствах только одного элемента управления при пояснении кодов процедур обработки событий для открытия и сохранения файлов. Что касается методов, то для обоих элементов будет использован метод ShowDialog() для получения имен диска, папки и файла соответственно для существующего файла и нового, сохраняемого файла.
Приведем фрагмент кода для вызова диалогового окна Windows для открытия и сохранения файлов.