Программный продукт "Системы линейных неравенств"

Автор работы: Пользователь скрыл имя, 20 Декабря 2010 в 14:38, курсовая работа

Краткое описание

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

Основные направления выполнения программы:

1.создать модули, предлагающие поэтапное выполнение поставленной задачи;
2.создать модули, выполняющие вычисление правильно, быстро и корректно;
3.разработать интерфейс программы, совместимый с Windows-интерфейсом.

Содержание

ВВЕДЕНИЕ…………………………………………………………… 3
1 РАЗРАБОТКА ЭСКИЗНОГО И ТЕХНИЧЕСКОГО ПРОЕКТОВ ПРОГРАММЫ…………………………………………………………
4
1.1 Задание……………………………………………………………………….. 4
1.2 Назначение и область применения…………………………………………. 4
1.3 Технические характеристики……………………………………………... 4
2 РАЗРАБОТКА РАБОЧЕГО ПРОЕКТА…………………………… 9
2.1 Разработка программы……………………………………………………… 9
2.2 Спецификация программы…………………………………………………. 22
2.3 Текст программы…………………………………………………………….. 24
3 ВНЕДРЕНИЕ……………………………………………………….. 33
ЗАКЛЮЧЕНИЕ………………………………………………………. 37
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ………………… 38

Вложенные файлы: 1 файл

КУРСОВАЯ РАБОТА.doc

— 290.00 Кб (Скачать файл)

      Свойства:

      Font – черный, размер 8. 

     7 – компоненты TEdit1, TEdit2

      Свойства:

      Text – 0.

      События: нет. 

     8 – компоненты TLabel12, TLabel13, TLabel14, TLabel15

      Свойства:

      Font – черный, размер 8. 

     9 – компоненты TEdit12, TEdit13, TEdit14

      Свойства:

      Text – 5;-5;4(соотвественно).

      События: нет. 

     10 – компонент TComboBox4

      Свойства:

      Text - max.

      События:нет. 

      11 – Компонент TLabel3, TLabel5, TLabel7

      Свойства:

      Font –clFuchsia, clLime, clBlue, размер 8. 

     12 – компоненты TEdit5, TEdit8, TEdit11

      Свойства:

     Text – -2; 2; 5.

      События: нет. 

      13 – компонент TImage1

      Свойства:

      События – Отображение графического решения системы линейных неравенств. 

2.2 Спецификация программы 

      Исполняемый файл программы «Система линейных неравенств» имеет название Project2.exe и расположен на компакт-диске в каталоге Система линейных неравенств. Состав проекта представлен в таблице 1.

      Таблица 1. Состав проекта

Наименование Обозначение Примечание
Project2.dof Файл параметров проекта Содержит текущие  установки проекта: настройки компилятора  и компоновщика, имена служебных  каталогов, условные директивы
Project2.dpr Файл проекта Связывает все  файлы, из которых состоит приложение
Project2.dsk Файл, содержащий настройки проекта Содержит информацию о том, какие окна открыты и  в каких позициях они расположены
Project2.res Файл ресурсов Содержит пиктограммы, графические изображения
Unit1.pas Файл программного модуля для формы №1 Определяет  функциональность формы №1
Unit1.dfm Файл формы  №1 Содержит список свойств всех компонентов, включенных в форму №1
Unit1.dcu Объектный файл для Unit1.pas Откомпилированная версия Unit1.pas
 

2.3 Текст программы 
 

unit Unit1; 

interface 

uses

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

  Dialogs, StdCtrls, ExtCtrls; 

type

  TForm1 = class(TForm)

    Button1: TButton;

    Edit1: TEdit;

   Edit2: TEdit;

    Label1: TLabel;

    Edit3: TEdit;

    Label2: TLabel;

    Edit4: TEdit;

    Label3: TLabel;

    Edit5: TEdit;

    ComboBox1: TComboBox;

    Edit6: TEdit;

    Label4: TLabel;

    Edit7: TEdit;

    Label5: TLabel;

    Edit8: TEdit;

    ComboBox2: TComboBox;

    Edit9: TEdit;

    Label6: TLabel;

    Edit10: TEdit;

    Label7: TLabel;

    Edit11: TEdit;

    ComboBox3: TComboBox;

    Label8: TLabel;

    Label9: TLabel;

    Label10: TLabel;

    Image1: TImage;

    Label11: TLabel;

    Label12: TLabel;

    Label13: TLabel;

    Label14: TLabel;

    Label15: TLabel;

    Label16: TLabel;

    Label17: TLabel;

    Edit12: TEdit;

    Edit13: TEdit;

    Edit14: TEdit;

    Label18: TLabel;

    Label19: TLabel;

    ComboBox4: TComboBox;

    Label20: TLabel;

    Label21: TLabel;

    Label22: TLabel;

//    procedure FormCreate(Sender: TObject);

//    procedure DrawLines;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end; 

var

  Form1: TForm1; 

implementation 

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); 

var

x1,x2,x11,x12,x13,x21,x22,x23,x31,x32,x33:integer;

a11,a12,a21,a22,a31,a32,b1,b2,b3:integer;

i:integer;

per12_x1,per12_x2,per13_x1,per13_x2,per23_x1,per23_x2:extended;

per12,per13,per23:integer;

fx1,fx2,fc:integer;

bf12,bf13,bf23:Boolean;

f12,f13,f23,fx1x2:extended;

begin

//заливаем Image белым цветом

Image1.Canvas.Brush.Color := clWhite;

Image1.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height)); 

//Рисуем координатную сетку:

//горизонтальная сетка

for i:=1 to trunc(Image1.Width/10) do

begin

Image1.Canvas.MoveTo(0,i*10);

image1.Canvas.Pen.Color:=clScrollBar;

Image1.Canvas.LineTo(Image1.Width,i*10);

end;

//вертикальная сетка

for i:=1 to trunc(Image1.Height/10) do

begin

Image1.Canvas.MoveTo(i*10,0);

image1.Canvas.Pen.Color:=clScrollBar;

Image1.Canvas.LineTo(i*10,Image1.Height);

end;

//рисуем  стрелочки и подписи осей

//стрелочка ось X1

Image1.Canvas.MoveTo(Image1.Width div 2,0);

image1.Canvas.Pen.Color:=clBlack;

Image1.Canvas.LineTo(Image1.Width div 2 - 7,7);

Image1.Canvas.MoveTo(Image1.Width div 2,0);

Image1.Canvas.LineTo(Image1.Width div 2 + 7,7);

//стрелочка ось X2

Image1.Canvas.MoveTo(Image1.Width,Image1.Height div 2);

image1.Canvas.Pen.Color:=clBlack;

Image1.Canvas.LineTo(Image1.Width - 7,Image1.Height div 2 - 7);

Image1.Canvas.MoveTo(Image1.Width,Image1.Height div 2);

Image1.Canvas.LineTo(Image1.Width - 7,Image1.Height div 2 + 7);

//надпись осей и точки (0;0)

Image1.Canvas.TextOut (Image1.Width div 2 + 10, 0, 'X1');

Image1.Canvas.TextOut (Image1.Width - 15, Image1.Height div 2 + 7, 'X2');

Image1.Canvas.TextOut (Image1.Width div 2 - 8, Image1.Height div 2, '0');

//присваемаем значения Edit переменным

a11:= StrToInt(Edit3.Text);

a12:=StrToInt(Edit4.Text);

a21:=StrToInt(Edit6.Text);

a22:=StrToInt(Edit7.Text);

a31:=StrToInt(Edit9.Text);

a32:=StrToInt(Edit10.Text);

b1:=StrToInt(Edit5.Text);

b2:=StrToInt(Edit8.Text);

b3:=StrToInt(Edit11.Text);

//рисуем оси абцисс и ординат

Image1.Canvas.MoveTo(Image1.Width div 2,0);

image1.Canvas.Pen.Color:=clBlack;

Image1.Canvas.LineTo(Image1.Width div 2,Image1.Height); 

Image1.Canvas.MoveTo(0, Image1.Height div 2);

image1.Canvas.Pen.Color:=clBlack;

Image1.Canvas.LineTo(Image1.Width,Image1.Height div 2); 

//рисуем первое уравнение

x11:=trunc((b1+a12*(Image1.Width div 2)/10)/a11);

x12:=trunc((b1-a12*(Image1.Width div 2)/10)/a11);

x13:=trunc(Image1.Height div 2);

Image1.Canvas.MoveTo(0,x13-x11*10);

image1.Canvas.Pen.Color:=clFuchsia;

Image1.Canvas.LineTo(Image1.Width,x13-x12*10);

//рисуем второе уравнение

x21:=trunc((b2+a22*(Image1.Width div 2)/10)/a21);

x22:=trunc((b2-a22*(Image1.Width div 2)/10)/a21);

x23:=trunc(Image1.Height div 2);

Image1.Canvas.MoveTo(0,x23-x21*10);

image1.Canvas.Pen.Color:=clLime;

Image1.Canvas.LineTo(Image1.Width,x23-x22*10);

//рисуем третье уравнение

x31:=trunc((b3+a32*(Image1.Width div 2)/10)/a31);

x32:=trunc((b3-a32*(Image1.Width div 2)/10)/a31);

x33:=trunc(Image1.Height div 2);

Image1.Canvas.MoveTo(0,x33-x31*10);

image1.Canvas.Pen.Color:=clBlue;

Image1.Canvas.LineTo(Image1.Width,x33-x32*10); 

//рисуем  ограничения

x1:= StrToInt(Edit1.Text);

x2:=StrToInt(Edit2.Text);

Image1.Canvas.MoveTo(Image1.Width div 2 + x1*10,Image1.Height div 2 - x2*10);

image1.Canvas.Pen.Color:=clRed;

Image1.Canvas.LineTo(Image1.Width div 2 + x1*10,0);

Image1.Canvas.MoveTo(Image1.Width div 2+ x1*10,Image1.Height div 2 - x2*10);

Image1.Canvas.LineTo(Image1.Width,Image1.Height div 2 - x2*10); 
 

//нахождение  пересечений уравнения 1 и 2

if a22*a11-a12*a21=0

  then

  Label16.Caption:='Неравенства  1 и 2 не пересекаются!'

  else

  begin

  per12_x2:=(b2*a11-b1*a21)/(a22*a11-a12*a21);

  per12_x1:=(b1-a12*per12_x2)/a11;

  Label16.Caption:='Точка пересечения неравенств 1 и 2 - ('+FloatToStr(per12_x1)+';'+FloatToStr(per12_x2)+').';

  end; 
 

//нахождение  пересечений уравнения 1 и 3

if a32*a11-a12*a31=0

  then

  Label17.Caption:='Неравенства  1 и 3 не пересекаются!'

  else

  begin

  per13_x2:=(b3*a11-b1*a31)/(a32*a11-a12*a31);

  per13_x1:=(b1-a12*per13_x2)/a11;

  Label17.Caption:='Точка пересечения неравенств 1 и 3 - ('+FloatToStr(per13_x1)+';'+FloatToStr(per13_x2)+').';

  end; 

//нахождение  пересечений уравнения 2 и 3

if a32*a21-a22*a31=0

  then

  Label18.Caption:='Неравенства 2 и 3 не пересекаются!'

  else

  begin

  per23_x2:=(b3*a21-b2*a31)/(a32*a21-a22*a31);

  per23_x1:=(b2-a22*per23_x2)/a21;

  Label18.Caption:='Точка пересечения неравенств 2 и 3 - ('+FloatToStr(per23_x1)+';'+FloatToStr(per23_x2)+').';

  end; 

//присваеваем  значения коэффициентов функции  переменным 

fx1:=StrToInt(Edit12.Text);

Информация о работе Программный продукт "Системы линейных неравенств"