Моделирование вариантов выхода из мирового экономического кризиса кондитерской «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 Мб (Скачать файл)

                         SpeedButton1->Top=417;

                         Label2->Top=417;

                         GroupBox1->Height=489;

                         GroupBox3->Visible=true;

                         GroupBox4->Visible=true;

                         GroupBox5->Visible=true;

                         this->Height=601;

                         fzp=(Form1->sp)-(fzp4+Form1->CSpinEdit9->Value+Form1->CSpinEdit10->Value+Form1->CSpinEdit11->Value+Form1->si);

                         if (fzp>0)

                                {

                                Label2->Caption="Новая прибыль составит "+IntToStr(fzp)+" руб";

                                }

                         else

                                {

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

                                Label2->Caption="Новые убытки составляют: "+IntToStr(fzp*-1)+" руб";

                                }

                        }

                }

        }

Form4->Close();

}

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

void __fastcall TForm4::FormShow(TObject *Sender)

{

CSpinEdit1->Value=Form1->CSpinEdit8->Value;

fzp1=CSpinEdit1->Value-(CSpinEdit1->Value*10/100);

Label3->Caption=IntToStr(fzp1)+" руб";

        SpeedButton1->Top=169;

        GroupBox1->Height=225;

        Label2->Top=169;

        GroupBox3->Visible=false;

        GroupBox4->Visible=false;

        GroupBox5->Visible=false;

        this->Height=337;

fzp=(Form1->sp)-(fzp1+Form1->CSpinEdit9->Value+Form1->CSpinEdit10->Value+Form1->CSpinEdit11->Value+Form1->si);

if (fzp>0)

        {

        Label2->Caption="Новая прибыль составит "+IntToStr(fzp)+" руб";

        }

else    {

        fzp2=fzp1-(CSpinEdit1->Value*10/100);

        Label4->Caption=IntToStr(fzp2)+" руб";

        SpeedButton1->Top=257;

        Label2->Top=257;

        GroupBox1->Height=289;

        GroupBox3->Visible=true;

        GroupBox4->Visible=false;

        GroupBox5->Visible=false;

        this->Height=401;

 

        fzp=(Form1->sp)-(fzp2+Form1->CSpinEdit9->Value+Form1->CSpinEdit10->Value+Form1->CSpinEdit11->Value+Form1->si);

        if (fzp>0)

                {

                Label2->Caption="Новая прибыль составит "+IntToStr(fzp)+" руб";

                }

        else

                {

                 fzp3=fzp2-(CSpinEdit1->Value*10/100);

                 Label5->Caption=IntToStr(fzp3)+" руб";

                 SpeedButton1->Top=345;

                 Label2->Top=345;

                 GroupBox1->Height=385;

                 GroupBox3->Visible=true;

                 GroupBox4->Visible=true;

                 GroupBox5->Visible=false;

                 this->Height=497;

                  fzp=(Form1->sp)-(fzp3+Form1->CSpinEdit9->Value+Form1->CSpinEdit10->Value+Form1->CSpinEdit11->Value+Form1->si);

                 if (fzp>0)

                        {

                        Label2->Caption="Новая прибыль составит "+IntToStr(fzp)+" руб";

                        }

                 else

                        {

                         fzp4=(CSpinEdit1->Value*50/100);

                         Label6->Caption=IntToStr(fzp4)+" руб";

                         Label5->Caption=IntToStr(fzp3)+" руб";

                         SpeedButton1->Top=417;

                         Label2->Top=417;

                         GroupBox1->Height=489;

                         GroupBox3->Visible=true;

                         GroupBox4->Visible=true;

                         GroupBox5->Visible=true;

                         this->Height=601;

                         fzp=(Form1->sp)-(fzp4+Form1->CSpinEdit9->Value+Form1->CSpinEdit10->Value+Form1->CSpinEdit11->Value+Form1->si);

                         if (fzp>0)

                                {

                                Label2->Caption="Новая прибыль составит "+IntToStr(fzp)+" руб";

                                }

                         else

                                {

                                Label2->Caption="Новые убытки составляют: "+IntToStr(fzp*-1)+" руб";

                                }

                        }

                }

        }

}

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

 

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

 

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

#include "Unit5.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm5 *Form5;

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

__fastcall TForm5::TForm5(TComponent* Owner)

        : TForm(Owner)

{

}

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

 

void __fastcall TForm5::FormCreate(TObject *Sender)

{

StringGrid1->Cols[0]->Text="Вид рекламы";

StringGrid1->Cols[1]->Text="Затраты за разовый прокат";

StringGrid1->Cols[2]->Text="Кол-во прокатов";

StringGrid1->Cols[3]->Text="Новый расход на рекламу по видам";

StringGrid1->Cols[4]->Text="Увеличение объема продаж от использования вида рекламы";

 

 

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[1]->Text="";

StringGrid1->Rows[2]->Text="Телереклама";

StringGrid1->Rows[3]->Text="Радиореклама";

StringGrid1->Rows[4]->Text="Рекламный      щит";

 

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

StringGrid1->Cells[2][1]="";

StringGrid1->Cells[3][1]="";

StringGrid1->Cells[4][1]="";

 

StringGrid1->Cells[2][2]="1";

StringGrid1->Cells[2][3]="1";

StringGrid1->Cells[2][4]="1";

 

}

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

 

void __fastcall TForm5::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 TForm5::SpeedButton1Click(TObject *Sender)

{

Form5->Close();       

}

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

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

{

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

        {

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

        }       

}

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

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

{

if ((StringGrid1->Col==1)||(StringGrid1->Col==3)||(StringGrid1->Col==4))

        {

        Key=0x0;

        }

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

        {

        Key=0x0;

        }

}

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

void __fastcall TForm5::FormShow(TObject *Sender)

{

StringGrid1->Cells[1][2]=IntToStr(Form1->CSpinEdit10->Value*10/100);

StringGrid1->Cells[1][3]=IntToStr(Form1->CSpinEdit10->Value*7/100);

StringGrid1->Cells[1][4]=IntToStr(Form1->CSpinEdit10->Value*4/100);

 

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

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

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

 

StringGrid1->Cells[4][2]=Form1->sp*11/100;

StringGrid1->Cells[4][3]=Form1->sp*12/100;

StringGrid1->Cells[4][4]=Form1->sp*6/100;

 

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

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

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

 

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

 

int a2=StrToInt(StringGrid1->Cells[3][2]);

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

a2+=StrToInt(StringGrid1->Cells[3][4]);

a2+=Form1->CSpinEdit11->Value+Form1->CSpinEdit8->Value+Form1->CSpinEdit9->Value+Form1->si;

 

Label2->Caption="Новый суммарный расход составит: "+IntToStr(a2)+"руб";

 

a-=a2;

if (a>0)

        {

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

        }

else    {

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

        }

}

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

void __fastcall TForm5::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)

{

StringGrid1->Cells[1][2]=IntToStr(Form1->CSpinEdit10->Value*10/100);

StringGrid1->Cells[1][3]=IntToStr(Form1->CSpinEdit10->Value*7/100);

StringGrid1->Cells[1][4]=IntToStr(Form1->CSpinEdit10->Value*4/100);

 

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

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

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

 

StringGrid1->Cells[4][2]=Form1->sp*11/100;

StringGrid1->Cells[4][3]=Form1->sp*12/100;

StringGrid1->Cells[4][4]=Form1->sp*6/100;

 

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

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

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

 

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

 

int a2=StrToInt(StringGrid1->Cells[3][2]);

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

a2+=StrToInt(StringGrid1->Cells[3][4]);

a2+=Form1->CSpinEdit11->Value+Form1->CSpinEdit8->Value+Form1->CSpinEdit9->Value+Form1->si;

 

Label2->Caption="Новый суммарный расход составит: "+IntToStr(a2)+"руб";

 

a-=a2;

if (a>0)

        {

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

        }

else    {

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

        }

}

}

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

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

 

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

#include "Unit6.h"

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

#pragma package(smart_init)

#pragma link "CSPIN"

#pragma resource "*.dfm"

TForm6 *Form6;

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

__fastcall TForm6::TForm6(TComponent* Owner)

        : TForm(Owner)

{

}

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

 

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

void __fastcall TForm6::FormCreate(TObject *Sender)

{

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

StringGrid1->Cols[1]->Text="Цена используемого       ингридиента";

StringGrid1->Cols[2]->Text="Необходимое кол-во       ингридиента";

StringGrid1->Cols[3]->Text="Цена заменителя";

StringGrid1->Cols[4]->Text="Экономия";

 

 

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[1]->Text="";

StringGrid1->Rows[2]->Text="Мука";

StringGrid1->Rows[3]->Text="Сахар";

StringGrid1->Rows[4]->Text="Начинка";

StringGrid1->Rows[5]->Text="Прочие";

StringGrid1->Rows[6]->Text="Итого";

 

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

StringGrid1->Cells[2][1]="";

StringGrid1->Cells[3][1]="";

StringGrid1->Cells[4][1]="";

 

StringGrid1->Cells[3][2]="1";

StringGrid1->Cells[3][3]="1";

StringGrid1->Cells[3][4]="1";

StringGrid1->Cells[3][5]="1";

 

}

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

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

{

if ((StringGrid1->Col==1)||(StringGrid1->Col==2)||(StringGrid1->Col==4))

        {

        Key=0x0;

        }

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

        {

        Key=0x0;

        }

}

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

void __fastcall TForm6::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 TForm6::FormShow(TObject *Sender)

{

int a;

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

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

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

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

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