Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Примеры решения задач. Пример 1. Разработать приложение для обработки текстового файла






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

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

2. Процедура вывода текстового файла в Listbox.

3. Функция, определяющая количество строк текстового файла.

4. Функция, находящая самую длинную строку текстового файла.

5. Процедура слияния двух текстовых файлов.

6. Процедура сортировки текстового файла по алфавиту.

7. Процедура создания нового текстового файла из строк исходного, в которых есть числа.

8. Процедура, которая в текстовом файле слова-палиндромы записывает с заглавной буквы.

9. Процедура удаления из текстового файла строк, которые не содержат заданное слово.

В основной программе создать меню. Для задания имен файлов использовать компоненты SaveFileDialog и OpenFileDialog.

 


Основная программа

Public Class Form1

Dim Fn As String

Private Sub ВыходToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ВыходToolStripMenuItem.Click

End

End Sub

 

Private Sub СозданиеФайлаToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СозданиеФайлаToolStripMenuItem.Click

SaveFileDialog1.ShowDialog()

Fn = SaveFileDialog1.FileName

Создание_с_клавиатуры(Fn)

End Sub

 

Private Sub ПросмотрФайлаToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ПросмотрФайлаToolStripMenuItem.Click

OpenFileDialog1.ShowDialog()

Fn = OpenFileDialog1.FileName

Печать_файла(Fn, listbox1)

End Sub

 

Private Sub КоличествоСтрокToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles КоличествоСтрокToolStripMenuItem.Click

If Fn = " " Then

OpenFileDialog1.ShowDialog()

Fn = OpenFileDialog1.FileName

End If

TextBox1.Text = " В файле количество строк равно " + Str(kolstrok(Fn))

End Sub

 

Private Sub ДлиннаяСтрокаToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ДлиннаяСтрокаToolStripMenuItem.Click

Dim Smax As String

If Fn = " " Then

OpenFileDialog1.ShowDialog()

Fn = OpenFileDialog1.FileName

End If

Smax = DlinStroka(Fn)

TextBox1.Text = " Самая длинная строка файла: " + Smax

End Sub

 

Private Sub СлияниеФайловToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СлияниеФайловToolStripMenuItem.Click

'К содержимому более короткого файла добавить содержимое более длинного файла.

' Файлы сравниваются по количеству строк. Предполагается, что оба файл уже созданы.

Dim Fn1, Fn2 As String

MsgBox(" Задайте имя 1-го файла")

OpenFileDialog1.ShowDialog()

Fn1 = OpenFileDialog1.FileName

 

MsgBox(" Задайте имя 2-го файла")

OpenFileDialog1.ShowDialog()

Fn2 = OpenFileDialog1.FileName

 

Добавить(Fn1, Fn2)

Печать_файла(Fn1, ListBox1)

Печать_файла(Fn2, ListBox2)

 

End Sub

 

Private Sub СортировкаToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СортировкаToolStripMenuItem.Click

 

If Fn = " " Then

OpenFileDialog1.ShowDialog()

Fn = OpenFileDialog1.FileName

End If

СортировкаСтрок(Fn)

Печать_файла(Fn, ListBox3)

End Sub

 

Private Sub СозданиеНовогоФайлаToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СозданиеНовогоФайлаToolStripMenuItem.Click

' В новый файл переписать те строки исходного файла, в которых встречаются числа

Dim Fn2 As String

If Fn = " " Then

MsgBox(" Задайте имя 1-го файла")

OpenFileDialog1.ShowDialog()

Fn = OpenFileDialog1.FileName

End If

MsgBox(" Задайте имя 2-го файла")

SaveFileDialog1.ShowDialog()

Fn2 = SaveFileDialog1.FileName

 

Новыйфайл(Fn, Fn2)

If FileLen(Fn2) = 0 Then

MsgBox(" 2-й файл пуст, т.к. в 1-м файле нет чисел")

Else

Печать_файла(Fn2, ListBox3)

End If

 

End Sub

 

Private Sub КорректировкаФайлаToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles КорректировкаФайлаToolStripMenuItem.Click

'В тексте, записанном в файле, все слова - палиндромы записать с заглавной буквы

If Fn = " " Then

MsgBox(" Задайте имя 1-го файла")

OpenFileDialog1.ShowDialog()

Fn = OpenFileDialog1.FileName

End If

Корректировка(Fn)

Печать_файла(Fn, ListBox2)

 

End Sub

 

Private Sub УдалениеСтрокиToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles УдалениеСтрокиToolStripMenuItem.Click

' Удалить из файла строки, содержащие заданное слово

Dim slovo As String

If Fn = " " Then

MsgBox(" Задайте имя файла")

OpenFileDialog1.ShowDialog()

Fn = OpenFileDialog1.FileName

End If

slovo = InputBox(" Задайте слово")

Удаление(Fn, slovo)

Печать_файла(Fn, ListBox3)

End Sub

End Class

Модуль с подпрограммами обработки файла

Module Module1

Public S As String

Public Sub Создание_с_клавиатуры(ByVal Fn As String)

Dim i, n As Integer

FileOpen(1, Fn, OpenMode.Output)

n = Val(InputBox(" Задайте количество строк"))

For i = 1 To n

S = InputBox(" Введите строку")

PrintLine(1, S)

Next

FileClose()

End Sub

Public Sub Печать_файла(ByVal Fn As String, ByRef lst As ListBox)

lst.Items.Clear()

FileOpen(1, fn, OpenMode.Input)

Do Until EOF(1)

S = LineInput(1)

lst.Items.Add(S)

Loop

FileClose()

End Sub

Public Function kolstrok(ByVal Fn As String) As Integer

'Вычисление количества строк в файле

Dim kol As Integer

kol = 0

FileOpen(1, Fn, OpenMode.Input)

Do Until EOF(1)

S = LineInput(1): kol = kol + 1

Loop

FileClose()

Return kol

End Function

 

Public Function DlinStroka(ByVal Fn As String) As String

'Нахождение самой длинной строки

Dim Smax As String

Smax = " "

FileOpen(1, Fn, OpenMode.Input)

Do Until EOF(1)

S = LineInput(1)

If Len(S) > Len(Smax) Then Smax = S

Loop

FileClose()

Return Smax

End Function

 

Public Sub Добавить(ByVal Fn1 As String, ByVal Fn2 As String)

Dim k1, k2 As Integer

 

k1 = kolstrok(Fn1) 'Количество строк в 1-м файле

k2 = kolstrok(Fn2) 'Количество строк во 2-м файле

If k1 = k2 Then

MsgBox(" В файлах одинаковое количество строк")

Else

If k1 > k2 Then

FileOpen(1, Fn1, OpenMode.Input)

FileOpen(2, Fn2, OpenMode.Append)

Do Until EOF(1)

S = LineInput(1)

PrintLine(2, S)

Loop

FileClose(1, 2)

Else

FileOpen(2, Fn2, OpenMode.Input)

FileOpen(1, Fn1, OpenMode.Append)

Do Until EOF(2)

S = LineInput(2)

PrintLine(1, S)

Loop

FileClose(1, 2)

End If

End If

End Sub

 

Public Sub СортировкаСтрок(ByVal Fn As String)

'Сортировка файла по алфавиту

Dim St(), buf As String 'массив строк, прочитанных из файла

Dim n, i, j As Integer

FileOpen(1, Fn, OpenMode.Input)

n = 0

Do Until EOF(1)

S = LineInput(1)

ReDim Preserve St(n)

St(n) = S

n = n + 1

Loop

n = n - 1

FileClose()

For i = 0 To n - 1

For j = 0 To n - 1 - i

If StrComp(St(j), St(j + 1), CompareMethod.Text) = 1 Then

buf = St(j)

St(j) = St(j + 1)

St(j + 1) = buf

End If

Next

Next

FileOpen(1, Fn, OpenMode.Output)

For i = 0 To n

PrintLine(1, St(i))

Next

FileClose(1)

End Sub

 

Public Sub Новыйфайл(ByVal fn1 As String, ByVal Fn2 As String)

Dim slova() As String, i As Integer, flag As Boolean

FileOpen(1, fn1, OpenMode.Input)

FileOpen(2, Fn2, OpenMode.Output)

Do Until EOF(1)

S = LineInput(1)

flag = False 'предположение, что в строке нет чисел

slova = Split(S)

For i = 0 To UBound(slova)

If slova(i) = Trim(Str(Val(slova(i)))) Then flag = True

Next

If flag = True Then PrintLine(2, S)

Loop

FileClose()

End Sub

 

Public Sub Корректировка(ByVal fn As String)

Dim Slova() As String, i As Integer

FileOpen(1, fn, OpenMode.Input)

FileOpen(2, fn + " 1", OpenMode.Output)

Do Until EOF(1)

S = LineInput(1)

Slova = Split(S)

For i = 0 To UBound(Slova)

If UCase(Slova(i)) = StrReverse(UCase(Slova(i))) Then

Slova(i) = StrConv(Slova(i), VbStrConv.ProperCase)

End If

Next

S = Join(Slova)

PrintLine(2, S)

Loop

FileClose()

Kill(fn)

Rename(fn + " 1", fn)

End Sub

 

Public Sub Удаление(ByVal fn As String, ByVal slovo As String)

FileOpen(1, fn, OpenMode.Input)

FileOpen(2, fn + " 1", OpenMode.Output)

slovo = " " + slovo + " "

Do Until EOF(1)

S = LineInput(1)

S = " " + S + " "

 

If InStr(S, slovo) = 0 Then

S = Trim(S)

PrintLine(2, S)

End If

Loop

FileClose()

Kill(fn)

Rename(fn + " 1", fn)

End Sub

End Module

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.