на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Системное программирование для операционных систем
b>

2. Программная реализация алгоритма

При создании программы необходимо запустить среду программирования Microsoft Visual C++ 6.0.

Для использования MFC AppWizard необходимо выполнить следующие действия: в главном меню выбирается пункт File и подпункт New. В появившемся диалоговом окне нужно перейти на вкладку Project и выбрать MFCAppWizard. Затем в поле Project name нужно указать имя проекта (в данном курсовом проекте имя Crazzyff) и нажать кнопку Ok. Далее появится диалоговое окно первого шага MFC AppWizard Step1. В нём нужно указать тип создаваемого приложения Dialog based и нажать кнопку Next. На следующем шаге MFC AppWizard Step2 флажки на пунктах About box и 3D controls.В следующем окне MFC AppWizard Step3 требуется поставить переключатель на тип проекта MFC Standard и нажать кнопку Next. На четвёртом шаге можно просмотреть создаваемые классы и нажать кнопку Finish. Далее в окне New Project Information нужно нажать кнопку Ok. После этого проект будет создан и появится окно созданного проекта. В этом окне будут присутствовать следующие элементы: кнопки Ok и Cancel и статический текст. С помощью мыши можно изменить размер окна. Также можно переместить статический текст на требуемую позицию.

Список модулей проекта:

FileNames.cpp

Главный модуль программы.

В сгенерированный автоматически код добавлена защита от запуска второй копии приложения.

ArrayTemplate.h

ArrayTemplate.cpp

Этот модуль реализует шаблон на динамические массивы со свойствами списка (коллекции).

FSelectDirForm.h

FSelectDirForm.cpp

Реализация формы выбора каталога. (код сгенерирован автоматически).

FMain.h

FMain.cpp

Реализация формы главного окна приложения.

Основная часть кода находится здесь.

Описанные (вручную) типы:

TArray

шаблон на динамический массив со свойствами списка элементов (коллекции)

TIntArray

динамический массив с элементами int

(на основе TArray)

THandleArray

динамический массив с элементами HANDLE (void *)

(на основе TArray)

TGlobalList

тип-список строк для хранения имен файлов, а также номеров каталогов (в списке каталогов) для каждого имени

TNameList

тип-список строк для хранения имен файлов-дубликатов (файлов-исключений),а также указателей на массивы номеров каталогов (TIntArray *) для каждого файла-дубликата

TDirThread

тип-поток для проверки каталогов и подготовки отчета по одноименным файлам

TNotifyThread

тип-поток для автоматического контроля проверяемых каталогов - при переименовке, добавлении и удалении файлов в данных каталогах (или их подкаталогах) инициирует проверку каталогов с подготовкой отчета

TVerDirectory

тип-подготавливаемый отчет по одноименным файлам, с набором методов для подготовки отчета.

3. Исходный текст программы приведен в приложении Б

4. Функциональные возможности программы

Программа осуществляет поиск одинаковых документов по имени и размеру. В программе предусмотрена защита от запуска второй копии приложения. При запуске второй копии приложения - она открывает и активизирует главное окно первой копии, и завершает работу.

Необходимо отметить, что программа хранит свои параметры (путь к контролируемому каталогу и список исключений) в файле «FileNames.inf» (в каталоге с исполняемым модулем программы). При запуске программы - она считывает параметры из этого файла, при закрытии программы параметры будут сохранены в этот файл. Если при запуске программы этот файл отсутствует - в качестве контролируемого назначается каталог с исполняемым модулем программы, а список исключений пуст.

Также нужно сказать о том, что при запуске программы, при условии что одноименных файлов нет - ее главное окно будет скрыто через две секунды после подготовки первого отчета. Это сделано для того, чтобы программу можно было включать в меню автозагрузки Windows, как любую другую фоновую программу (при запуске программы ее главное окно выступает в качестве заставки).

5. Руководство по использованию программы

Для запуска курсового проекта необходимо запустить файл Filenames.exe.

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

- Загрузочный модуль программы - FileNames.exe .

- ОС Windows 9X, Windows NT/2000/XP , требования к машине (ПЭВМ) накладываются операционной системой.

При загрузке программа регистрирует значок в System Tray (правый нижний угол экрана), и при закрытии ее главного окна программа остается в памяти. Для закрытия программы надо щелкнуть мышью на значке в в System Tray и во всплывающем меню выбрать «Закрыть программу».

Для показа главного окна надо выбрать пункт всплывающего меню «Отчет, настройки программы» (см. рисунок 1).

Наглядное изображение программы приведено на рисунке 1:

Рисунок 1 - Вид окна программы

Для смены контролируемого каталога нажмите кнопку под надписью «проверяемый каталог» (надпись на кнопке-путь к контролируемому каталогу).

В появившемся окне (рисунок 2) выберите нужный каталог и нажмите «Ввод»

Рисунок 2 - Выбор каталога

При двойном щелчке на нужном каталоге окно выбора каталогов тоже закроется.

После этого будет произведена проверка (перепроверка) файлов для выбранного каталога (включая его подкаталоги), с подготовкой отчета по одноименным файлам.

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

Надо иметь в виду, что операция проверки выбранного каталога (с подготовкой отчета) может занять некоторое время, и сопровождается миганием надписи «Запущена проверка» в главном окне программы.

В главном окне программы также имеется список файлов-исключений, для которых оповещение пользователя не производится. Аналогично списку одноименных файлов, при выборе в списке исключений файла - в списке путей будут отображены пути расположения этого файла, или надпись «ФАЙЛ ОТСУТСТВУЕТ», если файл в контролируемом каталоге отсутствует.

Для переноса файла из списка одноименных файлов в список исключений выделите нужную строку в списке одноименных файлов и нажмите кнопку «перенести в список исключений».

Для переноса файла из списка исключений в список одноименных файлов выделите нужную строку в списке исключений и нажмите кнопку «перенести в список одноименных файлов». Если данный файл отсутствует в контролируемом каталоге, или присутствует в нем в единственном числе - в соответствующем сообщении вам будет предложено просто удалить данное имя из списка исключений.

Заключение

В результате проделанной работы была создана программа, осуществляющая поиск одинаковых документов (по имени, размеру, дате создания). Во время проведения работы были приобретены навыки работы с языком программирования высокого уровня Visual C++. Исходя из того, что программа полностью соответствует заданию курсового проекта, можно сделать вывод, что задание на курсовую работу выполнено в полном объеме.

Список использованных источников

Майкл Хаймен, Боб Арнсон. Visual C++: Учеб. Пособие. - М.: Диалектика, 2002. - 289 с.: ил.

А. Корера, С. Фрейзер, С. Маклин, Н. Кумар, С. Робинсон, П.Г. Саранг, С. Джентайл. Visual C++. Пособие для разработчиков. Изд-во «Лори», 2003. - 417 с.: ил.

Приложение А

(ОБЯЗАТЕЛЬНОЕ)

Основной алгоритм программы

Рисунок А.1 - Основной алгоритм программы

Вышеуказанный алгоритм основной программы реализует защиту от запуска второй копии приложения. Если копия приложения уже запущена (найдены ее окна) - программа активизирует свою предыдущую копию и завершает работу, иначе - стандартное выполнение программы.

Рисунок А.2 - Алгоритм проверки регистрации по имени и номеру подкаталога

Вышеуказанный алгоритм реализует проверку и регистрацию файла в отчете. Этот метод отчета применяется к каждому найденному файлу в контролируемых каталогах.

Рисунок А.3 - Главная функция для проверки каталогов и подготовки отчета

Вышеуказанный алгоритм реализует полный механизм проверки контролируемых каталогов и подготовки отчета. В алгоритме предусмотрены механизмы для досрочного завершения проверки по признаку завершения родительского потока, а также перезапуск проверки по признаку изменения файлов (от потока контроля файлов)

Рисунок А.4 - Главная функция потока проверки файлов

Вышеуказанный алгоритм реализует работу потока проверки файлов. Вызовы методов потока CheckStep и SetLists синхронизируются с главным VCL-потоком программы. Проверка файлов с передачей отчета главному окну программы инициируется взведением события NeverEvent - потоком контроля файлов по факту изменения состава файлов. Также предусмотрен механизм завершения потока - взведением свойства Terminated и события NeverEvent.

Приложение Б

(ОБЯЗАТЕЛЬНОЕ)

Листинги программы

Файл проекта FileNames.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("FMain.cpp", FForm);

USEFORM("FSelectDirForm.cpp", SDForm);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

//защита от повторного запуска

HWND w=FindWindow("TFForm","Контроль одноименных файлов"),

w2=FindWindow("TSDForm","Выбор каталога");

if(w) {//при обнаружении запущенной копии приложения - активизирует

//ее главное окно и завершает работу

if(IsWindowVisible(w)) {

if(w2 && IsWindowVisible(w2)) SetForegroundWindow(w2);

else SetForegroundWindow(w);

}

else PostMessage(w,WM_USER+2,0,0);

}

else{ //иначе - стандартное выполнение программы

Application->Initialize();

Application->CreateForm(__classid(TFForm), &FForm);

Application->CreateForm(__classid(TSDForm), &SDForm);

Application->Run();

}

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

catch (...)

{

try

{

throw Exception("");

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

}

return 0;

}

//---------------------------------------------------------------------------

Файл ArrayTemplate.h

//---------------------------------------------------------------------------

#ifndef ArrayTemplateH

#define ArrayTemplateH

//---------------------------------------------------------------------------

//шаблон на динамический массив со свойствами коллекции(списка элементов)

template <class T> class TArray

{

private:

int fCount,fLength; //кол-во элементов,размер массива

T *fItems; //указатель на массив

protected:

T __fastcall Get(int Index); //чтение элемента массива

void __fastcall Put(int Index, T Item); //запись элемента массива

void __fastcall SetCount(int NewCount); //установка fCount

public:

TArray(int aLength); //конструктор

~TArray(void); //деструктор

void __fastcall Insert(int Index,T Item);//вставка элемента

void __fastcall Delete(int Index); //удаление элемента

void __fastcall Add(T Item); //добавление элемента

void __fastcall Clear(void); //удаление всех элементов

void __fastcall SetLength (int NewLen); //определить размер массива

T& operator[](int Index); //оператор []-доступ к элементу

void* operator&(void); //оператор & - адрес массива

__property T Items[int Index] = {read=Get, write=Put}; //свойство для доступа к элементу

__property int Count = {read=fCount, write=SetCount}; //свойство для доступа к кол-ву элементов списка

__property int Length = {read=fLength, write=SetLength};//свойство для доступа к размеру массива

};

template <class T> TArray<T>::TArray(int aLength)

{

fCount=0;

fLength=0;

SetLength(aLength);

}

template <class T> TArray<T>::~TArray(void) { SetLength(0); }

template <class T> T& TArray<T>::operator[](int Index) { return fItems[Index];}

template <class T> void* TArray<T>::operator&(void) {return fItems;}

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.