Файловый менеджер

Автор: Пользователь скрыл имя, 29 Апреля 2013 в 11:44, курсовая работа

Краткое описание

Данный программный продукт разрабатывается для того, чтобы работать с имеющимися дисками и их файловыми системами, осуществлять такие действия как копирование, перемещение, удаление файлов и папок, создание новых папок, а также наглядно отображать имеющиеся на дисках файлы и папки как в виде дерева, так и виде таблицы. Причём необходимо предусмотреть переключение между деревом и таблицей. Также необходимо дать пользователю возможность вводить путь к интересующей его папке. И необходимо отображать текущую папку с полным путём к ней. Необходимо предусмотреть возможность выбора диска из имеющихся в компьютере. Действия должны осуществляться как с помощью меню, так и с помощью пиктограмм панели управления.

Оглавление

1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ 3
1.1. Введение 3
1.2. Основания для разработки 3
1.3. Назначение разработки 3
1.4. Требования к программе или программному изделию 3
1.5. Условия эксплуатации 4
1.6. Требования к составу и параметрам технических средств 4
1.7. Требования к информационной и программной совместимости 4
1.8. Требования к программной документации 5
1.9. Стадии и этапы разработки 5
2. ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ 7
2.1. Постановка задачи 7
2.2. Общие сведения 7
2.3. Файловые системы 8
3. КОНСТРУКТОРСКАЯ ЧАСТЬ 12
3.1. Общие сведения 12
3.2. Руководство программиста 12
3.2.1. Структура программы 12
3.2.2. Структуры данных 13
3.2.3. Средства обмена данными 14
3.2.4. Реализация пользовательского интерфейса программы 15
3.2.5. Функции работы с файловой системой 20
4. ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ 22
4.1. Обращение к программе 22
4.2. Входные данные 22
4.3. Выходные данные 22
4.4. Руководство пользователя 22
4.6.1. Назначение программы 22
4.6.2. Требования к аппаратной и программной средам 22
4.6.3. Выполнение программы 23
4.6.4. Сообщения пользователю 28
5.ЛИТЕРАТУРА 30
6.ПРИЛОЖЕНИЕ 31

Файлы: 1 файл

my_Записка.doc

— 1.21 Мб (Скачать)

Все операционные системы Windows (кроме Windows NT/2000) основаны на DOS, поэтому  внутри системы существует часть  кода DOS. В Windows NT/2000 DOS-программы работают в режиме эмуляции DOS. При загрузке другой операционной системы раздел с NTFS недоступен.

В файловой системе имя  файла может содержать до 255 символов, включая пробелы, точки и другие символы, кроме * ? \ / ; < > |. Поскольку NTFS — 64-разрядная файловая система, размер файла и раздела может быть просто огромным — 264 байт, или 17 179 869 184 Тбайт!

 

 

 

 

 

  1. Конструкторская часть
    1. Общие сведения

Данный курсовой проект представляет собой программу, созданную  в среде Visual C++ 6.0, с полным её описанием. Цель проекта – создание файлового менеджера.

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

3.2.1. Структура программы

Программа состоит из следующих  модульных частей:

  1. Main_cpp.cpp – главный модуль программы. Содержит переменные и основной код приложения;
  2. stdafx.h – заголовочный файл, содержащий обращения к заголовочным файлам С++ и Windows;
  3. My_Comander.rc – файл, содержащий имена иконок, используемых в программе, а также строки выводимые в качестве всплывающих подсказок;
  4. Arr.ico – графический файл изображения стрелки перехода на уровень вверх;
  5. CGFolder.ico - графический файл изображения закрытой зелёной папки;
  6. CYFolder.ico - графический файл изображения закрытой желтой папки;
  7. OYFolder.ico - графический файл изображения открытой желтой папки;
  8. Tree.ico - графический файл изображения дерева;
  9. GLitera.ico - графический файл изображения иконки приложения;
  10. Copy.ico - графический файл изображения копирования файла;
  11. New.ico - графический файл изображения новой папки;
  12. Delete.ico - графический файл изображения удаления файла;
  13. Move.ico - графический файл изображения перемещения файла;
  14. Refresh.ico - графический файл изображения обновления;
  15. Rename.ico - графический файл изображения переименования файла.

3.2.2. Структуры данных

При разработке программы  помимо основных типов данных использовались такие типы как:

HWND – данные этого типа являются указателями окна;

HIMAGELIST – данные этого типа являются указателями на списки изображений;

TBBUTTON – представитель этой структуры хранит информацию о кнопке панели инструментов;

HINSTANCE – данные этого типа  являются указателями на данный экземпляр;

HICON – данные этого типа являются указателями на иконку;

RECT – переменные этого типа  хранят координаты верхнего левого  угла, а также высоту и ширину  прямоугольника;

SHFILEINFO – переменная данного типа хранит информацию о файле необходимую операционной системе;

SYSTEMTIME – переменная данного типа хранит информацию в формате системного времени;

SHFILEOPSTRUCT – переменная данного типа хранит информацию об операции с файлом которую должна выполнить операционная система;

WIN32_FIND_DATA – представители этой структуры содержат информацию о найденных файлах.

При этом для окна ListView использовались:

LV_COLUMN – данные этого  типа являются колонками элемента ListView;

LV_ITEM – данные этого типа являются строками элемента ListView.

Для окна TreeView использовались:

LPNMTREEVIEW – переменная  данного типа хранит указатель  на уведомляющее сообщение от  узла TreeView;

TV_INSERTSTRUCT – структура элемента TreeView;

HTREEITEM– данные этого типа являются указателями на элемент TreeView;

TV_ITEM – данные этого типа являются элементами TreeView.

3.2.3. Средства обмена данными

В программе использованы следующие элементы ввода-вывода данных:

List View позволяет отображать списки в нескольких видах:

  • детальный многоколоночный отчет с возможностью изменения ширины столбцов и сортировки по столбцам;
  • окно с пиктограммами стандартного размера, аналогичного окну раскрытой папки;
  • окно с пиктограммами уменьшенного размера;
  • простой список с пиктограммами.

TreeView позволяет просматривать список объектов, имеющих иерархическую структуру в виде дерева. Такую структуру имеют файлы и папки на диске.

Edit позволяет вводить и выводить текстовые данные. Он представляет собой текстовое поле состоящее из одной строки.

Элемент управления ComboBox (поле со списком) позволяет выбрать элемент из списка, либо внести данные вручную. Он сочетает в себе возможности ListBox и Edit. В нём отображается только один элемент списка. У него отсутствует возможность выделения нескольких элементов, но он позволяет вводить значения как в TextBox.

3.2.4. Реализация пользовательского интерфейса программы

Функция int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszArgs, int nWinMode).

Данная функция создана для  выполнения основных задач:

    1. регистрация оконного класса, создание окна программы, отображение его на экране, организация цикла обработки сообщений;
    2. создание меню;
    3. создание панели инструментов;
    4. создание элементов управления ListView;
    5. создание элемента управления TreeView;
    6. создание элементов управления ComboBox;
    7. создание элемента управления Edit.

Функция LRESULT CALLBACK WindowFunc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam).

Это оконная функция, обрабатывающая сообщения  основного окна программы.  Осуществляется обработка следующих сообщений:

      1. WM_CREATE
    • производится установка таймера;
      1. WM_SIZE
    • перерисовка строки состояния;
    • перерисовка панели инструментов;
    • изменение размеров всех элементов управления, вызовом функции OnResize();
      1. WM_COMMAND – в зависимости от выбора пункта меню производятся следующие действия:
    • IDM_ABOUT – осуществляется вывод сообщения о программе.
    • IDI_TREE – осуществляется построение дерева для выбранного диска, а при повторном нажатии переход к выбранной папке.
    • IDI_NEW или IDM_MKDIR – происходит создание новой папки.
    • IDI_DELETE или IDM_DELETE – происходит удаление выбранной папки или файла.
    • IDI_RENAME или IDM_RENAME – происходит переименование выбранной папки или файла.
    • IDI_COPY или IDM_COPY – происходит копирование выбранной папки или файла.
    • IDI_MOVE или IDM_MOVE – происходит перемещение выбранной папки или файла.
    • IDI_REFRESH или IDM_REFRESH – происходит обновление информации в таблицах.

Также если сообщение пришло от одного из элементов управления:

    • ComboBox1 – происходит проверка наличия диска в системе, и если диск присутствует, то осуществляется переход на этот диск. Если выбрано дерево, то информация о диске представляется в виде дерева, если выбрана таблица – формируется таблица.
    • ComboBox2 – происходит проверка наличия диска в системе, и если диск присутствует, то осуществляется переход на этот диск. Информация о диске представляется в виде таблицы.
      1. WM_NOTIFY – сообщение об изменении состояния элемента:

TreeView:

    • TTN_NEEDTEXT – курсор подведен к панели инструментов и выводится подсказка для кнопки;
    • TVN_ITEMEXPANDING – при значении действия TVE_EXPAND происходит разворачивание поддерева кликнутого элемента, при значении TVE_COLLAPSE происходит сворачивание поддерева кликнутого элемента и всех вложенных элементов;
    • TVN_SELCHANGED – при смене выбранного элемента дерева происходит занесение адреса выбранной папки в строку;

ListView:

    • NM_DBLCLK – при двойном щелчке на элемент таблицы происходит вызов функции OnDblClick();
    • NM_SETFOCUS – при палучении фокуса окном становятся доступны кнопки панели инструментов работы с файлами и соответствующие пункты меню и в строку адреса помещается путь текущей папки;
    • LVN_ITEMCHANGED – при выборе элемента становятся доступны кнопки панели инструментов работы с файлами и соответствующие пункты меню;
    • NM_KILLFOCUS – при удалении фокуса с окна становятся не доступны кнопки панели инструментов работы с файлами и соответствующие пункты меню;
    • LVN_COLUMNCLICK – при клике на заголовке столбца таблицы происходит сортировка элементов по этому столбцу;
    • LVN_ENDLABELEDIT – при окончании изменения имени файла или папки происходит проверка правильности ввода имени и замена на него;
      1. WM_TIMER – производится получение системных значений даты и времени и вывод их на строку состояния;
      1. WM_DESTROY – производится уничтожение главного окна программы.

Функция LRESULT EditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) при вводе пути с строку адреса и нажатии клавиши Enter вызывает функцию GoTo (hwndListView1,CurrDir1,himlSmall1);

Функция void OnResize () осуществляет пересчёт разреров и координат элементов упривления при изменении размеров окна приложения;

Функция void DiskBrows () просматривает диски подключённые к компьютеру и заносит их имена в ComboBox-ы, которые в дальнейшем позволят переключаться между дисками;

Функция void CreateFoldersOnDisk (HWND hwnd) формирует дерево каталогов на выбранном диске, который находится в корне этого дерева;

Функция LPSTR FindFullPath (LPSTR strDrive, HWND hwndTreeView, HTREEITEM htreeItem) возвращает путь к папке которая является элементом дерева;

Функция bool AddChildren (HWND hwndTreeView, HTREEITEM hTreeItem, LPCSTR ParentDir ) добавляет элемент в дерево при построении поддерева какого-либо элемента;

Функция bool DelChildren (HWND hwndTreeView, HTREEITEM hTreeItem) осуществляет удаления элемента дерева;

Функция bool CollapseChildren (HWND hwndTreeView, HTREEITEM hTreeItem) осуществляет сворачивание поддерева и всех вложенных поддеевьев;

Функция void FillListView(HWND hwndlv, LPCSTR ParentDir, HIMAGELIST himlSmall) производит заполнение ListView информацией о файлах содержащихся в текущей папке, ставит соответствующую иконку, выводит дату создания и размер файлов;

Функция unsigned long GetFolderSize(LPCSTR ParentDir) рекурсивно подсчитывает размер папки и возвращает его если размер папки меньше 1450000 байт, в противном случае возвращает 9999999.

Функция void OnDblClick (HWND hwndlv, char* CurrentDirectory, HIMAGELIST himlSmall) вызывается при двойном клике на элементе таблицы. Если  кликнут файл происходит запуск файла, если папка происходит открытие папки, если «вверх» происходит переход в родительскую папку;

Функция int CALLBACK CompareFunc (LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) роизводит сортировку элементов таблицы по выбранному параметру;

Функция BOOL IsDiskInDrive ( LPTSTR lpszDrive ) проверяет наличие диска в устройстве;

Функуия void RefreshComboInf(HWND hwndCombo) определяет какой элемент ComboBox-а выбран;

Функция void CreateNewFolder (HWND hwndlv, LPCSTR CurrDir, HIMAGELIST himlSmall) создаёт в выбранной папке новую папку;

Функция void DeleteFile (HWND hwndlv, LPCSTR CurrDir) удаляет выбранный файл или папку в корзину;

Функция void Renamefile (HWND hwndlv) выделяет имя файла или папки и ставит курсор для переименования;

Функция void CopyFile (HWND hwndlv1, HWND hwndlv2, LPCSTR CurrD1, LPCSTR CurrD2, HIMAGELIST himlSmall) копирует выбранный файл или папку из таблицы и вызывает функцию PasteFile;

Функция void CutFile (HWND hwndlv1, HWND hwndlv2, LPCSTR CurrD1, LPCSTR CurrD2, HIMAGELIST himlSmall) вырезает выбранный файл или папку из таблицы и вызывает функцию PasteFile;

Функция void PasteFile (HWND hwndlv1, HWND hwndlv2, LPCSTR CurrDir,

HIMAGELIST himlSmall,LPCSTR csFileNameCopy,LPCSTR csNF, bool cut, int index) вставляет файл во вторую таблицу;

Функция void GoTo (HWND hwndlv, char* CurrentDirectory, HIMAGELIST himlSmall) осуществляет переход по введённому адресу если он существует, в противном случае остается текущая папка;

Функция void Activate () активизирует кнопки панели инструментов и пункты меню;

Функция void DisActivate () делает неактивними кнопки панели инструментов и пункты меню.

3.2.5. Функции работы с файловой системой

DWORD GetLogicalDrives(VOID) – возвращает информацию о логических дисках компьютера.

HANDLE FindFirstFile(LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData) – ищет файл в указанной папке и формирует структуру, содержащую информауию о найденных подпапках и файлах.

lpFileName – имя папки, в которой следует произвести поиск;

lpFindFileData – указатель на структуру WIN32_FILE_DATA, в которую занесётся информация о найденных подпапках и файлах.

BOOL FindNextFile(HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData) – продолжает поиск файлов и папок.

hFindFile – хэндл, который вернула функция FindFirstFile;

lpFindFileData – указатель на структуру WIN32_FILE_DATA, в которой хранится информация о найденных подпапках и файлах.

Информация о работе Файловый менеджер