Реферат: Разработка приложения для Windows, представляющего собой выполнение операции над матрицами

--PAGE_BREAK--2. Разработка рабочего проекта

2.1 Разработка программы


Проект программы содержит три окна:

1. Form1 – главное окно (выполнение операции над матрицами).

2. Form2 – справка о разработчике.

Окно Form1.



<img width=«466» height=«336» src=«ref-1_1383838547-37920.coolpic» v:shapes="_x0000_i1028">

Главное окно программы – Form1



Ниже приведены описание компонентов, некоторые похожие компоненты не описаны.

Компонент Form1

Свойства:

Сaption– Магический квадрат;

Border – bsSingle;

BiSystemMenu – false;

BiMinimaze – false;

BiHelp– False;

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

1 – компонент TМainMenu

Свойства:

object MainMenu1: TMainMenu

Items

Справка (N1)       О программе(N4)

Выход (N2)

События:

Для N1 – событие BitBtn1Click (приводится ниже).

N2Click – закончить работу с приложением.

N1Click – перейти к работе со второй формой.

2– компонентStringGrid1

Свойства

Left = 152

Top = 42

Width = 220

Height = 180

DefaultColWidth = 20

DefaultRowHeight = 16

FixedCols = 0

FixedRows = 0

3 – компонентButton1

Caption = 'Магический квадрат?'

событие

OnClick = Button1Click

4– компонентLabel6:

Свойства

Left = 96

Top = 400

Width = 196

Height = 24

Caption = «Контрольный пример»

Font. Charset = DEFAULT_CHARSET

OnClick = Label6Click

5 – компонентEdit1:

Свойства

Left = 232

Top = 48

Width = 41

Height = 32

НижеприводитсяокноForm2.



<img width=«515» height=«355» src=«ref-1_1383876467-49701.coolpic» v:shapes="_x0000_i1029">

Окно Form2



компонент Form2

Свойства

Caption Справка

1-компонент Label1
    продолжение
--PAGE_BREAK--object Label1: TLabel Left = 24 Top = 48 Width = 582 Height = 20 Caption = «Программа разработана в качестве курсовой работы по программированию» Font. Charset = DEFAULT_CHARSET Font. Color = clWindowText Font. Height = -16 Font. Name = 'MS Sans Serif' Font. Style= [] ParentFont= False Написание программы
Для решения поставленной задачи в программе был объявлен двумерный массив(матрица)

x:array [0… 10,0..10] of integer;

Доступ к элементам массива осуществляется с помощью индексов, поэтому были объявлены целочисленные простые переменные.

k, s, c, i, j, n:integer;

В программе используются циклические конструкции. Кроме вложенных циклов с параметром программа содержит сложную конструкцию Условие [Цикл[Условие]].

 // процедура формирования матрицы x

procedureTForm1. Label3Click(Sender: TObject);

begin

if edit1. Text='' then showmessage ('введите размер матрицы') else

randomize;

n:=strtoint (edit1. Text);

stringgrid1. Visible:=true;

n:=n-1;

StringGrid1. Height:=StringGrid1. DefaultRowHeight* (strtoint (edit1.text)+1);

StringGrid1. Width:=StringGrid1. DefaultColWidth* (strtoint (edit1.text)+1);

StringGrid1. ColCount:=strtoint (edit1.text);

StringGrid1. RowCount:=strtoint (edit1.text);

for i:=0 to n do

for j:=0 to n do

begin

x [i, j]:=random(5)+1;

end;

for i:=0 to n do

for j:=0 to n do

begin

stringgrid1. Cells [j, i]:=inttostr (x[i, j]);

end;

end;

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

procedure TForm1. Button1Click (Sender: TObject);

begin

s:=0;

for i:=0 to n do

s:= s+x [i, i];

c:=0;

for j:=n downto 0 do

c:= c+x [n-j, j];

for i:=0 to n do

begin

x [i, n+1]:=0;

for j:=0 to n do

x [i, n+1]:=x [i, n+1]+x [i, j];

end;

for i:=0 to n do

begin

x [n+1, i]:=0;

for j:=0 to n do

x [n+1, i]:=x [n+1, i]+x [j, i];

end;

k:=0;

if c=s then begin

for i:=0 to n do

if (c=x [n+1, i]) and (c=x [i, n+1]) then k:=k+1; end;

ifk=n+1 thenlabel4.caption:='Данная матрица является магичесим квадратом'

elselabel4.caption:='Эта матрица не является магическим квадратом';

end;

 // Вывод в StringGrid3контрольной матрицы

procedure TForm1. Label6Click (Sender: TObject);

begin

randomize;

n:=strtoint (edit1. Text);

stringgrid1. Visible:=true;

n:=n-1;

StringGrid1. Height:=StringGrid1. DefaultRowHeight* (strtoint (edit1.text)+1);

StringGrid1. Width:=StringGrid1. DefaultColWidth* (strtoint (edit1.text)+1);

StringGrid1. ColCount:=strtoint (edit1.text);

StringGrid1. RowCount:=strtoint (edit1.text);

for i:=0 to n do

for j:=0 to n do

begin

x [i, j]:=random(1)+1;

end;

for i:=0 to n do

for j:=0 to n do

begin

stringgrid1. Cells [j, i]:=inttostr (x[i, j]);

end;

end;


    продолжение
--PAGE_BREAK--2.2 Спецификация программы


Исполняемый файл программы выполнения операции над матрицами имеет название Matr.exe и расположен на компакт-диске в каталоге Matr1\Magi. Состав проекта.




    продолжение
--PAGE_BREAK--2.3 Текст программы


Листинг программы.

unit Unit1;

interface

 // подключение модулей

uses

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

Dialogs, StdCtrls, Grids, Menus;

 // описание типов

type

TForm1 = class(TForm)

Label1: TLabel;

StringGrid1: TStringGrid;

Edit1: TEdit;

Label2: TLabel;

Label3: TLabel;

Button1: TButton;

Label4: TLabel;

Label6: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

procedure Label3Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Label6Click (Sender: TObject);

procedure N1Click (Sender: TObject);

procedure N2Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

 // описание переменных

var

Form1: TForm1;

k, s, c, i, j, n:integer;

x:array [0… 10,0..10] of integer;

implementation

uses Unit2;

{$R*.dfm}

 // формирование матрицы

procedureTForm1. Label3Click (Sender: TObject);

begin

if edit1. Text='' then showmessage ('введитеразмерматрицы') else

randomize;

n:=strtoint (edit1. Text);

stringgrid1. Visible:=true;

n:=n-1;

StringGrid1. Height:=StringGrid1. DefaultRowHeight* (strtoint (edit1.text)+1);

StringGrid1. Width:=StringGrid1. DefaultColWidth* (strtoint (edit1.text)+1);

StringGrid1. ColCount:=strtoint (edit1.text);

StringGrid1. RowCount:=strtoint (edit1.text);

for i:=0 to n do

for j:=0 to n do

begin

x [i, j]:=random(5)+1;

end;

for i:=0 to n do

for j:=0 to n do

begin

stringgrid1. Cells [j, i]:=inttostr (x[i, j]);

end;

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

stringgrid1. Visible:=false;

end;

 // основная процедура вычислении и проверки

procedureTForm1. Button1Click (Sender: TObject);

begin

s:=0;

for i:=0 to n do

s:= s+x [i, i];

c:=0;

for j:=n downto 0 do

c:= c+x [n-j, j];

for i:=0 to n do

begin

x [i, n+1]:=0;

for j:=0 to n do

x [i, n+1]:=x [i, n+1]+x [i, j];

end;

for i:=0 to n do

begin

x [n+1, i]:=0;

for j:=0 to n do

x [n+1, i]:=x [n+1, i]+x [j, i];

end;

k:=0;

if c=s then begin

for i:=0 to n do

if (c=x [n+1, i]) and (c=x [i, n+1]) then k:=k+1; end;

if k=n+1 then label4.caption:='Данная матрица является магичесим квадратом'

else label4.caption:='Эта матрица не является магическим квадратом';

end;

 // показать матрицу

procedure TForm1. Label6Click (Sender: TObject);

begin

randomize;

n:=strtoint (edit1. Text); // количество строк или столбцов

stringgrid1. Visible:=true; // видимость

n:=n-1;

 // настройка размера StringGrid

StringGrid1. Height:=StringGrid1. DefaultRowHeight* (strtoint (edit1.text)+1);

StringGrid1. Width:=StringGrid1. DefaultColWidth* (strtoint (edit1.text)+1);

StringGrid1. ColCount:=strtoint (edit1.text);

StringGrid1. RowCount:=strtoint (edit1.text);

for i:=0 to n do

for j:=0 to n do

begin

x [i, j]:=random(1)+1; // контрольная матрица

end;

for i:=0 to n do

for j:=0 to n do

begin

stringgrid1. Cells [j, i]:=inttostr (x[i, j]);

end;

end;

 // запустить 2-форму

procedure TForm1.N1Click (Sender: TObject);

begin

form2.show;

end;

 // закрытие

procedure TForm1.N2Click (Sender: TObject);

begin

close;

end;

end.

 // код для 2 – формы

unit Unit2;

interface

uses

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

Dialogs, StdCtrls;

type

TForm2 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

private

{Private declarations}

public

{Public declarations}

end;

var

Form2: TForm2;

implementation

{$R*.dfm}

end.


    продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по информатике