Демонстрационное многопоточное приложение с динамическим изменением свойств окна и компонент - Курсовая работа

бесплатно 0
4.5 175
Разработка и реализация демонстрационного многопоточного приложения. Выбор основных средств реализации. Описание логики работы приложения и разработка программного обеспечения. Описание пользовательского интерфейса. Реализация потоков в Delphi.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Информатика - это область человеческой деятельности, связанная с процессами преобразования информации с помощью компьютеров и их взаимодействием со средой применения. Информатика появилась благодаря развитию компьютерной техники и немыслима без нее. Среди главных причин, принесших заслуженную популярность объектно-ориентированного программирования, следует отметить следующие: · почти полное разрешение проблемы кризиса в программном обеспечении, за счет уменьшения времени на разработку программного продукта и высокой технологии программирования; Методы ООП для решения технических задач нередко используются в повседневной жизни, поэтому, обучение языкам объектно-ориентированного программирования не вызывает особых трудностей. Например, кнопка (Button1) принадлежит классу кнопок TBUTTON.Работая с Delphi, нужно иметь в виду: этот замечательный продукт не только упрощает разработку сложных приложений, он использует при этом все возможности операционной системы. Операционная система (ОС) предоставляет приложению некоторый интервал времени центрального процессора (ЦП) и в момент, когда приложение переходит к ожиданию сообщений или освобождает процессор, операционная система передает управление другой задаче. Теперь, когда компьютеры с более чем одним процессором резко упали в цене, а операционная система Windows NT может использовать наличие нескольких процессоров, пользователи действительно могут запускать одновременно более одной задачи.Delphi представляет программисту полный доступ к возможностям программирования интерфейса Win32. Во-первых, этот объект позволяет создавать как бы несколько программ в одной (несколько процессов, или, потоков). Во-вторых, эти процессы могут выполняться как по очереди, так и одновременно (как запрограммирует разработчик). В-третьих, из этих процессов можно легко получить доступ ко всем глобальным данным программы, т.к. класс процесса является, по сути, просто частью программы - обычным юнитом (unit). Сам API потоков не очень сложен, но предоставленные классом TTHREAD возможности вообще замечательно просты.Основные требования: Наличие кнопок «Запуск потока», «Остановка потока», «Завершение потока» по нажатию на которые соответственно начинается, останавливается и завершается демонстрация работы потока. Запуск потока после его остановки должен выполняться с состояния, в котором поток был остановлен.Если свойство равно True, то поток будет уничтожен автоматически при завершении, если свойство равно False, то поток должен уничтожаться явно в коде приложения. property Handle: THANDLE; Содержит дескриптор потока. property Priority: TTHREADPRIORITY; Определяет приоритет потока относительно других потоков в процессе. property RETURNVALUE: Integer; Определяет значение, возвращаемое потоком при его завершении. property Suspended: Boolean; Показывает, является ли поток приостановленным. Если установить свойство в True, то поток будет приостановлен, если установить свойство в False выполнение потока будет продолжено. Если параметр CREATESUSPENDED равен True, то метод Execute будет вызван только после вызова метода Resume. destructor Destroy; override; Уничтожает объект потока и освобождает память, выделенную для него. procedure DOTERMINATE; virtual; Вызывает событие ONTERMINATE. procedure Execute; virtual; abstract; Абстрактный метод, содержащий код, который будет выполняться при запуске потока. procedure Resume; Возобновляет выполнение приостановленного потока. procedure Suspend; Приостанавливает выполнение потока. procedure Synchronize(Method: TTHREADMETHOD); Выполняет метод, вызванный в рамках главного VCL потока. procedure Terminate; Дает потоку сигнал на завершение, устанавливая свойство Terminated в значение True. function WAITFOR: LONGWORD; Ожидает завершение потока и возвращает значение, определяемое свойством RETURNVALUE.В интерфейсе проекта используются компоненты Delphi: Button, Memo, Label, SPINEDIT. Button - используется для реализации в программе команд с помощью обработчика события ONCLICK этого компонента. Далее при нажатии на кнопку «Запуск» происходит запуск потока путем последовательного возрастания чисел от 1 до 20. Запущенный поток можно приостановить, нажав на кнопку «Пауза», после чего кнопка «Пауза» меняется на кнопку «Продолжить», при нажатии на которую поток возобновляется. Запущенный поток можно остановить и сохранить, нажав на кнопку «Остановка», после чего появляется окно о сохранении потока.При выполнении курсовой работы была изучена теория и технология работы со средой программирования Borland Delphi7 и TTHREAD-абстрактный класс для реализации потоков.

План
Содержание

Введение

1. Реализация потоков в Delphi

1.1 Потоки в Delphi

1.2 Класс TTHREAD

2. Разработка демонстрационного многопоточного приложения

2.1 Постановка задачи

2.2 Выбор средств реализации

2.3 Описание логики работы приложения и разработка программного обеспечения

2.4 Описание пользовательского интерфейса

Заключение

Список использованной литературы

Приложение А (обязательное)

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

Одним из важнейших разделов информатики является программирование. Язык программирования - это формальный, искусственно созданный язык для написания и реализации алгоритма на компьютере.

Среди главных причин, принесших заслуженную популярность объектно-ориентированного программирования, следует отметить следующие: · почти полное разрешение проблемы кризиса в программном обеспечении, за счет уменьшения времени на разработку программного продукта и высокой технологии программирования;

· переход от существующих языков программирования к новым, прогрессивным информационным технологиям и сходство идей объектно-ориентированного программирования с идеями из других областей науки.

Методы ООП для решения технических задач нередко используются в повседневной жизни, поэтому, обучение языкам объектно-ориентированного программирования не вызывает особых трудностей.

Преимущество ООП в наглядном представлении программы с помощью объектов (кнопок, строк для ввода информации и др.). Каждый объект принадлежит определенному классу. Например, кнопка (Button1) принадлежит классу кнопок TBUTTON. В класс входит сколь угодно много объектов, объединенных в одну группу согласно их свойствам и поведению в среде окружения, в которой они существуют и взаимодействуют.

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

В данном курсовом проекте к рассмотрению предоставлены следующие вопросы: · Потоки в Delphi.

· Класс TTHREAD.

Практической частью курсового проекта является разработка демонстрационного многопоточного приложения с динамическим изменением свойств окна и компонент.

Вывод
В процессе выполнения курсового проекта усвоили некоторые возможности Delphi.

Целью курсовой работы было изучение языка программирования DELPHI и разработка практических заданий.

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

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

Список литературы
1. Архангельский А.Я. Программирование в Delphi: Учебник по классическим версиям Delphi. - М.: Бином, 2006.

2. Дмитрий Осипов. Delphi.Профессиональное програмирование.-2006

3. Фаронов В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов - Спб.: Лидер, 2010.

4. Справочник Основы Delphi URL -

5. Множество форумов, посвященных программированию на Delphi.

6. Свободная интернет-энциклопедия Wikipedia. URL - http://ru.wikipedia.org/

Приложение А (обязательное)

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

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, STDCTRLS, SYNCOBJS, Spin;

type

TFORM1 = class(TFORM)

Button1: TBUTTON;

Memo1: TMEMO;

Button2: TBUTTON;

Button4: TBUTTON;

Button6: TBUTTON;

Button3: TBUTTON;

SPINEDIT1: TSPINEDIT;

Button5: TBUTTON;

Button7: TBUTTON;

procedure Button1Click(Sender: TOBJECT);

procedure FORMSHOW(Sender: TOBJECT);

procedure Button2Click(Sender: TOBJECT);

procedure Button3Click(Sender: TOBJECT);

procedure Button4Click(Sender: TOBJECT);

procedure Button6Click(Sender: TOBJECT);

procedure SPINEDIT1Change(Sender: TOBJECT);

procedure Button7Click(Sender: TOBJECT);

procedure Button5Click(Sender: TOBJECT);

private

{ Private declarations } public

{ Public declarations } end;

type

TMYTHREAD = class(TTHREAD) private

{ Private declarations } public

{ Public declarations }

STRINGLISTCOUNT:integer;

STRINGLISTLOADS:TSTRINGLIST;

procedure LOADFROMFILEMEMO;

procedure Execute; override;

constructor Create(CREATESUSPENDED: boolean);

end;

var

MYTHREAD:TMYTHREAD;

Form1: TFORM1;

STOPITSYNCHRONIZE:Tcriticalsection;

iteri,g,delay:integer;

implementation uses Unit2, Unit3;

{$R *.dfm} constructor TMYTHREAD.Create(CREATESUSPENDED: boolean);

begin inherited Create(CREATESUSPENDED);

delay:=Form1.SPINEDIT1.Value;

end;

procedure TMYTHREAD.Execute;

begin

STOPITSYNCHRONIZE.Enter;

STRINGLISTLOADS:=TSTRINGLIST.Create;

STRINGLISTLOADS.LOADFROMFILE(EXTRACTFILEPATH(Application.EXENAME) "Loading.txt");

for iteri:=g to STRINGLISTLOADS.Count -1 do begin if self.Terminated then break;

sleep(delay);

STRINGLISTLOADS[iteri];

STRINGLISTCOUNT:=iteri;

Synchronize(LOADFROMFILEMEMO);

end;

STOPITSYNCHRONIZE.Leave;

g:=0;

end;

procedure TFORM1.FORMSHOW(Sender: TOBJECT);

begin

STOPITSYNCHRONIZE:=Tcriticalsection.create;

end;

Procedure TMYTHREAD.LOADFROMFILEMEMO;

begin

Form1.Memo1.Lines.Add(STRINGLISTLOADS[STRINGLISTCOUNT]);

end;

procedure TFORM1.Button1Click(Sender: TOBJECT);

begin

MYTHREAD:=TMYTHREAD.Create(true);

MYTHREAD.FREEONTERMINATE:=true;

MYTHREAD.Resume;

end;

procedure TFORM1.Button2Click(Sender: TOBJECT);

begin if Button2.Caption="Пауза" then begin

Button1.Enabled:=false;

Button3.Enabled:=false;

Button4.Enabled:=false;

Button6.Enabled:=false;

MYTHREAD.Suspend;

Memo1.Lines.SAVETOFILE(EXTRACTFILEPATH(Application.EXENAME) "Save.txt");

Button2.Caption:="Продолжить";

exit;

end;

if Button2.Caption="Продолжить" then begin

MYTHREAD.Resume;

Button2.Caption:="Пауза";

Button1.Enabled:=true;

Button3.Enabled:=true;

Button4.Enabled:=true;

Button6.Enabled:=true;

end;

end;

procedure TFORM1.Button3Click(Sender: TOBJECT);

begin

Memo1.Lines.SAVETOFILE(EXTRACTFILEPATH(Application.EXENAME) "Save.txt");

Button2.Caption:="Пауза";

MYTHREAD.Terminate;

end;

procedure TFORM1.Button4Click(Sender: TOBJECT);

begin

Memo1.Clear;

Memo1.Lines.LOADFROMFILE(EXTRACTFILEPATH(Application.EXENAME) "Save.txt");

g:=memo1.Lines.Count;

end;

procedure TFORM1.Button6Click(Sender: TOBJECT);

begin

MYTHREAD.Terminate;

Form2.SHOWMODAL;

Memo1.Clear;

end;

procedure TFORM1.SPINEDIT1Change(Sender: TOBJECT);

begin delay:=SPINEDIT1.Value;

end;

procedure TFORM1.Button7Click(Sender: TOBJECT);

begin

Close;

end;

procedure TFORM1.Button5Click(Sender: TOBJECT);

begin

MYTHREAD.Terminate;

Form3.SHOWMODAL;

end;

end. unit Unit2;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, STDCTRLS;

type

TFORM2 = class(TFORM)

Button1: TBUTTON;

Button2: TBUTTON;

Label1: TLABEL;

Label2: TLABEL;

procedure Button1Click(Sender: TOBJECT);

procedure Button2Click(Sender: TOBJECT);

private

{ Private declarations } public

{ Public declarations } end;

var

Form2: TFORM2;

implementation uses Unit1;

{$R *.dfm} procedure TFORM2.Button1Click(Sender: TOBJECT);

begin

Form1.Memo1.Lines.SAVETOFILE(EXTRACTFILEPATH(Application.EXENAME) "Save.txt");

Close;

end;

procedure TFORM2.Button2Click(Sender: TOBJECT);

begin

Close;

end;

end. unit Unit3;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, STDCTRLS;

type

TFORM3 = class(TFORM)

Button1: TBUTTON;

Label1: TLABEL;

Label2: TLABEL;

Label3: TLABEL;

procedure Button1Click(Sender: TOBJECT);

private

{ Private declarations } public

{ Public declarations } end;

var

Form3: TFORM3;

implementation

{$R *.dfm} procedure TFORM3.Button1Click(Sender: TOBJECT);

begin

Close;

end;

end.

Размещено на

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?