Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка (Восстановлен).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
465.92 Кб
Скачать

4.4. Интерфейс программы

Интерфейс программы включает следующие элементы:

  1. Формы. Формы – основные визуальные компоненты проекта, но которых располагаются все остальные элементы.

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

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

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

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

  1. Холсты. Данные элементы необходимы для построения графиков функций.

5. Тестирование программы

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

На данной форме имеется кнопка «Далее», после нажатия которой становится видимой форма №2 (Приложение Б, Рисунок 2).

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

На данных формах имеются поля ввода параметров, кнопки «Равномерно» и «Равноускоренно» (для построения графиков равномерного и равноускоренного движения), кнопка «Назад» (для возврата на форму, где осуществляется выбор исходной зависимости) и кнопка «Выход». При вводе всех необходимых параметров, после нажатия кнопки «Равномерно» или «Равноускоренно», программа строит соответствующий график. Если же значение параметра не введено, то выводится сообщение: «Необходимо ввести значение» (Приложение Б, Рисунок 3).

Заключение

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

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

Список литературы

  1. В.Фаронов - язык программирования Delphi

  2. Н.Б.Культин - Основы программирования в Delphi

  3. newdelphi.net

  4. cyberforum.ru

Приложения

Приложение А (листинг программы)

unit Unit1;

interface

uses

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

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.Visible:=False;

Form2.Visible:=True;

end;

end.

unit Unit2;

interface

uses

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

Dialogs, StdCtrls;

type

TForm2 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1, Unit3, Unit4;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.Visible:=False;

Form1.Visible:=True;

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

begin if RadioButton1.Checked=true then begin Form2.Visible:=False; Form3.Show; end; end;

begin if RadioButton2.Checked=true then begin Form2.Visible:=False; Form4.Show; end; end;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, StdCtrls;

type

TForm3 = class(TForm)

Label2: TLabel;

Button1: TButton;

Label3: TLabel;

Edit1: TEdit;

Label4: TLabel;

Edit2: TEdit;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Label1: TLabel;

Edit3: TEdit;

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure edit1KeyPress(Sender: TObject; var Key: Char);

procedure edit2KeyPress(Sender: TObject; var Key: Char);

procedure edit3KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

Edti1, Edti2, Edti3: TEdit;

implementation

uses Unit2;

{$R *.dfm}

function f1(x:real):real;

var V: Real;

begin

v:=StrToFloat(Form3.Edit1.text);

f1:=v*x;

end;

function f2(x2:real):real;

var v0, a: real;

begin

v0:=StrToFloat(Form3.Edit2.text);

a:=StrToFloat(Form3.Edit3.text);

f2:=v0*x2+(a*x2*x2)/2;

end;

procedure TForm3.edit1KeyPress(Sender: TObject; var Key: Char);

begin

case Key of'0'..'9', chr(8):;

else key:=chr(0);

end;

end;

procedure TForm3.edit2KeyPress(Sender: TObject; var Key: Char);

begin

case Key of '0'..'9', chr(8):;

else key:=chr(0);

end;

end;

procedure TForm3.edit3KeyPress(Sender: TObject; var Key: Char);

begin

case Key of '0'..'9', chr(8):;

else key:=chr(0);

end;

end;

procedure TForm3.Button3Click(Sender: TObject);

begin

form3.Visible:=False;

form2.Visible:=True;

end;

procedure TForm3.Button4Click(Sender: TObject);

begin

Application.Terminate;

end;

procedure TForm3.Button1Click(Sender: TObject);

var

leftGr, topGr, rightGr, bottomGr: integer;

x, xmin, xmax, stepx: real;

kx, ky: real;

xGr, yGr, xOrd, yAbs: integer;

n: integer;

begin

if edit1.text='' then MessageDlg('Необходимо ввести значение V', mtWarning, [mbOK], 0)

else

begin

canvas.fillrect(canvas.cliprect);

xmin:=-10;

xmax:=10;

stepx:=0.5;

with ClientRect do

begin

Canvas.Pen.Style:= psSolid;

leftGr:=left+150;

topGr:=top+150;

rightGr:=Right-150;

bottomGr:=bottom-50;

kx:=(rightGr-leftGr)/(xmax-xmin);

ky:=(bottomGr-topGr)/200.0;

xOrd:=(leftGr+rightGr) div 2;

yAbs:=(topGr+bottomGr) div 2;

Canvas.Pen.Color:= clBLACK;

Canvas.Brush.Color:= Form3.Color;

Canvas.MoveTo(leftGr, yAbs);

Canvas.LineTo(rightGr, yAbs);

x:=xmin;

n:=Round((xmax-xmin)/2);

while n>=0 do

begin

xGr:=xOrd+Round(x*kx);

Canvas.MoveTo(xGr, yAbs-5);

Canvas.LineTo(xGr, yAbs+5);

Canvas.TextOut(xGr, yAbs+10, FloatToStr(x));

x:=x+2;

n:=n-1;

end;

Canvas.MoveTo(xOrd, topGr);

Canvas.LineTo(xOrd, bottomGr);

Canvas.Pen.Color:=clBlue;

Canvas.Pen.Width:=3;

xGr:=xOrd+Round(xmin*kx);

yGr:=yAbs-Round(f1(xmin)*ky);

Canvas.MoveTo(xGr,yGr);

x:=xmin+stepx;

n:=Round((xmax-xmin)/stepx)-1;

while n>=0 do

begin

if (x<-0.5) or (x>-0.4) then

begin

xGr:=xOrd+Round(x*kx);

yGr:=yAbs-Round(f1(x)*ky);

Canvas.LineTo(xGr,yGr);

end;

x:=x+stepx;

n:=n-1;

end;

end;

end;

end;

procedure TForm3.Button2Click(Sender: TObject);

var

leftGr2, topGr2, rightGr2, bottomGr2: integer;

x2, xmin2, xmax2, stepx2: real;

kx2, ky2: real;

xGr2, yGr2, xOrd2, yAbs2: integer;

n2: integer;

begin

if edit2.text='' then MessageDlg('Необходимо ввести все значения', mtWarning, [mbOK], 0)

else

if edit3.text='' then MessageDlg('Необходимо ввести все значения', mtWarning, [mbOK], 0)

else

begin

canvas.fillrect(canvas.cliprect);

xmin2:=-10;

xmax2:=10;

stepx2:=0.5;

with ClientRect do

begin

Canvas.Pen.Style:= psSolid;

leftGr2:=left+150;

topGr2:=top+150;

rightGr2:=Right-150;

bottomGr2:=bottom-50;

kx2:=(rightGr2-leftGr2)/(xmax2-xmin2);

ky2:=(bottomGr2-topGr2)/200.0;

xOrd2:=(leftGr2+rightGr2) div 2;

yAbs2:=(topGr2+bottomGr2) div 2;

Canvas.Pen.Color:= clBLACK;

Canvas.Brush.Color:= Form3.Color;

Canvas.MoveTo(leftGr2, yAbs2);

Canvas.LineTo(rightGr2, yAbs2);

x2:=xmin2;

n2:=Round((xmax2-xmin2)/2);

while n2>=0 do

begin

xGr2:=xOrd2+Round(x2*kx2);

Canvas.MoveTo(xGr2, yAbs2-5);

Canvas.LineTo(xGr2, yAbs2+5);

Canvas.TextOut(xGr2, yAbs2+10, FloatToStr(x2));

x2:=x2+2;

n2:=n2-1;

end;

Canvas.MoveTo(xOrd2, topGr2);

Canvas.LineTo(xOrd2, bottomGr2);

Canvas.Pen.Color:=clBlue;

Canvas.Pen.Width:=3;

xGr2:=xOrd2+Round(xmin2*kx2);

yGr2:=yAbs2-Round(f2(xmin2)*ky2);

Canvas.MoveTo(xGr2,yGr2);

x2:=xmin2+stepx2;

n2:=Round((xmax2-xmin2)/stepx2)-1;

while n2>=0 do

begin

if (x2<-0.5) or (x2>-0.4) then

begin

xGr2:=xOrd2+Round(x2*kx2);

yGr2:=yAbs2-Round(f2(x2)*ky2);

Canvas.LineTo(xGr2,yGr2);

end;

x2:=x2+stepx2;

n2:=n2-1;

end;

end;

end;

end;

end.

unit Unit4;

interface

uses

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

Dialogs, StdCtrls;

type

TForm4 = class(TForm)

Label2: TLabel;

Button1: TButton;

Label3: TLabel;

Edit1: TEdit;

Button2: TButton;

Label1: TLabel;

Edit2: TEdit;

Button3: TButton;

Button4: TButton;

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure edit1KeyPress(Sender: TObject; var Key: Char);

procedure edit2KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit2;

{$R *.dfm}

function f1(x:real):real;

var V: Real;

begin

v:=StrToFloat(Form4.Edit1.text);

f1:=v*x;

end;

function f2(x2:real):real;

var R: real;

begin

R:=StrToFloat(Form4.Edit2.text);

f2:=x2*x2/r;

end;

procedure TForm4.edit1KeyPress(Sender: TObject; var Key: Char);

begin

case Key of '0'..'9', chr(8):;

else key:=chr(0);

end;

end;

procedure TForm4.edit2KeyPress(Sender: TObject; var Key: Char);

begin

case Key of '0'..'9', chr(8):;

else key:=chr(0);

end;

end;

procedure TForm4.Button3Click(Sender: TObject);

begin

form4.Visible:=False;

form2.Visible:=True;

end;

procedure TForm4.Button4Click(Sender: TObject);

begin

Application.Terminate;

end;

procedure TForm4.Button1Click(Sender: TObject);

var

leftGr, topGr, rightGr, bottomGr: integer;

x, xmin, xmax, stepx: real;

kx, ky: real;

xGr, yGr, xOrd, yAbs: integer;

n: integer;

begin

if edit1.text='' then MessageDlg('Необходимо ввести значение V', mtWarning, [mbOK], 0)

else

begin

canvas.fillrect(canvas.cliprect);

xmin:=-10;

xmax:=10;

stepx:=0.5;

with ClientRect do

begin

Canvas.Pen.Style:= psSolid;

leftGr:=left+150;

topGr:=top+150;

rightGr:=Right-150;

bottomGr:=bottom-50;

kx:=(rightGr-leftGr)/(xmax-xmin);

ky:=(bottomGr-topGr)/200.0;

xOrd:=(leftGr+rightGr) div 2;

yAbs:=(topGr+bottomGr) div 2;

Canvas.Pen.Color:= clBLACK;

Canvas.Brush.Color:= Form4.Color;

Canvas.MoveTo(leftGr, yAbs);

Canvas.LineTo(rightGr, yAbs);

x:=xmin;

n:=Round((xmax-xmin)/2);

while n>=0 do

begin

xGr:=xOrd+Round(x*kx);

Canvas.MoveTo(xGr, yAbs-5);

Canvas.LineTo(xGr, yAbs+5);

Canvas.TextOut(xGr, yAbs+10, FloatToStr(x));

x:=x+2;

n:=n-1;

end;

Canvas.MoveTo(xOrd, topGr);

Canvas.LineTo(xOrd, bottomGr);

Canvas.Pen.Color:=clBlue;

Canvas.Pen.Width:=3;

xGr:=xOrd+Round(xmin*kx);

yGr:=yAbs-Round(f1(xmin)*ky);

Canvas.MoveTo(xGr,yGr);

x:=xmin+stepx;

n:=Round((xmax-xmin)/stepx)-1;

while n>=0 do

begin

if (x<-0.5) or (x>-0.4) then

begin

xGr:=xOrd+Round(x*kx);

yGr:=yAbs-Round(f1(x)*ky);

Canvas.LineTo(xGr,yGr);

end;

x:=x+stepx;

n:=n-1;

end;

end;

end;

end;

procedure TForm4.Button2Click(Sender: TObject);

var

leftGr2, topGr2, rightGr2, bottomGr2: integer;

x2, xmin2, xmax2, stepx2: real;

kx2, ky2: real;

xGr2, yGr2, xOrd2, yAbs2: integer;

n2: integer;

begin

if edit2.text='' then MessageDlg('Необходимо ввести все значения', mtWarning, [mbOK], 0)

else

begin

canvas.fillrect(canvas.cliprect);

xmin2:=-10;

xmax2:=10;

stepx2:=0.5;

with ClientRect do

begin

Canvas.Pen.Style:= psSolid;

leftGr2:=left+150;

topGr2:=top+150;

rightGr2:=Right-150;

bottomGr2:=bottom-50;

kx2:=(rightGr2-leftGr2)/(xmax2-xmin2);

ky2:=(bottomGr2-topGr2)/200.0;

xOrd2:=(leftGr2+rightGr2) div 2;

yAbs2:=(topGr2+bottomGr2) div 2;

Canvas.Pen.Color:= clBLACK;

Canvas.Brush.Color:= Form4.Color;

Canvas.MoveTo(leftGr2, yAbs2);

Canvas.LineTo(rightGr2, yAbs2);

x2:=xmin2;

n2:=Round((xmax2-xmin2)/2);

while n2>=0 do

begin

xGr2:=xOrd2+Round(x2*kx2);

Canvas.MoveTo(xGr2, yAbs2-5);

Canvas.LineTo(xGr2, yAbs2+5);

Canvas.TextOut(xGr2, yAbs2+10, FloatToStr(x2));

x2:=x2+2;

n2:=n2-1;

end;

Canvas.MoveTo(xOrd2, topGr2);

Canvas.LineTo(xOrd2, bottomGr2);

Canvas.Pen.Color:=clBlue;

Canvas.Pen.Width:=3;

xGr2:=xOrd2+Round(xmin2*kx2);

yGr2:=yAbs2-Round(f2(xmin2)*ky2);

Canvas.MoveTo(xGr2,yGr2);

x2:=xmin2+stepx2;

n2:=Round((xmax2-xmin2)/stepx2)-1;

while n2>=0 do

begin

if (x2<-0.5) or (x2>-0.4) then

begin

xGr2:=xOrd2+Round(x2*kx2);

yGr2:=yAbs2-Round(f2(x2)*ky2);

Canvas.LineTo(xGr2,yGr2);

end;

x2:=x2+stepx2;

n2:=n2-1;

end;

end;

end;

end;

end.