Автор: Пользователь скрыл имя, 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. 
 
Для разработки программы программист сталкивается с ошибками двух видов:
Ошибки первого типа обусловлены неправильным написанием операторов при задании программного кода. Практически все визуальные системы программирования предоставляют разработчику интерактивную систему подсказки синтаксиса при написании операторов и наименований объектов, их свойств и методов. В случае неправильного написания конструкции языка строчка или неправильное слово будет выделено, у программиста будет возможность исправить ошибку.
Ошибки второго типа связаны с неправильным написанием программного кода с точки зрения кодирования алгоритма работы программы. При возникновении подобной ошибки интерпретатор приостанавливает обработку программного кода. Затем выводится всплывающее окно с информацией о коде ошибки и дается краткое ее описание. Работая с диалоговым окном, разработчик может принять одно из следующих сценариев: