- •Методические рекомендации
- •Одобрены
- •Содержание введение
- •Цели и задачи практики
- •2. Виды работ практики
- •Создание кодов модулей. Тестирование каждого модуля.
- •Объединение модулей в единую программу (приложение). Отладка приложения. Тестирование приложения.
- •3. Содержание практики
- •Использование файловой системы и функций символьного ввода/вывода Windows;
- •Изучение предметной области разрабатываемого приложения.
- •3.2. Описание сценария работы приложения. Разработка архитектуры приложения. Описание структуры модулей.
- •3.3. Формирование интерфейса приложения с использованием различных интерфейсных компонент для построения интерфейса программы.
- •3.4. Создание кодов модулей. Тестирование каждого модуля.
- •4. Указания к выполнению и оформлению заданий
- •Пример:
2. Виды работ практики
Изучение предметной области разрабатываемого приложения.
Описание сценария работы приложения. Разработка архитектуры приложения. Описание структуры модулей.
Формирование интерфейса приложения с использованием различных интерфейсных компонент для построения интерфейса программы.
Создание кодов модулей. Тестирование каждого модуля.
Объединение модулей в единую программу (приложение). Отладка приложения. Тестирование приложения.
3. Содержание практики
Темой учебной практики является разработка многофункционального приложения, решающего следующие задачи:
сбор сведений о системе;
Использование файловой системы и функций символьного ввода/вывода Windows;
работа с файлами и каталогами;
использование исключений для перехвата ошибок;
работа с реестром.
Изучение предметной области разрабатываемого приложения.
Необходимо изучить средства интерфейса прикладного программирования (WinAPI 32) ОС Windows для работы с файлами и каталогами, символьного ввода-вывода, сбора системной информации, работы с реестром. По итогам изученного материала и в соответствии с темой практики сформулировать цели разработки и требования к разрабатываемому программному продукту в форме технического задания.
Ниже описаны некоторые функции WinAPI32 для работы с файлами и каталогами:
1) Для создания новых или открытия уже существующих файлов используется функция createFile, которая имеет следующий прототип:
HANDLE CreateFile(
LPCTSTR lpFileName, // имя файла
DWORD dwDesiredAccess, // способ доступа
DWORD dwShareMode, // режимы совместного использования
LPSECUTITY_ATTRIBUTES IpSecurutyAttributes, // атрибуты защиты
DWORD dwCreationDisposition, // создание или открытие файла
DWORD dwFlagsAndAttributes, // флаги и атрибуты
HANDLE hTemplateFile // файл атрибутов);
2) Для закрытия доступа к файлу используется функция CloseHandle, единственным параметром которой является дескриптор открытого файла.
3) Для физического удаления файла с диска используется функция DeleteFile,
которая имеет следующий прототип:
BOOL DeleteFile(
LPCTSTR IpFiieName // имя файла
);
4) Для записи данных в файл служит функция writeFiie:
BOOL WriteFile(
HANDLE hFile, // дескриптор файла
LPCVOID lpBuffer, // указатель на буфер данных
DWORD nNumberOfBytesToWrite, // количество записываемых байтов
LPDWORD lpNumberOfBytesWritten, // количество записанных байтов
LPOVERLAPPED lpOverlapped // используется при асинхронной записи
);
5) Для чтения данных из файла служит функция ReadFile:
BOOL ReadFile(
HANDLE hFile, // дескриптор файла
LPVOID lpBuffer, // указатель на буфер данных
DWORD nNumberOfBytesToRead, // количество читаемых байтов
LPDWORD lpNumberOfBytesRead, // количество прочитанных байтов
LPOVERLAPPED lpOverlapped // используется при асинхронной записи
);
6) Для копирования файлов используется функция CopyFiie, прототип которой имеет вид:
BOOL CopyFiie(
LPCTSTR IpExistingFileName, // имя существующего файла
LPCTSTR lpNewFileName, // имя нового файла
BOOL bFailIfExists // действия в случае существования файла
);
7) Функция MoveFile, которая служит для перемещения файлов:
BOOL MoveFile(
LPCTSTR IpExistingFiieName, // имя существующего файла
LPCTSTR lpNewFileName // имя нового файла
);
8) Для создания каталога используется функция CreateDirectory, которая
имеет следующий прототип:
BOOL CreateDirectory(
LPCTSTR lpPathName, // имя каталога
LPSECUTITY_ATTRIBUTES IpSecurutyAttributes // атрибуты защиты
);
9) Для создания подкаталогов можно использовать функцию CreateDirectoryEx, которая позволяет наследовать атрибуты другого каталога, который в этом случае называется шаблонным каталогом. В качестве шаблонного каталога можно указать родительский каталог, в котором создается текущий каталог. Функция CreateDirectoryEx имеет следующий прототип:
BOOL CreateDirectoryEx(
LPCTSTR lpTemplateDirectory, // имя шаблонного каталога
LPCTSTR lpNewDirectory, // имя нового каталога
LPSECUTITY_ATTRIBUTES lpSecurutyAttributes // атрибуты зашиты
);
10) Для поиска файлов, находящихся в каталоге, используются функции
FindFirstFile и FindNextFile. Причем функция FindFirstFile находит
первый файл, имя которого удовлетворяет образцу поиска, а функция
FindNextFile находит последующие такие файлы:
HANDLE FindFirstFile(
LPCTSTR lpFileName, // образец имени для поиска
LPWIN32_FIND_DATA lpFindFileData // адрес данных о файле
);
BOOL F indNextFi1е(
HANDLE hFindFile, // дескриптор для поиска файлов
LPWIN32_FIND_DATA lpFindFileData // адрес данных о файле
);
11) Для удаления пустого каталога предназначена функция RemoveDdirectory, которая имеет следующий прототип:
BOOL RemoveDirectory (
LPCTSTR lpPathName // имя каталога
);
12) Определить имя текущего каталога можно при помощи функции GetCurrentDirectory, которая имеет следующий прототип:
DWORD GetCurrentDirectory(
DWORD nBufferLength, // длина буфера для имени каталога
LPTSTR lpBuffer // адрес буфера для имени каталога
);
13) Для изменения текущего каталога служит функция SetcurrentDirectory, которая имеет следующий прототип:
BOOL SetcurrentDirectory(
LPCTSTR lpPathName // имя нового текущего каталога
);
Функции WinAPI32 для работы с системной информацией и примеры их использования приведены в Приложении 1.
