Поиск файла по маске

Автор работы: Пользователь скрыл имя, 05 Апреля 2011 в 23:43, курсовая работа

Описание работы

Целью моей курсовой работы является создание программы для поиска файлов по маске. Данная программа должна быть проста в применении. Также для неопытных пользователей необходимо создать справку.

Файлы: 1 файл

Курсовая работа_Информатика_Поиск файла по маске.doc

— 309.50 Кб (Скачать файл)

МИНИСТЕРСТВО  ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение

ВПО «Уральский государственный технический  университет – УПИ» 

Кафедра «Радиоэлектроника информационных систем» 
 
 

                                                                                    
 

           
 
 
 
 
 

ПОИСК ФАЙЛА  ПО МАСКЕ 

Пояснительная записка к курсовой работе по курсу «Информатика» 
 

 

Екатеринбург

2008

Содержание

 

1. Введение

     Выбранная мною в  качестве курсовой работы программа  хоть и не отличается какими-либо функциями, но я постаралась сделать её максимально удобной пользователю и эффективной в работе. Для разработки программы я выбрала среду программирования Microsoft Visual Basic 6.0, так как она является достаточно простой и в то же время функциональной именно для меня. С этой средой программирования я ознакомилась на лекциях по информатике. И поэтому выбрала именно её, чтобы укрепить знания, полученные на лекциях.

 

2. Постановка задачи

     Целью моей курсовой работы является создание программы для поиска файлов по маске. Данная программа должна быть проста в применении. Также для неопытных пользователей необходимо создать справку.

     Для решения поставленной задачи я выбрала  среду программирования Microsoft Visual Basic 6.0, как среду мне более-менее известную. В качестве помощи мною были использованы ресурсы Интернет и MSDN.

     Для создания программы поиска файла  по имени создаем форму. На ней располагаем текстовое поле, флажок, список дисков, список каталогов, список файлов, выпадающее меню, кнопку поиска и label для вывода количества найденных файлов. В текстовом поле необходимо ввести имя искомого файла и его тип. По умолчанию программа ищет файлы в каталоге, где располагается. Если же нужно изменить место поиска, то необходимо снять флажок «Включать в поиск подкаталоги?». После выбора нужной директории следует нажать кнопку «Поискать…». Во время поиска «крутится» счетчик найденных файлов, кнопка поиска меняет свою надпись на «Стоп», если нажать ее, остановится поиск и появится окно со списком путей найденных файлов, а под ним количество найденных файлов. Если щелкнуть дважды по найденному файлу, программа отображает папку, в которой находится файл в окне проводника Windows.

 

3. Руководство  пользователя

     Для запуска программы нужно дважды щелкнуть по файлу Поисковик.exe. После запуска появится окно программы (Рис. 1). 
 

 

 
 
 
 
 
 
 
 
 
 
 
 

     По  умолчанию программа переходит  в папку, в которой она находится. Выберите диск и папку, в которых вы хотите осуществить поиск (Рис. 2) 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     Введите имя файла и нажмите на кнопку «Поискать…», начнется поиск. Если поиск производится по маске, то найденных файлов может быть очень много, чтобы не тратить время, поиск можно остановить, нажав клавишу «Стоп». Во время поиска окно программы выглядит следующим образом (Рис.4).  

 

       
 

 

     Результат поиска представлен на Рис. 5. 

  
 

 

      Щелкнув дважды по строчке  с путем файла, вы перейдете к найденным файлам (Рис.6) 

 

 

     В программе предусмотрены «Горячие клавиши»: Справка - F1

 

4. Руководство программиста

     Программа «Поисковик» особых условий функционирования не имеет. Характеристики программы: 
- Размер: 32 768 байт; 
- Версия: 1.0.0.0.

     Входной характеристикой программы является маска файла, по которой производится поиск самого файла. Выходными данными является список файлов, который соответствуют введенной маске.

     Также в программе использовано сообщение  об ошибке. Оно показывает, что на выбранном диске невозможно произвести поиск файла по введенной маске.

     Алгоритм  и исходный код программы предоставлены далее.

 

          5. Код программы

'вывод справки

Private Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA" (ByVal hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any)

Dim ltxt As String 

Option Explicit

Dim SearchFlag As Integer

Dim InSearch As Boolean

Dim AbSearch As Integer

'поиск с поддиректориями  или без

Private Sub ChkPoddir_Click()

End Sub

Private Sub CmdPoisk_Click()

DirBox.Visible = False

FileBox.Visible = False

ListVivod.Visible = False 

' Инициалзация  поиска, затем рекурсивный поиск

Dim FirstPath As String, DirCount As Integer, NumFiles As Integer

Dim result As Integer

If InSearch = False Then

    LblCount.Caption = "0"

    InSearch = True

    AbSearch = False

    CmdPoisk.Caption = "Стоп" 

    ' Укажите  dirBox.Path если он отличается от  текущей директории, тогда начинать  поиск

    If DirBox.Path <> DirBox.List(DirBox.ListIndex) Then

        DirBox.Path = DirBox.List(DirBox.ListIndex)

        Exit Sub         ' Выход, чтобы пользователь смог посмотреть перед поиском

    End If

    ListVivod.Clear 

    FileBox.Pattern = TxtVvod.Text

    FirstPath = DirBox.Path

    DirCount = DirBox.ListCount

    ' Начало рекурсивного поиска по директориям

    NumFiles = 0                       ' Сброс индикатора найденных  файлов

    result = DirDiver(FirstPath, DirCount, "")

    FileBox.Path = DirBox.Path

    DirBox.Visible = True

    FileBox.Visible = True

    ListVivod.Visible = True

    CmdPoisk.Enabled = True

    InSearch = False

    CmdPoisk.Caption = "Искать!"

    FrmVivod.Caption = "А я нашёл, а я нашёл!"

Else

    AbSearch = True

    InSearch = False

    CmdPoisk.Caption = "Искать!"

    FrmVivod.Caption = "Тут просто белый квадрат..."

End If

   End Sub 

Private Function DirDiver(NewPath As String, DirCount As Integer, BackUp As String) As Integer

'  Рекурсивный  поиск директорий из NewPath

'  NewPath ищется  в этой рекурсии

'  BackUp начало  этой рекурсии

'  DirCount это  колличество поддиректроий в  этой директории.

Static FirstErr As Integer

Dim DirsToPeek As Integer, AbandonSearch As Integer, ind As Integer

Dim OldPath As String, ThePath As String, entry As String

Dim RetVal As Integer

    SearchFlag = True           ' Установка флага чтобы пользователь смог прервать.

    DirDiver = False            ' Установите True если есть ошибка.

    RetVal = DoEvents()         ' Проверка  событий.

    If SearchFlag = False Then

        DirDiver = True

        Exit Function

    End If

    On Local Error GoTo DirDriverHandler

    DirsToPeek = DirBox.ListCount                  ' Сколько директорий ниже этой?

    Do While DirsToPeek > 0 And SearchFlag = True

        If ChkPoddir.Value = 1 Then

        OldPath = DirBox.Path                      ' Сохранение старого пути для новой рекурсии.

        DirBox.Path = NewPath

        If DirBox.ListCount > 0 Then

            ' Идти к нижнему узлу.

            DirBox.Path = DirBox.List(DirsToPeek - 1)

            AbandonSearch = DirDiver((DirBox.Path), DirCount%, OldPath)

        End If

        '  Шаг на один уровень вверх  в директории.

        End If

        DirsToPeek = DirsToPeek - 1

        If AbSearch = True Or AbandonSearch = True Then Exit Function

    Loop

   

    ' Вызов  функции для перечисления файлов

    If FileBox.ListCount Then

        If Len(DirBox.Path) <= 3 Then             ' Проверка 2 bytes/character.

            ThePath = DirBox.Path                 ' Если корневой уровень, оставить как есть...

        Else

            ThePath = DirBox.Path + "\"           ' В противном случае поместить "\" перед именем файла.

        End If

        For ind = 0 To FileBox.ListCount - 1      ' Добавление соответствующих файлов  в этой директории в list box.

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

            entry = ThePath

            If Len(entry) > 30 Then entry = Left(entry, 30)

            entry = entry + "...\"

            entry = entry + FileBox.List(ind)

            'вывод найденных

            ListVivod.AddItem entry

            ' кол-во найденных

            LblCount.Caption = Str(Val(LblCount.Caption) + 1)

        Next ind

       

    End If

     

    If BackUp <> "" Then        ' Если это высшая директория, переместите ее.

        DirBox.Path = BackUp

    End If

    Exit Function 

DirDriverHandler:

    If Err = 7 Then             ' Если происходят ошибки памяти, примите что list box должен быть полным.

        DirDiver = True         ' Создает  Msg и устанавливает обратное значение AbandonSearch.

        MsgBox "You've filled the list box. Abandoning search..."

        Exit Function           ' выходная процедура восстанавливает Err на 0.

    Else                        ' В противном случае дисплейное  сообщение ошибки и выход.

        MsgBox Error

        End

    End If

  

    End Function

  

'выбор диска

Private Sub DrvBox_Change()

    On Error GoTo errorhandler

    'обновить  путь окна папок для этого  диска

    DirBox.Path = DrvBox.Drive

    Exit Sub

'обработка ошибки  диска, если устройство не готово

errorhandler:

    Dim message As String

    If Err.Number = 68 Then

        Dim r As Integer

Информация о работе Поиск файла по маске