Розробка структури даних для заданої предметної області

 

АНОТАЦІЯ

програма обєктний обчислення математичний

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

У КР сторінок, лістингів текстів програма, скріншотів тестування прогрми та одна діаграма класів.

Ключові слова: коло, площа кола, довжина кола, кільце, площа кільця, графічне зображення кола.


ВСТУП


В теперішній час обєктно-орієнтовне програмування зявляється домінуючим стилем при створенні великих програм.

При проектуванні складної програмної системи проводиться алгоритмічна декомпозиція вирішуваної задачі. Метою декомпозиції зявляється представлення розробленої системи у вигляді взаємодіючих невеликих підсистем. Наряду з терміном декомпозиція використовується термін структуризація задачі. Ідеї розділення програм на відносно самостійні крупні частини, які реалізують певні процедури та функції. В програмуванні структурний підхід зявився з виникненням перших підпрограм, процедур та функцій, написаних в так званому процедурно-орієнтованому стилі. Даний стиль опирається на просте правило: визначити змінні та константи, які потрібно зберігати в памяті компютера і описати чи використати алгоритми їх обробки. Структурне програмування орієнтує на складання програм, структура яких близька до дерева операторів чи блоків. Використання структури типа дерево в якості своєрідного еталона пояснюється тим, що це проста для аналізу і реалізації структура.


РОЗДІЛ 1. ПОСТАНОВКА ЗАДАЧІ


1.1 Уточнена постановка задачі на розробку програмного забезпечення


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

Визначити методи для визначення довжини кола та площі кола, виведення параметрів кола на екран.

. Описати об'єкти створеного типу, звернутися до методів.

. Створити динамічні об'єкти створеного типу, звернутись до їх методів.

. Створити метод шоу для графічного відображення різних об'єктів класу.

. Як метод класу перевантажити унарну операцію ++ для збільшення радіусу кола.

Класам-нащадком для кола оголосити клас Кільце, який має додаткові полі - внутрішній радіус і метод Площа. Визначити конструктор кільця. Виведіть дані на екран з використанням методу базового класу.


РОЗДІЛ 2. ОПИС АЛГОРИТМІВ І ПРОГРАМ


Таблиця 2.1 Опис глобальних змінних

ІмяТипПризначенняchoiceintВизначення пункту менюxintТимчасова зміна, що містить координату кола по осі oxyintТимчасова зміна, що містить координату кола по осі oyrintТимчасова змінна, що містить радіус колаwmintЗмінна для вибору режиму роботи з програмою

Таблиця 2.2 Опис обєктів та їх методів

КласДані та методиОписCCircleint r; int x; int y; CCircle(); CCircle(int _r); CCircle(int _x, int _y, int _r); circleLength(); void circleArea(); CCircle operator++(int notused); void show();Клас CCircle містить дані про коло, його положення та радіус. Включає наперед визначені конструктор за замовчуванням, конструктор кола одиничного радіуса, і конструктор довільного коло. А також методи для визначення довжини кола та площі кола, виведення параметрів кола на екран.Ringint iR; void ringArea();Клас Ring наслідує клас CCircle, містить в собі дані кільце, його внутрішній радіус, а також метод для визначення площі кільця.

2.3 Діаграма класів



2.4 Тексти програми


Лістинг головного файлу програми «main.cpp»:


#include <stdio.h>

#include <conio.h>

#include <iostream> /* Вібліотека вводу-виводу */

#include <windows.h>

#include <graphics.h> /* Бібліотека роботи з графікою */

#include "Circle.h" / Клас Коло */

#include "Ring.h" / Клас Кільце */namespace std; /* Простір імен std */choice, x, y, r, wm;MyCircle; /* Оголошення статисного об'єкту MyCircle*/*DMyCircle = &MyCircle; /* Оголошення динамічного обєкту */main()

{

setlocale(LC_ALL, "Russian");

system("cls"); /* Очистка екрану */

std::cout<<" Оберіть метод роботи з програмою"<<endl;

std::cout << " ************************************************\n";

std::cout << " 1. Використати конструктор за замовчуванням\n";

std::cout << " 2. Використати конструктор одиничного кола\n";

std::cout << " 3. Використати конструктор довільного кола\n";

std::cout << " ************************************************\n";

std::cout << " Ваш вибір: "; cin >> wm;

switch(wm)

{

case 1:

{

CCircle MyCircle;

CCircle *DMyCircle = &MyCircle;

break;

}

case 2:

{

CCircle MyCircle(1);

CCircle *DMyCircle = &MyCircle;

break;

}

case 3:

{

system("cls"); /* Очистка екрану */

std::cout << "\n Формування конструктора довільного кола\n";

std::cout << "\n ************************************************\n";

std::cout<<"\n Введіть координату х: "; std::cin>>x;

std::cout<<"\n Введіть кооридинату y: "; std::cin>>y;

std::cout<<"\n Введіть радіус кола: "; std::cin>>r;

CCircle MyCircle(x, y, r);

CCircle *DMyCircle = &MyCircle;

break;

}

default:

{

std::cout << "\n Ви помилились цифрою, буде застосований конструктор за замовчуванням...\n";

CCircle MyCircle;

CCircle *DMyCircle = &MyCircle;

break;

}

}

Ring CRing;

Ring *DCRing = &CRing;

do {

system("cls"); /* Очистка екрану */

std::cout << "\n Головне меню програми\n";

std::cout << "\n**************************************\n\n";

std::cout << " 1. Задати дані класу коло \n";

std::cout << " 2. Визначити довжину кола \n";

std::cout << " 3. Визначити площу кола \n";

std::cout << " 4. Збільшити радіус кола на 1 \n";

std::cout << " 5. Задати дані класу кільця \n";

std::cout << " 6. Визначити площу кільця\n";

std::cout << " 7. Графічне відображення обєктів \n";

std::cout << " 8. Про автора\n";

std::cout << " 9. Вихід \n";

std::cout << "\n**************************************\n\n";

std::cout << " --- Оберіть необхідний пункт меню: ";

std::cin >> choice;

switch (choice)

{

case 1:

{

system("cls"); /* Очистка екрану */

std::cout << "\n Задання даних класу коло \n";

std::cout << "\n**************************************\n\n";

std::cout<<"\n Введіть координату х: "; std::cin>>DMyCircle->x;

std::cout<<"\n Введіть координату y: "; std::cin>>DMyCircle->y;

std::cout<<"\n Введть радіус кола: "; std::cin>>DMyCircle->r;

if(DMyCircle->r <= 0)

{

std::cout<<"\n Помилка! Радіус кола не можу бути відємним або рівним 0.\n";

system("pause");

exit(-1);

}

std::cout << "\n**************************************\n\n";

system("pause");

break;

}

case 2:

{

system("cls"); /* Очистка екрану */

std::cout << "\n Визначення довжини кола \n";

std::cout << "\n**************************************\n\n";

MyCircle.circleLength(); /* Виклик методу обчислення довжини кола */

std::cout << "\n**************************************\n\n";

system("pause");

break;

}

case 3:

{

system("cls"); /* Очистка екрану */

std::cout << "\n Визначення площі кола \n";

std::cout << "\n**************************************\n\n";

MyCircle.circleArea();/* Виклик методу обчислення площі кола */

std::cout << "\n**************************************\n\n";

system("pause");

break;

}

case 4:

{

system("cls"); /* Очистка екрану */

std::cout << "\n Збільшення радіусу кола на 1 \n";

std::cout << "\n**************************************\n\n";

std::cout << "\n Нинішній радіус кола рівний: "<<MyCircle.r;

std::cout << "\n\n**************************************\n";

MyCircle++; /* Операція інкременту радіуса кола */

std::cout<<"\n Операція інкременту здійснена успішно. \n Радіус кола рівний: "<<DMyCircle->r<<endl;

std::cout << "\n**************************************\n\n";

system("pause");

break;

}

case 5:

{

system("cls"); /* Очистка екрану */

std::cout << "\n Задання даних класу кільце \n";

std::cout << "\n**************************************\n\n";

std::cout<<"\n Введіть радіус кільця: "; std::cin>>DCRing->r;

std::cout<<"\n Введіть внутрішній радіус кільця: "; std::cin>>DCRing->iR;

std::cout << "\n**************************************\n\n";

system("pause");

break;

}

case 6:

{

system("cls"); /* Очистка екрану */

std::cout << "\n Визначення площі кільця \n";

std::cout << "\n**************************************\n\n";

DCRing->ringArea();/* Виклик методу обчислення площі кільця */

std::cout << "\n**************************************\n\n";

system("pause");

break;

}

case 7:

{

system("cls"); /* Очистка екрану */

initwindow(800,600);

/* Виклик методу графічного відображення кола */

DMyCircle->show(DMyCircle->r);

std::cout << "\n**************************************\n\n";

system("pause");

break;

}

case 8:

{

system("cls"); /* Очистка екрану */

std::cout << "\n****************************************************************\n\n";

std::cout<<"\n\n\n\t\t Автор програми: Левчук Владислав Вікторович";

std::cout<<"\n\t\t Студент: ВТ НУХТ";

std::cout<<"\n\t\t Курс: 3";

std::cout<<"\n\t\t Група: 37\n\n\n";

std::cout << "\n****************************************************************\n\n";

system("pause");

break;

}

case 9:

{

break;

}

default:

{

std::cout << "\n Ви помилились цифрою, поверніться у попереднє меню та спробуйте ще раз...\n";

system("pause");

main();/* Виклик головної функції програми */

break;

}

}

} while(choice != 9);


system("pause");

return 0;

}

Лістинг бібліотеки класу Коло «Circle.h»:

#ifndef CCIRCLE_H

#define CCIRCLE_H

#include <windows.h>

#include <graphics.h>const double PI = 3.1415926;CCircle

{

public:

int r;

int x;

int y;

CCircle();

CCircle(int _r);

CCircle(int _x, int _y, int _r);

void circleLength();

void circleArea();

CCircle operator++(int notused);

void show(int _r);

};

#endif

Лістинг реалізації класу Коло «Circle.cpp»:

#include <iostream>

#include <conio.h>

#include <windows.h>

#include <graphics.h>

#include <string.h>

#include <iostream>

#include <cstdio>

#include <sstream>

#include <cstring>

#include "Circle.h"::CCircle()

{

x = y = 100;

r = 80;

}::CCircle(int _r)

{

x = 100;

y = 100;

r = _r;

}::CCircle(int _x, int _y, int _r)

{

x = _x;

y = _y;

r = _r;

}CCircle::circleLength()

{

double pi = 3.14;

double circle_length = 2 * PI * r;

std::cout << " Радіус кола: " << r << "\n";

std::cout << " Довжина кола рівна: " << circle_length << "\n";

}CCircle::circleArea()

{

double pi = 3.14;

double circle_area = pi * (r * r);

std::cout << " Площа кола рівна: " << circle_area << "\n";

}CCircle::operator++(int notused)

{

CCircle tmp = *this;

r += 1;

return tmp;

}CCircle::show(int _r)

{

system("cls"); /* Очистка екрану */


setcolor(4);

circle(x, y, _r);

floodfill(x,y,4);

setcolor(8);

char chars[30];

sprintf(chars,"%s%d","Коло з радіусом: ",_r);

line(x, y, x+_r, y-20);

line(x+_r, y-20, x+_r+170, y-20);

outtextxy(x + _r + 5, y-20-20, chars);

system("pause");

closegraph();

}

Лістинг класу Кільце «Ring.h»:

#ifndef RING_H

#define RING_HRing : public CCircle

{

public:

int iR;

Ring();

void ringArea();

};

#endif

Лістинг реалізації класу Кільце «Ring.cpp»:

#include <iostream>

#include <conio.h>

#include "Circle.h"

#include "Ring.h"::Ring()

{

iR = 0;

}Ring::ringArea()

{

double pi = 3.14;

double ring_area = pi * (r * r - iR * iR);

std::cout << Площа кільця рівна: " << ring_area << "\n";

}


РОЗДІЛ 3. Тестування програмного забеспечення


.1 Вимоги до програмно-технічного забезпечення


·Операційна система - Windows XP, Vista, 7, 8

·Процесор - AMD Athlon X1600

·Оперативна пам'ять - 256 МБ

·Монітор


.2 Аналіз результатів тестування


При вході в програму з'являється меню з вибором методу використання програми, доступних для користувача (рис.3.1):


Рис.3.1 Вибір методу роботи з програмою


Наступним кроком зявиться меню роботи з програмою (рис.3.2):

1.Задання даних классу коло;

2.Визначення довжини кола;

.Визначення площи кола;

.Збільшення радіусу кола на 1;

5.Задання даних класу кільця;

6.Визначення площі кільця;

7.Графічне відображення обєктів;

8.Дані про автора програми;

.Вихід.


Рис. 3.2 Головне меню програми


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

·Формування конструктора довільного кола рис. 3.3;

·Задання даних классу коло наведено на рис. 3.4;

·Визначення довжини кола наведено на рис. 3.5;

·Визначення площі кола наведено на рис. 3.6;

·Збільшення радіусу кола на 1 наведено на рис. 3.7;

·Задання даних класу кільця наведено на рис. 3.8;

·Визначення площі кільця наведено на рис. 3.9;

·Графічне відображення обєктів наведено на рис. 3.10;

·Дані про автора програми наведено на рис. 3.11;


Рис. 3.3 Формування конструктора довільного кола


Рис. 3.4 Задання даних классу коло


Рис.3.5 Визначення довжини кола


Рис. 3.6 Визначення площі кола


Рис. 3.7 Збільшення радіусу кола на 1


Рис. 3.8 Задання даних класу кільця


Рис. 3.9 Визначення площі кільця


Рис. 3.10 Графічне відображення обєктів


Рис. 3.11 Дані про автора програми


3.3 Інструкція користувача


1.Вибір методу роботи з програмою

.Вибір пункту меню

.Якщо обрано пункт меню «Задання даних класу коло»:

.1Ввести координату x, y та радіус кола r

.2Для повернення до головного меню натиснути будь-яку клавішу

.Якщо обрано пункт меню «Визначення довжини кола»:

.1Вивести на екран довжину кола заданого радіусу

.2Для повернення до головного меню натиснути будь-яку клавішу

.Якщо обрано пункт меню «Визначення площі кола»:

.1Вивести на екран площу кола заданого радіусу

.2Для повернення до головного меню натиснути будь-яку клавішу

.Якщо обрано пункт меню «Збільшення радіусу кола на 1»:

.1Вивести на екран нинішній радіус кола та збільшений на 1

.2Для повернення до головного меню натиснути будь-яку клавішу

.Якщо обрано пункт меню «Задання даних класу кільця»:

.1Ввести зовнішній та внутрішній радіуси кільця

.2Для повернення до головного меню натиснути будь-яку клавішу

.Якщо обрано пункт меню «Визначення площі кільця»:

.1Вивести на екран площу кільця

.2Для повернення до головного меню натиснути будь-яку клавішу

.Якщо обрано пункт меню «Графічне відображення обєктів»:

.1Вивести на екран нинішній графічне зображення фігур коло та кільце

.2Для повернення до головного меню натиснути будь-яку клавішу

.Якщо обрано пункт меню «Дані про автора програми»:

.1Вивести на екран дані про автора програми

.2Для повернення до головного меню натиснути будь-яку клавішу

.Якщо обрано пункт меню «Вихід»:

.1 Для закриття програми натиснути будь-яку клавішу


ВИСНОВОК


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


ВИКОРИСТАНІ ДЖЕРЕЛА


1.Страуструп Б. Язык программирования C++. -М.: Бином, 1999. - 991с

2.Грегори К. Использование Visual C++ 6.-М.,СПб.,К.Издательский домВільямс,1999.-864с.

.Страуструп Б. Дизайн и эволюция С++.- М.: ДМК Пресс,200. - 448с.

.Буч Г. Объектно-ориентированного проектирования с примерами приложений на C++. -М.: Бином, 1999. -560 с.

.Климов А.М. С++. Практическое программирование . Решение типових задач. - СПб:ВHV,2000.- 593с.


АНОТАЦІЯ програма обєктний обчислення математичний Курсова робота присвячена розробці і реалізації програмного продукту на мові С++ з використанням обєктн

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ