на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Курсовая работа: Разработка вспомогательной системной программы в системе программирования Delphi с использованием средств WinApi


(Этап выполнения программы 3 , событие «С2»).

Предусловие: Дескрипторы должны быть созданы.

Постусловие: Файловая система должна быть FAT32.

Рисунок 4.8 –Дерево разбиений для процедуры, выполняющей считывание блока BPB для выбранного носителя.

листа

Исходные данные Ожидаемые результаты Реальные результаты
1 Дескрипторы не созданы. Вывод сообщения «Не удалось считать блок параметров Bios» Вывод сообщения «Не удалось считать блок параметров Bios»
2 Файловая система отличается от FAT32. Заполнение таблицы расшифровки BPB неверными значениям , например : «Количество FAT : 0» Заполнение таблицы содержащей расшифрованные данные о BPB неверными значениям: «Количество FAT : 0»
3 Файловая система FAT32 Заполнение таблицы расшифровки верными значениями, например: «количество FAT : 2» Заполнение таблицы расшифровки верными значениями: «количество FAT : 2»

4)Тестирование процедуры, считывающей таблицу разделов жёсткого диска(Рисунок 4.9).

(Этап выполнения программы 3 , событие «С3»).

Предусловие: Программа должна быть запущена от имени администратора.

Постусловие: Дескрипторы должны быть созданы.

Рисунок 4.9 – Дерево разбиений для процедуры считывающей таблицу разделов носителя.

листа

Исходные данные Ожидаемые результаты Реальные результаты
1 Программа запущена не от имени администратора. Заполнение полей таблицы расшифровки нулевыми значениями. Заполнение полей таблицы расшифровки нулевыми значениями.
2 Дескрипторы не созданы

Вывод сообщения:

«Не удалось считать PartitionTable»

Вывод сообщения:

«Не удалось считать PartitionTable»

3 Дескрипторы созданы Заполнение таблицы расшифровки верными значениями, например: «Размер раздела {: 61432497 }» Заполнение таблицы расшифровки верными значениями «Размер раздела {: 61432497 }»

5)Тестирование процедуры работы потока.(Рисунок 4.10).

Предусловие: 1.Поток должен быть запущен.

2.Средства синхронизации созданы.

Постусловие: Файл проецируемый в память должен быть успешно создан.


Рисунок 4.10 – Дерево разбиений для процедуры работы потока.

листа

Исходные данные Ожидаемые результаты Реальные результаты
1 Средства синхронизации не созданы. Вывод сообщения «не удалось осуществить обмен сообщениями» Вывод сообщения «не удалось осуществить обмен сообщениями»
2 Проекция файла не создана. Вывод сообщения «не удалось отобразить файл на адресное пространство» Вывод сообщения «не удалось отобразить файл на адресное пространство»
3

Проекция файла создана.

Было введено сообщение

«Отправлено»

Вывод сообщения :

«Отправлено»

Вывод сообщения :

«Отправлено»


4. Эксплуатационные документы

 

4.1 Руководство программиста

4.1.1 Общие сведения о программе

Программа предназначена для обмена сообщениями между копиями этой программы с помощью файла, проецируемого в память. А также для анализа рабочей области системного диска, т.е анализ и расшифровку блока параметров Bios и анализ и расшифровку таблицы разделов носителя.

4.1.2 Структура программы

После запуска приложения появляется форма «Авторизация» для присвоения пользователя специального псевдонима для обмена информацией. Форма содержит две кнопки: «Войти» и «Закрыть». По нажатию кнопки «закрыть» происходит выход из приложения. По нажатию кнопки «войти» происходит переход на основную форму программы, данная форма содержит поле вывода сообщений – «поле истории переписки», также поле ввода сообщений, кнопку «ОТПРАВИТЬ» для отправки сообщений, а также кнопки отсоединиться, закрыть и соединится, которая будет появится на форме только после нажатия на кнопку «отсоединиться». Также на форме присутствует панель инструментов с кнопками :

1.  Сохранить историю переписки,

2.  Загрузить историю переписки.

3.  Получить данные о носителях.

4.  Справка.

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

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

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

При нажатии на третью кнопку происходит открытие дополнительного окна программы.

Дополнительное окно программы имеет заголовок «Служебная информация о носителях». Это окно содержит поле вывод информации о всех носителях присутствующих в системе . Поле вывода краткой информации о носителе, поле вывода расшифрованной информации о блоке параметров Bios, поле вывода расшифрованной информации о таблице разделов носителя, а также две таблицы, содержащие 16ричные значения первого сектора логического диска- блок параметров Bios и 16ричные значения первого сектора носителя, к которому относится выбранный логический диск (в этом секторе находится таблица разделов логического диска – Partition Table). Также на форме находятся 4 кнопки:

1.  Начать работу с диском

2.  Считать BPB(блок параметров Bios)

3.  Считать Partition Table.

4.  Закрыть.

При нажатии на первую кнопку происходит вывод краткой информации о носителе. При нажатии на кнопку «Считать BPB» происходит считывание блока BPB и заполнение значениями таблицы содержащей расшифрованные данные из BPB и таблицы, содержащей 16ричные значения считанные из BPB, выбранного логического диска.

При нажатии на кнопку – «Считать Partition Table» происходит считывание первого сектора носителя информации и заполнение данными таблицы, содержащей расшифрованные данные о таблице разделов диска и таблицы содержащей 16ричные значения считанные из первого сектора носителя.

4.1.3 Проверка программы

Входные данные : строка сообщения «сообщение №1»; логический диск «H».

Выходные данные : «сообщение№1»;

Краткая информация о носителе:

«Вы просматриваете логический диск: h

Количество цилиндров: 247

Тип носителя: съёмный носитель

Дорожек на цилиндре: 255

Секторов на дорожке: 63

Байт в секторе: 512»

Информация о таблице разделов диска:

Первый элемент таблицы разделов системного диска:

Признак загрузки: 80

Начало раздела диска{Головка: 1 Сектор: 1 Цилиндр: 0 }

Тип раздела {Ос: 7 }

Конец раздела диска{Головка: 254 Сектор: 255 Цилиндр: 255 }

Номер Сектора {: 63 }

Размер раздела {: 61432497 }

Второй элемент таблицы разделов системного диска:

Признак загрузки: 00

Начало раздела диска{Головка: 255 Сектор: 255 Цилиндр: 15 }

Тип раздела {Ос: 254 }

Конец раздела диска{Головка: 255 Сектор: 255 Цилиндр: 240 }

Номер Сектора {: 61432560 }

Размер раздела {: 318782480 }


4.1.4 Дополнительные возможности

Программа имеет справочную систему, для её запуска необходимо нажать кнопку  , или F1 на клавиатуре. Также программа определяет носители доступные в системе, это происходит автоматически при переходе на третью форму программы.

4.1.5 Сообщения системному программисту

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

Рисунок 5.1 –Содержание сообщения

2)Если не удалось создать объект типа Mutex для обмена сообщениями с другими программами, появляется сообщение:

Рисунок 5.2 – Содержание сообщения.

3)  Если не удалось наладить приём сообщений от других копий программ, появляется сообщение:


Рисунок 5.3 – Текст сообщения.

4)  Если не удалось создать объект типа события для оповещения потока о том, что данные записаны в проецируемый файл, появляется сообщение:

Рисунок 5.4 –Текст сообщения.

5)  Если не удалось передать данные (записать данные в проецируемый файл) , появляется сообщение:

Рисунок 5.6 – Текст сообщения.

4.2 Руководство пользователя

4.2.1 Назначение и условия выполнения программы

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

4.2.2 Обращение к программе для запуска:

Для запуска программы необходимо запустить приложение с Redactor.exe . Это делается с помощью ярлыка , который появляется на рабочем столе после установки, с именем OffClient.

4.2.3 Входные и выходные данные:

Входными и выходными данными при обмене сообщениями являются сами сообщения. При получении служебных данных о носителях входными данными являются имена этих носителей, а выходными – данные о них, такие как:

Количество цилиндров, тип носителя, дорожек на цилиндре, секторов на дорожке, байт в секторе и т.д.

4.2.4 Сообщения оператору:

1) Если не введён псевдоним при регистрации то появится сообщение:

Рисунок 5.7 - Текст сообщения.

2) Если не удалось передать сообщение:


Рисунок 5.8 – Текст сообщения.


Приложение

1) Текст основного модуля программы

program Redactor;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1},

ThrdRcvr in 'ThrdRcvr.pas',

Unit2 in 'Unit2.pas' {Form2},

Unit3 in 'Unit3.pas' {Form3},

HDDInfo in 'HDDInfo.pas';

{$R *.res}

begin

Application.Initialize;

Application.HelpFile:='СПРАВКА.HLP';

Application.CreateForm(TForm1, Form1);

Application.ShowMainForm:=false;

Application.CreateForm(TForm2, Form2);

Application.Run;

end.

2) Текст модуля Unit1:

unit Unit1; //Основной модуль

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ThrdRcvr,

StdCtrls, Buttons, Menus,ToolWin, ComCtrls, ActnMan, ActnColorMaps,

ImgList, ExtCtrls,Unit3;

const

MMFName:PChar = 'MMFProectFile';

MutxName:PChar = 'UniqMutexName';

EvntName:Pchar = 'ChatEventName';

SHARED_MEMORY_SIZE = 65536;

type

TForm1 = class(TForm)

Memo1: TMemo;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

MainMenu1: TMainMenu;

N1: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

ToolBar1: TToolBar;

OpenToolButton: TToolButton;

SaveAsToolButton: TToolButton;

ToolButton3: TToolButton;

ImageList1: TImageList;

StatusBar1: TStatusBar;

Timer1: TTimer;

ToolButton1: TToolButton;

N2: TMenuItem;

N8: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure CloseHandles;

procedure CreateHandles;

procedure Button2Click(Sender: TObject);

procedure WriteDataInMMF(s:string);

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedure N5Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure ToolButton1Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N2Click(Sender: TObject);

private

procedure AppHint(Sender: TObject);

public

HMutex:THandle;

ThreadRec:TThreadReceiver;

HEvent:THandle;

HFileSender:Thandle;

NicName:string;

end;

var

Form1: TForm1;

TxtFile:TextFile;// пременная файла

St:PansiChar;

lincInt:Boolean;

TxtContaningStr:String;

userName:string;

implementation

{$R *.dfm}

//процедура для показа кртких справок

procedure TForm1.AppHint(Sender: TObject);

begin

StatusBar1.SimpleText:=Application.Hint; //для отображения ииформации в панели соостояния

end;

//закрытие всех хендлов в этой копии программы

procedure TForm1.CloseHandles();

begin

CloseHandle(HFileSender);

CloseHandle(HMutex);

CloseHandle(HEvent);

end;

// создание всех необходимых объектов

procedure TForm1.CreateHandles;

begin

// проекция файла

HFileSender:=CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, SHARED_MEMORY_SIZE,MMFName);

lincInt:=(GetLastError() <> ERROR_ALREADY_EXISTS);

if HFileSender = 0 then

begin

st:='не удалось создать проекцию файла';

Application.MessageBox(st,'Сообщение...',MB_OK);

exit;

end;

// мьютекс

HMutex:=CreateMutex(nil,false,MutxName);

if HMutex = 0 then

begin

CloseHandle(HFileSender);

st:='не удалось синхронизировать приложение';

Application.MessageBox(st,'Сообщение...',MB_OK);

exit;

end;

// событие

HEvent:=CreateEvent(nil,true,false,EvntName);

if HEvent = 0 then

begin

CloseHandle(HFileSender);

CloseHandle(HMutex);

st:='не удалось осуществить обмен сообщениями';

Application.MessageBox(st,'Сообщение...',MB_OK);

exit;

end;

end;

// отсоединиться

procedure TForm1.Button1Click(Sender: TObject);

begin

ThreadRec.Terminate;

WriteDataInMMF('Пользователь '+NicName+' отключился');

ThreadRec.WaitFor;

ThreadRec.Free;// правильно уничтожаем поток

CloseHandles();

button2.Visible:=true;

button1.Visible:=false;

bitbtn2.Visible:=false;

end;

// загрузить историю переписки

procedure TForm1.N4Click(Sender: TObject);

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


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

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


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.