Метод экспертных оценок

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

Курс_Комп_мод.doc

— 430.00 Кб (Скачать)

                                  messagedlg('Вводить надо только положительные числа',mtwarning,[mbok],0)

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]:=inttostr(dano[i]);

    stringgrid1.Cells[1,i]:=floattostrf(x[i],ffgeneral,3,2);

     stringgrid1.Cells[2,i]:=floattostrf(dis[i],ffgeneral,3,2);

    stringgrid1.Cells[3,i]:=floattostrf(otkl[i],ffgeneral,3,2);

   stringgrid1.Cells[4,i]:=floattostrf(v[i],ffgeneral,3,2);

end;

  stringgrid1.Cells[0,0]:='№  объекта';

   stringgrid1.Cells[1,0]:='X(ij)';

    stringgrid1.Cells[2,0]:='G^2(j)';

     stringgrid1.Cells[3,0]:='G(j)';

    stringgrid1.Cells[4,0]:='V,%'; 

label4.Caption:=floattostrf(r,ffgeneral,5,2);

label5.Caption:=floattostrf(w,ffgeneral,5,2);

 if (w<0.7) and (w>0.5) then

  label1.Caption:='Согласованность'+#13+'во  мнениях'+#13+'экспертов удовл.'

else

  label1.Caption:='Согласованность'+#13+'во  мнениях'+#13+'экспертов неудовл.' 

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(Sender: TObject);

var

i,j:integer;

begin

//выбран пункт  Завершение приложения

if radiogroup1.ItemIndex=3 then

begin

if messagedlg('Завершить прорамму',mtconfirmation,[mbYes,mbNo],0)=mrYes then

  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:=false;

       form1.stringgrid1.RowCount:=exp+1;

      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:=false;

       form1.SpeedButton1.Visible:=false;

      if messagedlg('Перейти к диалоговому окну'+#13+'"Задать число экспертов/факторов"',mtconfirmation,[mbYes,mbNo],0)=mrYes then

       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:=false;

          form4.Close; form3.Close;

       end;

  end;

end; 

procedure TForm4.SpeedButton2Click(Sender: TObject);

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(Sender: TObject);

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. 

 

  1. Экспериментальный раздел
 
    1. Описание  процесса отладки
 

 Для разработки программы программист сталкивается с ошибками двух видов:

  • синтаксические ошибки
  • ошибки времени исполнения программы

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

 Ошибки  второго типа связаны с неправильным написанием программного кода с точки  зрения кодирования алгоритма работы программы. При возникновении подобной ошибки интерпретатор приостанавливает обработку программного кода. Затем выводится всплывающее окно с информацией о коде ошибки и дается краткое ее описание. Работая с диалоговым окном, разработчик может принять одно из следующих сценариев:

  1. остановить дальнейшую обработку кода интерпретатором
  2. войти в режим отладки, для определения оператора, вызвавшего аварийную ситуацию
  3. получить контекстную справку о возможных причинах возникновения данной ошибки

Информация о работе Метод экспертных оценок