Розробка програми для моделювання та візуалізації заданого процеcу

Аналіз технічного забезпечення, вибір інструментального програмного забезпечення та середовища розробки програм. Створення класів для реалізації необхідних функцій для роботи програмного засобу. Розробка інтерфейсу для користувача та лістинг програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 24.08.2012
Размер файла 343,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

АНОТАЦІЯ

Метою нашого курсового проекту є написання програмного додатку для моделювання та візуалізації певного процесу. Такі програми дуже актуальні в наш час, адже перед розробкою певного об'єкту чи системи потрібно розробити план роботи врахувавши всі особливості розробки. Тут в нагоді і стаються програми моделювання певних процесів.

Целью нашего курсового проекта является написание программного приложения для моделирования и визуализации определенного процесса. Такие программы очень актуальны в наше время, ведь перед разработкой определенного объекта или системы необходимо разработать план работы учтя5все5особенности5разработки.5Здесь5и5пригодятся5программы5555555моделирования5определенных5процессов.

The aim of our course project is to write software application for modeling and visualization of a process.Such programs are very relevant to our time, since before the development of a facility or system, you must develop a work plan taking into account all peculiarities of development. This useful program happen and modeling certain processes.

ЗМІСТ

програма моделювання візуалізація

Вступ

1. Аналіз ТЗ

2. Алгоритмічна частина

3. Програмна частина

3.1 Розробка графічного інтерфейсу

3.2 Розробка коду

Висновок

Перелік посилань

ВСТУП

Розроблений мною програмний засіб являє собою програму для моделювання процесу годування тварин за певними законами. При створенні цього засобу я створив та використав функції для реалізації годування тварин та законів їхньої взаємодії.

Для розробки цього проекту я використав мову програмування С++ що найбільш задовольняє усім вимогам для реалізації поставлених задач.

C++ (Сі-плюс-плюс) -- універсальна мова програмування високого рівня з підтримкою декількох парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної. Розроблена Б'ярном Страуструпом (англ. Bjarne Stroustrup) в AT&T Bell Laboratories (Мюррей-Хілл, Нью-Джерсі) у 1979 році та названа «Сі з класами». Страуструп перейменував мову у C++ у 1983 р. Базується на мові Сі. Визначена стандартом ISO/IEC 14882:2003.

У 1990-х роках С++ стала однією з найуживаніших мов програмування загального призначення. В 1998 році мова Сі++ була стандартизована Міжнародною організацією стандартизації під номером 14882:1998 -- Мова Програмування Сі++. В даний час робоча група МОС працює над новою версією стандарту під кодовою назвою C++09 (раніше відомий як C++0X), який має вийти в 2009 році.

Стандарт Сі++ на 1998 рік складається з двох основних частин: ядра мови і стандартної бібліотеки. Стандартна бібліотека Сі++ увібрала в себе бібліотеку шаблонів STL, що розроблялася одночасно із стандартом. Зараз назва STL офіційно не вживається, проте в кругах програмістів на Сі++ ця назва використовується для позначення частини стандартної бібліотеки, що містить визначення шаблонів контейнерів, ітераторів, алгоритмів і функторів.

Стандарт Сі++ містить нормативне посилання на стандарт Сі від 1990 року і не визначає самостійно ті функції стандартної бібліотеки, які запозичуються із стандартної бібліотеки Сі.

Поза тим, існує величезна кількість бібліотек Сі++, котрі не входять в стандарт. У програмах на Сі++ можна використовувати багато бібліотек Сі.

Стандартизація визначила мову програмування Сі++, проте за цією назвою можуть ховатися також неповні, обмежені достандартні варіанти мови. Спочатку мова розвивалася поза формальними рамками, спонтанно, у міру завдань, що ставилися перед ним. Розвиткок мови супроводив розвиток кросс-компілятора Cfront. Нововведення в мові відбивалися в зміні номера версії кросс-компілятора. Ці номери версій кросс-компілятора розповсюджувалися і на саму мову, але стосовно теперішнього часу мову про версії мови Сі++ не ведуть.

При реалізації данного проекту я використав такі програмні засоби як:

Середовище програмування BuilderC++ 6.0

C++ Builder -- программный продукт, инструмент быстрой разработки приложений (RAD), интегрированная среда программирования (IDE), система, используемая программистами для разработки программного обеспечения на языке C++.

Изначально разрабатывался компанией BorlandSoftware, а затем её подразделением CodeGear, которое сейчас принадлежит компании EmbarcaderoTechnologies. C++ Builder объединяет в себе комплекс объектных библиотек (STL, VCL, CLX, MFC и др.), компилятор, отладчик, редактор кода и многие другие компоненты. Цикл разработки аналогичен Delphi. Большинство компонентов, разработанных в Delphi, можно использовать и в C++ Builder без модификации.

C++ Builder содержит инструменты, которые при помощи drag-and-drop действительно делают разработку визуальной, упрощает программирование благодаря встроенному WYSIWYG -- редактору интерфейса и пр.

AdobePhotoshop -- растровый графический редактор, разработанный и распространяемый фирмой AdobeSystems. Этот продукт является лидером рынка в области коммерческих средств редактирования растровых изображений, и наиболее известным продуктом фирмы Adobe. Часто эту программу называют просто Photoshop (Фотошоп). В настоящее время Photoshop доступен на платформах MacOSX/MacOS и MicrosoftWindows. Ранние версии редактора были портированы под SGIIRIX, но официальная поддержка была прекращена, начиная с третьей версии продукта. Для версии CS 2 возможен запуск под Linux с помощью альтернативы WindowsAPI -- Wine 0.9.54 и выше.

Програму для редагування іконок IconUtils 4.18

IconUtils - пакет утилит для работы с иконками и курсорами.

Этот пакет позволит:

Создавать иконки для Windows Vista и Windows XP

Редактировать курсоры, кнопки, значки, коллекции курсоров и иконок

Конвертировать иконки в другие графические форматы и обратно

Просматривать и конвертировать фотографии

Скачивать иконки из сети Internet

Просматривать иконки во всех файлах вашего компьютера

1 АНАЛІЗ ТЕХНІЧНОГО ЗАБЕЗПЕЧЕННЯ, ВИБІР ІНСТРУМЕНТАЛЬНОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ І СЕРЕДОВИЩА РОЗРОБКИ ПРОГРАМ

Переді мною була поставлена задача розробити програму що буде моделювати та візуалізувати певний процес. Також повинна мати зручний для користувача інтерфейс і простоту в роботі з нею. Отже нам знадобиться об'єктно-орієнтована мова програмування високого рівня. В даному разі я обрав мову С++, так як вона є найбільш поширеною, і підтримує декілька парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної.

В якості середовища програмування було обрано Builder C++ 6.0 як найбільш відповідне. Що має усі необхідні готові компоненти для створення додатку.

В якості операційної системи була обрана Windows XP, як та що задовольняє такі потреби як, відображення графічного інтерфейсу користувача і великий спектр засобів обробки інформації.

Програмний додаток повинен мате збіжність відображати графічну та текстову інформацію. Та включати в себе принципи ООП.

Програмний додаток повинен відображати графічну та текстову інформацію, та втілювати в собі принципи ООП.

2 АЛГОРИТМІЧНА ЧАСТИНА

В процесі розробки програми були створені класи в яких і було реалізовано необхідні функції для роботи програмного засобу.

Клас field являє собою частину поля, він регулює час та кількість появи корму. Він містить в собі змінні з координатами положення сіна, та індикатор наявності на полі певного об`єкту.

Він має такі функції:

void init()- функція ініціалізації всіх початкових об'єктів ;

void tact() - містить в собі всі дії по розрахунку дій за один такт;

Клас Donkey представляє собою клас для роботи з ослом.

А також такі функції:

void eat() - функція поїдання сіна;

int check()- функція перевірки голодування осла.

void set_cp() - встановлення координат положення сіна.

TPoint ret_cp() - повернення координат положення сіна

Клас Hey є класом для роботи з сіном. Він містить в собі такі функції:

void draw() - функція промальовки сіна;

void set_cp(int ,int ) - встановлення центральної точки положення.

TPoint ret_cp()- повернення центральної точки положення..

Таблиця 2.1 - Таблиця класів

Клас Donkey

Змінні-члени

Інгредієнти

TPoint cp ;

Координати ячейи.

int flag;

Флаг годування.

Функції члени

void eat()

-функція поїдання сіна;

int check()

функція перевірки голодування осла

void set_cp(int ,int )

встановлення центральної точки поля

TPoint ret_cp()

повернення центральної точки поля.

Клас field

Змінні-члени

Donkey D[10];

Осел

Hey H[3];

Сіно

Функції члени

void init()

Початкова ініціалізація

void tact()

Функція взаємодії

Клас Hey

Змінні-члени

TPoint cp;

Координати об`єкту.

Функції члени

set_cp()/ret_cp()

Встановлення/повернення координат.

void draw()

Функція промальовки.

Рисунок 2.1 - Блок схема загального алгоритму роботи програми

3.ПРОГРАМНА ЧАСТИНА

3.1 Розробка інтерфейсу

Інтерфейс користувача промальовується слідуючим чином: спочатку в вікні програми з'являється кнопка «Розпочати». По команді початку динамічно розміщуються об'єкти. Для розрахунку положення об'єктів використовувались наступні формули:

- по вертикалі:y=i*Height

- по горизонталі, якщо і<5то х=0, інакше х=200.

Де Height - висота одного об'єкту.

Потім динамічно промальовується об'єкт їжа. По закінченню їжі програма завершує свою роботу.

Рисунок 3.1 - Інтерфейс працюючої програми

3.2 Лістинг коду:

*.h

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

#ifndef Unit1H

#define Unit1H

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

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ComCtrls.hpp>

#include <ExtCtrls.hpp>

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

class TForm1 : public TForm

{

__published:// IDE-managed Components

TButton *Button1;

TTimer *Timer1;

TLabel *Label1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

void __fastcall Button1Click(TObject *Sender);

void __fastcall Timer1Timer(TObject *Sender);

private:// User declarations

public:// User declarations

__fastcall TForm1(TComponent* Owner);

};

class Donkey //клас опису осла

{TPoint cp; //змінна координат

int eattacts; //змінна тактів їжі

public:

void eat();//функція поїдання

int check(){return eattacts;} //функція перевірки голоду

void set_cp(int a,int b){cp=Point(a,b);} //встановлення координат

TPoint ret_cp(){return cp;} //повернення координат

Graphics::TBitmap *dnky; //одне з зображень

Graphics::TBitmap *dnky2; //інше зображення

};

class Hey//клас опису сіна

{TPoint cp; //координати

public:

void draw();//функція промальовки

void set_cp(int a,int b){cp=Point(a,b);} //встановлення координат

TPoint ret_cp(){return cp;} //повернення координат

Graphics::TBitmap *hey; //зображення сіна

};

class field//клас опису поля

{Donkey D[10] ; //змінна об'єктів-ослів

Hey H[5]; //сіно

public:

void init();//функція ініціалізації

void tact();//функція одного такту

};

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

extern PACKAGE TForm1 *Form1;

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

#endif

*.cpp

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

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int k=0;

int c=100;

field *F;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{F=new field;

}

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

void Donkey::eat()

{ eattacts=4;}

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

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

void Hey::draw()

{Form1->Canvas->Draw(cp.x,cp.y,hey);

}

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

void field::init()

{for(int i=0;i<10;++i)

{ D[i].dnky=new Graphics::TBitmap();

D[i].dnky2=new Graphics::TBitmap();

D[i].dnky2->LoadFromFile("4.bmp");

int a,b;

if(i<5)

{a=0;

b=100*i;

D[i].dnky->LoadFromFile("1.bmp");}

else

{a=246;

b=(i-5)*100;

D[i].dnky->LoadFromFile("3.bmp");}

D[i].set_cp(a,b);

Form1->Canvas->Draw(D[i].ret_cp().x,D[i].ret_cp().y,F->D[i].dnky);

D[i].eat();

}

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

{ H[i].hey=new Graphics::TBitmap();

H[i].hey->LoadFromFile("2.bmp");

}

}

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

void field::tact()

{Form1->Canvas->Pen->Color=clWhite;

Form1->Canvas->Brush->Color=clWhite;

Form1->Canvas->Brush->Style=bsSolid;

Form1->Canvas->Rectangle(115,0,245,500);

switch(k)

{case 1:{H[0].set_cp(115,50);H[0].draw();

H[1].set_cp(115,150);H[1].draw();

H[2].set_cp(115,250);H[2].draw();c-=3;} break;

case 3:{H[0].set_cp(115,350);H[0].draw();

H[1].set_cp(115,450);H[1].draw(); Form1->Label2->Caption="2.5";c-=2;} break;

case 2: {H[0].set_cp(195,50);H[0].draw();

H[1].set_cp(195,150);H[1].draw();

H[2].set_cp(195,250);H[2].draw();c-=3;} break;

case 0: {H[0].set_cp(195,350);H[0].draw();

H[1].set_cp(195,450);H[1].draw();Form1->Label2->Caption="3";c-=2;}break;

}

Form1->Label4->Caption=IntToStr(c);

if(!c)

{Form1->Timer1->Enabled=false;

ShowMessage("Еда закончилась!");

}

k++;

if(k==4)

k=0;

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{ Button1->Visible=false;

Timer1->Enabled=true;

Label2->Visible=true;

Label4->Visible=true;

F->init();

}

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

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

F->tact();

}

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

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

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int k=0;

int c=100;

field *F;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{F=new field; //створення нового екземпляру поля

}

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

void Donkey::eat()//кормління осла

{ eattacts=4;}

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

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

void Hey::draw()//промальовка сіна

{Form1->Canvas->Draw(cp.x,cp.y,hey);

}

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

void field::init()//ініціалізація

{for(int i=0;i<10;++i)

{ D[i].dnky=new Graphics::TBitmap();

D[i].dnky2=new Graphics::TBitmap();

D[i].dnky2->LoadFromFile("4.bmp");

int a,b;

if(i<5)

{a=0;

b=100*i;

D[i].dnky->LoadFromFile("1.bmp");}

else

{a=246;

b=(i-5)*100;

D[i].dnky->LoadFromFile("3.bmp");}

D[i].set_cp(a,b);

Form1->Canvas->Draw(D[i].ret_cp().x,D[i].ret_cp().y,F->D[i].dnky);

D[i].eat();

}

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

{ H[i].hey=new Graphics::TBitmap();

H[i].hey->LoadFromFile("2.bmp");

}

}

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

void field::tact()// дії за один такт

{Form1->Canvas->Pen->Color=clWhite;

Form1->Canvas->Brush->Color=clWhite;

Form1->Canvas->Brush->Style=bsSolid;

Form1->Canvas->Rectangle(115,0,245,500);

switch(k)

{case 1:{H[0].set_cp(115,50);H[0].draw();

H[1].set_cp(115,150);H[1].draw();

H[2].set_cp(115,250);H[2].draw();c-=3;} break;

case 3:{H[0].set_cp(115,350);H[0].draw();

H[1].set_cp(115,450);H[1].draw(); Form1->Label2->Caption="2.5";c-=2;} break;

case 2: {H[0].set_cp(195,50);H[0].draw();

H[1].set_cp(195,150);H[1].draw();

H[2].set_cp(195,250);H[2].draw();c-=3;} break;

case 0: {H[0].set_cp(195,350);H[0].draw();

H[1].set_cp(195,450);H[1].draw();Form1->Label2->Caption="3";c-=2;}break;

}

Form1->Label4->Caption=IntToStr(c);

if(!c)

{Form1->Timer1->Enabled=false;

ShowMessage("Еда закончилась!");

}

k++;

if(k==4)

k=0;

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

// функція при натиснені на кнопку

{ Button1->Visible=false;

Timer1->Enabled=true;

Label2->Visible=true;

Label4->Visible=true;

F->init();

}

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

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

F->tact();// таут по таймеру

}

ВИСНОВОК

В ході проробленої роботи була розроблена програма моделює та візуалізує заданий процес по певним законам. На полі знаходяться 10 ослів, яким необхідно їсти сіно, яке програма подає автоматично. Процес моделювання зупиняється при з'їданні усього корму.

Для реалізації всіх потрібних дій було розроблено декілька класів. Перший клас field відповідає за роботу з полем, задає координати. Другий клас Donkey являє собою клас для роботи з окремим ослом, задання координатів . Третій клас Hey відповідає за подачу та її закони для сіна.

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

ПЕРЕЛІК ПОСИЛАНЬ

Д. Стефан. C++ для чайников. - Москва 2001 - 250 с.

Философия C++. Введение в стандартный C++.- Москва 1999 - 145 с.

Стенли Липпман. Основы программирования на С++.. - К.: ІЗМН, 1997.- 340 с.

Герберт Шилдт ,"C++ базовый курс"/ За ред. В. Шевчука. - К.: Дніпро, 1991. -300 с.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.