Форма 2 (Вычислить площадь треугольника) – FrmStr, Labosn, Txtosn, LabH, TxtH, BtnRez, LabRez.




 

Public Class FrmSTr

 

Private Sub BtnRez_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnRez.Click

Dim A As Single

Dim B As Single

A = Val(TxtLosn.Text)

B = Val(TxtH.Text)

Call STr(A, B)

End Sub

 

Private Sub STr(ByVal L As Single, ByVal H As Single)

Dim S As Single

S = 0.5 * L * H

LabRez.Text = "Площадь треугольника = " & S.ToString

End Sub

 

End Class

 

 

Форма 3 (Вычислить длину гипотенузы)

Public Class FrmDlg

 

Private Sub BtnRez_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnRez.Click

Dim A As Single

Dim B As Single

 

A = Val(TxtCat1.Text)

B = Val(TxtCat2.Text)

LabRez.Text = "Длина гипотенузы = " & LGip(A, B)

End Sub

 

Private Function LGip(ByRef K1 As Single, ByRef K2 As Single)

 

LGip = Math.Sqrt(K1 ^ 2 + K2 ^ 2)

 

End Function

End Class

 

Главная форма

 

Private Sub mnuZDlG_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuZDlG.Click

Dim Nf As New FrmDlg

Nf.MdiParent = Me

Nf.Show()

 

End Sub

 

 

End Class

 

 

Считывание данных из текстового файла:

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

Sub New (ByVal Path As String, ByVal Enc As Encoding), где Path – текстовая или символьная величина, указывающая имя и путь к файлу, Enc – кодировка знаков, применяемых для записи символов: ASCII – кодировка семиразрядными знаками, UniCod – кодировка виде двух последовательных символов, UTF7/UTF8.

2) Sub New (ByVAl Stream As Stream, ByVal Enc As Encoding), где Stream – поток для чтения.

Указание кодировки является необязательным, система автоматически устанавливает ASCII-код.

Методы класса StreamReader:

Метод Описание
Close Осуществляет закрытие класса и освобождает все ресурсы Sub Close()
DiscardBufferesData Так как метод Read не обновляет текущую позицию потока, экземпляр класса StreamReader возвращает больше символов, чем находится в потоке. Для удаления этих данных используется данный метод Sub DiscardBufferedData()
Peek Осуществляет переход к следующему после текущего символу. Если больше нет данных для чтения, возвращает -1 Function Peek() As Integer
Read Позволяет считать следующий символ из файла и осуществляет переход к следующему. Возвращает символ в его численном представлении. Для его приведения к символьному значению можно воспользоваться функцией Convert.ToChar Function Read() As Integer Считывает определенное параметром count количество символов из файла и записывает их в buffer, начиная с позиции index Function Read (ByVal buffer() As Char, _ ByVal index As Integer, _ ByVal count As Integer) As Integer
ReadLine Позволяет считывать отдельные строки файла Function ReadLine() As String
ReadToEnd Используется для считывания всей информации из файла от текущей позиции до конца как одной строки Function ReadToEnd() As String

 


Запись данных в тестовый файл:

Осуществляется с помощью класса StreamWriter, обеспечивающего запись данных в файл. Он имеет следующие конструкторы:

1) Sub New (ByVal Path As String, ByVal Append As Boolean, ByVal Enc As Encoding), где Path – полное имя файла и путь к нему; Append – параметр, определяющий, будет ли файл перезаписываться. При значении True – информация будет дописана в конец файла; Encoding – кодировка.

2) Sub New (ByVal Stream As Stream, ByVal Enc As Encoding)

Методы класса StreamWriter:

Метод Описание
Close Осуществляет закрытие класса, освобождая все ресурсы чтения из файла. Sub Close()
Flush Записывает данные в файл и стирает содержимое буфера. Sub Flush() Для автоматической записи содержимого буфера в файл после каждого вызова методов Write и WriteLine необходимо указать Значение True для свойства AutoFlush
Реек Осуществляет переход к следующему после текущего символу. Если больше нет данных для чтения, возвращает -1. Function Peek () As Integer
Write Позволяет записывать данные, имеющие типы Boolean, Char, Decimal, Double, Integer, Long, Object, Single, String, Uint32, Uint64. Sub Write(ByVal value As [Тип данных])
WriteLine Аналогичен методу Write за тем исключением, что в конце записываемых данных указывается символ окончания строки. Если параметр value опустить, то в файл просто запишется признак конца строки

 

Как правило, для открытия и создания файлов используются статические методы класса File.

Метод Описание
Create, CreateText Используется для перезаписи или создания нового текстового файла. Function Create(ByVal path As String) As FileStream Function CreateText(ByVal path As String) As StreamWriter
Open Позволяет открыть файл, указав режим доступа к нему, определить характер действия, а также тип разрешения доступа к файлу другими процессами. Function Open(ByVal path As String, _ ByVal mode As FileMode, _ ByVal access As FileAccess, _ ByVal share As FileShare) As FileStream, Здесь параметры аналогичны используемым в конструкторе класса FileStream. Параметры mode, access и share можно опустить
OpenRead, OpenText Открывает файл только для чтения. Function OpenRead(ByVal path As String) As FileStream Function OpenText(ByVal path As String) As StreamReader
OpenWrite, AppendText Осуществляет открытие файла только для записи. Function OpenWrite(ByVal path As String) As FileStream Function AppendText(ByVal path As String) As StreamWriter

 

Работа со строками:

1) Определение количества символов в строке – возвращает целочисленное число, соответствующее длине заданной строки.

<Строка>. Length

Dim A As String = “Москва”

Dim B As Integer

B = A. Length

2) Удаление символов из строки при их расположении в начале, в конце или и в начале, и в конце. Функция требует задание образца символа, который будет удален из строки. Допускается указывать несколько символов. В этом случае они перечисляются через запятую.

<Строка>. TrimStart(“Образец”) – удаляет символ в начале строки.

<Строка>. TrimEnd(“Образец”) – удаляет символ в конце строки.

<Строка>. Trim(“Образец”) - удаляет символ в начале и конце строки.

MyStr = MyStr. Trim(“%”,”$”,” ”)

3) Метод удаления одного или более символов в любом месте строки – позволяет удалить один или несколько символов, начиная с указанной позиции.

<Строка>. Remove(P1,P2) - где P1 – определяет начальное положение строки, а P2 – количество удаляемых символов.

Dim Str1 As String = “Иван Петров”

Str1 = Str1. Remove(0,5)

4) Поиск подстроки в строке – предназначается для определения наличия или отсутствия заданной подстроки в исследуемой строке. Если подстрока присутствует, возвращается значение True, в противном случае – False.

<Строка>. StartsWith(“Образец”)

<Строка>. StartsEnd(“Образец”)

Dim A As String = “Москва – столица РФ”

If A. StartsWith(“Москва”) = True Then

msg(“Найдено”)

Else If

msg(“Не найдено”)

End If

5) Извлечение символов из строки – предназначен для извлечения заданного количества символов из произвольного места строки.

<Строка>. SubString(P1,P2) - где P1 – определяет начальное положение строки, а P2 – количество извлекаемых символов.

Dim A As String = “Иван Петров”

Dim B As String

B = A. SubString(0,4)

6) Замена символов в строке – предназначено для замены всех вхождений последовательности символов в строке другой последовательностью.

<Строка>. Replace(P1,P2) – где P1 – исходная подстрока, P2 – новая подстрока.

Dim N As String = “8-495-275-5555”

N = N. Replace(“494”,”499”)

7) Оператор замены по указанным координатам – предназначен для замены указанного количества символов символами из другой строки.

Mid(<Целевая строка>, Нач.позиция, Кол-во символов) = “Замещ. строка”

Целевая строка – это строка, в которой нужно провести замену символов; начальная позиции – номер элемента целевой строки, с которого начнется замена; необязательный элемент кол-ва символов определяет число элементов строки, подлежащих замене, если он опущен, автоматически сравниваются длины замещающей и целевой строк, от начальной позиции до конца строки. Кол-во заменяемых символов определяется меньшим из этих значений.

Dim A As String = “Анна Петрова”

Mid(A,5) = “Сидорова”

8) Добавление символов в строку – предназначено для внесения изменений в строчку, которая до этого в данной строке отсутствует. Изменения целевой строки возможно, начиная с указанной позиции.

<Строка>. Insert(P1,P2) – где P1 – начальная позиция вставки, P2 – содержание вставляемой подстроки.

Dim A As String = “222-2222”

A. Insert(0,”8-495-”)

9) Поиск заданной последовательности символов в строке – предназначен для определения наличия в строке заданной подстроки. Возвращает численной значение равное -1, в случае неудачного поиска, в противном случае возвращается порядковый номер символа в строке.

<Строка>. IndexOf(P1,P2) – P1 – целевая подстрока, P2 – начальная позиция.

 

Файлы произвольного доступа.

Отличие файлов произвольного доступа (ПРД) от файлов последовательного доступа (ПД):

Файлы ПРД имеют внутреннюю структуру, она представляется полями и записями.

Поле – отдельный элемент информации, характеризующий какую-либо сущность.

FIO Gr Pol Spec
       

Запись – специальная структура, объединяющая группу полей, содержащую данные о конкретном экземпляре сущности.

Основным преимуществом является то, что в файле возможно осуществлять перемещение по записям. Каждая запись имеет свой уникальный номер, называемый номером записи, он определяет положение записи в файле и является индивидуальным и уникальным. По этому номеру можно получить доступ непосредственно к необходимой записи, что и позволяет называть эти файлы файлами ПРД (прямого доступа). Такой вид доступа обеспечивает высокую скорость обращения к любой записи, при этом ее реальное физическое положение на скорость доступа не влияет.

Обобщенный порядок работы с файлами ПРД:

Порядок работы с данными файлами строго формализован и представляет собой однозначно заданную последовательность действий, включающую:

1) Создание структуры записи;

2) Объявление переменной записи с использованием структуры записи;

3) Открытие файла;

4) Считывание или запись в файл одной или нескольких записей;

5) Закрытие файла.

Так как все записи в файле ПРД имеют одинаковое по своей структуре содержание, для них надо определить: количество полей; типы данных, которые будут хранить эти поля; при необходимости, размерность поля и их идентификатор. Для обеспечения такой однородности используется специальная структура записи, представляющая собой специальный тип данных, определенный пользователем.

Для использования такой структуры применяется специальный оператор Structure. Синтаксис:
Structure <Имя структуры>
VBFixedString(Длина)Public<Имя поля> As String

Public<Имя поля> As <Числовая>
Public<Имя поля> As <Логическая>
End Structure

Объявление переменной записи:

Так как созданная структура является пользовательским типом данных, на нее распространяются все правила, применяемые к типам данных.

Dim <Имя переменной> As <Пользовательский тип данных>

Таких типов данных может быть любое количество.

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

Person

FIO Gr Adress
Петров П.П.   Москва

Dim Pipl As Person
Pipl.FIO = “Петров П.П.”
Pipl.Gr = “1995”
Pipl.Adress = “Москва”
ИЛИ
Dim Pipl As Person
With Pipl
.FIO = “Петров П.П.”
.Gr = “1995”
.Adress = “Москва”
End with

Открытие файлов произвольного доступа:

Для открытия файлов ПРД используется специальная функция FileOpen.

Синтаксис:
FileOpen(P1, P2, P3, P4, P5, P6), где:

1) P1 – номер файла - положительное целое число, назначаемое данному файлу в качестве идентификатора, оно может назначаться произвольно, но в этом случае не гарантируется надежность программы. Физически это число соответствует условному номеру зоны памяти, в которой будет открыт данный файл. Для разных ОС эта величина различна. Гораздо более надежным является способ, при котором ОС сообщает программе первый свободный номер памяти в текущий момент времени. Для этого используется функция FreeFile;

<Имя Переменной> = FreeFile(<Имя Переменной>)

2) P2 – имя файла и полный путь к нему. Указывается в кавычках;

3) P3 – специальный оператор, указывающий на то, что файл открыт в режиме произвольного доступа. OpenMode.Random;

4) P4 – позволяет задать режим доступа к файлу: запись/чтение или и запись, и чтение;

5) P5 – позволяет запретить или разрешить совместное использование файлов несколькими пользователями;

6) P6 – длина записи, определяет длину каждой записи в файле. Может быть рассчитана в ручную путем суммирования значений всех типов данных, входящих в запись или определена автоматически с использованием функции Len.

<Имя Переменной> = Len(<Имя Переменной>)

Сохранение записи в файле ПРД:

Осуществляется при помощи специальной функции FilePath(P1,P2,P3), где: P1 – номер файла; P2 – переменная записи, содержащая запись в которой нужно сохранить файл; P3 - |номер записи, по которому будет записана информация. Если номер отсутствует, запись будет осуществлена по текущему положению указателя.

Чтение записи в файле ПРД:

FileGet(P1, P2, P3), где: P1 – номер зоны памяти, в которой открыт файл; P2 – переменная записи, в которую будет сохранена прочитанная запись; P3 – номер записи, которую необходимо прочитать.

Определение конца файла произвольного доступа:

Для определения, находится ли указатель в позиции в конце файла используется EOF(номер зоны памяти).

Если указатель позиции находится в конце файла функция возвращает True.

Закрытие файла произвольного доступа:

Осуществляется по окончанию работы с файлом FileClose(<Номер зоны памяти>).

В чистом виде функция удаления заданной строки при работе с файлами ПРД не существует. Реализацию удаления приходится осуществлять вручную, для чего необходимо реализовать следующую последовательность действий:

1) Создать временный файл с такой же структурой, как уже существующий, и открыть его;

2) С помощью цикла скопировать из файла оригинала во временный файл только не удаляемые записи;

3) Закрыть файл оригинал и удалить его;

4) Переименовать временный файл по имени удаленного оригинала.

Управление данными:

Является одной из основных задач современного прикладного программирования. В настоящее время в современных системах применяется модель доступа к данным ADO.NET (Active Case Data Object). Данная технология является стандартизированной моделью и используется в программировании при разработке систем, работающих в режиме совместного доступа к данным. Модель ADO.NET представляет собой набор классов, которые обеспечивают легкость программирования, высокую производительность и масштабирование, возможность управлять данными различных форматов от различных источников. VB2008 в качестве источников данных может использовать:

1) базы данных различных форматов;

2) web-сервисы;

3) объекты, определяемые пользователем.

Особенности ADO.NET:

Не всегда возможно прогнозировать количество пользователей, одновременно работающих с базой данных (БД). Соединение с БД требует выделение системных ресурсов сервера, ограничивая тем самым количество активных соединений. Приложения с постоянным соединением трудно поддаются масштабированию, что вызывает значительные проблемы при создании интернет-проектов.

Эта задача решена в ADO.NET:

1) Используются отсоединенные (автономные) наборы данных, что не накладывает ограничений на количество активных соединений – соединения устанавливаются только на время проведения операции над БД;

2) Для передачи данных используется встроенная поддержка распространенного формата XML, имеющего текстовое представление. Это позволяет просто организовать передачу данных через интернет, использую протоколы HTTP. Причем программисту не требуется иметь опыт работы XML. Основным недостатком является потеря времени на подключение/отключение. Однако он окупается снижением нагрузки на сервер и повышением пропускной способности.

Организация хранения данных:

Одним из ключевых компонентов ADO.NET является объект DataSet, который характеризует хранение автономного набора данных. Внутри данного объекта содержится коллекция таблиц и отношения между ними. Представляет собой упрощенную реляционную БД со встроенной поддержкой языка XML, которая хранит размещенный в памяти моментальный снимок части реальной базы данных.

Объект DataSet не имеет средств взаимодействия с источником данных, который используется для его заполнения. Связующую роль между ним и источником данных выполняет провайдер управления данных – набор объектов, с помощью которых можно подключится к источнику данных, считать данные и заполнить ими DataSet. DataSet может хранить данные из разных источников, включая созданные пользователем таблицы и связи.

Организация доступа к данным.

Для установления соединения с источником данных, операции с данными и доставки этих результатов в Addobe служат управляемые провайдерами данные – наборы объектов adobe разработанные для соединения с определенными источниками данных. Все провайдеры обеспечивают одинаковый набор базовых методов и свойств, скрывая особенности их реализации. Выбор провайдера возлагается на программиста.

 

Управляемые провайдеры NET

Провайдер данных Описание
SQL Server Устанавливает связь между таблицами в DataSet и таблицами (или представлениями) базы данных Microsoft SQL Server (версии 7.0 и выше)
Oracle Устанавливает связь между таблицами в Dataset и таблицами (или представлениями) базы данных Oracle
OLE DB Устанавливает связь между таблицами в DataSet и таблицами (или представлениями) в любом источнике данных, для которого имеется провайдер OLE DB
ODBC Обеспечивает интерфейс для работы через драйверы ODBC
XML Обеспечивает получение XML-данных в среде SQL Server 2000

 

Объектная модель ADO.NET:

Объект DataSet – хранит в себе набор таблиц с дополнительной информации об их структуре и отношениях между ними. Это позволяет эффективно представлять выбранные из источника данные. Объект DataSet позволяет получить доступ к таблицам, их строкам и столбцам. А с помощью модели провайдера можно выполнять запросы БД и заполнять таблицы объекта DataSet. DataSet включает две коллекции:

1) DataTableCollection – совокупность объектов, каждый из которых представляет одну таблицу;

2) DataRelationCollection – совокупность ограничений и отношений таблиц.

Оба объекта связываются с объектом DataTable, хранящим совокупность столбцов и строк таблицы, а также отношений между ними.

Объект Connection – беспе6чивает соединение с источником данных.

Объект Command – позволяет управлять данными источника, а также выполнять хранимые процедуры.

Объект DataAdapter – используется для передачи данных между источником данных и DataSet.

Объект DataReader – представляет однонаправленный поток данных от источника только на чтение без возврата к уже считанным строкам. Этому объекту всегда требуется открытое соединение. Его применение обосновано в случае:

1) Если данных слишком много для размещения в памяти;

2) Требуется быстрый однократный доступ к данным без их изменения.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: