Разработка приложения для Windows, представляющего собой выполнение операции над матрицами
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
er 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.
Окно Form2
компонент Form2
Свойства
Caption Справка
1-компонент Label1
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
procedure TForm1. 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;
if k=n+1 then label4.caption:=Данная матрица является магичесим квадратом
else label4.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;
2.2 Спецификация программы
Исполняемый файл программы выполнения операции над матрицами имеет название Matr.exe и расположен на компакт-диске в каталоге Matr1\Magi. Состав проекта.
НаименованиеОбозначениеПримечанияMagi.resФайл ресурсовСодержит пиктограммы, графические изображенияMagi.dprФайл проектаСвязывает все файлы из которых состоит приложениеMagi.dofФайл параметров проектаСодержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивыMagi.cfgФайл, содержащий конфигурационную информацию о проектеСодержит информацию о том какие окна открыты и в каких позициях они расположеныUnit2.pasФайл программного модуля для формы №2Определяет функциональность формы №2Unit2.dfmФайл формы №2Содержит список свойств всех компонентов, включенных в форму №2Unit2.dcuОбъектный файл для Unit2.pasОткомпилированная версия Unit2.pasUnit1.pasФайл программного модуля для формы №1Определяет функциональность формы №1Unit1.dfmФайл формы №1Содержит список свойств всех компонентов, включенных в форму №1Unit1.dcuОбъектный файл для Unit1.pasОткомпилированная версия Unit2.pas
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}
// формирование матрицы
procedure TForm1. 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;