Лабораторная работа по мдк 01. 02. «Прикладное программирование» Мастер п/о : Матысик И. А. Тема занятия



Скачать 137.24 Kb.
Дата26.06.2016
Размер137.24 Kb.


САНКТ-ПЕТЕРРБУРГСКИЙ КОЛЛЕДЖ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КОНСПЕКТ ПРАКТИЧЕСКОГО ЗАНЯТИЯ

ПО ТЕМЕ:
«Работа с файлами в С++ Builder.

Разработка приложения «Файловый менеджер»

Разработала мастер п/о

Матысик И.А.

Санкт-Петербург, 2012

Конспект практического занятия по приложению «Файловый менеджер»

Матысик И.А.
Предмет: Лабораторная работа по МДК 01.02.

«Прикладное программирование»



Мастер п/о: Матысик И.А.

Тема занятия: Работа с файлами в С++ Builder.

Разработка приложения «Файловый менеджер»



Тип урока: Комбинированный урок

Продолжительность занятия: 90 минут

Цели:

  • Знакомство с возможностями встроенных стандартных компонентов среды C++ Builder для обработки файловой структуры

  • Освоение методов и алгоритмов поиска одного и группы файлов

  • Разработка прикладного приложения, реализующего основные функции файлового менеджера по обработке файловой системы

Студенты смогут:

  • Закрепить на конкретном примере полученные теоретические знания по МДК 01.02 «Прикладное программирование» при изучении компонентов обработки файловой системы

  • Выполнять основные действия с файлами как объектами операционной системы

  • Обрабатывать информацию каталогов и дисков

  • Освоить новые приемы разработки графического интерфейса приложения

  • Выполнить отладку и тестирование приложения

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

  • Выполнять оптимизацию программного кода

  • Выявлять слабые и сильные стороны своего проекта

Оборудование:

ПК, мультимедийный проектор, рабочие места студентов с ПК.



Программное обеспечение

  • Интегрированная среда разработки программного обеспечения C++ Builder

  • Операционная система Window XP

Конспект практического занятия по приложению «Файловый менеджер»

Матысик И.А.
Технологическая карта практического занятия


  1. Организационный момент 3 минуты. Проверка присутствующих и проверка наличия конспекта. Сообщение темы занятия «Работа с файлами в С++ Builder. Разработка приложения «Файловый менеджер» 2 минуты

  2. Изложение теоретического материала с использованием презентации, методического пособия и раздаточного материала 30 минут

  3. Постановка задачи на выполнение практической работы с указанием дифференцированного оценивания данной работы 10 минут

  4. Практическая работа студентов за рабочими местами для реализации поставленной задачи – 30 минут

  5. Проверка выполненного задания и выставление оценок 10 минут

  6. Подведение итогов занятия 5 минут

Конспект практического занятия по приложению «Файловый менеджер»

Матысик И.А.


Теоретический материал
Компонент просмотра списков дисков DriveComboBox

Используется для установки нужного текущего диска. Представляет собой комбинированный список, содержащий все установленные в системе дисковые накопители. Компонент имеет свойства компонента ComboBox (Items, ItemsIndex, Text и др.), но имеет и дополнительные к ним:



char Driveвыбранный диск. Доступно только на этапе выполнения для чтения и записи. Если диск отсутствует в системе, то команда присвоения игнорируется.

Рис. 1. Компонент DriveComboBox
DirListиспользуется для связи с компонентом DirectoryListBox, чтобы при смене диска в компоненте DriveComboBox происходило обновление содержимого компонента DirectoryListBox.
Компонент просмотра папок DirectoryListBox

Используется для просмотра и перемещения по дереву каталогов. Компонент имеет свойства:



String Directoryтекущий каталог. Доступно только при выполнении приложения для чтения и записи.

DirLabel отображение текущего каталога в компоненте

TLabel, который необходимо установить на форму и выбрать его в этом свойстве.



Рис. 2. Компонент DirectoryListBox
char Drive – буква текущего диска. Свойство используется для связи с компонентом DriveComboBox. Обычно это свойство изменяют у DirectoryListBox при возникновении событии OnChange компонента DriveComboBox. Если выбрать недоступный диск, то возникает аварийное завершение приложения. В этом случае надо использовать конструкцию try.

void __fastcall TForm1::DriveComboBox1Change(TObject *Sender)

{

try


{

Form1->DirectoryListBox1->Drive=Form1->DriveComboBox1->Drive;

}

catch (...)



{ ShowMessage("Вы выбрали недоступный диск"); }

}

Конспект практического занятия по приложению «Файловый менеджер»



Матысик И.А.
Работа с дисками

int DiskSize(Byte d) – возвращает размер диска в байтах, заданного параметром: 0 – текущий, 1 – a, 2 – b и т.д. Функция возвращает -1, если указанного диска (можно использовать для цикла по номерам дисков).

int DiskFree(Byte d) – возвращает свободное место на диске в байтах. Во всем остальном данная функция аналогична функции DiskSize().

int getdisk() – возвращает номер текущего логического диска (0 – диск А).

int setdisk( int d) – устанавливает текущим диск с номером d. Если диск отсутствует, то текущим остается прежний диск. Функция возвращает максимальный номер диска, установленного в системе.
Работа с папками

bool SelectDirectory (“Заголовок”, “Корневой каталог”, String Directory) – вызов стандартного диалога выбора каталога. Параметр «Заголовок» задает строку указание пользователю, параметр «Корневой каталог» задает папку, только внутри которой пользователь может выбирать папки. Если указать пустую строку или несуществующий каталог, то в окне отобразиться все дерево папок. Выходной параметр «Directory» содержит результат выбора пользователя. Функция возвращает true, если пользователь выбрал папку и нажал Ok, иначе – false.
Рис.3. Вызов стандартного диалога выбора папки
#include

String dir;

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (SelectDirectory(“Укажите каталог", "c:\\", dir))



Form1->Edit1->Text=dir;

else ShowMessage("Вы не указали каталог");

}

bool DirectoryExists (“путь”) – проверяет существование каталога.

bool RemoveDir(“путь”) – удаление существующего каталога. Он должен быть пустым и не являться текущим.
Конспект практического занятия по приложению «Файловый менеджер»

Матысик И.А.


bool CreateDir(“путь”) – создает каталог по указанному пути. Возвращает true при отсутствии ошибки. Ошибки могут возникнуть при отсутствии каталога, внутри которого создается новый или создаваемый каталог уже существует.

bool ForceDirectories(“путь”) – создает всю цепочку каталогов, указанную параметром, даже если промежуточные каталоги не существуют. Ошибки могут возникнуть только при отсутствии диска или прав доступа.

String GetCurrentDir() – возвращает полное имя текущего каталога.

void ChDir(“путь”) – смена текущего каталога на необходимый.

int GetSystemDirectory(путь, размер) – в параметр «путь» записывается путь к системному каталогу без завершающего обратного слеша. Параметр «размер» - максимальная длина пути.

char s[MAX_PATH];

GetSystemDirectory(s, MAX_PATH);

Form1->Edit1->Text=s;



int GetWindowsDirectory(путь, размер) – в параметр «путь» записывается путь к каталогу Windows, в остальном – аналогична функции GetSystemDirectory.
Работа с файлами

bool DeleteFile(“путь”) – удаление файла без перемещения его в корзину. В случае ошибки возвращает значение false.

bool RenameFile(“старое имя”, “новое имя”) - переименование или перенос файла. Ошибки могут появляться при отсутствии файла со старым именем или имеющимся файлом с новым именем.

int FileAge(“путь”) – дата последнего изменения файла, в случае ошибки возвращает -1. Для преобразования типа int в тип даты TDateTime используется функция TDateTime FileDateToDateTime(int x).

Form1->Caption= DateTimeToStr(FileDateToDateTime(FileAge("Unit1.cpp")));



FileSetDate(“путь”, int период) - установить дату и время последнего изменения файла. Для преобразования даты и времени из типа TDateTime в тип int используется функция int DateTimeToFileDate( TDateTime период).

FileSetDate("My.dat", DateTimeToFileDate(Now()));



int FileGetAttr(“путь”) – получение атрибутов файла как результат работы- целое число – совокупность атрибутов у этого файла. Атрибуты из таблицы

Константа

Значение

Пояснение

faReadOnly

0x01

Файл только для чтения

faHidden

0x02

Невидимый файл

faSysFile

0x04

Системный файл

faVolumeID

0x08

Идентификатор диска

faDirectory

0x10

Каталог

faArchive

0x20

Архивный файл

faAnyFile

0x3f

Любой файл

Конспект практического занятия по приложению «Файловый менеджер»

Матысик И.А.


bool FileSetAttr(“путь”, атрибуты) – установить атрибуты файла.

bool FileExists(“путь”) – проверяет существование конкретного файла.

int FindFirst(), int FindNext() и int FindClose() - поиск группы файлов, подходящих под шаблон. При работе используют структуру:

struct TSearchRec

{ int Time; //Время создания файла

int Size; //Размер файла в байтах

int Attr; //Атрибуты файла

AnsiString Name; //имя файла

int ExcludeAttr; //Для внутреннего использования

int FindHandle; //Дополнительные сведения

} ;

int FindFirst(“шаблон”, атрибуты, TSearchRec rez) – начать поиск. В шаблоне можно использовать символы * или ?. Атрибут выбирается из таблицы атрибутов. Если выбрать faAnyFile, то будут искаться все файлы и каталоги, если 0, то только обычные файлы. Функция возвращает 0, если первый подходящий файл найден. Информация о нем помещается в поля структурной переменной rez.

int FindNext(TSearchRec rez) – продолжить поиск с теми же параметрами. Функция вернет 0, если нашелся еще один подходящий файл, информация о котором запишется в параметр. Если вернет ненулевое значение – подходящих файлов нет.

int FindClose(TSearchRec rez) – завершить поиск.

В общем виде поиск выполняется фрагментом:

TSearchRec rez; //информация о найденном файле

if (FindFirst(“шаблон”, атрибуты, rez)==0) //нашли первый

do

{

//Действия с найденным файлом, информация о котором в переменной rez



}

while (FindNext(rez)==0); //продолжить поиск

else ShowMessage("Таких файлов нет");

FindClose(rez); //Завершить поиск



String FileSearch(“имя файла”, “список каталогов”) – поиск файла, заданного только именем, в списке каталогов. В списке каталоги разделяются «;». Файл сначала ищется в текущем каталоге, а затем в списке каталогов. Если файл найден в текущем каталоге, функций возвращает его имя без пути к нему. Если файл найден в каталогах из списка, функция возвращает его полное имя с путем. Если файл не найден, то возвращается пустая строка.

Конспект практического занятия по приложению «Файловый менеджер»

Матысик И.А.

Практическое задание
Разработать приложение «Файловый менеджер» с использованием различного вида списков для обработки файловой структуры текущей папка. Применять различные алгоритмы поиска одного и группы файлов, подходящих под условие поиска. Исследовать структуру и содержимое каталогов и дисков. Оформить интерфейс для удобного управления приложением.
На «Удовлетворительно»

Расположить на форме списки: DriveComboBox, DirectoryListBox, ComboBox, ListBox, а так же необходимое количество элементов интерфейса.

Выполнить:

- в компоненте DriveComboBox отображать список имеющихся в системе накопителей, а в компоненте DirectListBox - дерево папок текущего диска;

- щелчком по компоненту DirectListBox отобразить в компоненте ComboBox имеющиеся расширения файлов в текущей выбранной папке без повторений;

- щелчком по компоненту ComboBox в компонент ListBox выводятся все файлы текущей папки, имеющие выбранное расширение;

- щелчком по компоненту ListBox выводится вся информация о выбранном файле: полное имя, дата, размер и атрибут;

- для выбранного диска выводится информация о его свободном и занятом пространстве в индикаторе FGauge;

- для выбранной папки указывается количество файлов и их общий объем.
На «Хорошо»

Над файлами произвести операции удаления, переименования, изменить только имя, изменить только расширение и другие. Входные данные вводятся пользователем в подходящих элементах интерфейса.


На «Отлично»

На отдельной форме организовать расширенный поиск файлов в выбранной папке: по атрибутам (флажки), по дате создания (радиокнопки: любая, текущая, последняя неделя, последний месяц, последний год, по диапазону), по размеру, по шаблону имени. Использовать подходящие элементы интерфейса.


Конспект практического занятия по приложению «Файловый менеджер»

Матысик И.А.



Рис. 4. Использование различного вида списков для отображения состояния текущей папки


Контрольные вопросы

  1. Перечислить основные свойства компонентов работы с файловой системой

  2. Записать программный фрагмент для осуществления поиска одного файла или группы файлов по маске

  3. Указать методы управления атрибутами файла

  4. Указать основные операции с диском

  5. Перечислить команды обработки каталогов

  6. Указать основные методы обработки файлов

Конспект практического занятия по приложению «Файловый менеджер»



Матысик И.А.
Приложение №1

Основные функции работы с дисками, каталогами и файлами

Функция

Назначение

Операции с дисками

DiskSize

Размер диска в байтах

DiskFree

Свободное место на диске в байтах

getdisk

Номер текущего логического диска

setdisk

Установить нужный текущий диск

Операции с папками

SelectDirectory

Диалог выбора каталога

DirectoryExists

Проверка существования каталога

RemoveDir

Удаление существующего каталога

CreateDir

Создание каталога

ForceDirectories

Создание цепочки каталогов

GetCurrentDir

Полное имя текущего каталога

ChDir

Смена текущего каталога на необходимый

GetSystemDirectory

Путь к системному каталогу

GetWindowsDirectory

Путь к каталогу Windows

Операции с файлами

DeleteFile

Удаление файла

RenameFile

Переименование или перенос файла

FileAge

Дата последнего изменения файла

FileSetDate

Установить дату и время последнего изменения

FileGetAttr

Получение атрибутов файла

FileSetAttr

Установить атрибуты файла

FileExists

Поиск одного файла

FindFirst

Поиск первого файла из группы

FindNext

Поиск следующего файла из группы

FindClose

Завершить поиск файла из группы

FileSearch

Поиск файла из списка каталогов

Операции с именами файлов

ExtractFileDrive

Имя диска из полного пути

ExtractFilePath

Часть пути до имени файла

ExtractFileName

Имя и расширение файла

ExtractFileExt

Изменение расширения файла

ProcessPath

Разбиение полного имени на составляющие

Команды преобразования дат

FileDateToDateTime

Тип файловой даты int в тип TDateTime

DateTimeToFileDate

Тип TDateTime в тип файловой даты int


База данных защищена авторским правом ©refedu.ru 2016
обратиться к администрации

    Главная страница