Курсваяо. Курсовая_Хачатрян. Расширяемый файловый менеджер с undoмоделью взаимодействия с пользователем
Скачать 46.01 Kb.
|
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ Федеральное государственное бюджетное образовательное учреждение высшего образования «ПОВОЛЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ» Кафедра «Информационные системы и технологии (ИСТ)»
КУРСОВАЯ РАБОТА по дисциплине «Вычислительные машины, комплексы, системы и сети» на тему «Расширяемый файловый менеджер с undo-моделью взаимодействия с пользователем» Выполнил: студент гр. 06 ИСТ _______ Хачатрян А.М (подпись) (фамилия ИО) Руководитель: _________ __________ (подпись) (фамилия ИО) Самара 2020 Содержание Введение 3 Глава 1. Проектирование программного приложения 6 1.1. Разработка внутренних структур данных и определение пользовательского интерфейса программного приложения 6 1.2. Выбор технологии, языка и среды программирования 9 1.3 Проектирование структуры программы и взаимодействия модулей 12 Глава 2. Описание и функциональные возможности программного приложения «Файловый менеджер» 17 2.1. Особенности построения и работы алгоритма 17 2.2 Выбор стратегии тестирования и разработка тестов 23 2.3 Руководство пользователя 26 Заключение 30 Список используемой литературы 32 ВведениеАктуальность исследования сведена к тому, что в настоящее время широкое распространение получили многочисленные локальные сети в самом разнообразном виде: от коммутации двух, рядом расположенных, компьютеров до вычислительных систем со сложной системой прав доступа к отдельным ресурсам сети и т.д. Естественно появляется проблема о наиболее удобном и рациональном способе хранении данных и получении возможности ими воспользоваться. Данный вопрос достаточно значим, т.к. безопасность и в тоже время интуитивно понятный интерфейс играют большую роль в процессе разработки и внедрения программы в структуру сети. Эту проблему решают файловые менеджеры. Основной задачей таких программ является предоставление удобного интерфейса для работы с файлами. Оболочки для работы с файлами написаны для многих операционных систем таких как: Windows, Linux, MS DOS, UNIX, OS\2 и т.д. Основные действия, которые должна выполнять подобная программа это: осуществление возможности копировать, перемещать, удалять файлы, просмотр каталогов, логических и физических дисков данного компьютера или любого другого ПК в пределах локальной сети. Именно этому, достаточно актуальному вопросу посвящена данная курсовая работа. А результатом ее выполнения будет программа файловый менеджер, реализующая в себе все перечисленные возможности. Объект исследования: операционные системы семейства Windows. Предмет исследования: программное приложения, упрощающие обзор и управление объектами файловой системы. Целью курсовой работы является разработка программного приложения «Файловый менеджер» в соответствии с техническим заданием. Данная цель обусловила выделение следующих задач: 1) осуществить выбор структур, используемых данных, технологии, языка и среды программировании; 2) разработать алгоритмы и программы для реализации программного продукта «Файловый менеджер», с использованием современной технологии программирования; 3)составить пояснительную записку для описания функциональных возможностей и сопровождения разработанной системы, на основе нормативных документов, регламентирующих состав, содержание и форму технической документацией на разработанный программный продукт. Программный продукт работает под управлением операционных систем семейства Windows. Приложение разработано с помощью объектно-ориентированной технологии программирования в среде программирования Borland Delphi 7.0 на языке Delphi. Основным достоинством программы является простота в работе и небольшое потребление ресурсов компьютера. Предполагаемая область применения: система может быть использована широким кругом пользователей персональных компьютеров. Курсовая работа состоит из введения, двух глав, заключения, списка использованной литературы, всего 30 страница. Во введении обосновывается актуальность, объект, предмет проводимого нами исследования и практическая значимость программного продукта «Файловый менеджер». В первом разделе «Проектирование программного приложения «Файловый менеджер»» описывается разработка внутренних структур данных, определяется пользовательский интерфейс программного приложения, выбирается технология, язык и среда программирования. Также проектируется структура программы. Во втором разделе «Описание и функциональные возможности программного приложения», рассматриваются особенности построения и работы алгоритма, обосновывается выбор стратегии тестирования, и в качестве сопровождающей документации предлагается руководство пользователя. В заключении приведены краткие выводы, отражающие результаты решения поставленных задач. В приложении находится листинг разработанного программного продукта «Файловый менеджер». Глава 1. Проектирование программного приложения1.1. Разработка внутренних структур данных и определение пользовательского интерфейса программного приложенияБольшинство алгоритмов зависит от того, каким образом организованы данные поэтому в соответствии с ГОСТ 19.701-90 начинать проектирование программы следует не с алгоритмов, а с разработки структуры, необходимых для представления входных, выходных и промежуточных данных. Структура данных - программная единица, позволяющая хранить и просматривать множество однотипных или логически связанных данных в вычислительной технике. Структура данных часто является реализацией, какого либо, абстрактного типа данных. Какой смысл заключен в данных, какими символами они выражены - буквенными или цифровыми, что означает то или иное число - все это определяется программой обработки. Все данные необходимые для решения практических задач подразделяются на несколько типов, причем понятие тип связывается не только с представлением данных в адресном пространстве, но и со способом их обработки. Любые данные могут быть отнесены к одному из двух типов: основному (простому), форма представления которого определяется архитектурой компьютера, или сложному, конструируемому пользователем для решения конкретных задач. Данные простого типа это - символы, числа и т.п. элементы, дальнейшее дробление которых не имеет смысла. Из элементарных данных формируются структуры (сложные типы) данных. Массив (функция с конечной областью определения) - простая совокупность элементов данных одного типа, средство оперирования группой данных одного типа. Отдельный элемент массива задается индексом. Массив может быть одномерным, двумерным и т.д. Разновидностями одномерных массивов переменной длины являются структуры типа кольцо, стек, очередь и двухсторонняя очередь. Запись (декартово произведение) - совокупность элементов данных разного типа. В простейшем случае запись содержит постоянное количество элементов, которые называют полями. Совокупность записей одинаковой структуры называется файлом. Файлом называют также набор данных во внешней памяти, например, на магнитном диске. Такие структуры данных как массив или запись занимают в памяти ЭВМ постоянный объем, поэтому их называют статическими структурами. К статическим структурам относится также множество. Имеется ряд структур, которые могут изменять свою длину - так называемые динамические структуры. К ним относятся дерево, список. В нашем программном продукте будут использоваться файлы системы, над которыми программа «Файловый менеджер» будет выполнять следующие действия: копирование файлов, перемещение файлов, удаление файлов или каталогов, создание новой каталогов. Из этого следует, что программа будет работать c сложными данными файлами системы и их свойствами. Также будут использоваться данные простых типов символы, числа для промежуточных вычислений. Для разработки данного программного продукта, необходимо спроектировать и разработать окно программы. Которое должно обеспечит удобное визуальное отображение результатов работы программы «Файловый менеджер» и эргономичное взаимодействие с пользователем персонального компьютера. Файловый менеджер - один из самых популярных программных продуктов. Самые разнообразные версии от большого круга производителей можно обнаружить на рабочем столе персонального компьютера практически любого пользователя и выбор пользователей, за частую, падает на те программные продукты, в которых наиболее эргономичен пользовательский интерфейс. Примером наиболее успешных программ из класса файловых менеджеров стали такие программные продукты как - Windows Commander 8.1 и Far Manager 3.0. Основной принцип, обеспечивший популярность данных программ - это наличие двух панелей, каждая из которых показывает содержание одной из папок файловой системы. По каждой из панелей можно при помощи стрелок на клавиатуре перемещать курсор. Переход между панелями осуществляется клавишей табуляции. Клавиша Enter позволяет открыть файл, на котором установлен курсор. При этом открытие производится при помощи той же программы, которая ассоциирована с файлом данного типа в Windows. Например, исполнимые файлы (jpg, gif и др.) будут запущены на выполнение, картинки показаны при помощи программы просмотра графических файлов и т.п. Если же это папка, то в текущей панели появится содержание этой папки. Поэтому определение пользовательского интерфейса программного приложения является неотъемлемой частью проектирования приложения «Файловый менеджер». В понятие пользовательского интерфейса входит не только, и даже не столько, картинка на экране - трехмерная, анимированная, просто выполнена в модном дизайне, а способы взаимодействия пользователя с системой. Программный интерфейс - система унифицированных связей, предназначенных для обмена информацией между компонентами вычислительной системы. Программный интерфейс задает набор необходимых процедур, их параметров и способов обращения. Интерфейс пользователя -- это элементы и компоненты программы, которые способны оказывать влияние на взаимодействие пользователя с программным обеспечением. Рассмотрим некоторые из типов пользовательских интерфейсов: 1. Процедурно-ориентированные интерфейсы: - обеспечивает пользователю функции необходимые для выполнения задач; - акцент делается на задачи; - пиктограммы представляют приложения, окна или операции; - содержание папок и справочником отражается с помощью таблицы-списка. 2. Объектно-ориентированные интерфейсы: - обеспечивает пользователю возможность взаимодействия с объектами; - акцент делается на входные данные и результаты; - пиктограммы представляют объекты; - папки и справочники являются визуальными контейнерами объектов. В разрабатываемом программном приложении будем использовать объектно-ориентированные интерфейс со свободной навигацией, так как он даёт возможность наиболее эффективно и удобно взаимодействовать пользователю с программным продуктом. 1.2. Выбор технологии, языка и среды программированияТехнологией программирования называют совокупность методов и средств, используемых в процессе разработки программного обеспечения. Как любая другая технология, технология программирования представляет собой набор технологических инструкций, включающих: - указание последовательности выполнения технологических операций; - перечисление условий, при которых выполняется та или иная операция; - описания самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т. п. Кроме набора операций и их последовательности, технология также определяет способ описания проектируемой системы, точнее модели, используемой на конкретном этапе разработки. Различают технологии, используемые на конкретных этапах разработки или для решения отдельных задач этих этапов, и технологии, охватывающие несколько этапов или весь процесс разработки. В основе первых, как правило, лежит ограниченно применимый метод, позволяющий решить конкретную задачу. В основе вторых обычно лежит базовый метод или подход (парадигма), определяющий совокупность методов, используемых на разных этапах разработки, или методологию. Теперь рассмотрим основные технологии программирования. Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули (библиотеки подпрограмм), например, модуль графических ресурсов. Связи между модулями при использовании данной технологии осуществляются через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым "внутренним" переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal и С (C++), языки Ада и Modula. Объектно-ориентированное программирование (ООП) определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений. Основным достоинством объектно-ориентированного программирования по сравнению с модульным программированием является «более естественная» декомпозиция программного обеспечения, которая существенно облегчает его разработку. Это приводит к более полной локализации данных и интегрированию их с подпрограммами обработки, что позволяет вести практически независимую разработку отдельных частей (объектов) программы. Кроме этого, объектный подход предлагает новые способы организации программ, основанные на механизмах наследования, полиморфизма, композиции, наполнения. Эти механизмы позволяют конструировать сложные объекты из сравнительно простых. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотек классов для различных применений. Учитывая специфику компьютерной программы «Файловый Менеджер», будем проектировать однопользовательскую архитектуру, при которой программное обеспечение рассчитано на одного пользователя, работающего за компьютером. В предыдущем параграфе мы остановились на пользовательском интерфейсе с визуальными объектами и подсказками, при которых возможна реализация множества сценариев, операции которых предполагают определение множества возможных операций на конкретном шаге работы. Объектно-ориентированные визуальные среды разработки программного обеспечения позволяют сделать это. Объектно-ориентированные среды программирования основываются на понятии объекта как замкнутой независимой сущности, взаимодействующей с внешним миром через строго определенный интерфейс в виде перечня сообщений, которые объект может принимать. Объект обладает свойствами, поведением и состоянием. Объекты с одинаковыми свойствами поведением объединяются в классы. Программа на объектно-ориентированном языке представляет собой совокупность описаний классов. Классы, в свою очередь представляют собой описание свойств и поведения составляющих их объектов. Свойства представляются другими, как правило, более простыми объектами. Поведение описывается обменивающимися сообщениями. Разработка программ по объектно-ориентированной технологии сводится к созданию новых классов, их тестированию и включению в состав объектно-ориентированной среды разработки. Поскольку выбран интерфейс с визуальными объектами, что предполагает использование событийного программирования и объектного подхода, то современные среды визуального программирования, такие как Visial C++, Borland Delphi 7.0.,Borland C++ Builder и им подобные являются самыми подходящими для решения поставленной задачи. Сегодня между этими средами существуют различия: визуальные среды фирмы Microsoft обеспечивают более низкий уровень программирования «под Windows». Это является их достоинством и недостатком. Достоинством - так как уменьшается вероятность возникновения «нестандартной ситуации» т.е. ситуации, не предусмотренной разработчиками библиотеки компонентов, а недостатком - так как это существенно загружает программиста «рутинной» работой, от которой избавлен программист, работающий с Delphi или C++ Builder. В Borland Delphi 7.0 скомбинировано несколько важных технологий: - высокопроизводительный компилятор в машинный код; - объектно-ориентированная модель компонент; - визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов. Для разработки программного продукта остановимся на универсальной среде программирования Borland Delphi 7.0. и, как следствие, на языке программирования Delphi. На наш взгляд Delphi, относительно, прост и логичен. Основные конструкции языка четко выделяются в программе, что способствует хорошему написанию написанного кода. Графический интерфейс Delphi отлично продуман, а среда разработки предоставляет доступ только к тем участкам кода, с которыми необходимо работать, скрывая основную часть программы, которая создается автоматически самой средой разработки. По итогам проведённого нами исследования мы сделали свой выбор в пользу объектно-ориентированной технологии программирования, среды разработки Borland Delphi 7.0. и языка программирования Delphi. 1.3 Проектирование структуры программы и взаимодействия модулейПрограмма на Delphi - это командный код, задача которого - вызвать на экран форму и обслуживающей ее модуль. Форма - представляет собой окно, на котором можно визуально, при помощи мыши, редактировать интерфейс будущей программы, расставляя по ней разнообразные элементы интерфейса (например, меню, кнопки, картинки, окна ввода данных и т.д.). Чтобы настроить параметры этих элементов-объектов (например, имя кнопки или главной форме), будем использовать окно инспектора объектов. После того, как это сделано, интерфейс будет готов к работе, и нам останется только определить нестандартные действия нашей программы. Это мы сделаем в модуле. Модулем называют автономно компилируемую программную единицу. Термин «модуль» традиционно используется в двух смыслах. Первоначально, когда размер программ был сравнительно невелик, и все подпрограммы компилировались отдельно, под модулем понималась подпрограмма, т.е. последовательность связных фрагментов программы, обращение к которой выполняется по имени. Со временем, когда размер программ значительно вырос, и появилась возможность создавать библиотеки ресурсов: констант, переменных, описаний типов, классов и подпрограмм, термин «модуль» стал пользоваться и в смысле автономно компилируемый набор программных ресурсов. Данные модуль может получать и возвращать через общие области памяти. Первоначально к модулям (еще понимаемым как подпрограммы) предъявлялись следующие требования: - отдельная компиляция; - одна точка входа; - одна точка выхода; - соответствие принципу вертикального управления; - возможность вызова других модулей; - небольшой размер (до 50-60 операторов языка); - независимость от истории вызовов; - выполнение функции. Требования одной точки входа, одной точки выхода, независимости от истории вызовов и соответствия принципу вертикального управления были вызваны тем, что в то время из-за серьезных ограничений на объем оперативной памяти программисты были вынуждены разрабатывать программы с максимально возможной повторяемостью кодов. В результате подпрограммы, имеющие несколько точек входа и выхода, были не только обычным явлением, но и считались высоким классом программирования. Следствием же было то, что программы было очень сложно не только модифицировать, но и понять, а иногда и просто полностью отладить. Со временем, когда основные требования структурного подхода стали поддерживаться языками программирования, и под модулем стали понимать отдельно компилируемую библиотеку ресурсов, требование независимости модулей стало основным. Любой логически завершенный алгоритм должен представлять собой модуль (функцию), в котором все входные данные и результат работы передаются через заголовок (программный интерфейс). Представление алгоритма решения задачи в виде подзадач называется процедурной декомпозицией. В соответствии с объектно-ориентированной технологией была проведена декомпозиция предметной области на объекты и разработана структурная схемы программы. Итак, давайте рассмотрим, какие функции будут выполнять эти объекты. Frames1- фрейм, где будут располагаться элементы-объекты навигации Button. Frames2- фрейм, служащий для компоновки объектов, создающих в целом отдельное рабочее пространство, предназначенное для отображения файлов директорий. В это рабочее пространство входят следующие объекты: DriveComboBox - отображает список устройств внешней памяти (тома жёсткого диска, сетевые диски, USB-флешки и т.д). Label1- будет выводить информацию о выбранном устройстве внешней памяти (объём носителя информации и количество свободного места на этом носителе). TreeView -объект, в котором будут отображаться файлы и каталоги выбранных в DriveComboBox носителей информации. Label2- поле вывода информации, где будет отображаться полный путь к директории, из которой подгружаются файлы в TreeView. Функциональное назначение и объектное содержание Frames3 аналогично Frames2. В ходе разработки программного продукта будут созданы следующие модули: - Project1.dpr, для подключения всех модулей в одну программу; - Unit1.pas, позволяет запустить основную форму, в которой пользователь, может приступить к работе с «Файловым менеджером»; - Unit2.pas, модуль для вспомогательных процедур и функций; Программирование в среде Delphi предполагает соблюдение принципа модульности, поэтому при разработке программного продукта, для понимания взаимодействия отдельных модулей, на основе структурной схемы составлена функциональная схема. Таким образом, мы определили структуру программы и взаимодействие составляющих модулей, что позволяет перейти к непосредственной разработке приложения в среде Borland Delphi 7.0. Глава 2. Описание и функциональные возможности программного приложения «Файловый менеджер»2.1. Особенности построения и работы алгоритмаВ процессе выполнения курсовой работы мы разработали программное приложение «Файловый менеджер», выполняющее над объектами файловой системы компьютера следующие действия: создание, открытие, перемещение, копирование. Интерфейс программы состоит из двух панелей, в которых отображается текущая файловая структура выбранного диска или директории. Между панелями организована возможность обмена информацией. Список файлов, отображается в компоненте TListView, перед показом пользователю сортируется: сначала список папок, после оставшиеся файлы. При двойном щелчке по каталогу из списка TListView пользователь переходит вверх к выбранному каталогу, либо вниз, если щелчок был произведен на первом компоненте списка. При выборе в списке файлов, их открытие производится при помощи той же программы, которая ассоциирована с файлом данного типа в Windows. Ниже списка файлов располагается компонент TStatusBar, в котором отображается количество элементов текущего диска или директории. На панели навигации расположено шесть кнопок, функциями которых являться открытие, копирование, перемещение, удаление файлов или каталогов, создание каталогов и кнопка выхода из программы. Каждому компоненту TListView в соответствии находиться компонент TDriveComboBox, функциями которого является выбор логического или физического диска компьютера для отображения его файловой структуры в списке. Также в проекте размещено два компонент TLabel, которые отображают текущий путь к директории, из которой загружен список файлов. Теперь остановимся по подробнее на каждой из основных процедур программы начнём с процедуры вывода списка файлов и каталогов. Изначально необходимо знать путь (диск и каталог) к своему текущему местоположению, эту информацию следует хранить отдельной строкой (у нас это будет переменная CurrentFullPath, причем она обязательно должна заканчиваться на символ обратной косой черты “\” - backslash). Все манипуляции осуществляются с файлами относительно этого пути. Программа должна получить в свое распоряжение содержимое текущего каталога. Это можно осуществить несколькими способами: - вручную найти все элементы с помощью процедур FindFirst и FindNext; - использовать компонент FileListBox закладки Win 3.1; Мы применили второй способ, поэтому рассмотрим его подробней. На форме располагается компонент FileListBox , назовем его flbxFiles, и делается невидимым. Его свойство FileType устанавливается в [ftReadOnly, ftHidden, ftSystem, ftArchive, ftDirectory, ftNormal]. Это заставляет компонент отображать файлы всех типов, а также каталоги. Если теперь изменять свойство Directory, указать необходимы нам путь, то компонент будет выводить полный список всех файлов и каталогов по заданному пути. Но на экран эта информация не отображается, так как мы сделали flbxFiles невидимым, но появится возможность использовать её в своих целях. Свойство Items содержит список файлов, но без указания пути. Заметим что имена каталогов обрамляются квадратными скобками (например папка “TEMP” будет выглядеть как “[TEMP]”). Также в списке могут присутствовать каталоги, обозначенные как “[.]” и “[..]”, они обозначают текущий каталог и переход на уровень вверх, если это возможно. Перебрав все элементы, Items, мы получим необходимый нам список, но по нему нельзя определить, является ли конкретный элемент файлом или каталогом (квадратные скобки не являются надежным идентификатором). Следует поступить следующим образом: - считать элемент из Items; - проверить существование такового файла (функция FileExists). Если файл существует, значит это требуемый файл. Выходим; - если файл не существует (значит это каталог), удалим из имени каталога обрамляющие скобки; Вот пример кода GetAndShowFiles: ChDir(CurrentFullPath); FlbxFiles.Directory:=CurrentFullPath; For i:=0 To flbxFiles.Items.Count-1 Do Begin {переберем все элементы из flbxFiles} FileName:=flbxFiles.Items[i]; If FileExists(FileName) Then Begin {FileName оказался файлом} {...выполним необходимые действия...} End; Else Begin {FileName оказался директорией} {удалим из его имени скобки} Delete(FileName, 1, 1); Delete(FileName, Length(Item.Name), 1); {...выполним необходимые действия...} End; End; Вместо «необходимых действий» можно организовать непосредственный вывод файла на экран, либо запомнить его для дальнейшей обработки. Для вывода списка на экран логично воспользоваться компонентом ListView закладки Win32. Он позволяет создавать для каждой строки несколько колонок с описанием свойств объекта, а также отображать рядом иконку. Присвоим нашему компоненту ListView имя lvFiles. После того как мы реализовали процедуру вывода списка файлов и каталогов переходим к реализации возможности выбора диска для работы. Для выбора диска мы использовали компонент DriveComboBox закладки Win 3.1. Он автоматически определяет количество подключенных дисков, их метки, и отображает соответствующие иконки. Назовем наш компонент именем dcbxDrive. В обработчике события OnChange следует произвести изменение текущего пути и вызвать вывод списка файлов и каталогов. Пример кода: CurrentFullPath:=dcbxDrive.Drive+':\'; GetAndShowFiles; Следующим шагом при программировании приложения «Файловый менеджер» была реализована процедура перемещения по каталогам системы. После вывода списка файлов в lvFiles неплохо было бы позволить пользователю перемещаться по каталогам. Для этого следует отслеживать двойной щелчок мыши или нажатие Enter. В обработчик события необходимо вставить проверку строки, которую указал пользователь, чтобы определить, является ли выбранный объект каталогом. Если это действительно каталог, то следует изменить текущий путь на новый, и снова выполнить действия по выводу списка файлов и каталогов. Одна из важнейших возможностей любого файлового менеджера это запуск приложений. Причем запускаться должна не только исполняемые файлы (exe, com, bat), но файлы типа avi, bmp, jpg, rar, doc, xls и др. Конечно на самом деле запускаются не сами эти файлы, а программы, которые способны их обработать. К счастью, Windows предоставляет нам такую возможность довольно легко. Делается это с помощью API-функции ShellExecute. ShellExecute( HWND hwnd); // дескриптор порождающего окна LPCTSTR lpOperation, // указатель на строку, с командой LPCTSTR lpFile, // указатель на запускаемый файл LPCTSTR lpParameters, // указатель на строку с параметрами запуска LPCTSTR lpDirectory, // указатель на строку с рабочей директорией INT nShowCmd); // режим запуска приложения Возвращаемое значение является дескриптором запущенной программы либо кодом ошибки (если меньше 32). Для простого запуска программ необходимо, чтобы lpOperation:='open' и nShowCmd:=SW_SHOWNORMAL. Для начала необходимо в отловить двойной щелчок или нажатие Enter для компонента lvFiles и убедится, что выбранный объект является файлом. Затем необходимо подготовить параметры для функции ShellExecute и вызвать ее. Пример кода: Procedure ExecuteAnyFile(FileName:String); Var WorkDir:String; Begin FileName:=FileName+#0; WorkDir:=CurrentFullPath+#0; ShellExecute(0, 'open', @FileName[1], nil, @WorkDir[1], SW_SHOWNORMAL); End; Добавление кода нуля (#0) в конце строки и вызов через @FileName[1] необходимы для приведения типа String к типу PСhar. Дальше мы приступили к разработке процедур, которые отвечают за операции с файлами и каталогами. Файловый менеджер обязан уметь выполнять различные действия над файлами. Но прежде чем что сделать с файлом или каталогом нужно получить в свое распоряжение его имя и путь до него. Для этого необходимо отслеживать выделенный элемент из lvFiles и знать является ли он файлом или каталогом. Будем предполагать, что в переменной FileName мы будем передавать уже полученное имя файла или каталога. Удаление файлов: файл удаляется с помощью функции DeleteFile. В качестве параметра передается полное имя файла, а результат истинен, если удаление прошло успешно. Пример кода: Procedure DeleteAnyFile(FileName:String); Begin If SysUtils.DeleteFile(CurrentFullPath+FileName) Then {...удаление прошло успешно...} Else {...удаление не удалось...}; End; Использование конструкции SysUtils.DeleteFile необходимо, чтобы исключить конфликт с такой же API-функцией. Удаление каталогов: удаление каталогов происходит аналогично удалению файлов, только вместо DeleteFile следует использовать RemoveDir. Следует заметить, что удалить можно только пустой каталог. Пример кода: Procedure DeleteAnyDir(FileName:String); Begin If RemoveDir (CurrentFullPath+FileName) Then {...удаление прошло успешно...} Else {...удаление не удалось...}; End; Создать каталог также просто, как и удалить, используется функция CreateDir. Пример кода: Procedure CreateAnyDir(FileName:String); Begin If CreateDir(CurrentFullPath+FileName) Then {...создание прошло успешно...} Else {...создание не удалось...}; End; Для копирования файла необходимо использовать API-функцию CopyFile. CopyFile(LPCTSTR lpExistingFileName); //указатель на имя файла-источника LPCTSTR lpNewFileName, // указатель на имя файла-приемника BOOL bFailIfExists // что делать, если файл-приемник уже существует Если bFailIfExists=False, то в случае существования файла-приемника функция прервется, а если bFailIfExists=False, то файл будет перезаписан. Пример кода: Procedure CopyAnyFile(FileName, NewFullFileName:String); Var FromF, ToF:String; Begin FromF:=CurrentFullPath+FileName+#0; ToF:=NewFullFileName+#0; If CopyFile(@FromF[1], @ToF[1], True) Then {...копирование прошло успешно...} Else {...копирование не удалось...}; End; Переименование и перемещение как файлов, так и каталогов реализуется с помощью API-функции MoveFile. MoveFile LPCTSTR lpExistingFileName, // указатель на имя старого файла LPCTSTR lpNewFileName // указатель на имя нового файла ); Пример кода: Procedure RenMovAnyFileDir(FileName, NewFullFileName:String); Var FromF, ToF:String; Begin FromF:=CurrentFullPath+FileName+#0; ToF:=NewFullFileName+#0; If MoveFile(@FromF[1], @ToF[1]) Then {...переименование/перемещение прошло успешно...} Else {...переименование/перемещение не удалось...};End; Итак, мы рассмотрели особенности построения и работы алгоритма программы, основные процедуры, с помощью которых был реализован функционал программного продукта «Файловый менеджер». 2.2 Выбор стратегии тестирования и разработка тестовСтратегия тестирования - это план проведения работ по тестированию системы или её модуля, учитывающий специфику функциональности и зависимости с другими компонентами системы и платформы. Стратегия определяет типы тестов, которые нужно выполнять для данного функционала системы, включает описание необходимых подходов с точки зрения целей тестирования. Стратегия тестирования отвечает на вопросы: - как, каким образом тестирование даст ответ, что данный функционал работает; - что нужно сделать и чем пользоваться из инструментальных средств, для достижения целей тестирования; - когда определённый функционал будет тестироваться и соответственно, когда ожидать получения результатов; Тестирование программного обеспечения (ПО) - это процесс выполнения программ на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ. Указанный набор данных называется тестовым или просто тестом. Для оптимизации набора тестов, т.е. для подготовки такого набора тестов, который позволял бы при заданном их числе (или при заданном интервале времени, отведенном на тестирование) обнаруживать большее число ошибок в ПО, необходимо, во-первых, заранее планировать этот набор и, во-вторых, использовать рациональную стратегию планирования тестов. Проектирование тестов можно начинать сразу же после завершения этапа внешнего описания ПО. Оптимальная стратегия проектирования тестов расположена внутри интервала между этими крайними подходами, но ближе к левому краю. Она включает проектирование значительной части тестов по спецификациям, но она требует также проектирования некоторых тестов и по текстам программ. При этом в первом случае эта стратегия базируется на принципах: - на каждую используемую функцию или возможность - хотя бы один тест; - на каждую область и на каждую границу изменения какой-либо входной величины - хотя бы один тест; - на каждую особую (исключительную) ситуацию, указанную в спецификациях, - хотя бы один тест. Рассмотрим подробнее методики тестирования «чёрный ящик» и метод тестирования «белый ящик». Метод тестирования «чёрный ящик». Долгое время основным способом тестирования было тестирование методом «черного ящика» - программе подавались некоторые данные на вход и проверялись результаты, в надежде найти несоответствия. При этом, как именно работает программа, считается несущественным. Отметим, что даже при таком подходе необходимо иметь спецификацию программы для того, чтобы было с чем сравнивать результаты. Этот подход до сих пор является самым распространенным в повседневной практике, но у него есть целый ряд недостатков. Во-первых, таким способом невозможно найти взаимоуничтожающихся ошибок, во-вторых, некоторые ошибки возникают достаточно редко (ошибки работы с памятью) и потому их трудно найти и воспроизвести. Метод тестирования «белый ящик». Метод тестирования, которые изучают не только внешнее поведение программы, но и ее внутреннее устройство (исходные тексты). Такие методики обобщенно называют тестированием «белого ящика». Назовем некоторых представителей этого класса методик: чтение программ, формальные просмотры программ, инспекции и т.п.). Основной трудностью подобных методов является сложность отслеживания вычислений времени выполнения. При тестировании программы методом «белый ящик» происходит проверка логики программы. Полным тестированием в этом случае будет такое, которое приведет к перебору всех возможных путей. Даже для средних по сложности программ числом таких путей может достигать десятков тысяч. Критерии тестирования. Поскольку исчерпывающее структурное тестирование невозможно, необходимо выбрать такие критерии его полноты, которые допускали бы их простую проверку и облегчали бы целенаправленный подбор тестов. Наиболее слабым из критериев полноты структурного тестирования является требование хотя бы однократного выполнения каждого оператора программы. Более сильным критерием является критерий: каждая ветвь алгоритма (каждый переход) должна быть пройдена (выполнена) хотя бы один раз. Изучение этих методов тестирования показывает, что они дополняют друг друга, то есть различные методы находят разные ошибки. Поэтому наиболее эффективные процессы разработки программного обеспечения используют некоторую комбинацию методик "черного ящика" и "белого ящика". Теперь проведём тестирование созданного нами программного продукта «Файловый менеджер». Для тестирования приложения была выбрана комбинация методик «черного ящика» и «белого ящика». Протестируем основные функции программы, а это: открытие файлов, копирование файлов, перемежение файлов, удаление файлов, создание новых каталогов. Результаты тестирования приложения мы видим в Табл.1. Ниже приведены критерии тестирования программного продукта. 1. Значения исходных данных (во всех функциях ПС исходные данные-объекты файловой системы компьютера) - исходные данные отображаются в программе «Файловый менеджер» верно. 2. Ожидаемый результат - выполнение соответствующих функций ПС над объектами файловой системы компьютера. 3. Реакция программы - предупреждение об ошибках, совершаемых пользователем при выполнении функции программы. Если ошибок не обнаружено, то приступает к выполнению соответствующих функции приложения. 4. Проверка правильности работы функций приложения с помощью проводника Windows. Следует отметить что, тестирование не может доказать правильность работы ПО, в лучшем случае оно может продемонстрировать наличие в нем ошибки. Другими словами, нельзя гарантировать, что тестированием ПО практически выполнимым набором тестов можно установить наличие каждой имеющейся в программе ошибки. По итогу проведённого тестирования приложения комбинацией методик черного и белого ящика все тесты были пройдены успешно, следовательно, приложение не причиняет вреда объектам файловой системы компьютера и может быть использовано пользователями. 2.3 Руководство пользователяДокументация продукции (или, иными словами, эксплуатационная документация) фактически представляет собой часть этой продукции, поскольку без нее целевое применение последней невозможно или сильно затруднено. Стандартизация эксплуатационной документации позволяет не описывать в договоре или в техническом задании подробные требования к эксплуатационной документации, а сослаться на соответствующие стандарты или их разделы. Требования к составу и содержанию эксплуатационной документации на программу приведены в ГОСТах серии 19. Требования к составу и содержанию эксплуатационной документации на автоматизированную систему приведены в ГОСТах серии 34. Руководство пользователя, руководство по эксплуатации, руководство оператора - документ, назначение которого, предоставить людям помощь в использовании некоторой системы. Документ входит в состав технической документации на систему. Структура и содержание документов руководство оператора, руководство программиста, руководство системного программиста регламентированы в ГОСТ 19.505-79, ГОСТ 19.504-79 и ГОСТ 19.503-79. Структура и содержание документа «Руководство пользователя автоматизированной системы» регламентированы подразделом 3.4 документа РД 50-34.698-90. Разделы руководства пользователя: 1. Введение. 2. Назначение и условия применения. 3. Подготовка к работе. 4. Описание операций. 5. Аварийные ситуации. 6. Рекомендации по освоению. Введение. При работе в любой операционной системе (ОС), в том числе и в Windows, возникает необходимость в манипуляции файлами. Пользователю всегда необходимо иметь возможность для копирования, перемещения, переименования, удаления и, конечно же, запуска файлов. Для осуществления этих, и других операций с файлами, применяются специальные программы - файловые менеджеры (также иногда называемые оболочками). Назначение и условия применения. Программное приложение «Файловый менеджер» может быть использовано широким кругом пользователей персональных компьютеров для работы с объектами файловой системы компьютера, над которыми с помощью приложения можно осуществлять следующие действия открытие, копирование, удаление, перемещение, переименование, а также создание новых каталогов. Подготовка к работе. Для корректной работы и функционирования программы «Файловый менеджер» для персонального компьютера предъявляются следующие минимальные системные требования: - операционная система семейства Windows; - тип процессора - Intel Pentium II и выше; - видеокарта - 32 Мб и выше; - оперативная память - не менее 256 Мб; - место на жестком диске - 2 Мб; - тип манипулятора - клавиатура, мышь. Для запуска и работы программы «Файловый менеджер» необходимо скопировать откомпилированный exe - файл в любую из директорий жесткого диска компьютера или флеш-накопителя. Для запуска нужно открыть файл «Файловый менеджер.exe» двойным щелчком мыши. Описание операций. После запуска программы перед пользователем появляется окно программы, на котором находится два рабочих пространства, каждое из которых предназначено для отображения содержимого одной из папок файловой системы компьютера, и сверху панель навигации. На панели навигации находятся кнопки «Открыть», «Копировать», «Переместить», «Создать папку», «Удалить» и «Обновить». При нажатии на кнопку «Открыть» (также эту кнопку дублирует клавиша «Enter» или двойной щелчок левой кнопкой мыши) происходит открытие выделенной директории или открытие выделенного файла, при этом открытие файла производится при помощи той же программы, которая ассоциирована с файлом данного типа в Windows. После нажатия на кнопку «Копировать» (также эту кнопку дублирует клавиша «F2») происходит копирование выбранного файла или директории, при этом копирование происходит в директорию соседнего рабочего пространства. Если нажатие на кнопку «Переместить» (также эту кнопку дублирует клавиша «F3») происходит перемещение выбранного файла или директории, при этом перемещение происходит в директорию соседнего рабочего пространства. При нажатии на кнопку «Создать папку» (также эту кнопку дублирует клавиша «F4») происходит создание папки в активном рабочем пространстве. При клике на кнопку «Удалить» (также эту кнопку дублирует клавиша «Delete») происходит удаление выделенного файла или директории в активном рабочем пространстве. При клике на кнопку «Обновить» (также эту кнопку дублирует клавиша «F5») происходит обновление директорий двух рабочих пространств. Аварийные ситуации. Сообщение об ошибках возникает в приложении в следующих ситуациях: - пользователь хочет переименовать или дать папке новое имя, которое уже существует в этой директории. - выбран DVD/CD-привод в котором в данный момент отсутствует носитель информации - диск. Рекомендации по освоению. При освоении программного продукта у пользователя должны быть начальные навыки пользователя ПК. ЗаключениеВ ходе научного исследования по теме «Файловый менеджер» был проведен анализ литературы, статьей по исследуемой теме, изучена нормативная документация (ГОСТ 19.505-79, ГОСТ 19.504-79, ГОСТ 19.503-79, ГОСТ 19.701-90), спроектировано и реализовано программное приложение. В результате исследования была достигнута поставленная цель - разработан программный продукт «Файловый менеджер» в соответствии с техническим заданием. Цель курсовой работы достигалась за счёт выполнения следующих задач. Обоснован выбор необходимых структур данных, в качестве которых используются объекты файловой системы компьютера. Выбран объектно-ориентированный интерфейс со свободной навигацией. Для реализации программного продукта была выбрана объектно-ориентированная технология программирования, среда программирования Borland Delphi 7.0 и как следствие - язык Delphi. Спроектированы и программно реализованы алгоритмы и структуры программного приложения с использованием современной технологии программирования. Составлена пояснительная записка для описания функциональных возможностей и сопровождения разработанной программы, на основе нормативных документов, регламентирующих состав, содержание и форму технической документации на разработанный программный продукт. В ходе выполнения курсовой работы была разработана программа управления файлами компьютера, способная производить основные действия над файлами и каталогами: копирование, удаление, перемещение, создание новой директории. Основным достоинством программы является простота в работе и небольшое потребление ресурсов компьютера. Таким образом, поставленные цели и задачи работы достигнуты, однако данная работа может быть усовершенствована и продолжена в других аспектах. Список используемой литературы1. Волков, В.Б. Информатика / В.Б. Волков, Н.В. Макарова - СПб.: Питер, 2011. - 576 с. 2. Галисеев, Г.В. Программирование в среде Delphi 7 / Г.В. Галисеев - М.: Вильямс, 2004. - 288 с. 3. ГОСТ 19.701-90 - ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правило выполнения [Электронный ресурс] - Режим доступа: http://www.gost.ru/wps/portal/ свободный. - Загл. с домашней страницы 4. Иванова, Г.С. Технология программирования / Г. С. Иванова - М.: Изд-во МГТУ им. Н.Э. Баумана, 2004. - 320 с. 5. Канер, С. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений / С. Канер, Д. Фолк, Е.К Нгуен - Киев: ДиаСофт, 2005. - 544 с. 6. Культин, Н.Б. Основы программирования в Delphi 7 / Н.Б. Культин - СПб.:БХВ - Петербург, 2007. - 608 с. 7. Курушин, В.Д. Графический дизайн и реклама / В.Д. Курушин - М.: ДМК Пресс, 2008 - 272с. 8. Майерс, Г. Искусство тестирования программ / Г. Майерс, Т. Баджетт, К. Сандлер -- М.: «Диалектика», 2012. -- 272 с. 9. Меняев, М.Ф. Информатика и основы программирования / М.Ф. Меняев - М.: Омега-Л, 2007. - 458 с. 10. Мильчин, А. Э. Издательский словарь-справочник. - Изд. 3-е / А.Э. Мильчин. - М.: ОЛМА-Пресс, 2006.-435с. 11. Программирование на языке Delphi. Глава 2. Основы языка Delphi [Электронный ресурс] - Режим доступа: http://www.rsdn.ru/article/Delphi/Delphi_7_02.xml - Загл. с домашней страницы 12. Свободная энциклопедия Википедия. Delphi (язык программирования) [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/ xml - Загл. с домашней страницы 13. Семакин, И.Г. Основы программирования: учебник/ И.Г. Семакин, Ф.П. Шестаков; -- М.: Мастерство, 2001.-- 432с.: ил ISBN 5-294-00054-7. 14. Симонович, С.В. Информатика: Базовый курс / С.В. Симонович - СПб.: Питер, 2011. - 640 с. 15. Терехов, Н.А. Технология программирования / Н.А. Терехов - М.:Интернет-Ун-т Информ. Технологий, - 2006 - 152 с. 16. Фаронов, В.В. Программирование на языке высокого уровня: учебник для вузов/ В.В. Фаронов; -- СПб.: Питер, 2005 -- 640 с. 17. Федеральное государственное унитарное предприятие Научно-технический центр ИНФОРМРЕГИСТР [Электронный ресурс]. -- Режим доступа: http://www.inforeg.ru 18. Шелест, В. Д. Программирование / В. Д. Шелест - СПб.: БХВ-Петербург, 2005. - 592 с. |