Технология разработки программных продуктов Turbo Delphi

Автор работы: Пользователь скрыл имя, 17 Октября 2013 в 12:48, курсовая работа

Описание работы

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

Файлы: 1 файл

Zapiska_1_2.doc

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

 

Полученный массив B умножается на массив А для получения массива С. Умножение происходит по правилу умножения матриц

5,17

3,1

4,58

7,89

1,07

3,4

5,8

2,37

5,46

4,86


 

 

      После сортировки по возрастанию массив С имеет следующий вид:

5,17

1,07

2,37

3,1

3,4

4,58

4,86

5,46

5,8

7,89


 

На рисунке 6 представлено окно программы с активной вкладкой «массив А». В левой части окна находится рабочая область,  в которой выводятся элементы массивов. В правой части находятся элементы для работы с массивом А и формулы:

  1. Формула по которой рассчитываются элементы массива А
  1. Контрольная формула для проверки правильности заполнения массива А.

 

На рисунке 7 представлено окно программы с активной вкладкой «массив В». В левой части  окна находится рабочая область, в которой выводятся элементы массива В. В правой части находятся элементы для работы с массивом В.

Рисунок 7 –  окно программы

На рисунке 8 представлено окно программы  с активной вкладкой «массив С». В левой части окна находится  рабочая область, в которой выводятся  элементы массива С, и элементы для  заполнения массива С. В правой части  окна находится рабочая область, в которой выводятся

элементы сортированного массива  С, и элементы для сортировки массива С.

Рисунок 8 –  окно программы

На рисунке 9 представлено окно программы  с активной вкладкой «График». В  верхней части окна находится  рабочая область, в которой чертится график массива С и сортированного массива С. В нижней части окна находятся элементы для управления графиком.

Рисунок 9 –  окно программы

Чтобы заполнить массив А, нужно  на вкладке «массив А» ввести диапазон начального и конечного промежутка для х, ввести шаг, с которым изменяется х, и нажать кнопку «сформировать». Массив А будет заполнен и показан в рабочей области. Если не было введены диапазон или шаг будет выведено соответствующее сообщение.

Для заполнения массива В нужно  на вкладке «массив В» ввести диапазон начального и конечного промежутка, из которого будут браться числа, и нажать кнопку «сформировать». Массив В будет сформирован и показан в рабочей области. Если не был задан диапазон, или начальное значение превышает конечное, или не был сформирован массив А, то выдаются соответствующие сообщения

Для формирования и сортировки массива С нужно на вкладке «массив С» нажать кнопку «сформировать». Массив С формируется, сортируется и выводится в рабочей области левой части окна. Чтобы начертить график массива С и сортированного массива С нужно на вкладке «график» нажать кнопку «построить». График рисуется и выводится в рабочей области.

При формировании массива он параллельно  записывается в текстовый файл. Чтобы  записать уже сформированные массивы в файл Excel надо нажать кнопку «записать в файл». Файл сохраняется в папку программы

Далее прилагается распечатка файла  Word.

 

 

 

 

 

 

 

 

 

 

 

 

СПИСОК ЛИТЕРАТУРЫ

 

Архангельский А.Я. 100 компонентов Delphi. М.: Бином, 2002.

Фленов М. Е.Библия Delphi. СПб.:БХВ-Петербург, 2004.

Корняков В.С. Программирование документов и приложений MS Office в Delphi. М.: Форум, 2006

      Архангельский А.Я. Delphi 2006. Справочное пособие. М.: Бином, 2006.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ А – ИСХОДНЫЙ

ТЕКСТ ПРОГРАММНОГО МОДУЛЯ

 

unit Unit1;

interface

uses

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

  Dialogs, StdCtrls, Grids, Menus, ComCtrls,TabNotBk, ExtCtrls, ShellApi, XPMan, system.win.ComObj,

  OleCtnrs;

//system.win.ComObj

type

Mas1 = array of real;

  TForm1 = class(TForm)

    TabbedNotebook1: TTabbedNotebook;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    startX: TEdit;

    finalX: TEdit;

    Step: TEdit;

    ArrAOut: TMemo;

    checkGrid: TStringGrid;

    calc: TButton;

    fidelity: TEdit;

    ArrayB: TStringGrid;

    bRangeSt: TEdit;

    bRangeFin: TEdit;

    FormationB: TButton;

    FormationC: TButton;

    SortArrayC: TStringGrid;

    Graphic: TImage;

    buildGraph: TButton;

    SortC: TButton;

    Timer1: TTimer;

    ArrayC: TStringGrid;

    OpenDialog1: TOpenDialog;

    MainMenu1: TMainMenu;

    A1: TMenuItem;

    N4: TMenuItem;

    TranArrayB: TStringGrid;

    N1: TMenuItem;

    procedure calcClick(Sender: TObject);

    procedure FormationBClick(Sender: TObject);

    procedure FormationCClick(Sender: TObject);

    procedure buildGraphClick(Sender: TObject);

    procedure SortCClick(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

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

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

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

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

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

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

    function GetExcelFileName: String;

    procedure N4Click(Sender: TObject);

    procedure A1Click(Sender: TObject);

    procedure N1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

  const

  EXCEL_FILE_EXT = '.xls';

 

var

  Form1: TForm1;

  A,C,CSort:array of real;

  B:array of array of integer;

  n:integer;

  eps,y1,y2:real;

implementation

{$R *.dfm}

function ArrayA (x:real):Real;

var

   i : Integer;

   sum, sl : real;

begin

   i := 3;

   sl := -1 / 2;

   sum := 0;

   repeat

     sl := - sl * sqr(x) / i / succ(i);

     sum := sum + i * sl;

     inc(i, 2);

   until abs(i * sl) < eps;

   ArrayA := sum;

end;

Function check(x:real):real;

  begin

  check:=((1-cos(x)-x*sin(x))/sqr(x))+0.5;

  end;

procedure TForm1.calcClick(Sender: TObject);

var

xk,xn,h:real;

i:integer;

begin

try

xn:=strtofloat(startX.text);

xk:=strtofloat(finalX.text);

h:=strtofloat(Step.text);

eps:=strtofloat(fidelity.text);

n:=round((xk-xn)/h);

n:=n+1; //inc(n)

SetLength(A,n);

checkGrid.ColCount:=n;

for i := 0 to n - 1 do

  begin

   A[i]:= ArrayA(xn);  //вычисляем функцию

   ArrAOut.Lines.Add('X='+ Formatfloat('0.0;',xn)+'  '+ 'A[i]='+FloatToStrF(A[i],ffFixed, 4, 7)+'  '+'Проверка A[i]'+FloatToStrF(check(xn),ffGeneral,8,3)); //заносим вычисления функции в memo

   checkGrid.Cells[i,0]:=FloatToStrF(check(xn),ffGeneral,3,6);

   xn:=xn+h;// увеличиваем шаг на h

   checkGrid.Width:=(n*45)+15;//подгоняем  StringGrind под количество элементов

  end;

except

exit;

end;

end;

 

procedure TForm1.fidelityKeyPress(Sender: TObject; var Key: Char);

begin

     if not(key in['0'..'9',',',#8]) then key:=#0;

end;

 

procedure TForm1.finalXKeyPress(Sender: TObject; var Key: Char);

begin

     if not(key in['0'..'9',',','-',#8]) then key:=#0;

end;

 

Procedure Sort(Var CSort:Array of real);

Var

  i,j:integer;

  f:real;

Begin

for i := 1 to n-1 do

        for j := 1 to n-i do

            if CSort[j] > CSort[j+1] then begin

                f := CSort[j];

                Csort[j] := CSort[j+1];

                CSort[j+1] := f

          end;

End;

procedure TForm1.FormationBClick(Sender: TObject);

var

upindex,lowindex,i,j,a:integer;

begin

randomize;

SetLength(B,n,n);

upindex:=strtoint(bRangeFin.Text);

lowindex:=strtoint(bRangeSt.Text);

ArrayB.ColCount:=n;

ArrayB.RowCount:=n;

ArrayB.Width:=(n*30)+15; //подгоняем  ширину StringGrind под количество элементов

ArrayB.Height:=(n*24)+15; //подгоняем высоту StringGrind под количество  элементов

TranArrayB.Top:=ArrayB.Top+ArrayB.Height;

TranArrayB.ColCount:=n;

TranArrayB.RowCount:=n;

TranArrayB.Width:=(n*30)+15; //подгоняем ширину StringGrind под количество элементов

TranArrayB.Height:=(n*24)+15;

For i:= 0 to n-1 do

For j:=0 to n-1 do

begin

B[i,j]:=lowindex+random(upindex-lowindex+1);

ArrayB.Cells[j,i]:=IntToStr(B[i,j]);

end;

// Транспонирование  массива В

For i:= 0 to n-1 do

For j:=0 to n-1 do

If j>i then begin

a:=B[i,j];

B[i,j]:=B[j,i];

B[j,i]:=a;

TranArrayB.Cells[i,j]:=IntToStr(B[j,i]);

end;

For i:= 0 to n-1 do

For j:=0 to n-1 do

TranArrayB.Cells[j,i]:=IntToStr(B[i,j]);

end;

 

procedure TForm1.FormationCClick(Sender: TObject);

var

i,j:integer;

begin

ArrayC.Width:=n*50;

SetLength(C,n);

SetLength(CSort,n);

For i:= 0 to n-1 do

begin

For j:=0 to n-1 do

C[i]:=c[i]+b[i,j]*a[j];

ArrayC.ColCount:=n;

end;

for i := 0 to n-1 do

begin

CSort[i]:=C[i];

ArrayC.Cells[i,0]:=floatToStrF(C[i],ffGeneral,4,4);

end;

end;

 

procedure TForm1.A1Click(Sender: TObject);

var

  sheet, ExcelApp, extRange: variant;

Col, Row: Word;

i,aRow,aCol:integer;

flo:real;

aExSh, exCell : Variant;

begin

  ExcelApp := CreateOleObject('Excel.Application');

  try

    ExcelApp.Visible := false;

    ExcelApp.Workbooks.Add;

    Sheet:= ExcelApp.ActiveWorkbook.Worksheets[1];

    for I := 2 to n+1 do

    begin

     extRange := ExcelApp.Range[ExcelApp.Cells[i, 1], ExcelApp.Cells[i, 5]];

  extRange.MergeCells := True;

    end;

    Sheet.Cells[Col + 1, 1]:='Массив А';

    for Col := 1 to ArrAout.Lines.Count  do

    Sheet.Cells[Col + 1, 1] := ArrAOut.lines[col-1];

    inc(i,2);

 

    Sheet.Cells[i-1, 1] := 'Контрольная формула';

    for Col := 0 to checkGrid.ColCount - 1 do begin

    flo:=strtofloat(checkGrid.Cells[Col, 0]);

    Sheet.Cells[i,Col + 1] :=Formatfloat('0.00000;',flo);

    end;

    inc(i,2);

      Sheet.Cells[i, 1]:='Массив B';

        inc(i);

    for Col := 1 to ArrayB.ColCount  do

    begin;

    for Row := 1 to ArrayB.RowCount  do

    Sheet.Cells[i, row] := ArrayB.Cells[row-1,col-1];

    inc(i);

    end;

    inc(i,2);

        Sheet.Cells[i-1, 1] := 'Массив С';

    for Col := 0 to ArrayC.ColCount - 1 do begin

    flo:=strtofloat(ArrayC.Cells[Col, 0]);

    Sheet.Cells[i,Col + 1] :=FloattostrF(flo,ffGeneral,3,6);

    end;

    inc(i,3);

        Sheet.Cells[i-1, 1] := 'Сортированный массив С';

        inc(i);

    for Col := 0 to SortArrayC.ColCount - 1 do begin

       flo:=strtofloat(SortArrayC.Cells[Col, 0]);

    Sheet.Cells[i,Col + 1] :=FloattostrF(flo,ffGeneral,3,6);

    end;

 

    ExcelApp.ActiveWorkbook.SaveAs(GetExcelFileName);

    ShowMessage('Ok!');

    ShellExecute (Form1.Handle, nil, 'файл.xls', nil, nil, SW_RESTORE);

     finally

    ExcelApp.Application.Quit;

    ExcelApp := unassigned;

    Sheet := Unassigned

  end;

end;

 

procedure TForm1.bRangeFinKeyPress(Sender: TObject; var Key: Char);

begin

if not(key in['0'..'9',',','-',#8]) then key:=#0;

Информация о работе Технология разработки программных продуктов Turbo Delphi