Разработка объектно-ориентированного приложения с использованием класса Directory, страница 6

cout << "Введите колличество каталогов: ";

cin >> kol_katal;

Directory *katalog = new Directory[kol_katal];

Directory group[3];


Так как в задании указано реализовать конкретный объект Group (группа), содержащий список файлов, из объекта типа Directory. С помощью которого должна быть возможность выбирать группу файлов по признаку удаления, по атрибутам, по дате создания. То создаётся массив из трёх элементов класса Directory, для хранения файлов по признаку удаления, по атрибутам, по дате создания.

Программный код разбит на 3 файла состоящие из “KR.cpp” – главная программа, “clas.cpp” – объявление класса, “clas2.cpp” – реализация методов класса.

Связь файлов между собой в проекте показана на рис.1

Заголовочный файл
DailySchedule.h

KR.cpp,clas.cpp,clas2.cpp


Рисунок 1 – связь файлов проекта

2.3 Реализация методов класса Directory

Реализация методов класса определена в файле “clas2.cpp”. К нему подключается файл, содержащий сам класс “clas.cpp”,в котором описываются методы и функции класса Directory. Рассмотрим некоторые из них:

void Directory::vivod(){

system("cls");

cout << "Операция вывода каталога: " << name_kot << endl;

cout << "_____________________________________________________________";

for (int i = 0; i < kol_file; i++){

cout << "Имя файла: " << '\t' << '\t' << "| " << KATALOG[i].name << endl;

cout << "Расширение: " << '\t' << '\t' << "| " << KATALOG[i].tip << endl;

cout << "Дата и время создания: " << '\t' << "| " << KATALOG[i].data_sozd[0] << "." << KATALOG[i].data_sozd[1] << "." << KATALOG[i].data_sozd[2] << " " << KATALOG[i].data_sozd[3] << ":" <<

KATALOG[i].data_sozd[4] << ":" << KATALOG[i].data_sozd[5] << endl;

          cout << "Дата и время изменения: " << "| " << KATALOG[i].data_izm << endl;

cout << "Атрибут «только чтение»:" << "| " << KATALOG[i].atr_read << endl;

cout << "Атрибут «скрытый»: " << '\t' << "| " << KATALOG[i].atr_skr << endl;

cout << "Атрибут «системный»: " << '\t' << "| " << KATALOG[i].atr_sys << endl;

cout << "Размер файла: " << '\t' << '\t' << "| " << KATALOG[i].razmer << endl;

cout << "____________________________________________________________";

}

cout << "Колличество файлов: " << kol_file << " | Общий размер каталога: " << size_katalog << " байт" << endl;

cout << "____________________________________________________________";

system("pause");

}

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

void Directory::peresechenie(Directory peresech){

USES_CONVERSION;

int kol_f;

string Put, BUFF, Put2;

Put2 = peresech.put_katalog + "\\Пересечение с " + name_kot;

LPCWSTR a1 = A2W((Put2 + "\\*.*").c_str());

WIN32_FIND_DATA FindFileData1;

HANDLE hf1;

hf1 = FindFirstFile(a1, &FindFileData1);

if (hf1 != INVALID_HANDLE_VALUE){

do{

if ((FindFileData1.cFileName[0]) != '.'){

BUFF = W2A(FindFileData1.cFileName);

remove((Put2 + "\\" + BUFF).c_str());

}

} while (FindNextFile(hf1, &FindFileData1) != 0);

FindClose(hf1);

}

CreateDirectory(A2W(Put2.c_str()), NULL);

Put = put_katalog + "\\Пересечение с " + peresech.name_kot;

LPCWSTR a = A2W((Put + "\\*.*").c_str());

WIN32_FIND_DATA FindFileData;

HANDLE hf;

hf = FindFirstFile(a, &FindFileData);