Клас
|
Дані та методи
|
Опис
|
CCircle
|
int 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 містить дані про коло, його положення та радіус. Включає
наперед визначені конструктор за замовчуванням, конструктор кола одиничного
радіуса, і конструктор довільного коло. А також методи для визначення довжини
кола та площі кола, виведення параметрів кола на екран.
|
Ring
|
int 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;
}
{
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";
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:
{
}
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;
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с.