Моделирование вариантов выхода из мирового экономического кризиса кондитерской «Dolce vita»

Автор работы: Пользователь скрыл имя, 24 Марта 2012 в 09:30, курсовая работа

Краткое описание

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

Содержание работы

ВВЕДЕНИЕ 3
РАЗДЕЛ 1. КОНДИТЕРСКАЯ «DOLCE VITA» 7
1.1. ОБЩИЕ СВЕДЕНИЯ 7
1.2. СПЕЦИФИКАЦИЯ ПРЕДПРИЯТИЯ 9
1.3. ДЕЯТЕЛЬНОСТЬ КОНДИТЕРСКОЙ В ПЕРИОД КРИЗИСА 9
РАЗДЕЛ 2. ПОСТАНОВКА ПРОБЛЕМЫ И ЗАДАЧИ 10
2.1. ПОСТАНОВКА ПРОБЛЕМЫ 10
2.2. ПОСТАНОВКА ЗАДАЧИ 10
2.3. ТРЕБОВАНИЯ К СОЗДАВАЕМОЙ ЭКСПЕРТНОЙ СИСТЕМЕ 10
РАЗДЕЛ 3. ОСНОВА ДЛЯ СОЗДАНИЯ АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ 12
3.1. РАЗРАБОТКА КОМПЛЕКСА МЕР ДЛЯ ВЫХОДА ИЗ КРИЗИСА И 12
3.2. СПОСОБ ПРИМЕНЕНИЯ РАЗРАБОТАННЫХ МЕР 14
РАЗДЕЛ 4. ОБЗОР ПРОГРАММЫ 18
4.1. БЛОК-СХЕМА ПРОГРАММЫ 18
4.2. ВЫБОР ЯЗЫКА ПРОГРАММИРОВАНИЯ 19
4.3. ЭСКИЗНЫЙ ПРОЕКТ ПРОГРАММЫ 21
4.4. ТЕСТИРОВАНИЕ ПРОГРАММЫ 27
ЗАКЛЮЧЕНИЕ 33
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 34
ПРИЛОЖЕНИЕ. КОД ПРОГРАММЫ ОШИБКА! ЗАКЛАДКА НЕ ОПРЕДЕЛЕНА.

Содержимое работы - 1 файл

Курсовая работа РиСПО.doc

— 1.83 Мб (Скачать файл)

 

a=Form1->CSpinEdit12->Value;

a+=Form1->CSpinEdit14->Value;

a+=Form1->CSpinEdit16->Value;

a+=Form1->CSpinEdit18->Value;

 

 

 

StringGrid1->Cells[2][2]=Form1->CSpinEdit13->Text;

StringGrid1->Cells[2][3]=Form1->CSpinEdit15->Text;

StringGrid1->Cells[2][4]=Form1->CSpinEdit17->Text;

StringGrid1->Cells[2][5]=Form1->CSpinEdit19->Text;

 

a=Form1->CSpinEdit13->Value;

a+=Form1->CSpinEdit15->Value;

a+=Form1->CSpinEdit17->Value;

a+=Form1->CSpinEdit19->Value;

 

 

a=(StrToInt(StringGrid1->Cells[1][2])*StrToInt(StringGrid1->Cells[2][2]))-(StrToInt(StringGrid1->Cells[3][2])*StrToInt(StringGrid1->Cells[2][2]));

if (a>0) StringGrid1->Cells[4][2]=IntToStr(a);

else StringGrid1->Cells[4][2]="0";

 

a=(StrToInt(StringGrid1->Cells[1][3])*StrToInt(StringGrid1->Cells[2][3]))-(StrToInt(StringGrid1->Cells[3][3])*StrToInt(StringGrid1->Cells[2][3]));

if (a>0) StringGrid1->Cells[4][3]=IntToStr(a);

else StringGrid1->Cells[4][3]="0";

 

a=(StrToInt(StringGrid1->Cells[1][4])*StrToInt(StringGrid1->Cells[2][4]))-(StrToInt(StringGrid1->Cells[3][4])*StrToInt(StringGrid1->Cells[2][4]));

if (a>0) StringGrid1->Cells[4][4]=IntToStr(a);

else StringGrid1->Cells[4][4]="0";

 

a=(StrToInt(StringGrid1->Cells[1][5])*StrToInt(StringGrid1->Cells[2][5]))-(StrToInt(StringGrid1->Cells[3][5])*StrToInt(StringGrid1->Cells[2][5]));

if (a>0) StringGrid1->Cells[4][5]=IntToStr(a);

else StringGrid1->Cells[4][5]="0";

 

a=StrToInt(StringGrid1->Cells[4][2])+StrToInt(StringGrid1->Cells[4][3])+StrToInt(StringGrid1->Cells[4][4])+StrToInt(StringGrid1->Cells[4][5]);

Label1->Caption="Новый расход на ингридиенты: "+IntToStr(a)+" руб";

StringGrid1->Cells[4][6]=IntToStr(a);

 

a=Form1->CSpinEdit8->Value+Form1->CSpinEdit9->Value+Form1->CSpinEdit10->Value+Form1->CSpinEdit11->Value ;

a+=(StrToInt(StringGrid1->Cells[3][2])*StrToInt(StringGrid1->Cells[2][2]));

a+=(StrToInt(StringGrid1->Cells[3][3])*StrToInt(StringGrid1->Cells[2][3]));

a+=(StrToInt(StringGrid1->Cells[3][4])*StrToInt(StringGrid1->Cells[2][4]));

a+=(StrToInt(StringGrid1->Cells[3][5])*StrToInt(StringGrid1->Cells[2][5]));

 

a=Form1->sp-a;

if (a>0) Label3->Caption="Новая прибыль: "+IntToStr(a)+" руб";

else Label3->Caption="Новый убыток: "+IntToStr(a*-1)+" руб";

}

//---------------------------------------------------------------------------

void __fastcall TForm6::StringGrid1KeyUp(TObject *Sender, WORD &Key,

      TShiftState Shift)

{

if ((StringGrid1->Cells[StringGrid1->Row][StringGrid1->Col]=="")&&(Key==VK_BACK))

                {

                 StringGrid1->Cells[StringGrid1->Row][StringGrid1->Col]="1";

                }

 

else if (Key!=VK_BACK)

{

int a=(StrToInt(StringGrid1->Cells[1][2])*StrToInt(StringGrid1->Cells[2][2]))-(StrToInt(StringGrid1->Cells[3][2])*StrToInt(StringGrid1->Cells[2][2]));

if (a>0) StringGrid1->Cells[4][2]=IntToStr(a);

else StringGrid1->Cells[4][2]="0";

 

a=(StrToInt(StringGrid1->Cells[1][3])*StrToInt(StringGrid1->Cells[2][3]))-(StrToInt(StringGrid1->Cells[3][3])*StrToInt(StringGrid1->Cells[2][3]));

if (a>0) StringGrid1->Cells[4][3]=IntToStr(a);

else StringGrid1->Cells[4][3]="0";

 

a=(StrToInt(StringGrid1->Cells[1][4])*StrToInt(StringGrid1->Cells[2][4]))-(StrToInt(StringGrid1->Cells[3][4])*StrToInt(StringGrid1->Cells[2][4]));

if (a>0) StringGrid1->Cells[4][4]=IntToStr(a);

else StringGrid1->Cells[4][4]="0";

 

a=(StrToInt(StringGrid1->Cells[1][5])*StrToInt(StringGrid1->Cells[2][5]))-(StrToInt(StringGrid1->Cells[3][5])*StrToInt(StringGrid1->Cells[2][5]));

if (a>0) StringGrid1->Cells[4][5]=IntToStr(a);

else StringGrid1->Cells[4][5]="0";

 

a=StrToInt(StringGrid1->Cells[4][2])+StrToInt(StringGrid1->Cells[4][3])+StrToInt(StringGrid1->Cells[4][4])+StrToInt(StringGrid1->Cells[4][5]);

Label1->Caption="Новый расход на ингридиенты: "+IntToStr(a)+" руб";

StringGrid1->Cells[4][6]=IntToStr(a);

 

a=Form1->CSpinEdit8->Value+Form1->CSpinEdit9->Value+Form1->CSpinEdit10->Value+Form1->CSpinEdit11->Value ;

a+=(StrToInt(StringGrid1->Cells[3][2])*StrToInt(StringGrid1->Cells[2][2]));

a+=(StrToInt(StringGrid1->Cells[3][3])*StrToInt(StringGrid1->Cells[2][3]));

a+=(StrToInt(StringGrid1->Cells[3][4])*StrToInt(StringGrid1->Cells[2][4]));

a+=(StrToInt(StringGrid1->Cells[3][5])*StrToInt(StringGrid1->Cells[2][5]));

 

a=Form1->sp-a;

if (a>0) Label3->Caption="Новая прибыль: "+IntToStr(a)+" руб";

else Label3->Caption="Новый убыток: "+IntToStr(a*-1)+" руб";

 

}

}

//---------------------------------------------------------------------------

 

void __fastcall TForm6::SpeedButton1Click(TObject *Sender)

{

Form6->Close();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm6::FormClose(TObject *Sender, TCloseAction &Action)

{

if (Label3->Caption.SubString(0,13)=="Новый убыток:")

        {

        ShowMessage("Попробуйте другие варианты выхода из кризиса либо рассмотрите комбинации нескольких вариантов.");

        }

}

//---------------------------------------------------------------------------

 

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

#include "Unit7.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm7 *Form7;

//---------------------------------------------------------------------------

__fastcall TForm7::TForm7(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

template<class T>

void bubbleSort(T a[], long size) {

  long i, j;

  T x;

 

  for( i=0; i < size; i++) {            // i - номер прохода

    for( j = size-1; j > i; j-- ) {     // внутренний цикл прохода

      if ( a[j-1] > a[j] ) {

      x=a[j-1]; a[j-1]=a[j]; a[j]=x;

    }

  }

}

}

//---------------------------------------------------------------------------

void __fastcall TForm7::StringGrid1DrawCell(TObject *Sender, int ACol,

      int ARow, TRect &Rect, TGridDrawState State)

{

  int left = 0;

  if(StringGrid1->Canvas->TextWidth(StringGrid1->Cells[ACol][ARow]) > StringGrid1->ColWidths[ACol]){

    StringGrid1->Canvas->FillRect(Rect);

    int pos = (StringGrid1->Cells[ACol][ARow]).Length()/2;

    AnsiString txt = StringGrid1->Cells[ACol][ARow];

    left = Rect.Left + ((Rect.Right - Rect.Left) - StringGrid1->Canvas->TextWidth(StringGrid1->Cells[ACol][ARow]) / 2) / 2;

    StringGrid1->Canvas->TextOut(left, Rect.Top + 2, txt.SubString(1, pos));

    StringGrid1->Canvas->TextOut(left, Rect.Top + StringGrid1->DefaultRowHeight + 2, txt.SubString(pos + 1, pos));

  }else if(StringGrid1->RowHeights[ARow] == StringGrid1->DefaultRowHeight * 2){

    left = Rect.Left + ((Rect.Right - Rect.Left) - StringGrid1->Canvas->TextWidth(StringGrid1->Cells[ACol][ARow])) / 2;

    int top = Rect.Top + ((Rect.Bottom - Rect.Top + 2) - StringGrid1->Canvas->TextHeight(StringGrid1->Cells[ACol][ARow])) / 2;

    StringGrid1->Canvas->TextRect(Rect, left, top, StringGrid1->Cells[ACol][ARow]);

  }else{

    left = Rect.Left + ((Rect.Right - Rect.Left) - StringGrid1->Canvas->TextWidth(StringGrid1->Cells[ACol][ARow])) / 2;

    StringGrid1->Canvas->TextRect(Rect, left, Rect.Top + 2, StringGrid1->Cells[ACol][ARow]);

    }       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm7::SpeedButton1Click(TObject *Sender)

{

Form7->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm7::FormClose(TObject *Sender, TCloseAction &Action)

{

if (Label3->Caption.SubString(0,13)=="Новый убыток:")

        {

        ShowMessage("Попробуйте другие варианты выхода из кризиса либо рассмотрите комбинации нескольких вариантов.");

        }         

}

//---------------------------------------------------------------------------

void __fastcall TForm7::StringGrid1KeyPress(TObject *Sender, char &Key)

{

if ((StringGrid1->Col!=3)||(StringGrid1->Col!=4)||(StringGrid1->Col!=7)||(StringGrid1->Col!=8))

        {

        Key=0x0;

        }

if ((StringGrid1->Col==3)&&(StringGrid1->Row==1))

        {

        Key=0x0;

        }

if ((StringGrid1->Col==4)&&(StringGrid1->Row==1))

        {

        Key=0x0;

        }

if ((StringGrid1->Col==7)&&(StringGrid1->Row==1))

        {

        Key=0x0;

        }

if ((StringGrid1->Col==8)&&(StringGrid1->Row==1))

        {

        Key=0x0;

        }

}

//---------------------------------------------------------------------------

void __fastcall TForm7::FormCreate(TObject *Sender)

{

StringGrid1->Cols[0]->Text="Наименование      товара";

StringGrid1->Cols[1]->Text="Доходы от продаж        за месяц";

StringGrid1->Cols[2]->Text="Расходы на        категорию продукции";

StringGrid1->Cols[3]->Text="Емкость рынка";

StringGrid1->Cols[4]->Text="Объем продаж конкурента";

StringGrid1->Cols[5]->Text="Коэффициент лидерства";

StringGrid1->Cols[6]->Text="Доля на рынке";

StringGrid1->Cols[7]->Text="Объём продаж        2009";

StringGrid1->Cols[8]->Text="Объём продаж        2010";

 

for(int j = 0;j < StringGrid1->RowCount; j++){

    for(int i = 0;i < StringGrid1->ColCount;i++){

      if(StringGrid1->Canvas->TextWidth(StringGrid1->Cells[i][j]) > StringGrid1->ColWidths[i]){

        StringGrid1->RowHeights[j] = StringGrid1->DefaultRowHeight * 2;

        break;

      }

    }

  }

 

StringGrid1->Rows[7]->Text="Торт";

StringGrid1->Rows[9]->Text="Конфеты";

StringGrid1->Rows[8]->Text="Пирожное";

StringGrid1->Rows[5]->Text="Печенье";

StringGrid1->Rows[6]->Text="Вафли";

StringGrid1->Rows[4]->Text="Кекс";

StringGrid1->Rows[2]->Text="Хлеб";

StringGrid1->Rows[3]->Text="Булочки";

 

StringGrid1->Cells[3][2]=IntToStr(1);

StringGrid1->Cells[3][3]=IntToStr(1);

StringGrid1->Cells[3][4]=IntToStr(1);

StringGrid1->Cells[3][5]=IntToStr(1);

StringGrid1->Cells[3][6]=IntToStr(1);

StringGrid1->Cells[3][7]=IntToStr(1);

StringGrid1->Cells[3][8]=IntToStr(1);

StringGrid1->Cells[3][9]=IntToStr(1);

 

StringGrid1->Cells[4][2]=IntToStr(1);

StringGrid1->Cells[4][3]=IntToStr(1);

StringGrid1->Cells[4][4]=IntToStr(1);

StringGrid1->Cells[4][5]=IntToStr(1);

StringGrid1->Cells[4][6]=IntToStr(1);

StringGrid1->Cells[4][7]=IntToStr(1);

StringGrid1->Cells[4][8]=IntToStr(1);

StringGrid1->Cells[4][9]=IntToStr(1);

 

StringGrid1->Cells[7][2]=IntToStr(1);

StringGrid1->Cells[7][3]=IntToStr(1);

StringGrid1->Cells[7][4]=IntToStr(1);

StringGrid1->Cells[7][5]=IntToStr(1);

StringGrid1->Cells[7][6]=IntToStr(1);

StringGrid1->Cells[7][7]=IntToStr(1);

StringGrid1->Cells[7][8]=IntToStr(1);

StringGrid1->Cells[7][9]=IntToStr(1);

 

StringGrid1->Cells[8][2]=IntToStr(1);

StringGrid1->Cells[8][3]=IntToStr(1);

StringGrid1->Cells[8][4]=IntToStr(1);

StringGrid1->Cells[8][5]=IntToStr(1);

StringGrid1->Cells[8][6]=IntToStr(1);

StringGrid1->Cells[8][7]=IntToStr(1);

StringGrid1->Cells[8][8]=IntToStr(1);

StringGrid1->Cells[8][9]=IntToStr(1);

}

//---------------------------------------------------------------------------

void __fastcall TForm7::FormShow(TObject *Sender)

{

StringGrid1->Cells[1][2]=Form1->CSpinEdit1->Text;

StringGrid1->Cells[1][3]=Form1->CSpinEdit2->Text;

StringGrid1->Cells[1][4]=Form1->CSpinEdit3->Text;

StringGrid1->Cells[1][5]=Form1->CSpinEdit4->Text;

StringGrid1->Cells[1][6]=Form1->CSpinEdit5->Text;

StringGrid1->Cells[1][7]=Form1->CSpinEdit6->Text;

StringGrid1->Cells[1][8]=Form1->CSpinEdit7->Text;

StringGrid1->Cells[1][9]=Form1->CSpinEdit20->Text;

 

StringGrid1->Cells[2][2]=IntToStr(Form1->sr*25/100);

StringGrid1->Cells[2][3]=IntToStr(Form1->sr*25/100);

StringGrid1->Cells[2][4]=IntToStr(Form1->sr*15/100);

StringGrid1->Cells[2][5]=IntToStr(Form1->sr*5/100);

StringGrid1->Cells[2][6]=IntToStr(Form1->sr*10/100);

StringGrid1->Cells[2][7]=IntToStr(Form1->sr*7/100);

StringGrid1->Cells[2][8]=IntToStr(Form1->sr*5/100);

StringGrid1->Cells[2][9]=IntToStr(Form1->sr*8/100);

 

StringGrid1->Cells[5][2]=IntToStr(StrToInt(StringGrid1->Cells[1][2])/StrToInt(StringGrid1->Cells[4][2]));

StringGrid1->Cells[5][3]=IntToStr(StrToInt(StringGrid1->Cells[1][3])/StrToInt(StringGrid1->Cells[4][3]));

StringGrid1->Cells[5][4]=IntToStr(StrToInt(StringGrid1->Cells[1][4])/StrToInt(StringGrid1->Cells[4][4]));

StringGrid1->Cells[5][5]=IntToStr(StrToInt(StringGrid1->Cells[1][5])/StrToInt(StringGrid1->Cells[4][5]));

StringGrid1->Cells[5][6]=IntToStr(StrToInt(StringGrid1->Cells[1][6])/StrToInt(StringGrid1->Cells[4][6]));

StringGrid1->Cells[5][7]=IntToStr(StrToInt(StringGrid1->Cells[1][7])/StrToInt(StringGrid1->Cells[4][7]));

StringGrid1->Cells[5][8]=IntToStr(StrToInt(StringGrid1->Cells[1][8])/StrToInt(StringGrid1->Cells[4][8]));

StringGrid1->Cells[5][9]=IntToStr(StrToInt(StringGrid1->Cells[1][9])/StrToInt(StringGrid1->Cells[4][9]));

 

StringGrid1->Cells[6][2]=IntToStr(StrToInt(StringGrid1->Cells[1][2])/StrToInt(StringGrid1->Cells[3][2]));

StringGrid1->Cells[6][3]=IntToStr(StrToInt(StringGrid1->Cells[1][3])/StrToInt(StringGrid1->Cells[3][3]));

StringGrid1->Cells[6][4]=IntToStr(StrToInt(StringGrid1->Cells[1][4])/StrToInt(StringGrid1->Cells[3][4]));

StringGrid1->Cells[6][5]=IntToStr(StrToInt(StringGrid1->Cells[1][5])/StrToInt(StringGrid1->Cells[3][5]));

StringGrid1->Cells[6][6]=IntToStr(StrToInt(StringGrid1->Cells[1][6])/StrToInt(StringGrid1->Cells[3][6]));

StringGrid1->Cells[6][7]=IntToStr(StrToInt(StringGrid1->Cells[1][7])/StrToInt(StringGrid1->Cells[3][7]));

StringGrid1->Cells[6][8]=IntToStr(StrToInt(StringGrid1->Cells[1][8])/StrToInt(StringGrid1->Cells[3][8]));

StringGrid1->Cells[6][9]=IntToStr(StrToInt(StringGrid1->Cells[1][9])/StrToInt(StringGrid1->Cells[3][9]));

 

int c=(StrToInt(StringGrid1->Cells[8][2])/StrToInt(StringGrid1->Cells[7][2]))*100;

    c+=(StrToInt(StringGrid1->Cells[8][3])/StrToInt(StringGrid1->Cells[7][3]))*100;

    c+=(StrToInt(StringGrid1->Cells[8][4])/StrToInt(StringGrid1->Cells[7][4]))*100;

    c+=(StrToInt(StringGrid1->Cells[8][5])/StrToInt(StringGrid1->Cells[7][5]))*100;

    c+=(StrToInt(StringGrid1->Cells[8][6])/StrToInt(StringGrid1->Cells[7][6]))*100;

    c+=(StrToInt(StringGrid1->Cells[8][7])/StrToInt(StringGrid1->Cells[7][7]))*100;

    c+=(StrToInt(StringGrid1->Cells[8][8])/StrToInt(StringGrid1->Cells[7][8]))*100;

    c+=(StrToInt(StringGrid1->Cells[8][9])/StrToInt(StringGrid1->Cells[7][9]))*100;

 

Label4->Caption="Темп роста (среднее значение): " + IntToStr(c/8);

 

int a=StrToInt(StringGrid1->Cells[5][2]);

a+=StrToInt(StringGrid1->Cells[5][3]);

a+=StrToInt(StringGrid1->Cells[5][4]);

a+=StrToInt(StringGrid1->Cells[5][5]);

a+=StrToInt(StringGrid1->Cells[5][6]);

a+=StrToInt(StringGrid1->Cells[5][7]);

a+=StrToInt(StringGrid1->Cells[5][8]);

a+=StrToInt(StringGrid1->Cells[5][9]);

 

Label5->Caption="Коэффициент лидерства (среднее значение): " + IntToStr(a/8);

 

switch (MessageDlg("Убрать наиболее низкие показатели по коэффициенту лидерства?", mtWarning,TMsgDlgButtons()<<mbYes<<mbNo, 0))

{

case mrYes:

        {

        int b[8];

        AnsiString AS;

        for (int i=0; i<8; i++)

        {

        b[i]=StrToInt(StringGrid1->Cells[5][i+2]);

        }

        bubbleSort(b,8);

        for (int i=0; i<8; i++)

        {

        if(b[1]==StrToInt(StringGrid1->Cells[5][i+2]))

                {

                 StringGrid1->Cells[1][i+2]=0;

                 StringGrid1->Cells[2][i+2]=0;

                 AS="\n"+StringGrid1->Cells[0][i+2];

                }

        else if(b[2]==StrToInt(StringGrid1->Cells[5][i+2]))

                {

                 StringGrid1->Cells[1][i+2]=0;

                 StringGrid1->Cells[2][i+2]=0;

                 AS+="\n"+StringGrid1->Cells[0][i+2];

                }

        else if(b[3]==StrToInt(StringGrid1->Cells[5][i+2]))

                {

                 StringGrid1->Cells[1][i+2]=0;

                 StringGrid1->Cells[2][i+2]=0;

                 AS+="\n"+StringGrid1->Cells[0][i+2];

                }

        }

        Label7->Caption=AS;

        }

Информация о работе Моделирование вариантов выхода из мирового экономического кризиса кондитерской «Dolce vita»