![]() |
|
|
Курсовая работа: Разработка вспомогательной системной программы в системе программирования Delphi с использованием средств WinApi(Этап выполнения программы 3 , событие «С2»). Предусловие: Дескрипторы должны быть созданы. Постусловие: Файловая система должна быть FAT32. Рисунок 4.8 –Дерево разбиений для процедуры, выполняющей считывание блока BPB для выбранного носителя.
4)Тестирование процедуры, считывающей таблицу разделов жёсткого диска(Рисунок 4.9). (Этап выполнения программы 3 , событие «С3»). Предусловие: Программа должна быть запущена от имени администратора. Постусловие: Дескрипторы должны быть созданы. Рисунок 4.9 – Дерево разбиений для процедуры считывающей таблицу разделов носителя.
5)Тестирование процедуры работы потока.(Рисунок 4.10). Предусловие: 1.Поток должен быть запущен. 2.Средства синхронизации созданы. Постусловие: Файл проецируемый в память должен быть успешно создан. Рисунок 4.10 – Дерево разбиений для процедуры работы потока.
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 Дополнительные возможности Программа имеет
справочную систему, для её запуска необходимо нажать кнопку 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); |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |