Створення програмної оболонки на мові С++ до задачі, яка повинна містити меню з командами

Розробка програми на мові програмування С++ з використанням об'єктно-орієнтованого програмування. Робота з файлами, графікою, класами, обробка числової інформації. Графічні засоби мови програмування. Алгоритм задачі та допоміжні програмні засоби.

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ВІННИЦЬКИЙ ДЕРЖАВНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

КАФЕДРА ОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИ

Курсова робота

З дисципліни: "Програмування”

Виконав студент Зубко В.О.

Керівник: асистент Черняк О.І.

Вінниця 2002

1. Технічне завдання

Скласти програмну оболонку до заданої задачі, яка повинна містити меню з командами:

1. Виведення на екран умови завдання за допомогою текстового редактора NotePad.

2. Редагування за допомогою текстового редактора NotePad вхідного файлу.

3. Виконання exe-файлу програми,. написаної на мові С++

4. Виведення на екран вихідного файла за текстового редактора NotePad.

5. Виведення на екран коротких відомостей про розробника програми.

6. Вихід з програми меню.

Задача:

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

2. Анотація

В даній курсовій роботі виконана розробка програми на мові програмування С++ з використанням об'єктно-орієнтованого програмування, яка включає в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою.

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

3. Зміст

  • 1. Технічне завдання
  • 2. Анотація
  • 4. Вступ
  • 5. Загальна структура роботи
  • 6. Узагальнений алгоритм задачі
  • 7. Програмна реалізація основного алгоритму з використанням засобів ООП
  • 7. Програмна реалізація основного алгоритму з використанням засобів ООП
  • 8. Розробка допоміжних програмних засобів
  • 9. Висновки
  • 10. Список використаної літератури
  • 11. Додатки

4. Вступ

Короткі теоретичні відомості

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

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

Основними поняттями об'єктно-орієнтованого програмування є:

інкапсуляція;

наслідування;

абстракція;

поліморфізм.

Інкапсуляція полягає утому, що кожний клас має три рівні доступу до елементів:

publik - рівень, дані на якому можуть бути використані будь-якою функцією;

protected - елементи цього рівня можуть бути використані функціями-членами даного класу або функціями-членами похідних класів;

private-елементи цього рівня можуть бути використані функціями-членами даного класу.

Дані рівні класів називають полями.

Наслідування полягає у тому, що деякі класи можуть бути створені на основі інших, шляхом введення додаткових елементів.

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

Абстракція полягає у використанні віртуальних функкцій (функції, які об'являються в базовому класі, але в похідному класі можуть мати зовсім інше значення). Віртуальна функція в базовому класі може не мати ніякого тіла, але в похідному повинна бути визначеною. Таким чином абстракція дозволяє, звертаючись до однієї і тієї ж функції в різних об'єктах, виконувати різні дії.

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

ГРАФIЧНI ЗАСОБИ МОВИ С

Мова С має достатньо шиpокi гpафiчнi можливостi. Всi необхiднi визначення для графiчного модуля мови С дано в файлi graphics. h i при виборi вiдповiдного режиму вiн повинен бути включеним в програму за допомогою директиви #include<graphics. h>. Стандартнi функцii для графiчноi системи знаходяться в бiблiотецi graphics. lib, яка повинна бути пiдключена або за допомогою командноi строки (якщо використовуеться компiлятор ТСС), або шляхом створення файла проекта (якщо використовуеться компiлятор ТС).

Перед початком роботи програми повинна бути виконана iнiцiалiзацiя графiчноi системи тобто вказанi графiчнi драйвер та режим роботи цього драйвера (graphdriver & graphmode). А в кiнцi роботи бажано вiдновити той вiдеорежим, в якому находився комп'ютер до запуску програми.

До основних функцiй, реалiзованих даним способом вiдносятся:

установка вiдеорежима;

малювання точки заданим кольором;

визначення кольору точки з заданими координатами;

очистка активноi сторiнки i т.п.

Також до графiчних можна вiднести i операцii в текстовому режимi вiдеоконтролера, звязанi з позицiйним виведенням символiв на экран, наприклад, малювання рамок симвлами псевдографiки, а також операцii по змiнi знакогенератора (EGA,VGA,.).

В компiляторах Turbo C та Borland C++ фiрми Borland функцii для роботи з текстовим экраном описанi в модулi conio. h та размiщенi в стандартних бiблiотеках, якi не потребують спецiального пiдключення.

В програмi були використанi деякi iз вищеперерахованих можливостейстей.

5. Загальна структура роботи

Текст програми (menu. exe i kurs. exe) знаходиться в одноіменних файлах

· kurs. cpp - реалізація задачі курсової роботи та класів

· menu. cpp - код програми, що реалізує основне меню прогрманого комплексу

Всі файли вхідних і вихідних даних знаходяться в тому ж каталозі, що і програми menu. exe i kurs. exe:

· dіagonal. txt - файл, що містить координати кінців відрізка

· points. txt - файл, що містить координати точок

· low. txt - файл, в якому знаходяться результати роботи програми

· up. txt - файл, в якому знаходяться результати роботи програми

· About. txt - інформація про програму та її розробника

Основу структури програмної реалізації завдання складає програма menu. exe, з якої можна редагувати вхідні дані і запускати програму kurs. exe, яка реалізує алгоритмічне виконання завдання.

6. Узагальнений алгоритм задачі

Для визначення положення точки відносно прямої підставляються координати потрібної точки в рівняння прямої і перевіряється результат, якщо протилежні знаки, то точки лежать по різні боки від прямої.

Для перевірки входження точки в прямокутник превіряється входження координати x,y в площину прямокутника.

мова програмування програмний алгоритм

7. Програмна реалізація основного алгоритму з використанням засобів ООП

Об'ява класів

С++ підтримує об'яву класів, які інкапсулюють члени. Члени класа - члени даних і функцфії-члени. В членах-даних зберігаються значення, які представляють стан екземплярів класу (тобто об'єктів які належать класу). Функції - члени встановлюють і перевіряють стан екземплярів класа, керуючи значеннями в членах даних. Загальний синтаксис об'яви базового класу в С++ має такий вигляд:

class className

{

public:

// відкриті члени даних

// відкриті функції члени

protected:

// захищені члени даних

// захищені функції члени

};

main ()

{

className obj

obj. <ім'я функції>

}

Об'ява класа починається з ключового слова class, після якого слідує ім'я класу. Декларація членів класа заключається в пару фігурних дужок і закінчуються значком "крапка з комою”.

Функція, опис якої знаходиться в опису класу називається inline-функцією.

Але клас - це абстрактний набір правил, який існує тільки у вигляді потенційних можливостей. Для їх реалізації створюються об'єкти даного класу в пам'яті. Механізм створення об'єкту даного класу полягає у використанні спеціальної функції даного класу, яка називається конструктором класу.

Конструктор резервує в оперативній пам'яті необхідний простір, розбиває його на частини відповідно членам класу, а також присвоює даній області пам'ті ім'я.

Конструктор класу може бути заданий явно і неявно. Коли ми описуємо клас, то компілятор обов'язково додає неявну функцію конструктора, яку ми можемо перевизначити самі. Для цього необхідно записати функцію конструктор в області public. Конструктор має те ж ім'я,що й клас.

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

Ми розглянули основні поняття об'єктно-орієнтованого програмування мовою С++.

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

Основна програма

class Point

friend Line - об'ява класу з повним правом доступу.

public область:

enum POSITION - об'ява набору констант.

UPPER - значення яке може приймати тип POSITION.

LOWER - значення яке може приймати тип POSITION.

enum RELATIVE_RECT - об'ява набору констант.

IN_RECT - значення яке може приймати тип IN_RECT.

OUT_OF_RECT - значення яке може приймати тип OUT_OF_RECT.

Point (int theX, int theY) - конструктор.

X = theX; Y = theY - "тіло” конструктора.

void DetectType (Line &Diagonal) - функція визначення положення точки відносно діагоналі.

void Show (int Dump = 0) - функція виводу на єкран точки.

int GetX () { return X; } - отримати координату Х точки.

int GetY () { return Y; } - отримати координату Y точки.

POSITION Position () { return Pos; } - отримати інформацію про положення точки відносно прямої.

RELATIVE_RECT In_Rect () { return Location; } - отримати інформацію про положення точки відносно прямокутника.

protected: - захищені члени, до яких можуть звертатися лише дружні класи, а також потомки даного класу.

int X,Y - оголошення змінних Х та Y.

POSITION Pos - визначає положення точки.

RELATIVE_RECT Location - визначає положення точки відносно прямокутника.

class Line

public-область:

enum FIGURE - об'ява типу констант.

RECTANGLE - значення, яке може приймати тип FIGURE.

LINE - значення, яке може приймати тип FIGURE.

Point *A, *B - вказівники на об'єкти класу точка (Point).

Line (Point &P1, Point &P2) - конструктор класу.

void Show (FIGURE figure) - Функція виводу на екран прямої, чи прямокутника.

class App

public область:

enum GRAPH_RESULT - об'ява констант.

GRAPH_OK - значення, яке може приймати тип GRAPH_RESULT.

GRAPH_FAILURE - значення, яке може приймати тип GRAPH_RESULT.

void Run () - головна функція проекту: виконує всі дії по зчитуванню даних, перевірці, обробці та виведенню результатів роботи програми на екран.

GRAPH_RESULT SwitchToGraphic () - переведення екрану в графічний режим роботи.

void SwitchToText () - переведення екрану в текстовий режим роботи.

8. Розробка допоміжних програмних засобів

Класи програми меню

class Text

private область:

int dx - координата х тексту.

int dy - координата х тексту.

int style - стиль тексту.

int color - колір тексту.

int size - розмір шрифту.

public область:

char str [80] - масив типу char, в якому знаходиться текст.

Text (char *s) - конструктор класу.

int Length () {return strlen (str); } - inline-функція, яка повертає довжину строки.

void set (int a, int b, int c, int d, int e) - функція ініціалізації даних класу.

void show () - функція для виводу на екран.

class Button -

int x1 - координата x верхнього лівого краю кнопки.

int y1 - координата y верхнього лівого краю кнопки.

int x2 - координата x нижнього правого краю кнопки.

int y2 - координата y нижнього правого краю кнопки.

int color - колір кнопки.

Public область:

static posx - статична змінна для визначення позиції кнопки по горизонталі.

static posy - статична змінна для визначення позиції кнопки по вертикалі.

Text *txt - обявляється покажчик на об'єкт типу Text.

void show (int act) - функція для відображення кнопки.

virtual void run (void) - віртуальна функція, яка не виконує ніякої роботи.

void set (int c) - втановити параметри кнопоки.

~Button () {delete txt; } - деструктор класу кнопка.

int Button:: posx = 0 - ініціалізація статичної змінної.

int Button:: posy = 0 - ініціалізація статичної змінної.

class Menu

button1 but1 - створюється об'єкт класу button1.

button2 but2 - створюється об'єкт класу button2.

button3 but3 - створюється об'єкт класу button3.

button4 but4 - створюється об'єкт класу button4.

button5 but5 - створюється об'єкт класу button5.

button6 but6 - створюється об'єкт класу button6.

button7 but7 - створюється об'єкт класу button7.

button8 but8 - створюється об'єкт класу button8.

button *maskn [8] - масив вказівників типу button.

int x - позиція х виводу меню.

int y - позиція у виводу меню.

int nomAct - номер активної кнопки.

int vertic - змінна, яка вказує горизонтальне чи вертикальне меню.

int actTextCol - колір тексту активної кнопки.

int actBgCol - колір фону активної кнопки.

int pasTextCol - колір тексту пасивної кнопки.

int pasBgCol - колір фону пасивної кнопки.

void Fon () - функція створення фону.

void show (void) - функція показу кнопок.

void onLeft (void) - реакція на натиснення кнопки "вліво”.

void onRight (void) - реакція на натиснення кнопки "вправо”.

void onDown (void) - реакція на натиснення кнопки "ввід”.

public область:

Menu () - конструктор класу меню.

~Menu () { closegraph (); delete maskn; } - деструктор класу меню.

void getmessage (int msg) - функція прийняття повідомлень

де пункти меню About, Edit Points, Edit Diagonal, Edit Program, Program,F1, F2, Exit виконують такі дії:

Ш About - забезпечує виведення інформації про розробника програми;

Ш Edit Points - з забезпечує редагування файлу із вхідними даними (координати точок);

Ш Edit Diagonal - з забезпечує редагування файлу із вхідними даними (координати кінців діагоналі);

Ш Edit Program - забезпечує редагування тексту програми;

Ш Program - запускає головну програму;

Ш F1 - забезпечує вивід на екран файла з вихідними даними;

Ш F2 - забезпечує вивід на екран файла з вихідними даними;

Ш Exit - виконує вихід із програми.

Графічне зображення результату за вхідними даними має вигляд:

9. Висновки

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

10. Список використаної літератури

1. Том Сван "Освоение Borland C++ 4.5".1,2 том. "Диалектика" Киев 1996.

2. Намир К. Шаммас "Основы С++ и объектно ориентированого програмирования". "Диалектика" Киев 1996.

3. Тимотти С. Монк, Стивен Поттс "Borland C++ в примерах". Минск 1996г.

11. Додатки

Додаток А

Лістинги програми основного завдання.

#include <graphics. h>

#include <fstream. h>

int max (int value1, int value2)

{

return ( (value1 > value2)? value1: value2);

}

int min (int value1, int value2)

{

return ( (value1 < value2)? value1: value2);

}

class Point {

friend Line;

public:

enum POSITION {

UPPER,

LOWER

};

enum RELATIVE_RECT {

IN_RECT,

OUT_OF_RECT

};

Point (int theX, int theY) // constructor

{

X = theX; Y = theY;

}

void DetectType (Line &Diagonal);

void Show (int Dump = 0);

int GetX () { return X; }

int GetY () { return Y; }

POSITION Position () { return Pos; }

RELATIVE_RECT In_Rect () { return Location; }

protected:

int X,Y; // coordinates

POSITION Pos; // relative to line

RELATIVE_RECT Location; // relative to rect.

};

class Line {

public:

enum FIGURE{

RECTANGLE,

LINE

};

Point *A, *B;

Line (Point &P1, Point &P2)

{

A = new Point (P1. GetX (), P1. GetY ());

B = new Point (P2. GetX (), P2. GetY ());

}

void Show (FIGURE figure);

};

class App {

public:

enum GRAPH_RESULT {

GRAPH_OK,

GRAPH_FAILURE

};

void Run (); // constructor

GRAPH_RESULT SwitchToGraphic ();

void SwitchToText ();

};

int main ()

{

App Kursova;

Kursova.run ();

return 0;

}

// - ------------- - class Point - ------------------

void Point:: DetectType (Line &Diagonal)

{

int TopX, BottomX,

LeftY, RightY;

TopX = min (Diagonal. A->GetX (), Diagonal. B->GetX ());

BottomX = max (Diagonal. A->GetX (), Diagonal. B->GetX ());

LeftY = min (Diagonal. A->GetY (), Diagonal. B->GetY ());

RightY = max (Diagonal. A->GetY (), Diagonal. B->GetY ());

// relative to rectangle.

if (Diagonal. A->GetX () == Diagonal. B->GetX () ||

Diagonal. A->GetY () == Diagonal. B->GetY ())

{

Location = OUT_OF_RECT;

return;

}

else

if ( (TopX < GetX () && GetX () < BottomX) &&

(LeftY < GetY () && GetY () < RightY))

Location = IN_RECT;

else

Location = OUT_OF_RECT;

/*

if (GetY () <

(GetX () - Diagonal. A->GetX ()) *

(Diagonal. B->GetY () - Diagonal. A->GetY ()) /

(Diagonal. B->GetX () - Diagonal. A->GetX ()) + Diagonal. A->GetY ())

*/

// relative to line.

double temporary = GetX () - Diagonal. A->GetX ();

temporary *= Diagonal. B->GetY () - Diagonal. A->GetY ();

temporary /= Diagonal. B->GetX () - Diagonal. A->GetX ();

temporary += Diagonal. A->GetY ();

if (GetY () < temporary)

Pos = UPPER;

else

Pos = LOWER;

}

void Point:: Show (int Dump)

{

int color;

if (Dump) color = 9;

else

if (Position () == UPPER)

color = WHITE;

else

color = LIGHTRED;

setcolor (color);

circle (GetX (), GetY (),

2); circle (GetX (), GetY (), 1);

}

// - ---------------- - class App - ------------------

void App:: Run ()

{

int X, Y, // point

X1, Y1, X2, Y2, // line

lines, i, up, low,temp; // others variables

char ch;

Point **Pixels, **UPixels, **LPixels;

ifstream fLine ("Diagonal. txt");

if (! fLine)

{

cerr << "Can't open the file - Diagonal. txt";

cin. get ();

return;

}

// (x = x1, y = y1) - (x = x2, y2 = y2)

fLine >> ch >> ch >> ch >> X1 >> ch >> ch >> ch >> Y1 >> ch >> ch >> ch >> ch >> ch >> X2 >> ch >> ch >> ch >> Y2 >> ch;

fLine. close ();

Line Diagonal (Point (X1, Y1), Point (X2, Y2));

// detecting quantity of points (== quantity of strings)

ifstream fPoints ("Points. txt", ios:: binary);

if (! fPoints)

{

cerr << "Can't open the file - Points. txt";

cin. get ();

return;

}

lines = 1;

ch = fPoints. get ();

while (! fPoints. eof ()) {

if (ch == '\n')

lines++;

ch = fPoints. get ();

}

fPoints. close ();

fPoints. open ("Points. txt");

Pixels = new Point* [lines];

for (i=0; i<lines; i++)

{

// (x, Y)

fPoints >> ch >> X >> ch >> Y >> ch;

Pixels [i] = new Point (X,Y);

Pixels [i] - >DetectType (Diagonal);

}

fPoints. close ();

// detecting quantity of Up-line points

temp = 0;

for (i=0; i<lines; i++)

if (Pixels [i] - >Position () == Point:: UPPER)

temp++;

UPixels = new Point* [temp];

LPixels = new Point* [lines-temp];

up = low = 0;

for (i=0; i<lines; i++)

{

if (Pixels [i] - >In_Rect () == Point:: OUT_OF_RECT) continue;

if (Pixels [i] - >Position () == Point:: UPPER)

{

UPixels [up] = new Point (Pixels [i] - >GetX (), Pixels [i] - >GetY ());

UPixels [up] - >DetectType (Diagonal);

up++;

}

else

{

LPixels [low] = new Point (Pixels [i] - >GetX (), Pixels [i] - >GetY ());

LPixels [low] - >DetectType (Diagonal);

low++;

}

}

// file proccessing

ofstream fUp ("Up. txt");

if (! fUp)

{

cerr << "Can't create the file - Up. txt";

cin. get ();

return;

}

for (i = 0; i < up; i++)

fUp << " ("<< UPixels [i] - >GetX () << ","

<< UPixels [i] - >GetY () <<")" << endl;

fUp. close ();

ofstream fLow ("Low. txt");

if (! fLow)

{

cerr << "Can't create the file - Low. txt";

cin. get ();

return;

}

for (i = 0; i < low; i++)

fLow << " ("<< LPixels [i] - >GetX () << ","

<< LPixels [i] - >GetY () <<")" << endl;

fLow. close ();

// graphic's section

SwitchToGraphic ();

for (i = 0; i < lines; i++)

Pixels [i] - >Show (1);

cin. get ();

cleardevice ();

for (i = 0; i < up; i++)

UPixels [i] - > Show ();

for (i = 0; i < low; i++)

LPixels [i] - > Show ();

Diagonal. Show (Line:: RECTANGLE);

Diagonal. Show (Line:: LINE);

cin. get ();

SwitchToText ();

}

GRAPH_RESULT App:: SwitchToGraphic ()

{

int gdriver = DETECT, gmode, errorcode;

initgraph (&gdriver, &gmode, "");

errorcode = graphresult ();

if (errorcode! = grOk)

return GRAPH_FAILURE;

else

return GRAPH_OK;

}

void App:: SwitchToText ()

{

closegraph ();

}

// - ------------- - Line - ---------------

void Line:: Show (FIGURE figure)

{

switch (figure) {

case RECTANGLE:

setcolor (LIGHTGREEN);

rectangle (A->GetX (), A->GetY (), B->GetX (), B->GetY ());

break;

case LINE:

setcolor (LIGHTBLUE);

line (A->GetX (), A->GetY (), B->GetX (), B->GetY ());

break;

};

}

Додаток Б

Лістинги програми меню.

#include <stdio. h>

#include <process. h>

#include <graphics. h>

#include <string. h>

#include <conio. h>

#include <fstream. h>

#define LEFT 75

#define RIGHT 77

#define ENTER 13

#define UP 72

#define DOWN 80

const char *filename = "points. txt";

const char *filename2 = "diagonal. txt";

const char *filename3 = "kurs. cpp";

const char *filename4 = "up. txt";

const char *filename5 = "low. txt";

class Text

{

private:

int dx;

int dy;

int style;

int color;

int size;

public:

char str [80];

Text (char *s);

int Length () {return strlen (str); };

void set (int a, int b, int c, int d, int e);

void show ();

};

Text:: Text (char *s)

{

strcpy (str,s);

}

void Text:: set (int a, int b, int c, int d, int e)

{

dx = a;

dy = b;

style = c;

color = d;

size = e;

}

void Text:: show ()

{

setcolor (color);

settextstyle (style,HORIZ_DIR, size);

outtextxy (dx,dy,str);

}

class button {

int x1;

int y1;

int x2;

int y2;

int color;

public:

static posx;

static posy;

Text *txt;

void show (int act);

virtual void run (void) =0;

void set (int c);

~button () {delete txt; };

};

int button:: posx =0;

int button:: posy =0;

void button:: set (int c)

{

color = 9;

int ln = txt->Length () *8+10;

x1 = posx;

x2 = posx + ln;

y1 = posy;

y2 = posy + 30;

if (c)

{

posy = y2+10;

}

else

{

posx=x2+5;

}

txt->set (x1+5,y1+ (y2-y1) /2- (y2-y1) /4,1,15,1);

}

void button:: show (int act)

{

if (act)

{

setfillstyle (1,7);

txt->show ();

bar (x1,y1,x2,y2);

}

else

{

setfillstyle (1,color);

txt->show ();

bar (x1,y1,x2,y2);

}

txt->show ();

}

class button1: public button {

public:

void run (void);

};

void button1:: run (void)

{

char str [100],newline;

ifstream inAboutFile ("about\\about. dat", ios:: in);

bar (200,150,430,300);

cleardevice;

int i=0;

while (! inAboutFile. eof ()) {

inAboutFile. get (str,100,'\n');

inAboutFile. get (newline);

moveto (110,160+12*i);

outtext (str);

i+=1;

}

getch ();

}

class button2: public button {

public: void run (void);

};

void button2:: run ()

{

restorecrtmode ();

int result = spawnl (P_WAIT, "edit.com","",filename, NULL);

if (result == - 1)

{

perror ("Error execute");

getch ();

}

setgraphmode (getgraphmode ());

}

class button3: public button {

public: void run (void);

};

void button3:: run ()

{

restorecrtmode ();

int result = spawnl (P_WAIT, "edit.com","",filename2, NULL);

if (result == - 1)

{

perror ("Error execute");

getch ();

}

setgraphmode (getgraphmode ());

}

class button4: public button {

public: void run (void);

};

void button4:: run ()

{

restorecrtmode ();

int result = spawnl (P_WAIT, "e: \\bc\\bin\\bc. exe","", filename3, NULL);

// int result = spawnl (P_WAIT, "edit.com","",filename3, NULL);

if (result == - 1)

{

perror ("Error execute");

getch ();

}

setgraphmode (getgraphmode ());

}

class button5: public button {

public: void run (void);

};

void button5:: run ()

{

restorecrtmode ();

char str [50];

strcpy (str,"kurs. exe");

int result = spawnle (P_WAIT, str, NULL, NULL);

if (result == - 1)


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

  • Програма на мові програмування С++. Аналіз стану технологій програмування та обґрунтування теми. Розробка програми виконання завдання, методу вирішення задачі. Робота з файлами, обробка числової інформації і робота з графікою. Розробка програми меню.

    курсовая работа [41,0 K], добавлен 17.02.2009

  • Розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування, яка включає в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою. Структура класів і об’єктів. Лістинг та алгоритм програми.

    курсовая работа [104,4 K], добавлен 14.03.2013

  • Ключові поняття мови об’єктно-орієнтованого програмування C++: інкапсуляція, наслідування, абстракція, поліморфізм. Об’ява класів у мові С++. Графічні засоби. Пошук відстані між точками. Опис класів і об’єктів. Програма графічної задачі. Лістинги файлів.

    курсовая работа [144,3 K], добавлен 14.03.2013

  • Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.

    курсовая работа [502,5 K], добавлен 01.04.2016

  • Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.

    курсовая работа [69,4 K], добавлен 14.03.2013

  • Основні розрахунки резисторів мікросхеми. Розробка алгоритму рішення задачі методом блок-схем. Характеристика та розробка програми на мові С++ з використанням принципів модульного і структурного програмування. План тестування і налагоджування програми.

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

  • Аналіз сучасного стану технологій програмування. Засоби реалізації об'єктів в мові C++, структура даних і функцій. Розробка програмного продукту - гри "трикутники", з використовуванням моделей, класів і функцій об’єктно-орієнтованого програмування.

    курсовая работа [117,8 K], добавлен 14.03.2013

  • Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.

    курсовая работа [211,3 K], добавлен 19.08.2010

  • Принципи об'єктно-орієнтованого підходу. Розробка програмного комплексу з використанням цього алгоритму і користувальницьких класів на мові програмування С++. Реалізація простого відкритого успадкування. Тестування працездатності системи класів.

    курсовая работа [98,0 K], добавлен 06.05.2014

  • Розгляд особливостей мови програмування С++: основні можливості, характеристика функцій. Аналіз файлів з вхідними даними. Використання похідних класів як ефективний засіб об’єктно-орієнтованого програмування. Способи роздруківки графічного вирішення.

    курсовая работа [510,9 K], добавлен 14.03.2013

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