Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
27.04.2015
Размер:
309.71 Кб
Скачать

4.10.6. Пример выполнения задания-2

  1. Тема и название работы:

Текстовые файлы – Создание проекта Проект-4-10-Лаб.

  1. Задание на разработку проекта и вариант задания:

Создать проект, который вводит из второго файла строку b, построчно вводит все строки первого файла и отображает их на форме, а затем обрабатывает, удаляя из каждой строки первого файла все символы, расположенные на нечетных позициях строки b, используя ранее разработанную для лабораторной работы 4.9 процедуру Обработка(). Результат обработки необходимо отобразить на форме и сохранить в новом(третьем) текстовом файле. Работу с текстовыми файлами осуществить с помощью классов StreamReader, StreamWriter.

  1. Формализация и уточнение задания:

  1. Разработка проекта

    1. Разработка графического интерфейса пользователя

Разработанная форма интерфейса пользователя приведена на рис. 4.10-4.

Для построчного вывода на форму первого текстового файла, удобно использовать элемент управления ListBox. Для вывода на форму нового третьего текстового файла, состоящего из нескольких строк, которые будут прочитаны целиком в одну строку, используется текстовое поле TextBox4, для которого свойство Multiline обязательно должно быть установлено в состояние True и свойство ScrollBars в состояние Vertical для обеспечения возможности вертикальной прокрутки содержимого этого текстового поля. Текстовое поле TextBox3 для вывода на форму только одной строки из второго файла может оставаться со значением свойства Multiline, равным False, также, как и три других текстовых поля TextBox1 и TextBox5 и TextBox6 для ввода путей к текстовым файлам.

Рис. 4.10-4

    1. Установка свойств объектов

Свойства объектов управления разработанной формы студенты могут установить самостоятельно.

    1. Написание программного кода с использованием процедур.

Программный код решаемой задачи представлен на рис. 4.10-5. Процедура Resh()с помощью класса StreamReader построчно считывает содержимое 1 файла, удаляет из строки нужные символы процедурой Обработка()и дописывает обработанную строку в новый 3 файл с помощью класса StreamWriter. Процедура readfile()с помощью класса StreamReader считывает содержимое текстового файла целиком в одну строку. Так как разработанный интерфейс имеет не одну, а несколько кнопок, которые работают со строкой b, содержащей 2 файл, то эта строка должны быть доступна нескольким событийным процедурам, и поэтому в программном коде ее необходимо сделать глобальной (видимой для всех процедур), и объявить в начале программы, до описания всех процедур.

Option Strict On

Option Explicit On

Imports System.IO

Public Class Form1

Dim b As String ' Глобальная строка b из второго файла

'Процедура построчного чтения из 1файла и записи в 3файл

Sub Resh(ByVal filename1 As String, ByVal filename3 As String, _

ByVal b As String, ByRef L As ListBox)

'создание потока для чтения из исходного файла1

Dim Rf As New StreamReader(filename1)

'создание потока для записи в другой текстовый файл

'Значение True 2-го параметра означает, что будет

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

Dim wf As New StreamWriter(filename3, True)

Dim a As String

Try

Do While Not Rf.EndOfStream() 'пока не достигнут конец

'потока

a = Rf.ReadLine() 'чтение строки а из 1 файла

L.Items.Add(a) 'вывод прочитанной строки в ListBox

Обработка(b, a) 'удаление символов из строки а

wf.WriteLine(a) 'запись обработанной строки в новый файл

Loop

Catch ex As Exception

MsgBox("Невозможно прочитать данные из файла")

Finally

wf.Flush() 'очистка буфера потока

Rf.Close() 'закрытие потока

wf.Close()

End Try

End Sub

'Процедура чтения из текстового файла целиком в одну строку

Sub readfile(ByVal filename As String, ByRef b As String)

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

Dim Rf As StreamReader

Rf = New StreamReader(filename)

Try

b = Rf.ReadToEnd() 'чтение текста из файла в b

Rf.Close() 'закрытие потока

Catch ex As Exception

MsgBox("Невозможно прочитать данные из файла")

End Try

End Sub

'Процедура обработки одной строки (удаления символов из строки)

Sub Обработка(ByVal b As String, ByRef a As String)

Dim d, m, i, j As Short

m = CShort(a.Length) 'длина строки a

d = CShort(b.Length) 'длина строки b

For i = 0 To CShort(d-1) Step 2'перебор нечетных симв. строки b

j = 0

Do While j < m 'перебор всех символов строки a

If a.Substring(j, 1) = b.Substring(i, 1) Then

a = a.Remove(j, 1) 'пока симв. совпад.-удаляем из a

m = CShort(m - 1) 'уменьшаем длину строки a

Else

j = CShort(j + 1) 'переход к след.символу строки a

End If

Loop

Next i

End Sub

Function vvod(ByVal T As TextBox) As String

Return T.Text

End Function

Sub vivod(ByVal z As String, ByRef t As TextBox)

If z.Length <> 0 Then

t.Text = z

Else

t.Text = "Все удалено"

End If

End Sub

'Кнопка чтения второй строки из второго файла

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

ByVal e As System.EventArgs) Handles Button1.Click

Dim ПутьФ2 As String = ""

ПутьФ2 = vvod(TextBox5)

readfile(ПутьФ2, b)

vivod(b, TextBox3)

End Sub

'Кнопка чтения 1 файла и запись обработанных строк в третий файл

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e _

As System.EventArgs) Handles Button3.Click

Dim ПутьФ3 As String = ""

Dim ПутьФ1 As String = ""

ПутьФ1 = vvod(TextBox1)

ПутьФ3 = vvod(TextBox6)

Resh(ПутьФ1, ПутьФ3, b, ListBox1)

End Sub

'Кнопка чтения нового(третьего) файла и вывод его на форму

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

ByVal e As System.EventArgs) Handles Button2.Click

Dim ПутьФ3 As String = ""

ПутьФ3 = vvod(TextBox6)

Dim Rez As String = ""

readfile(ПутьФ3, Rez)

vivod(Rez, TextBox4)

End Sub

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

ByVal e As System.EventArgs) Handles Button6.Click

End

End Sub

End Class

Рис. 4.10-5

  1. Выполнение приложения и получение результатов

Выполнить проект и получить результаты на рис. 4.10-6.

Рис. 4.10-6

  1. Доказательство правильности работы программы

Из всех строк исходного первого файла удалены символы, стоящие на 1 и 3 позициях строки b из второго файла (т.е. удалились буквы a и d), причем из третьей строки удалены все символы и в измененный файл записана пустая строка.

Соседние файлы в папке Лабораторный_практиеум-Раздел4-Информатика-210700