Реферат Поиск файла по маске
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Государственное образовательное учреждение
ВПО «Уральский государственный технический университет – УПИ»
Кафедра «Радиоэлектроника информационных систем»
ПОИСК ФАЙЛА ПО МАСКЕ
Пояснительная записка к курсовой работе по курсу «Информатика»
Екатеринбург
2008
Содержание
1. Введение. 3
2. Постановка задачи. 4
3. Руководство пользователя. 5
4. Руководство программиста. 11
5. Код программы.. 12
6. Блок-схема. 16
7. Заключение. 17
8. Список литературы.. 18
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,
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(
'вывод найденных
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
message = "Не унывай... В следующий раз определённо повезёт"
r = MsgBox(message, vbRetryCancel + vbCritical, "Неудача :(")
If r = vbRetry Then
Resume
Else
DrvBox.Drive = DrvBox.List(1)
Resume Next
End If
Else
Call MsgBox(Err.Description, vbOKOnly + vbExclamation)
Resume Next
End If
End Sub
Private Sub Form_Load()
InSearch = False
AbSearch = False
End Sub
'список папок
Private Sub DirBox_Change()
FileBox.Path = DirBox.Path
End Sub
'список файлов
Private Sub FileBox_Click()
FileBox.Path = DirBox.Path
End Sub
'ввод имени файла
Private Sub TxtVvod_Change()
FileBox.Pattern = TxtVvod.Text
End Sub
'открытие папки с файлами
Private Sub ListVivod_DblClick()
Dim MyCmd As String
Dim RetVal
MyCmd = "explorer.exe " + DirBox.List(DirBox.ListIndex)
RetVal = Shell(MyCmd, 1)
End Sub
'о программе
Private Sub mnuAbout_Click()
MsgBox "Программа для поиска файлов по маске" & vbNewLine & "Автор: Полякова Мариша", vbInformation, "О программе"
End Sub
'помощь
Private Sub mnuHelp_Click()
Dim nRet As Integer
'SendKeys "{F1}"
nRet = OSWinHelp(Me.hwnd, App.HelpFile, 3, 0)
End Sub
'выход
Private Sub mnuExit_Click()
Unload Me
End Sub
6. Блок-схема
7. Заключение
В процессе проделанной работы я выучила основы работы в Visual Basic 6.0, на котором и была создана моя программа. В итоге я получила готовы ехе-файл для запуска «Поисковика». Также приложением к нему идет справка для пользотвателей.
8. Список литературы
1. MSDN Library Visual Studio 6.0 release;
2. http://forums.aspfree.com/visual-basic-programming-38/help-with-vb-code-to-monitor-a-folder-size-31533.html;
3. http://www.vb-helper.com/howto_dirsize.html;
4. http://www.codeguru.com/forum/showthread.php?t=343155;
5. http://www.codenewsgroups.net/group/microsoft.public.vb.general.discussion/topic17000.aspx;
6. http://www.vb-helper.com/howto_file_times_fso.html.