Автор работы: Пользователь скрыл имя, 05 Апреля 2011 в 23:43, курсовая работа
Целью моей курсовой работы является создание программы для поиска файлов по маске. Данная программа должна быть проста в применении. Также для неопытных пользователей необходимо создать справку.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Государственное образовательное учреждение
ВПО
«Уральский государственный технический
университет – УПИ»
Кафедра
«Радиоэлектроника
ПОИСК ФАЙЛА
ПО МАСКЕ
Пояснительная
записка к курсовой работе по курсу «Информатика»
Екатеринбург
2008
Выбранная мною в качестве курсовой работы программа хоть и не отличается какими-либо функциями, но я постаралась сделать её максимально удобной пользователю и эффективной в работе. Для разработки программы я выбрала среду программирования Microsoft Visual Basic 6.0, так как она является достаточно простой и в то же время функциональной именно для меня. С этой средой программирования я ознакомилась на лекциях по информатике. И поэтому выбрала именно её, чтобы укрепить знания, полученные на лекциях.
Целью моей курсовой работы является создание программы для поиска файлов по маске. Данная программа должна быть проста в применении. Также для неопытных пользователей необходимо создать справку.
Для решения поставленной задачи я выбрала среду программирования Microsoft Visual Basic 6.0, как среду мне более-менее известную. В качестве помощи мною были использованы ресурсы Интернет и MSDN.
Для создания программы поиска файла по имени создаем форму. На ней располагаем текстовое поле, флажок, список дисков, список каталогов, список файлов, выпадающее меню, кнопку поиска и label для вывода количества найденных файлов. В текстовом поле необходимо ввести имя искомого файла и его тип. По умолчанию программа ищет файлы в каталоге, где располагается. Если же нужно изменить место поиска, то необходимо снять флажок «Включать в поиск подкаталоги?». После выбора нужной директории следует нажать кнопку «Поискать…». Во время поиска «крутится» счетчик найденных файлов, кнопка поиска меняет свою надпись на «Стоп», если нажать ее, остановится поиск и появится окно со списком путей найденных файлов, а под ним количество найденных файлов. Если щелкнуть дважды по найденному файлу, программа отображает папку, в которой находится файл в окне проводника Windows.
Для
запуска программы нужно дважды
щелкнуть по файлу Поисковик.exe. После
запуска появится окно программы (Рис.
1).
По
умолчанию программа переходит
в папку, в которой она находится. Выберите
диск и папку, в которых вы хотите осуществить
поиск (Рис. 2)
Также
можно осуществлять поиск не только
в папке, но и в папках, которые находятся
в ней. Для этого нужно поставить галочку
(Рис. 3).
Введите
имя файла и нажмите на кнопку
«Поискать…», начнется поиск. Если поиск
производится по маске, то найденных файлов
может быть очень много, чтобы не тратить
время, поиск можно остановить, нажав клавишу
«Стоп». Во время поиска окно программы
выглядит следующим образом (Рис.4).
Результат поиска представлен
на Рис. 5.
Щелкнув дважды по строчке
с путем файла, вы перейдете к
найденным файлам (Рис.6)
В
программе предусмотрены «
Программа
«Поисковик» особых условий функционирования
не имеет. Характеристики программы:
- Размер: 32 768 байт;
- Версия: 1.0.0.0.
Входной характеристикой программы является маска файла, по которой производится поиск самого файла. Выходными данными является список файлов, который соответствуют введенной маске.
Также в программе использовано сообщение об ошибке. Оно показывает, что на выбранном диске невозможно произвести поиск файла по введенной маске.
Алгоритм и исходный код программы предоставлены далее.
'вывод справки
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 '
Добавление соответствующих
'сокращение выводимого пути
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 и устанавливает обратное
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