Автор работы: Пользователь скрыл имя, 17 Октября 2013 в 12:48, курсовая работа
Целью написания курсовой работы является обобщение практических знаний, полученных по курсу «Технология разработки программных продуктов». Она содержит программные алгоритмы, которые служат для решения практических задач в области высшей математики.
На практике часто возникает необходимость написания приложения для решения определенных задач. Поэтому специалисты в области разработки программных продуктов пользуются повышенным способом. В данной курсовой работе показан процесс решения поставленной задачи с точки зрения программиста.
Полученный массив 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 представлено окно программы с активной вкладкой «массив А». В левой части окна находится рабочая область, в которой выводятся элементы массивов. В правой части находятся элементы для работы с массивом А и формулы:
- Контрольная формула для проверки правильности заполнения массива А.
На рисунке 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))/
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],ffFix
checkGrid.Cells[i,0]:=
xn:=xn+h;// увеличиваем шаг на h
checkGrid.Width:=(n*45)+15;//
end;
except
exit;
end;
end;
procedure TForm1.fidelityKeyPress(
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:
begin
randomize;
SetLength(B,n,n);
upindex:=strtoint(bRangeFin.
lowindex:=strtoint(bRangeSt.
ArrayB.ColCount:=n;
ArrayB.RowCount:=n;
ArrayB.Width:=(n*30)+15; //подгоняем ширину StringGrind под количество элементов
ArrayB.Height:=(n*24)+15; //подгоняем высоту StringGrind под количество элементов
TranArrayB.Top:=ArrayB.Top+
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(
ArrayB.Cells[j,i]:=IntToStr(B[
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]:=
end;
For i:= 0 to n-1 do
For j:=0 to n-1 do
TranArrayB.Cells[j,i]:=
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]:=
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.
try
ExcelApp.Visible := false;
ExcelApp.Workbooks.Add;
Sheet:=
ExcelApp.ActiveWorkbook.
for I := 2 to n+1 do
begin
extRange
:= ExcelApp.Range[ExcelApp.Cells[
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.
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[
Sheet.Cells[i,Col
+ 1] :=FloattostrF(flo,ffGeneral,3,
end;
inc(i,3);
Sheet.Cells[i-1, 1] := 'Сортированный массив С';
inc(i);
for Col := 0 to SortArrayC.ColCount - 1 do begin
flo:=strtofloat(SortArrayC.
Sheet.Cells[i,Col
+ 1] :=FloattostrF(flo,ffGeneral,3,
end;
ExcelApp.ActiveWorkbook.
ShowMessage('Ok!');
ShellExecute (Form1.Handle, nil, 'файл.xls', nil, nil, SW_RESTORE);
finally
ExcelApp.Application.Quit;
ExcelApp := unassigned;
Sheet := Unassigned
end;
end;
procedure TForm1.bRangeFinKeyPress(
begin
if not(key in['0'..'9',',','-',#8]) then key:=#0;
Информация о работе Технология разработки программных продуктов Turbo Delphi