Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Примеры решения задач. Пример 1. Разработать приложение для обработки текстового файла ⇐ ПредыдущаяСтр 2 из 2
Пример 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
|