Разработка приложения для поиска файлов
Рассмотрение основных подходов к решению задачи поиска файлов, разработка и оценка модели приложения с учетом текущих требований к программному обеспечению. Выбор средств разработки и архитектура приложения. Программа и методика испытаний приложения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.05.2023 |
Размер файла | 448,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Оглавление
приложение файл поиск программный
Введение
1. Алгоритмическая часть
1.1 Назначение в области применения
1.1.1 Содержательная формулировка задачи
1.1.2 Математическая формулировка задачи
1.2 Поиск аналогов (программы)
2. Программный модуль
2.1 Выбор средств разработки
2.2 Архитектура приложения
2.3 Программа и методика испытаний
2.4 Тестирование приложения
2.5 Спецификация
Заключение
Список использованных источников
Приложение А Листинг
Приложение Б Руководство пользователя
Введение
С момента своего появления программирование прошло несколько этапов развития. Первоначально программирование выполнялось с помощью машинного языка, что отнимало много времени и требовало глубокого понимания базового оборудования. С появлением языков программирования высокого уровня разработка программного обеспечения стала намного проще и доступнее.
С годами языки программирования развивались, становясь все более мощными и удобными для пользователя. Сегодня программирование -- это междисциплинарная область, объединяющая информатику, математику и инженерию для создания инновационных и эффективных программных решений. Текущее состояние программирования характеризуется широким использованием языков программирования высокого уровня, сред и инструментов, которые делают разработку программного обеспечения более быстрой и эффективной.
В центре внимания этой работы - разработка приложения для поиска файлов. Этот вопрос актуален в связи с быстрым развитием технологий и увеличением объема хранимых данных. В результате важность удобных и эффективных инструментов для поиска нужных файлов только возрастает. В данной работе будут рассмотрены основные подходы к решению задачи поиска файлов, а также разработана и оценена модель приложения с учетом текущих требований к программному обеспечению.
С быстрым темпом технического прогресса и увеличением объема хранимых данных потребность в удобных и эффективных инструментах для поиска необходимых файлов становится все более актуальной. Это подчеркивает актуальность разработки приложения для поиска файлов. Мной основное внимание уделяется изучению различных подходов, которые можно использовать для решения проблемы нахождения файлов, и разработке модели приложения, учитывающей текущие требования к программному обеспечению. Будут подробно проанализированы и обсуждены основные подходы к решению задачи поиска файлов, а также проведена тщательная оценка разработанной модели приложения.
1. Алгоритмическая часть
Программирование - это процесс создания компьютерных программ, которые могут выполнять различные задачи. Программисты используют языки программирования, такие как Python, Java, C++ и другие, чтобы написать код, который описывает действия, которые должен выполнить компьютер. Этот код затем компилируется или интерпретируется в машинный код, который может выполняться компьютером.
В процессе программирования разработчики решают различные задачи, такие как обработка данных, анализ информации, автоматизация задач и создание графического интерфейса пользователя. Программирование также может включать в себя разработку веб-сайтов, мобильных приложений, игр и многого другого.
1.1 Назначение в области применения
Разработка программного обеспечения - это процесс создания программ, которые выполняют различные функции и удовлетворяют потребности пользователей. Это может включать в себя разработку операционных систем, приложений для мобильных устройств, банковских систем, веб-приложений и т.д. Она включает в себя несколько этапов, таких как анализ потребностей, проектирование, реализацию, тестирование и поддержку. На каждом этапе разработчики используют различные инструменты, технологии и методологии, чтобы создать качественное и эффективное ПО.
Цель разработки таких приложений - упростить жизнь пользователей, предоставить им удобный инструмент для решения различных задач, будь то работа с текстом, файлами, графикой, сетью или другими областями. Приложения, разработанные под Windows, должны удовлетворять требованиям пользователей, быть простыми в использовании и надежными в работе. Например, программы для поиска файлов в операционной системе.
Программа по поиску файлов является важным компонентом операционных систем, таких как Windows. Ее назначение состоит в том, чтобы помочь пользователям находить и доставать файлы, которые они ищут, в большом объеме информации, хранящемся на жестком диске или других устройствах хранения данных.
Основным принципом работы программы по поиску файлов является использование индексирования. Это процесс, в ходе которого создается база данных, содержащая информацию о всех файлах и папках на диске. Когда пользователь выполняет поиск, программа по поиску файлов ищет в этой базе данных файлы, соответствующие критериям поиска.
Программы для поиска файлов также могут предлагать расширенные возможности, такие как фильтрация результатов поиска по типу файла, дате создания или размеру, а также возможность искать текст внутри файлов. Это делает поиск более точным и позволяет пользователям находить нужные файлы быстрее. Кроме того, программы для поиска файлов могут также поддерживать поиск в нескольких папках и дисках одновременно, что существенно упрощает процесс поиска для пользователя.
В общем, программы для поиска файлов играют важную роль в операционных системах, таких как Windows, и предоставляют пользователям быстрый и эффективный способ нахождения необходимых данных в системе.
1.1.1 Содержательная формулировка задачи
Для рассмотрения и анализа процесса разработки приложения по поставленной цели можно использовать основы алгоритмизации, а именно составление схем - абстракции какого-либо процесса или системы, наглядно отображающей наиболее значимые части. Для записи алгоритма определены несколько правил, которых необходимо придерживаться:
1. каждый алгоритм должен иметь имя, которое раскрывает его смысл;
2. необходимо обозначить начало и конец алгоритма;
3. описать входные и выходные данные;
4. указать команды, которые позволяют выполнять определенные действия над выделенными данными.
Рисунок 1 Схема разработки приложения
Например, на рисунке 1 изображена обобщенная схема разработки программного приложения.
Таким образом, данная схема отображает все основные этапы разработки, но не является достаточно точной, чтобы ограничиться единственной схемой - для каждого блока должна быть создана отдельная блок-схема, учитывающая каждый этап соответствующего блока.
При анализе требований необходимо определить требования верхнего уровня [1], а также оценить их с точки зрения безопасности. Разработчик также должен принимать участие в определении требований, которым должно соответствовать приложение.
После определения и анализа требований, согласно рисунку 1, необходимо приступать к этапу проектирования, на котором определяется структура приложения, план его работы и интерфейс.
В процессе оценки безопасности устанавливают, как архитектурное проектирование системы предотвращает аномальное поведение ПО при появлении отказных ситуаций для системы. Уровень ПО назначают в соответствии с наиболее серьезной категорией возможных отказных ситуаций.
Далее наступает этап кодирования, то есть написания кода программы согласно выявленным требованиям и проектируемой структуры приложения. Процесс кодирования информации производится ручным способом с помощью ввода информации в ЭВМ в виде буквенно-цифрового текста на естественном языке. При кодировании требуется хранение в памяти ЭВМ словаря, в котором каждому слову соответствует определенный код. По этому словарю машина сама кодирует текст.
И, согласно рисунку 1, последним этапом является интеграция, то есть внедрение приложения или системы в эксплуатацию, а также его поддержка.
Для более детального рассмотрения подпроцессов поставленной цели и задач следует составить блок-схему по каждому отдельному этапу, указанному на рисунке 1. Это необходимо для наилучшего понимания работы, структуры приложения, а также для составления технического задания.
1.1.2 Математическая формулировка задачи
Математическая формулировка задачи разработки программы поиска файлов в системе включает в себя процесс эффективного и точного преобразования входных данных в выходные. Входные данные в этом случае относятся к критериям поиска, таким как имя файла, тип, дата создания, размер и т. д., которые указывает пользователь. Выходные данные, с другой стороны, являются совпадающими файлами, которые соответствуют указанным критериям. Задача программы состоит в том, чтобы эффективно и точно выполнить это сопоставление, принимая во внимание сложный характер и организацию данных, хранящихся на жестком диске.
Исходя из вышесказанного, математическая модель будет иметь вид (формула 1.1):
(1.1)
где оператор разрабатываемое решение;
значения входных параметров;
выходные значения параметров;
множества допустимых значений входных и выходных параметров для моделируемого объекта.
Для достижения этой цели необходимо использовать различные методы алгоритмов и структур данных. К ним относятся алгоритмы индексации, поиска и сортировки, которые помогают обрабатывать входные данные и получать желаемые результаты. Использование этих алгоритмов и методов имеет решающее значение для обеспечения эффективного и действенного выполнения программой своих функций, особенно при работе с большими объемами данных, хранящихся на жестком диске.
Например, использование алгоритмов индексирования помогает сократить объем данных, которые необходимо искать, что ускоряет процесс поиска. Точно так же алгоритмы сортировки помогают упорядочивать данные в определенном порядке, облегчая поиск нужных файлов. Кроме того, алгоритмы поиска помогают находить конкретные файлы, соответствующие критериям поиска, что обеспечивает точность результатов.
В заключение отметим, что математическая постановка задачи разработки программы поиска файлов в системе включает сложный процесс преобразования входных данных в выходные. Этот процесс включает использование алгоритмических методов и методов структур данных для эффективного и точного выполнения поиска и получения желаемых результатов.
1.2 Поиск аналогов
Поиск файлов в системе является важной составной частью любой операционной системы (включая Widows), из чего следует, что на сегодняшний день разработано множество различных программ, позволяющих найти необходимый элемент на диске.
Поиск через проводник (рисунок 1.1) является наиболее популярным и основным способом найти необходимый документ. Встроенный проводник обладает следующими функциями:
- поиск документа по имени;
- поиск необходимого файла по расширению;
- поиск документа в определенной директории.
Рисунок 1.1 Поиск через проводник
Другим популярным аналогом является приложение Hain (рисунок 1.2). Hain -- это портативная программа запуска с открытым исходным кодом для устройств Microsoft Windows, которая является быстрой и расширяемой с помощью плагинов. Обратной стороной является нехватка оперативной памяти программы.
Hain основан на Electron, что объясняет большой размер загружаемой программы и размер на диске. Он портативен, и можно запускать его из любого места без установки. Как только начать набирать текст, результаты отобразятся в интерфейсе программы. Но стоит учитывать, что Hain поддерживает нечеткий поиск, поэтому он может найти результаты с ошибками. Основные функции программы:
- быстрый запуск сочетанием клавиш Alt + Пробел;
- поиск необходимого файла по расширению и имени;
- возможность персонализации с помощью плагинов.
- встроенный калькулятор;
- возможность ввести URL-адрес, чтобы загрузить его в веб-браузер;
Рисунок 1.2 Интерфейс приложения Hain
Оба вышеупомянутых решения не поддерживают поиск файлов по содержимому. Таким образом, можно видеть, что разрабатываемый проект имеет отличительную черту - поиск необходимого документа по внутреннему содержимому. Сравнение описанных выше программ представлено таблицей 1.1.
Таблица 1.1
Сравнительная таблица аналогов
Критерии |
Встроенный поиск |
Hain |
Разрабатываемый проект |
|
Требует доступ в интернет |
Нет |
Нет |
Нет |
|
Поиск по расширению |
Нет |
Нет |
Да |
|
Поиск в определенной директории |
Да |
Нет |
Да |
|
Поиск по содержимому документа |
Нет |
Нет |
Да |
|
Операционная система |
Windows |
Windows |
Windows |
2. Программный модуль
2.1 Выбор средств разработки
Для разработки приложения необходимо выбрать один из языков программирования и реализовать поставленную цель при помощи использования специализированных библиотек. Для грамотного выбора средства разработки была создана сравнительная таблица 2.2.
Таблица 2.2
Сравнительная таблица сред разработки
Критерий |
Unity |
Windows Forms |
Unreal Engine |
|
Интуитивно понятный интерфейс |
Есть |
Есть |
Есть |
|
Поддерживаемые для разработки приложений операционные системы |
Windows, masOS, Linux, Android, IOS и др. |
Windows |
Windows, masOS, Linux, Android, IOS |
|
Необходимость устанавливать дополнительные пакеты |
Нет |
Есть |
Есть |
|
Поддерживаемый основной язык программирования |
С# |
Visual Basic, C# |
С++ |
|
Человеческий фактор: понимание разработчиком проекта среды разработки |
Максимальное, имеется опыт |
Максимальное, имеется опыт |
Минимальное, нет опыта |
Нельзя сказать, что любой из современных языков программирования содержит инструменты, необходимые для реализации поставленной задачи. По этой причине, выбор средства разработки может быть произведен исходя из связанных непосредственно с инструментами и конструкциями языка соображений.
Так как планируется разработать приложение для операционной системы Windows, следует выбрать язык программирования и среду разработки, поддерживающие данную операционную систему, а также набор компонентов, которые используются для программирования интерфейса, не забывая про возможность подключения необходимых библиотек и учитывая также опыт самого разработчика в работе с той или иной средой во избежание возможных проблем во время работы.
Принимая во внимание вышеперечисленные требования, стоит выбрать язык программирования С# и среду разработки Microsoft Visual Studio 2019, параллельно используя Windows Forms. Все указанные средства распространяются бесплатно и в то же время имеют весь необходимый для разработки приложения функционал.
2.2 Архитектура приложения
Архитектура приложения - это набор шаблонов проектирования (паттерны проектирования или готовые архитектурные решения - например, SOLID), а также методик решения различных задач. Проект реализован на архитектуре MVC.
Архитектура Model-View-Controller (MVC) -- широко используемый шаблон проектирования для создания масштабируемых и удобных в сопровождении приложений, включая приложения для поиска файлов. Архитектура приложения MVC обычно состоит из трех основных компонентов: модели, представления и контроллера. Концептуальная схема изображена на рисунке 2.3.
Рисунок 2.3 Концептуальная схема шаблона MVC
Модель представляет данные и логику приложения. В этом случае модель будет отвечать за управление и хранение информации о файлах и критериях поиска, таких как имя файла, тип, дата создания, размер и т. д. Модель также будет нести ответственность за выполнение фактического поиска и предоставление результаты контролеру.
Представление отвечает за представление данных пользователю. В этом случае представление будет отвечать за отображение критериев поиска, результатов поиска и любой другой информации о файлах, такой как имя файла, тип, дата создания, размер и т. д.
Контроллер действует как мост между моделью и представлением. Он получает ввод от пользователя (например, критерии поиска), отправляет ввод в модель для выполнения поиска, а затем получает результаты от модели и передает их в представление для отображения. Контроллер также обрабатывает взаимодействия с пользователем, такие как нажатие кнопок или ссылок, и выполняет все необходимые обновления Модели и/или Представления.
Разделяя обязанности по управлению данными, представлению и взаимодействию с пользователем, архитектура MVC позволяет разработчикам вносить изменения в один аспект приложения, не затрагивая другие. Это делает приложение более гибким, пригодным для повторного использования и более простым в обслуживании с течением времени. Кроме того, архитектура MVC поддерживает передовые методы проектирования программного обеспечения, такие как инкапсуляция, абстракция и разделение задач, что приводит к более организованному, модульному и тестируемому коду.
2.3 Программа и методика испытаний
Для проверки соответствия разработанного приложения требованиям, описанным при проектировании, как правило, используется документ «Программа и методика испытаний». Ниже приведены разделы, которые должны присутствовать в программе и методике испытания согласно ГОСТ 19.301.
Объект испытаний. Программное приложение для поиска файлов в системе Windows.
Цель испытаний. Провести тестирование и выявить возможные ошибки. Исправить их. Провести работу над возможными исключениями.
Проверка корректной работы приложения. Под корректной работой приложения понимается отсутствие неполадок, работа без сбоев, правильная реакция на команды пользователя. В качестве основной проверки используется установка и использование приложения на ЭВМ под операционной системой Windows.
Требования к программе могут быть сформулированы следующим образом:
1. программа должна устанавливаться и деинсталлироваться без возможных ошибок;
2. найденный файл должен четко соответствовать заданным критериям;
3. в списке найденных файлов должны отображаться все объекты, соответствующие критериям;
4. интерфейс программы должен адаптироваться к масштабированию окна.
Требования к программной документации. Программная документация содержит информацию о порядке использования приложения, а также основную информацию об используемых в приложении разделах.
Средства и порядок, методы испытаний. Для тестирования приложения используется механизм ручного тестирования. Результаты тестирования описаны и приведены в пункте 2.4. Тестирование приложения.
2.4 Тестирование приложения
Тестирование приложения состоит из нескольких этапов, из которых можно выделить:
1. тестирование установки;
2. тестирование запуска;
3. тестирование деинсталляции;
4. тестирование вычислений;
5. тестирование адаптации интерфейса к масштабированию окна.
Первые три этапа являются достаточно простыми в тестировании, однако и при них могут возникнуть ошибки, исключения. В разрабатываемом проекте установка, запуск и деинсталляция были совершены успешно (рис. 2.4).
Рисунок 2.4 Запуск приложения
На рисунке 7 представлен результат поиска при введенных значениях: директория = «D:\USPTU Slv\Test», имя файла = «File2.txt», файл содержит строку = «Searched», кодировка = «ASCII». В таком случае программа должна выдать лишь один объект из 5 созданных. Как видно из рисунка 2.5, результат поиска верный.
Рисунок 2.5 Результат поиска
При проведении тестирования адаптации интерфейса к масштабированию окна программа также успешно прошла тест, то есть элементы изменяли свой размер и расположение под размер окна.
2.5 Спецификация
Назначение. Приложение предназначено для пользователей ОС Windows, испытывающих трудности с поиском необходимого файла в системе.
Общее описание. Приложение представляет собой программу для поиска файлов, имеющая расширенные возможности, такие как фильтрация результатов поиска по имени, дате создания или директории, а также возможность искать по тексту внутри файлов.
Операционная среда. Приложение может работать, выполняя свои функции, на ОС Windows.
Функции системы. Приложение (система) нацелено на поиск файлов в системе.
Требования к данным. При входе в приложение пользователь видит перед собой главный экран, на котором расположены поля, которые предоставляют возможность выбора различных ограничений. После выбора пользователь вводит необходимые данные и имеет возможность вывести результат в виде текстового файла.
Результат работы. Результатом работы является разработанное программное приложение, выполняющие свои основные функции.
Заключение
В ходе выполнения курсовой работы были решены следующие задачи: изучена и использована в ходе выполнения работы необходимая информация о разработке программных приложений, проведен сравнительный анализ сред разработки и языков программирования и выбраны наиболее оптимальные варианты, разработаны архитектура и структура приложения, разработано непосредственно приложение, проведено тестирование.
В ходе изучения необходимой теоретической информации было выяснено, что программы поиска файлов играют жизненно важную роль в эффективном функционировании операционных систем. Процесс разработки такой программы включает в себя множество технических требований и требует комплексного подхода к преобразованию входных данных в желаемый результат.
Поэтому крайне важно учитывать различные факторы, участвующие в этом процессе, и выбирать наиболее подходящие инструменты и методы для достижения желаемых результатов. В этом случае использование языка программирования C# и среды разработки Microsoft Visual Studio 2019 в связке с Windows Forms позволит создать эффективное программное приложение для поиска файлов в Windows.
Это приложение сможет эффективно искать файлы и предоставлять пользователям быстрый и удобный доступ к необходимым данным в системе. Благодаря использованию передовых алгоритмов и методов, приложение сможет выполнять даже самые сложные поисковые задачи, обеспечивая плавные и точные результаты. Разработка программы для поиска файлов -- сложная и ответственная задача, но результаты таких усилий жизненно важны для эффективного функционирования современных операционных систем, таких как Windows
Список использованных источников
1. Гагарина, Л. Г. Введение в архитектуру программного обеспечения. Учебное пособие / Л.Г. Гагарина, А.Р. Федоров, П.А. Федоров. М.: Инфра-М, Форум, 2016. 320 c.
2. Голицына, О. Л. Программное обеспечение / О.Л. Голицына, И.И. Попов, Т.Л. Партыка. М.: Форум, 2013. 448 c.
3. ГОСТ Р 51904-2002. Программное обеспечение встроенных систем. Общие требования к разработке и документированию. Термины и определения: утвержден и введен в действие Постановлением Госстандарта России от 25 июня 2002г. № 247-ст.: дата введения 2003-07-01.
4. Добрынин, В. Ю. Технологии компонентного программирования / В.Ю. Добрынин. Москва: Гостехиздат, 2004. 216 c.
5. Емельянова, Н. З. Проектирование информационных систем / Н.З. Емельянова, Т.Л. Партыка, И.И. Попов. М.: Форум, 2009. 432 c.
6. Затонский, А. В. Программирование и основы алгоритмизации / А.В. Затонский, Н.В. Бильфельд. М.: Дрофа, 2014. 176 c.
7. Зыков, С. В. Основы современного программирования / С.В. Зыков. М.: Горячая линия - Телеком, 2006. 448 c.
8. Колдаев, В. Д. Основы логического проектирования / В.Д. Колдаев. Москва: РГГУ, 2011. 448 c.
9. Лукин, В. В. Технология разработки программного обеспечения. Учебное пособие / В.В. Лукин, В.Н. Лукин, Т.В. Лукин. Москва: Гостехиздат, 2015. 286 c.
10. Макаровских, Т. А. Документирование программного обеспечения. В помощь техническому писателю. Учебное пособие / Т.А. Макаровских. М.: Ленанд, 2015. 266 c.
11. Мещеряков, С. В. Эффективные технологии создания информационных систем / С.В. Мещеряков, В.М. Иванов. М.: Политехника, 2005. 312 c.
12. Милов, А. В. Основы программирования в задачах и примерах / А.В. Милов. М.: Фолио, 2002. 400 c.
Приложение А Листинг
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace FileSearcher
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainWindow());
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.IO;
namespace FileSearcher
{
public class Searcher
{
public delegate void FoundInfoEventHandler(FoundInfoEventArgs e);
public static event FoundInfoEventHandler FoundInfo;
public delegate void ThreadEndedEventHandler(ThreadEndedEventArgs e);
public static event ThreadEndedEventHandler ThreadEnded;
private static Thread m_thread = null;
private static Boolean m_stop = false;
private static SearcherParams m_pars = null;
private static Byte[] m_containingBytes = null;
public static Boolean Start(SearcherParams pars)
{
Boolean success = false;
if (m_thread == null)
{
ResetVariables();
m_pars = pars;
m_thread = new Thread(new ThreadStart(SearchThread));
m_thread.Start();
success = true;
}
return success;
}
public static void Stop()
{
// Stop the thread by setting a flag:
m_stop = true;
}
private static void ResetVariables()
{
m_thread = null;
m_stop = false;
m_pars = null;
m_containingBytes = null;
}
private static void SearchThread()
{
Boolean success = true;
String errorMsg = "";
if ((m_pars.SearchDir.Length >= 3) && (Directory.Exists(m_pars.SearchDir)))
{
if (m_pars.FileNames.Count > 0)
{
if (m_pars.ContainingChecked)
{
if (m_pars.ContainingText != "")
{
try
{
m_containingBytes = m_pars.Encoding.GetBytes(m_pars.ContainingText);
}
catch (Exception)
{
success = false;
errorMsg = "The string\r\n" + m_pars.ContainingText + "\r\ncannot be converted into bytes.";
}
}
else
{
success = false;
errorMsg = "The string to search for must not be empty.";
}
}
if (success)
{
DirectoryInfo dirInfo = null;
try
{
dirInfo = new DirectoryInfo(m_pars.SearchDir);
}
catch (Exception ex)
{
success = false;
errorMsg = ex.Message;
}
if (success)
{
SearchDirectory(dirInfo);
}
}
}
else
{
success = false;
errorMsg = "Please enter one or more filenames to search for.";
}
}
else
{
success = false;
errorMsg = "The directory\r\n" + m_pars.SearchDir + "\r\ndoes not exist.";
}
m_thread = null;
if (ThreadEnded != null)
{
ThreadEnded(new ThreadEndedEventArgs(success, errorMsg));
}
}
private static void SearchDirectory(DirectoryInfo dirInfo)
{
if (!m_stop)
{
try
{
foreach (String fileName in m_pars.FileNames)
{
FileSystemInfo[] infos = dirInfo.GetFileSystemInfos(fileName);
foreach (FileSystemInfo info in infos)
{
if (m_stop)
{
break;
}
if (MatchesRestrictions(info))
{
if (FoundInfo != null)
{
FoundInfo(new FoundInfoEventArgs(info));
}
}
}
}
if (m_pars.IncludeSubDirsChecked)
{
DirectoryInfo[] subDirInfos = dirInfo.GetDirectories();
foreach (DirectoryInfo subDirInfo in subDirInfos)
{
if (m_stop)
{
break;
}
SearchDirectory(subDirInfo);
}
}
}
catch (Exception)
{
}
}
}
private static Boolean MatchesRestrictions(FileSystemInfo info)
{
Boolean matches = true;
if (matches && m_pars.NewerThanChecked)
{
matches = (info.LastWriteTime >= m_pars.NewerThanDateTime);
}
if (matches && m_pars.OlderThanChecked)
{
matches = (info.LastWriteTime <= m_pars.OlderThanDateTime);
}
if (matches && m_pars.ContainingChecked)
{
matches = false;
if (info is FileInfo)
{
matches = FileContainsBytes(info.FullName, m_containingBytes);
}
}
return matches;
}
private static Boolean FileContainsBytes(String path, Byte[] compare)
{
Boolean contains = false;
Int32 blockSize = 4096;
if ((compare.Length >= 1) && (compare.Length <= blockSize))
{
Byte[] block = new Byte[compare.Length - 1 + blockSize];
try
{
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
Int32 bytesRead = fs.Read(block, 0, block.Length);
do
{
Int32 endPos = bytesRead - compare.Length + 1;
for (Int32 i = 0; i < endPos; i++)
{
Int32 j;
for (j = 0; j < compare.Length; j++)
{
if (block[i + j] != compare[j])
{
break;
}
}
if (j == compare.Length)
{
contains = true;
break;
}
}
if (contains || (fs.Position >= fs.Length))
{
break;
}
else
{
for (Int32 i = 0; i < (compare.Length - 1); i++)
{
block[i] = block[blockSize + i];
}
bytesRead = compare.Length - 1 + fs.Read(block, compare.Length - 1, blockSize);
}
}
while (!m_stop);
fs.Close();
}
catch (Exception)
{
}
}
return contains;
}
}
}
using System;
using System.Text;
using System.Collections.Generic;
namespace FileSearcher
{
public class SearcherParams
{
private String m_searchDir;
private Boolean m_includeSubDirsChecked;
private List<String> m_fileNames;
private Boolean m_newerThanChecked;
private DateTime m_newerThanDateTime;
private Boolean m_olderThanChecked;
private DateTime m_olderThanDateTime;
private Boolean m_containingChecked;
private String m_containingText;
private Encoding m_encoding;
public SearcherParams( String searchDir,
Boolean includeSubDirsChecked,
List<String> fileNames,
Boolean newerThanChecked,
DateTime newerThanDateTime,
Boolean olderThanChecked,
DateTime olderThanDateTime,
Boolean containingChecked,
String containingText,
Encoding encoding)
{
m_searchDir = searchDir;
m_includeSubDirsChecked = includeSubDirsChecked;
m_fileNames = fileNames;
m_newerThanChecked = newerThanChecked;
m_newerThanDateTime = newerThanDateTime;
m_olderThanChecked = olderThanChecked;
m_olderThanDateTime = olderThanDateTime;
m_containingChecked = containingChecked;
m_containingText = containingText;
m_encoding = encoding;
}
public String SearchDir
{
get { return m_searchDir; }
}
public Boolean IncludeSubDirsChecked
{
get { return m_includeSubDirsChecked; }
}
public List<String> FileNames
{
get { return m_fileNames; }
}
public Boolean NewerThanChecked
{
get { return m_newerThanChecked; }
}
public DateTime NewerThanDateTime
{
get { return m_newerThanDateTime; }
}
public Boolean OlderThanChecked
{
get { return m_olderThanChecked; }
}
public DateTime OlderThanDateTime
{
get { return m_olderThanDateTime; }
}
public Boolean ContainingChecked
{
get { return m_containingChecked; }
}
public String ContainingText
{
get { return m_containingText; }
}
public Encoding Encoding
{
get { return m_encoding; }
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
namespace FileSearcher
{
public class ThreadEndedEventArgs
{
private Boolean m_success;
private String m_errorMsg;
public ThreadEndedEventArgs(Boolean success,
String errorMsg)
{
m_success = success;
m_errorMsg = errorMsg;
}
public Boolean Success
{
get { return m_success; }
}
public String ErrorMsg
{
get { return m_errorMsg; }
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.IO;
using System.Windows.Forms;
namespace FileSearcher
{
public class UserConfigData
{
private Int32 m_locationX = 100;
private Int32 m_locationY = 100;
private Int32 m_width = 528;
private Int32 m_height = 551;
private Int32 m_windowState = 0;
private String m_searchDir = "C:\\";
private Boolean m_includeSubDirsChecked = true;
private String m_fileName = "*.*";
private Boolean m_newerThanChecked = false;
private DateTime m_newerThanDateTime = new DateTime(2012, 1, 1, 0, 0, 0);
private Boolean m_olderThanChecked = false;
private DateTime m_olderThanDateTime = new DateTime(2012, 1, 1, 0, 0, 0);
private Boolean m_containingChecked = false;
private String m_containingText = "";
private Boolean m_asciiChecked = true;
private Boolean m_unicodeChecked = false;
private String m_delimeter = ";";
private String m_resultsFilePath = "";
public Int32 LocationX
{
get { return m_locationX; }
set { m_locationX = value; }
}
public Int32 LocationY
{
get { return m_locationY; }
set { m_locationY = value; }
}
public Int32 Width
{
get { return m_width; }
set { m_width = value; }
}
public Int32 Height
{
get { return m_height; }
set { m_height = value; }
}
public Int32 WindowState
{
get { return m_windowState; }
set { m_windowState = value; }
}
public String SearchDir
{
get { return m_searchDir; }
set { m_searchDir = value; }
}
public Boolean IncludeSubDirsChecked
{
get { return m_includeSubDirsChecked; }
set { m_includeSubDirsChecked = value; }
}
public String FileName
{
get { return m_fileName; }
set { m_fileName = value; }
}
public Boolean NewerThanChecked
{
get { return m_newerThanChecked; }
set { m_newerThanChecked = value; }
}
public DateTime NewerThanDateTime
{
get { return m_newerThanDateTime; }
set { m_newerThanDateTime = value; }
}
public Boolean OlderThanChecked
{
get { return m_olderThanChecked; }
set { m_olderThanChecked = value; }
}
public DateTime OlderThanDateTime
{
get { return m_olderThanDateTime; }
set { m_olderThanDateTime = value; }
}
public Boolean ContainingChecked
{
get { return m_containingChecked; }
set { m_containingChecked = value; }
}
public String ContainingText
{
get { return m_containingText; }
set { m_containingText = value; }
}
public Boolean AsciiChecked
{
get { return m_asciiChecked; }
set { m_asciiChecked = value; }
}
public Boolean UnicodeChecked
{
get { return m_unicodeChecked; }
set { m_unicodeChecked = value; }
}
public String Delimeter
{
get { return m_delimeter; }
set { m_delimeter = value; }
}
public String ResultsFilePath
{
get { return m_resultsFilePath; }
set { m_resultsFilePath = value; }
}
}
public class UserConfig
{
private static String m_path = Path.Combine(Application.UserAppDataPath, "UserConfig.txt");
private static UserConfigData m_configData = new UserConfigData();
public static UserConfigData Data
{
get { return m_configData; }
}
public static Boolean Load()
{
Boolean success = false;
try
{
List<String> lines = new List<String>();
FileStream fileStream = new FileStream(m_path, FileMode.Open, FileAccess.Read);
StreamReader streamReader = new StreamReader(fileStream);
while (streamReader.Peek() >= 0)
{
String line = streamReader.ReadLine();
lines.Add(line);
}
streamReader.Close();
fileStream.Close();
PropertyInfo[] propertyInfos = m_configData.GetType().GetProperties();
if (propertyInfos.Length == lines.Count)
{
for (Int32 i = 0; i < propertyInfos.Length; i++)
{
PropertyInfo propertyInfo = propertyInfos[i];
String line = lines[i];
Object value = null;
switch (propertyInfo.PropertyType.Name)
{
case "String":
value = line;
break;
case "Int32":
value = Convert.ToInt32(line, System.Globalization.CultureInfo.InvariantCulture);
break;
case "Boolean":
value = Convert.ToBoolean(line, System.Globalization.CultureInfo.InvariantCulture);
break;
case "DateTime":
value = Convert.ToDateTime(line, System.Globalization.CultureInfo.InvariantCulture);
break;
default:
break;
}
propertyInfo.SetValue(m_configData, value, null);
}
success = true;
}
}
catch (Exception)
{
}
return success;
}
public static Boolean Save()
{
Boolean success = false;
try
{
if (File.Exists(m_path))
{
// Schreibschutz aufheben:
FileAttributes attributes = File.GetAttributes(m_path);
if ((attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
FileAttributes newAttributes = attributes ^ FileAttributes.ReadOnly;
File.SetAttributes(m_path, newAttributes);
}
// Datei lцschen:
File.Delete(m_path);
}
FileStream fileStream = new FileStream(m_path, FileMode.Create, FileAccess.Write);
StreamWriter streamWriter = new StreamWriter(fileStream);
try
{
foreach (PropertyInfo propertyInfo in m_configData.GetType().GetProperties())
{
String line = "";
Object obj = propertyInfo.GetValue(m_configData, null);
switch (propertyInfo.PropertyType.Name)
{
case "String":
line = (String)obj;
break;
case "Int32":
Int32 i = (Int32)obj;
line = i.ToString(System.Globalization.CultureInfo.InvariantCulture);
break;
case "Boolean":
Boolean b = (Boolean)obj;
line = b.ToString(System.Globalization.CultureInfo.InvariantCulture);
break;
case "DateTime":
DateTime dt = (DateTime)obj;
line = dt.ToString(System.Globalization.CultureInfo.InvariantCulture);
break;
default:
break;
}
streamWriter.WriteLine(line);
}
success = true;
}
catch (Exception)
{
}
streamWriter.Close();
fileStream.Close();
}
catch (Exception)
{
}
return success;
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
namespace FileSearcher
{
public class FoundInfoEventArgs
{
private FileSystemInfo m_info;
public FoundInfoEventArgs(FileSystemInfo info)
{
m_info = info;
}
public FileSystemInfo Info
{
get { return m_info; }
}
}
}
Приложение Б Руководство пользователя
При запуске приложения пользователю предлагается выбрать директорию в которой будет проходить поиск и возможность включить поддиректории. Далее пользователь вводит имя искомого файла и решает стоит ли включить дополнительную фильтрацию.
Если пользователь решил включить ограничения, то он может отфильтровать результаты по дате создания и по ключевым словам внутри документа (при использовании русского языка, следует выбрать кодировку Unicode). Далее необходимо нажать кнопку «Поиск».
В случае, если поиск необходимо остановить, следует нажать кнопку «Стоп».
По итогу поиска, в окне результатов будут отражены все файлы удовлетворяющие введеным ранее данным.
Закрытие приложения выполняется посредством специальных экранных кнопок на верхней панели.
Размещено на Allbest.ru
...Подобные документы
Область применения и требования создаваемого Web-приложения. Требования к техническому и программному обеспечению. Разработка структуры Web-приложения и выбор средств программной реализации. Программная реализация Web-приложения. Структура базы данных.
дипломная работа [1,4 M], добавлен 03.06.2014Сокращение времени поиска транспортных средств для туристов, путешествующих автостопом, разработка интернет-приложения: выбор системы управления базы данных и языков программирования; информационная и логическая архитектура приложения; расчет затрат.
дипломная работа [834,2 K], добавлен 15.02.2013Разработка приложения, которое будет выполнять функции показа точного времени и точной даты. Определение дополнительных функций разработанного приложения. Рассмотрение основных этапов создания программного продукта. Результаты тестирования приложения.
курсовая работа [2,2 M], добавлен 14.04.2019Обзор подходов к разработке музейных приложений с элементами дополненной реальности, формирование требований к ним. Выбор методов разработки приложения, разработка пользовательского интерфейса. Принципы тестирования. Реализация раздела "Распознавание".
дипломная работа [2,8 M], добавлен 03.07.2017Разработка тестирующего приложения, которое будет наглядно показывать, как должна выглядеть тестирующая программа для вычисления уровня интеллекта. Программная среда разработки, характеристика основных возможностей приложения. Стандартные диалоговые окна.
курсовая работа [716,9 K], добавлен 02.12.2013Проектирование удобного приложения для комфортной навигации по файлам облачного хранилища в одном файловом менеджере. Выбор интегрированной среды разработки. Выбор инструментов для визуализации приложения. Выбор средств отслеживания HTTPзапросов.
курсовая работа [3,6 M], добавлен 16.07.2016Описание приложения в виде пользовательского сценария. Проектирование обмена сообщениями между модулями. Разработка общей структуры приложения. Обзор структуры файлов. Разработка получения данных со страницы. Характеристика результата работы программы.
дипломная работа [1,5 M], добавлен 22.03.2018Изучение существующих подходов к использованию компьютерных игр в образовательном процессе. Разработка и реализация проекта игрового обучающего приложения на мобильной платформе. Выбор платформы и средств реализации игрового обучающего приложения.
дипломная работа [3,4 M], добавлен 12.08.2017Создание многоуровневого приложения с Web-интерфейсом выставления оценки фильму и просмотра оценок других пользователей. Клиентская часть приложения. Разработка многопользовательского веб-приложения на ASP.NET MVC 3 с разграничением доступа к данным.
курсовая работа [949,7 K], добавлен 22.02.2015Разработка в среде Delphi приложения "Записная книжка" для ввода и корректировки информации, поиска данных. Выбор состава технических и программных средств. Текст программы, ее описание и тестирование. Основные условия программы, требования к компьютеру.
курсовая работа [565,7 K], добавлен 08.12.2011Этапы разработки программного приложения, выполняющего синтаксический анализ программы на языке С и форматирование текста программы на языке С. Требования к программному обеспечению и интерфейсу. Конфигурация технических средств и оценка надежности.
курсовая работа [1,6 M], добавлен 22.06.2011Выбор и обоснование аппаратного обеспечения. Типы архитектуры веб-приложений. Шаблоны проектирования архитектуры приложения. Разработка инфологической модели базы данных. Подготовка к разработке приложения. Рассмотрение причин возникновения паттернов.
дипломная работа [3,0 M], добавлен 27.11.2022Анализ моделируемого приложения и постановка задачи. Диаграмма прецедентов, деятельности объектов и состояния классов. Разработка приложения-игры, выбор языка программирования и среды для разработки проекта, интерфейс приложения и ресурсы проекта.
курсовая работа [308,5 K], добавлен 14.10.2011Последовательность разработки приложения, автоматизирующего технологию организации повышения квалификации. Архитектура создаваемого приложения. Разработка модели данных. Разграничение прав доступа. Инструкция пользователя. Оценка капитальных затрат.
дипломная работа [4,0 M], добавлен 27.07.2013Характеристика форматов файлов wav и mp3. Построение диаграмм прецедентов, разработка графического интерфейса и архитектуры приложения. Разработка алгоритмов работы программы: метод TrimWavFile, TrimMp3, ChangeVolume, speedUpX1_2, speedDownX1_2.
курсовая работа [2,7 M], добавлен 20.12.2013Описание платформы NET Framework. База данных Microsoft Access. Разработка Windows приложения. Модель программирования Windows Forms. Функциональное назначение программы. Входные и выходные данные. Требования к техническому и программному обеспечению.
курсовая работа [2,2 M], добавлен 15.03.2015Характеристика объекта автоматизации. Создание многоуровневой архитектуры приложения, отладка метода безошибочной идентификации пользователей системы. Разработка нестандартного метода преобразования объектов базы данных в объекты классов приложения.
курсовая работа [395,4 K], добавлен 28.04.2015Разработка приложений баз данных Delphi. Построение концептуальной модели, атрибуты сущностей и связей. Проектирование приложения для ведения базы данных телефонных номеров с возможностью поиска по всем имеющимся полям. Тестирование программного средства.
курсовая работа [641,7 K], добавлен 17.08.2013Постановка задач и требований к проектируемому интернет-приложению. Обоснование выбора системы управления базы данных и языков программирования. Разработка архитектуры заданного интернет-приложения, технико-экономическое обоснование его эффективности.
дипломная работа [461,3 K], добавлен 24.02.2013Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.
курсовая работа [1,6 M], добавлен 19.04.2017