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

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

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

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

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

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

АНОТАЦІЯ

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

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

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

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

ВСТУП

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

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

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

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

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

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

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

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

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

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

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

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

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

Ім'я

Тип

Призначення

choice

int

Визначення пункту меню

x

int

Тимчасова зміна, що містить координату кола по осі ox

y

int

Тимчасова зміна, що містить координату кола по осі oy

r

int

Тимчасова змінна, що містить радіус кола

wm

int

Змінна для вибору режиму роботи з програмою

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

Клас

Дані та методи

Опис

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" / Клас Кільце */

using namespace std; /* Простір імен std */

int choice, x, y, r, wm;

CCircle MyCircle; /* Оголошення статисного об'єкту MyCircle*/

CCircle *DMyCircle = &MyCircle; /* Оголошення динамічного об'єкту */

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

static const double PI = 3.1415926;

class 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::CCircle()

{

x = y = 100;

r = 80;

}

CCircle::CCircle(int _r)

{

x = 100;

y = 100;

r = _r;

}

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

{

x = _x;

y = _y;

r = _r;

}

void CCircle::circleLength()

{

double pi = 3.14;

double circle_length = 2 * PI * r;

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

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

}

void CCircle::circleArea()

{

double pi = 3.14;

double circle_area = pi * (r * r);

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

}

CCircle CCircle::operator++(int notused)

{

CCircle tmp = *this;

r += 1;

return tmp;

}

void 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_H

class Ring : public CCircle

{

public:

int iR;

Ring();

void ringArea();

};

#endif

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

#include <iostream>

#include <conio.h>

#include "Circle.h"

#include "Ring.h"

Ring::Ring()

{

iR = 0;

}

void Ring::ringArea()

{

double pi = 3.14;

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

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

}

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

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

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

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

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

· Монітор

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

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

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

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

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

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

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

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

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

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

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

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

9. Вихід.

Рис. 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. Вибір методу роботи з програмою

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ВИСНОВОК

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

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

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

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

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

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

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

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


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

  • Розробка структури інструментального пакету для лабораторних робіт з інформатики на мові JavaScript: аналіз предметної області, написання алгоритму та вибір програмного забезпечення, розрахунок економічних показників готового програмного продукту.

    дипломная работа [3,3 M], добавлен 16.09.2011

  • Розробка структури бази даних. ER-моделі предметної області. Проектування нормалізованих відношень. Розробка форм, запитів, звітів бази даних "Автосалон". Тестування роботи бази даних. Демонстрація коректної роботи форми "Додавання даних про покупців".

    курсовая работа [4,0 M], добавлен 02.12.2014

  • Розробка бази даних для меблевої фірми. Обстеження і аналіз предметної області та побудова концептуальної, логічної та фізичної моделі цієї бази даних. Використання мови програмування Visual Basic при написанні програмного коду, що обслуговує базу даних.

    курсовая работа [1,4 M], добавлен 24.10.2010

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

    курсовая работа [861,7 K], добавлен 21.02.2010

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

    курсовая работа [43,1 K], добавлен 30.06.2015

  • Цілі і завдання розробки, її предмет і актуальність. Опис предметної області, цілі і завдання програми. Вибір методу рішення, опис процесу програмування і вибір інструментальних засобів для реалізації проекту, опис вхідних та вихідних даних, інтерфейсу.

    курсовая работа [327,1 K], добавлен 01.09.2014

  • Характеристика функціональної структури предметної області програмного комплексу. Розробка архітектури програмної системи. Вибір типу архітектури й зразків проектування. Опис декомпозиції, залежностей та інтерфейсу. Детальне проектування модулів та даних.

    курсовая работа [462,2 K], добавлен 19.12.2013

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

    курсовая работа [2,0 M], добавлен 26.12.2011

  • Характеристика об’єкта автоматизації, вимоги до системи, склад та зміст системи. Розробка функціональної схеми програмного продукту. Тестування підпрограми програмного продукту. Розробка бази даних та налаштування ECO компонент в Borland Developer Studio.

    практическая работа [1,8 M], добавлен 05.06.2014

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

    курсовая работа [2,0 M], добавлен 21.08.2015

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