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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    626,97 Кб
  • Опубликовано:
    2014-03-31
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

АНОТАЦІЯ

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

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

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

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

ВСТУП


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

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

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


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


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

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

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

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

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

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

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

РОЗДІЛ 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" / Клас Кільце */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с.

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!