Автор: Пользователь скрыл имя, 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
Все операционные системы Windows (кроме Windows NT/2000) основаны на DOS, поэтому внутри системы существует часть кода DOS. В Windows NT/2000 DOS-программы работают в режиме эмуляции DOS. При загрузке другой операционной системы раздел с NTFS недоступен.
В файловой системе имя файла может содержать до 255 символов, включая пробелы, точки и другие символы, кроме * ? \ / ; < > |. Поскольку NTFS — 64-разрядная файловая система, размер файла и раздела может быть просто огромным — 264 байт, или 17 179 869 184 Тбайт!
Данный курсовой проект представляет собой программу, созданную в среде Visual C++ 6.0, с полным её описанием. Цель проекта – создание файлового менеджера.
3.2.1. Структура программы
Программа состоит из следующих модульных частей:
3.2.2. Структуры данных
При разработке программы помимо основных типов данных использовались такие типы как:
HWND – данные этого типа являются указателями окна;
HIMAGELIST – данные этого типа являются указателями на списки изображений;
TBBUTTON – представитель этой структуры хранит информацию о кнопке панели инструментов;
HINSTANCE – данные этого типа являются указателями на данный экземпляр;
HICON – данные этого типа являются указателями на иконку;
RECT – переменные этого типа
хранят координаты верхнего
SHFILEINFO – переменная данного типа хранит информацию о файле необходимую операционной системе;
SYSTEMTIME – переменная данного типа хранит информацию в формате системного времени;
SHFILEOPSTRUCT – переменная данного типа хранит информацию об операции с файлом которую должна выполнить операционная система;
WIN32_FIND_DATA – представители этой структуры содержат информацию о найденных файлах.
При этом для окна ListView использовались:
LV_COLUMN – данные этого
типа являются колонками
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).
Данная функция создана для выполнения основных задач:
Функция LRESULT CALLBACK WindowFunc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam).
Это оконная функция, обрабатывающая сообщения основного окна программы. Осуществляется обработка следующих сообщений:
Также если сообщение пришло от одного из элементов управления:
TreeView:
ListView:
Функция LRESULT EditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
при вводе пути с строку адреса и нажатии
клавиши Enter вызывает функцию GoTo (hwndListView1,CurrDir1,
Функция 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, в которой хранится информация о найденных подпапках и файлах.