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

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


Аннотация к работе
програма моделювання візуалізація Алгоритмічна частинаПри створенні цього засобу я створив та використав функції для реалізації годування тварин та законів їхньої взаємодії. Стандарт Сі містить нормативне посилання на стандарт Сі від 1990 року і не визначає самостійно ті функції стандартної бібліотеки, які запозичуються із стандартної бібліотеки Сі. Стандартизація визначила мову програмування Сі , протеза цією назвою можуть ховатися також неповні, обмежені достандартні варіанти мови. Клас Donkey представляє собою клас для роботи з ослом. Він містить в собі такі функції: void draw() - функція промальовки сіна;В ході проробленої роботи була розроблена програма моделює та візуалізує заданий процес по певним законам. На полі знаходяться 10 ослів, яким необхідно їсти сіно, яке програма подає автоматично. Перший клас field відповідає за роботу з полем, задає координати. Другий клас Donkey являє собою клас для роботи з окремим ослом, задання координатів . Завдяки окремо створену класу для роботи з частинами поля можна задати будь яку кількість ослів і програма буде працювати правильно.

Вывод
Перелік посилань

ВСТУП

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

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

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()Функція промальовки.



IMG_9e5b81e6-a07d-4fd2-ac66-0e9b91310f21

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

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

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

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

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

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

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

IMG_4db21045-1532-4ce4-8f4d-246415f2f48d

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

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

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

#ifndef Unit1H

#define Unit1H

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

#include

#include

#include

#include

#include

#include

//--------------------------------------------------------------------------- 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

#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 відповідає за подачу та її закони для сіна.

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

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

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

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

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

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

Размещено на .ru
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?