Автор: Пользователь скрыл имя, 13 Декабря 2010 в 18:40, курсовая работа
В данном курсовом проекте была разработана программа, которая обрабатывает статистическую информацию, используя метод экспертных оценок. Программа позволяет вводить не более 20 экспертов и столько же факторов, рассчитывает необходимые статистические показатели и выводит их в новое окно; далее позволяет вернуться к просмотру условия задачи или же задать с тем же количеством экспертов и факторов новое условие, или начать программу заново, или завершить ее выполнение.
Программа была создана в среде визуального объектно-ориентированного программирования – Delphi 7.0.
Введение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Теоретический раздел. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1 Постановка задачи. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.1 Описание входной информации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.2 Описание выходной информации . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Описание выбранного метода. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Математическая реализация задачи. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.1 Выбор построения модели. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.2 Решение задачи. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3. Блок-схема решения задачи. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.4 Блок-схема меню программы. . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.5 Блок-схема процедуры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1. Описание Блок-схемы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2. Описание Блок-схемы меню программы. . . . . . . . . . . . . . . . . . .
3. Описание Блок-схемы процедуры. . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1 Текст программы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2. Экспериментальный раздел. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1 Описание процесса отладки программы. . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2 Инструкция пользователю. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3 Контрольный пример. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4 Характеристика программы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3. Экономический раздел. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1 Вывод и экономический ответ задачи. . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Заключение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Приложение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
else
begin
fakt:=strtoint(edit1.Text);
exp:=strtoint(edit2.Text);
if (fakt>20) or (exp>20) then
messagedlg(' Слишком большое число экспертов или факторов'+chr(13)+'Число как факторов так и экспертов не должно привышать 20', mtwarning, [mbOk],0)
else if (fakt<0) or (exp<0) then
messagedlg('Факторы/Эксперты не могут быть отрицательными', mtwarning, [mbOK],0)
else if (fakt=1) and (exp>=2) then
messagedlg('Данные введены неверно'+#13+' Повторите ввод', mtwarning, [mbOK],0)
else if (fakt=0) or (exp=0) then
messagedlg('Число факторов/экспертов не может равняться нулю', mtwarning, [mbOK],0)
else if (fakt=1) and (exp=1) then
messagedlg('Одновременно число факторов и экспертов не может равняться 1', mtwarning, [mbOK],0)
else if fakt<exp then
begin
if messagedlg('Вы уверены, что ввели все данные верно?', mtinformation, [mbYes,mbNo],0)=mrYes then
begin
kont:=1;
form2.Close;
end;
end
else
begin
kont:=1;
form2.Close;
end;
end;
end;
procedure TForm2.FormActivate(Sender: TObject);
begin
form2.Edit1.SetFocus;
form2.Edit1.Text:='';
form2.Edit2.Text:='';
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls,
unit1;
type
TForm3 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button1: TButton;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit4;
{$R *.dfm}
procedure TForm3.FormActivate(Sender: TObject);
var i:integer;
begin
stringgrid1.RowCount:=fakt+1;
for i:=1 to (fakt) do
begin //заполнение таблицы данными
stringgrid1.Cells[0,i]:=
stringgrid1.Cells[1,i]:=
stringgrid1.Cells[2,i]:=
stringgrid1.Cells[3,i]:=
stringgrid1.Cells[4,i]:=
end;
stringgrid1.Cells[0,0]:='№ объекта';
stringgrid1.Cells[1,0]:='X(ij)
stringgrid1.Cells[2,0]:='G^2(
stringgrid1.Cells[3,0]:='G(j)'
stringgrid1.Cells[4,0]:='V,%';
label4.Caption:=floattostrf(r,
label5.Caption:=floattostrf(w,
if (w<0.7) and (w>0.5) then
label1.Caption:='
else
label1.Caption:='
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
form4.ShowModal;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls,
ExtCtrls,unit1;
type
TForm4 = class(TForm)
RadioGroup1: TRadioGroup;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit3, Unit2;
{$R *.dfm}
procedure clear_d();
var
i,j:integer;
begin
for i:=1 to fakt do
for j:=1 to exp do
begin
sum1[i]:=0; sum[i]:=0; v[i]:=0; r:=0;
dis[i]:=0; x[i]:=0; otkl[i]:=0; w:=0;
mas[i,j]:=0;
end;
end;
procedure TForm4.SpeedButton1Click(
var
i,j:integer;
begin
//выбран пункт Завершение приложения
if radiogroup1.ItemIndex=3 then
begin
if messagedlg('Завершить
прорамму',mtconfirmation,[
application.Terminate
else
exit;
end
//выбран пункт Вернуться к просмотру условия
else if radiogroup1.ItemIndex=0 then
begin
form4.Close;
form3.Close;
k:=1;
end
//очистить таблицу и заполнить ее новыми данными
else if radiogroup1.ItemIndex=1 then
begin
//обнуление ("очищение") всех элементов
for i:=1 to fakt do
for j:=1 to exp+1 do
form1.stringgrid1.Cells[i,j]:=
clear_d();
k:=0;
form1.SpeedButton2.Visible:=
form1.stringgrid1.RowCount:=
form1.StringGrid1.Col:=1;
form1.StringGrid1.Row:=1;
form4.Close; form3.Close;
end
//задать заново условия таблицы
else if radiogroup1.ItemIndex=2 then
begin
//обнуление ("очищение") всех элементов
clear_d();
k:=0;
form1.SpeedButton2.Visible:=
form1.SpeedButton1.Visible:=
if messagedlg('Перейти к диалоговому окну'+#13+'"Задать
число экспертов/факторов"',
begin
form4.Close;
form3.Close;
form1.N2Click(sender);
end
else
begin
for i:=0 to fakt do
for j:=0 to exp+1 do
form1.stringgrid1.Cells[i,j]:=
form1.StringGrid1.Visible:=
form4.Close; form3.Close;
end;
end;
end;
procedure TForm4.SpeedButton2Click(
begin
form4.Close;
end;
procedure TForm4.FormActivate(Sender: TObject);
begin
radiogroup1.ItemIndex:=0;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, jpeg,
ExtCtrls, StdCtrls;
type
TForm5 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Image1: TImage;
procedure SpeedButton1Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure FormClick(Sender: TObject);
procedure Label1Click(Sender: TObject);
procedure Label2Click(Sender: TObject);
procedure Label3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.SpeedButton1Click(
begin
form5.Close;
end;
procedure TForm5.Image1Click(Sender: TObject);
begin
form5.Close;
end;
procedure TForm5.FormClick(Sender: TObject);
begin
form5.Close;
end;
procedure TForm5.Label1Click(Sender: TObject);
begin
form5.Close;
end;
procedure TForm5.Label2Click(Sender: TObject);
begin
form5.Close;
end;
procedure TForm5.Label3Click(Sender: TObject);
begin
form5.Close;
end;
end.
Для разработки программы программист сталкивается с ошибками двух видов:
Ошибки первого типа обусловлены неправильным написанием операторов при задании программного кода. Практически все визуальные системы программирования предоставляют разработчику интерактивную систему подсказки синтаксиса при написании операторов и наименований объектов, их свойств и методов. В случае неправильного написания конструкции языка строчка или неправильное слово будет выделено, у программиста будет возможность исправить ошибку.
Ошибки второго типа связаны с неправильным написанием программного кода с точки зрения кодирования алгоритма работы программы. При возникновении подобной ошибки интерпретатор приостанавливает обработку программного кода. Затем выводится всплывающее окно с информацией о коде ошибки и дается краткое ее описание. Работая с диалоговым окном, разработчик может принять одно из следующих сценариев: