Розробка програм мовою С++ з використанням технології об’єктно-орієнтованого програмування

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

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

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

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

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

Міністерство освіти і науки України

Вінницький національний технічний університет

Інститут інформаційних технологій і комп'ютерної інженерії

Кафедра обчислювальної техніки

РОЗРОБКА ПРОГРАМ МОВОЮ С++

з використанням технології об'єктно-орієнтованого програмування

Пояснювальна записка

до курсової роботи

з дисципліни "Програмування" за спеціальністю

«Комп'ютерні системи і мережі»

08-39.П.72.01.00.000.ПЗ

Керівник: курсової роботи

доцент кафедри ОТ

Ткаченко О.М.

Розробив

студент гр. КС-06

Лащенко І.І.

Вінниця ВНТУ 2007 р.

ВСТУП

З розвитком науки, різного роду технологій перед людиною постають все нові і нові задачі, які потрібно швидко і правильно вирішувати. Раніше багато працівників були змушені виконувати великі обсяги роботи вручну (за допомогою ручки, паперу, олівця і лінійки). Це було неефективно і нераціонально. Тому комп'ютери (і мови програмування) допомагають людям автоматизувати і прискорити процес виконання певних завдань. Обчислювальна техніка використовується зараз не тільки в інженерних розрахунках і економічних науках, але й таких традиційно нематематичних галузях, як медицина, лінгвістика, психологія. Тому можна впевнено сказати, що застосування ЕОМ придбало масовий характер. Комп'ютер став невід'ємною частиною людської діяльності.

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

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

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

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

1. Аналіз сучасного стану технологій програмування та обгрунтування теми

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

Ідея цього підходу полягає в систематичному використанні декомпозиції функцій для побудови структури програмного засобу і текстів програм, що входять в нього. При цьому самі об'єкти, які використовувались реалізованими функціями, представлялися фрагментарно (у тому обсязі, що необхідний для виконання цих функцій) і у формі, зручній для реалізації цих функцій. Через це не забезпечувалося цільне й адекватне комп'ютерне відображення модельного світу, що цікавить користувача. Спроби незначного розширення обсягу й характеру інформації про модельний світ потребували великих затрат. Такий підхід є застарілим і підтримується мовами від асемблерів і процедурних мов (Паскаль) до функціональних мов (ЛИСП) і мов логічного програмування (ПРОЛОГ) [1].

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

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

Окрім С++ існують також інші мови програмування, які дозволяє реалізовувати об'єктно-орієнтовані технології. Так пакет Sketchpad був прикладом однієї з перших об'єктно-орієнтованих систем. Sketchpad був універсальною графічною системою для інтерактивного створення й редагування зображень на графічному дисплеї. Геометричні перетворення застосовувалися до визначених об'єктів, приводячи в результаті до екземпляра геометричного об'єкта [3].

Мова програмування С++ розвинулась із мови С, яка в свою чергу була створена на основі двох попередніх мов - ВСРL і В. Мова програмування ВСРL була створена в 1967 році Мартіном Ричардом як мова для написання компіляторів і програмного забезпечення операційних систем. Кен Томпсон передбачив передбачив багато можливостей в своїй мові В - копії ВСРL і використав В для створення ранніх копій операційної системи UNIX в Bell Laboratories в 1970 році. Мова програмування С була розвинута із В Деннісом Річчі в Bell Laboratories в 1972 році. С використовує багато важливих концепцій ВСРL і В, а також додає типи даних та інші особливості. С++ - розширений С - був розроблений Б`єрном Страуструпом на початку 80-х років в Bell Laboratories. С++ забезпечує можливість, що найважливіше, об`єктно-орієнтованого програмування. Це виявилось революційною ідеєю в світі програмного забезпечення. Об`єкти - це ефективні компоненти програмного забезпечення, що повторно використовуються, і в свою чергу моделюють елементи реального світу [4].

Система Smalltalk дослідницького центру в Пало-Альто (PARC) корпорації Xerox найбільше часто асоціюється з об'єктно-орієнтованим підходом. Система заснована на поняттях об'єктів, повідомлень і класів, які використовуються для створення середовища програмування й спеціального інтерфейсу. Smalltalk відрізняється від інших об'єктно-орієнтованих систем тим, що не має якої-небудь загальноприйнятої типізації й процедурних конструкцій, що могло б порушити строгість застосування об'єктів і передачі повідомлень. Єдиною конструкцією в цій системі є об'єкт, що навіть управляє програмним потоком. Кожний клас має методи, використовувані для обробки повідомлень, які генеруються усередині об'єктів. У системі допускається визначення нових класів шляхом додавання даних і методів до іншого класу, який називається суперкласом.

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

2. Розробка програми виконання основного завдання

2.1 Розробка методу виконання основного завдання

Перш за все потрібно зчитати з файлу координати прямокутників. Ми їх зчитуємо і виводимо на екран. Для того щоб визначити чи вкладені прямокутники один в одного перевіряється кожна вершина, на те чи лежить вона всередині іншого прямокутника. Тільки в тому випадку коли всі вершини одного прямокутника лежать в іншому прямокутник вважається вкладеним(рис.1).

Рис.1 - Вкладений прямокутник

Перетин діагоналей ми шукаємо за допомогою рівняння прямої:

Розв'язавши систему рівнянь, яка складається з рівнянь прямих, на яких лежать діагоналі прямокутників, ми знаходимо точку перетину цих прямих.(рис.2)

файл текст графічний програма

Рис.2 - Точка перетину діагоналей прямокутника

2.2 Структура даних і функцій

Тепер детальніше розглянемо програмну реалізацію рішення даної задачі.

Програма містить 1 клас, 1 структуру і кілька функцій.

struct point:

x,y- змінні типу int.

class pryamokut:

point A,B,C,D-об'єкти класу ,які позначають вершини прямокутника

int grup,int mit-змінні, які позначають чи вкладений прямокутник і до якої групи відноситься

float S-площа прямокутника

int minx,maxx,miny,maxy-зміні, які позначають координати найближчої і найдальшої до початку осі координат вершин.

pryamokut(point,point,point,point) - конструктор.

pryamokut()-конструктор.

void setdata(point,point,point,point)-функція, яка заповняє поля прямокутника.

void draw()-функція, яка малює прямокутник.

Функції:

float Vidst(float x1,float y1,float x2,float y2)- знаходить відстань між двома точками.

int min2(int a,int b)

int min(int a,int b,int c,int d)

int max2(int a,int b)

int max(int a,int b,int c,int d)-функції, які знаходять найбільші і найменші числа.

float SQR(point TA,point TB,point TC,point TD)-функція, яка знаходить площу прямокутника

int Vklad(pryamokut *P1,pryamokut *P2)- перевіряє вкладеність прямокутників

point Diagon(pryamokut A)- знаходить точку перетину діагоналей.

void Diag(pryamokut A,pryamokut B)- з'єднує діагоналі.

void main() - головна функція програми [6].

3. Розробка програми меню

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

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

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

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

Програма меню містить такі пункти :

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

Ш Change data - редагування файлу з вхідними даними DATA.TXT.

Ш Show text program - редагування файлу тексту програми - KUR.СPP.

Ш Run program - запускає програму виконання основного завдання - KUR.EXE.

Ш Exit - вихід із програми меню.

Розглянемо класи, які використовуються при розробці програми меню.

class Knopka - базовий клас.

int x1; - поля даного класу типу int. Координати вікна кнопки та масив символів str відповідають надпису на кнопці. Усі змінні описані в private області.

int y1;

int x2;

int y2;

char str[80]; - поле типу char.

public:

void setparam (int xx1 , int yy1, int xx2,int yy2,char *sstr); - метод ініціалізації полів базового класу.

void show(int tcolor, int bcolor); - метод відображення кнопки з надписом на екрані.

virtual void run(void)=0; - чисто віртуальна функція касу, яка буде перевизначена у класах-нащадках, виконується при натисканні користувачем кнопки Enter для виконання певного пункту меню.

class knopka1:public Knopka - клас нащадок.

public:

void run(void); - перевизначена віртуальна функція, виводить дані про автора програми, які вона зчитує з файлу about.txt.

class knopka2:public Knopka - клас нащадок.

public:

void run(void) ; - перевизначена віртуальна функція, запускає програму notepad.exe для редагування файлу вхідних даних для програми виконання основного завдання DATA.TXT.

class knopka3:public Knopka - клас нащадок.

public:

class knopka4 : public Knopka - клас нащадок.

public:

void run (void); - перевизначена віртуальна функція, яка запускає програму bc.exe для редагування текстового (*.срр) файлу програми виконання основного завдання KUR.CPP.

class knopka5: public Knopka - клас нащадок.

public:

void run(void); - перевизначена віртуальна функція, яка використовується для запуску програми виконання основного завдання KUR.exe.

class knopka6: public Knopka - клас нащадок.

public:

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

class Menu - клас Меню.

knopka1 kn1; - об'єкти класів-нащадків.

knopka2 kn2;

knopka3 kn3;

knopka4 kn4;

knopka5 kn5;

knopka6 kn6;

Knopka *maskn[6] - вказівники на об'єкти базового класу.

int x; - поля класу типу int.

int y;

int nomAct;

int actTextCol;

int actBgCol;

int pasTextCol;

int pasBgCol;

void show(void) - метод, який виводить на екран вікно заданих параметрів і виводить певний надпис.

void onLeft(void) - метод, який реагує на натискання користувачем клавіші <

void onRight(void) - метод, який реагує на натискання користувачем клавіші >

Функції призначені для зміни значення поля nomAct (тобто для зміни номера активного об'єкту).

void onDown(void) - метод, який реагує на натискання користувачем клавіші Enter. Виконує запуск віртуальної функції.

public:

Menu(int xx,int yy) - конструктор класу Меню. Ініціалізує поля класів, встановлює значення кольору тексту та тла для активної та пасивної кнопки та виводить на екран зображення меню за допомогою функції show().

void getmessage(int msg) - функція обробки дії користувача. Вигляд меню змінюється у відповідності до натисненої кнопки користувачем [8].

4. Розробка та виконання тестового прикладу

Вхідні дані прямокутників знаходяться у файлі DATA.txt (рис.3). Програма зчитує числові дані з даного файлу.

Рис.3 - Вхідні дані з файлу DATA.txt

Після зчитування інформації з файлу програма виводить на екран ці прямокутники (рис. 4)

Рис.4 - Виведення прямокутників на екран

Графічні результати роботи програми а також вигляд програми-меню зображено на рисунках 5 та 6. Це свідчить про те, що програма працює коректно при довільних вхідних даних.

Рис. 5 - Результат роботи програми

Рис.6 - Вигляд текстового меню програми

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

Дана програма не потребує особливих системних вимог. Тому для її нормального функціонування необхідна лише наявність процесора, відео карти, материнської плати, оперативної пам'яті і периферійних пристроїв, які не конфліктують між собою. З програмного забезпечення вимагається лише операційна система з можливістю емуляції MS-DOS, і встановлене середовище мови програмування Borland C++ (по замовчуванню програма-меню запускає середовище Borland C++ з диску С). Для інсталяції розробки достатньо лише скопіювати папочку KURS з носія інформації на жорсткий диск комп'ютера. Для використання розробки потрібно відкрити папку KURS і запустити файл Menu.exe. На екрані з'явиться меню даної розробки. Використовуючи клавіші користувач має можливість обрати певний пункт меню. Якщо натиснути Enter на пункті About, то на дисплеї з'явиться інформація про розробника. Пункт меню Change data дозволяє редагувати і змінювати вхідні дані для. Пункт Show text program необхідний для досвідчених користувачів, оскільки він дає можливість редагувати програму в середовищі Borland C++. Для запуску програми на виконання потрібно натиснути Run program. І нарешті для завершення роботи з даною розробкою і виходу в операційну систему необхідно вибрати Exit і натиснути Enter.

Висновки

У ході виконання курсової роботи була розроблена програма з інтерфейсним меню, яке допомагає користувачу легко виконати запуск розробки, змінити вхідні дані або саму програму. Задача була виконана відповідно індивідуального завдання. У результаті програма зчитує числову інформацію з файлу DATA.txt, аналізує, обробляє її і виконує графічне відображення.

Розробка зручна у використанні і працює коректно при будь-яких вхідних даних.

Перелік посилань

Х. М. Дейтел, П. Дж. Дейтел, Как програмировать на С++. Введение в объектно-ориентированое програмирование с использованием UML. - Москва: Издательство БИНОМ, 2001. - 300 с.

Джефф Елджер, С++. - Москва: Библиотека програмиста, 2002. - 220 с.

В.П.Аверкин, А.И.Бобровский, Программирование на С++. - Москва: Библиотека программиста, 2001. - 252 с.

Н. С. Пискунов, Справочник по высшей математики, том 2. - Москва: Наука, 1976. - 520 с.

Р.Вайнер, Л.Пинсон, С++ изнутри. - Москва: Библиотека програмиста, 2003. - 290 с.

http://sources.ru/cpp/cpp_algoritms.shtml

http://softok.org/coding/c/4403prog.html

О.І. Черняк, О.М. Ткаченко, Методичні вказівки до виконання курсової роботи з дисципліни "Програмування" для студентів напрямів підготовки - "Комп'ютерна інженерія" та "Інформаційна безпека".Вінниця: ВНТУ, 2006 - 44с.

Додаток А

Програма, що виконує індивідуальне завдання

#include<stdio.h>

#include<dos.h>

#include<graphics.h>

#include<conio.h>

#include<string.h>

#include<math.h>

#include<stdlib.h>

float Vidst(float x1,float y1,float x2,float y2)

{

return (sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));

}

int min2(int a,int b)

{

if(a<b)

return a;

return b;

}

int max2(int a,int b)

{

if(a>b)

return a;

return b;

}

int min(int a,int b,int c,int d)

{int min1,min2;

if(a<b)

min1=a;

else min1=b;

if(c<d)

min2=c;

else min2=d;

if(min1<min2)

return min1;

else return min2;

}

int max(int a,int b,int c,int d)

{int max1,max2;

if(a>b)

max1=a;

else max1=b;

if(c>d)

max2=c;

else max2=d;

if(max1>max2)

return max1;

else return max2;

}

struct point

{

int x,y;

};

void copy(point *T1,point T2)

{

T1->x=T2.x;

T1->y=T2.y;

}

void set_point(point *g,int q,int w)

{

g->x=q;

g->y=w;

}

float SQR(point TA,point TB,point TC,point TD)

{

float a=Vidst(TA.x,TA.y,TB.x,TB.y);

float b=Vidst(TC.x,TC.y,TB.x,TB.y);

float c=Vidst(TA.x,TA.y,TD.x,TD.y);

float d=Vidst(TC.x,TC.y,TD.x,TD.y);

if((a*b)==(c*d))

return (a*b);

else

{

printf("NEVIRNI KOORDINATI");

return 0;

}

}

class pryamokut

{

public:

point A,B,C,D;

int grup;

int mit;

float S;

int minx,maxx,miny,maxy;

pryamokut(point,point,point,point);

pryamokut();

void draw();

void setdata(point,point,point,point);

};

pryamokut::pryamokut(point TA,point TB,point TC,point TD)

{

copy(&A,TA);

copy(&B,TB);

copy(&C,TC);

copy(&D,TD);

grup=0;

mit=0;

S=SQR(TA,TB,TC,TD);

minx=min(A.x,B.x,C.x,D.x);

maxx=max(A.x,B.x,C.x,D.x);

miny=min(A.y,B.y,C.y,D.y);

maxy=max(A.y,B.y,C.y,D.y);

}

void pryamokut::setdata(point TA,point TB,point TC,point TD)

{

copy(&A,TA);

copy(&B,TB);

copy(&C,TC);

copy(&D,TD);

grup=0;

mit=0;

S=SQR(TA,TB,TC,TD);

minx=min(A.x,B.x,C.x,D.x);

maxx=max(A.x,B.x,C.x,D.x);

miny=min(A.y,B.y,C.y,D.y);

maxy=max(A.y,B.y,C.y,D.y);

}

pryamokut::pryamokut()

{

point T;

T.x=0;

T.y=0;

copy(&A,T);

copy(&B,T);

copy(&C,T);

copy(&D,T);

S=0;

grup=0;

mit=0;

}

void pryamokut::draw()

{

line(A.x,A.y,D.x,D.y);

line(A.x,A.y,B.x,B.y);

line(C.x,C.y,B.x,B.y);

line(C.x,C.y,D.x,D.y);

}

int Vklad(pryamokut *P1,pryamokut *P2)

{

int minX=min2(P1->minx,P2->minx);

int maxX=max2(P1->maxx,P2->maxx);

int minY=min2(P1->miny,P2->miny);

int maxY=max2(P1->maxy,P2->maxy);

if(((minX==P1->minx)&&(minY==P1->miny)&&(maxX==P1->maxx)&&(maxY==P1->maxy))||((minX==P2->minx)&&(minY==P2->miny)&&(maxX==P2->maxx)&&(maxY==P2->maxy)))

return 1;

return 0;

}

point Diagon(pryamokut A)

{

float a1,c1,a2,c2,b1=-1,b2=-1,X,Y;

if(A.A.x!=A.C.x)

{

a1=(A.C.y-A.A.y)/(A.C.x-A.A.x);

c1=A.A.y-a1*A.A.x;

}

if(A.B.x!=A.D.x)

{

a2=(A.D.y-A.B.y)/(A.D.x-A.B.x);

c2=A.D.y-a2*A.D.x;

}

if((a1*b2-a2*b1)!=0)

{

X=(b1*c2-c1*b2)/(a1*b2-a2*b1);

Y=(a2*c1-a1*c2)/(a1*b2-a2*b1);

}

line(A.A.x,A.A.y,A.C.x,A.C.y);

line(A.B.x,A.B.y,A.D.x,A.D.y);

point Point;

Point.x=X;

Point.y=Y;

return Point;

}

void Diag(pryamokut A,pryamokut B)

{

point W1,W2;

copy(&W1,Diagon(A));

copy(&W2,Diagon(B));

setcolor(14);

line(W1.x,W1.y,W2.x,W2.y);

}

int main()

{

char s,str[100];

int q=0;

int gdriver = DETECT, gmode, errorcode;

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

point a,b,c,d;

FILE *f1;

if((f1=fopen("Data.txt","r+"))==NULL)

printf("ERROR");

while((s=(getc(f1)))!=EOF)

{

if(s=='=') q++;

}

q=q/8;

pryamokut *P=new pryamokut[q];

rewind(f1);

point I,J,K,L;

for(int i=0;i<q;i++)

{

fscanf(f1,"%s%s%d%s%d%s%d%s%d%s%d%s%d%s%d%s%d%s",str,str,&I.x,str,&I.y,str,&J.x,str,&J.y,str,&K.x,str,&K.y,str,&L.x,str,&L.y,str);

(P+i)->setdata(I,J,K,L);

(P+i)->draw();

}

P->grup=1;

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

for(int j=0;j<q;j++)

for(int n=1;n<q;n++)

if((P+i)->grup==n)

if((P+j)->mit==0)

if(i!=j)

{

if(Vklad(&P[i],&P[j])==1)

{

P[j].grup=n;

P[j].mit=1;

}

else P[j].grup=n+1;

}

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

for(int j=0;j<q;j++)

if(i!=j)

if((P+i)->grup==(P+j)->grup)

if(Vklad(&P[i],&P[j])==0)

P[j].mit=0;

int *kilk=new int[q];

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

kilk[i]=0;

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

for(int n=0;n<q;n++)

if((P+i)->grup==n)

if((P+i)->mit==1)

{

kilk[n]=kilk[n]+1;

}

int maxg=1,ming=1;

int max=kilk[1];

int min=kilk[1];

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

for(int n=0;n<q;n++)

if(kilk[n]>1)

{

if(kilk[n]>max)

{

max=kilk[n];

maxg=n;

}

else if(kilk[n]<min)

{

min=kilk[n];

ming=n;

}

}

getch();

float maxs,mins;

int minz,maxz;

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

{

if((P+i)->grup==maxg)

{

setcolor(4);

maxs=(P+i)->S;

maxz=i;

(P+i)->draw();

}

else if((P+i)->grup==ming)

{

setcolor(3);

mins=(P+i)->S;

minz=i;

(P+i)->draw();

}

}

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

{

if(P[i].grup==maxg)

{

if(P[i].S>maxs)

{

maxs=P[i].S;

maxz=i;

}

}

else

if(P[i].grup==ming)

{

if(mins>P[i].S)

{

mins=P[i].S;

minz=i;

}

}

}

getch();

setcolor(5);

P[maxz].draw();

P[minz].draw();

getch();

setcolor(11);

Diag(P[minz],P[maxz]);

getch();

closegraph();

return 0;

}

Додаток Б

Програма-меню

#include<stdio.h>

#include <conio.h>

#include <process.h>

#include <string.h>

#define LEFT 75

#define RIGHT 77

#define DOWN 13

class Knopka

{

int x1;

int y1;

int x2;

int y2;

char str[80];

public:

void setparam (int xx1 , int yy1, int xx2,int yy2,char *sstr) ;

void show(int tcolor, int bcolor);

virtual void run(void)=0;

};

class knopka1:public Knopka

{

public:

void run(void);

};

class knopka2:public Knopka

{

public:

void run(void) ;

};

class knopka3 : public Knopka

{

public:

void run (void) ;

};

class knopka4: public Knopka

{

public:

void run(void);

};

class knopka5: public Knopka

{

public:

void run(void) ;

};

class Menu

{

knopka1 kn1;

knopka2 kn2;

knopka3 kn3;

knopka4 kn4;

knopka5 kn5;

Knopka *maskn[5];

int x;

int y;

int nomAct;

int actTextCol;

int actBgCol;

int pasTextCol;

int pasBgCol;

void show(void);

void onLeft(void) ;

void onRight(void) ;

void onDown(void) ;

public:

Menu(int xx,int yy);

void getmessage(int msg);

};

void main()

{

textbackground(0);

clrscr();

Menu mnu(10,1);

while(1)

mnu.getmessage(getch());

}

void Knopka::setparam(int xx1,int yy1,int xx2,int yy2,char *sstr)

{

x1=xx1;

y1=yy1;

x2=xx2;

y2=yy2;

strcpy(str,sstr);

};

void Knopka::show(int tcolor,int bcolor)

{

textcolor(tcolor);

textbackground(bcolor);

window(x1,y1,x2,y2);

clrscr();

gotoxy (1,1);

printf("%s",str);

}

void knopka1::run(void)

{

char str[80],b1 ;

int kstr=1;

FILE* fin=fopen("about.txt","r") ;

textcolor(15);

textbackground(1) ;

window(2,7,78,22) ;

clrscr() ;

while(feof(fin)==0)

{

fscanf(fin,"%c",&b1);

if(b1=='\n')

kstr++;

}

rewind(fin);

for(int i=0;i<kstr;i++)

{

fgets(str,80,fin) ;

gotoxy(40-0.5*strlen(str),1+i*2);

cputs(str);

}

textbackground(0) ;

getch() ;

clrscr() ;

}

void knopka2::run(void)

{

spawnl (P_WAIT,"notepad.exe","notepad","Data.txt",NULL) ;

}

void knopka3::run(void)

{

char adress[40]="C:\\bc31\\bin\\bc.exe";

FILE *adrf=fopen("BCadress.txt","r");

if(adrf!=NULL)

fgets(adress,40,adrf);

fclose(adrf);

spawnl (P_WAIT,adress,"",

"kur.cpp", NULL) ;

}

void knopka4::run(void)

{

spawnl(P_WAIT,"kur.exe",NULL);

}

void knopka5::run (void)

{

exit(0);

}

void Menu::onLeft(void)

{

nomAct=(nomAct==0)?4:(nomAct-=1);

}

void Menu::onRight(void)

{

nomAct=(nomAct==4) ?0 : (nomAct+=1);

}

void Menu::onDown(void)

{

maskn[nomAct]->run() ;

}

void Menu::show(void)

{

_setcursortype(_NOCURSOR) ;

for(int i=0;i<5;i++)

if (i==nomAct)

maskn[i]->show (actTextCol, actBgCol) ;

else

maskn [i]->show (pasTextCol, pasBgCol) ;

}

void Menu :: getmessage ( int msg)

{

switch(msg)

{

case LEFT:

onLeft() ;

show() ;

break;

case RIGHT:

onRight() ;

show() ;

break;

case DOWN:

onDown() ;

show();

}

}

Menu::Menu(int xx,int yy)

{

x=xx;

y=yy;

nomAct=0;

maskn[0]=&kn1;

maskn [1]=&kn2;

maskn[2]=&kn3;

maskn [3]=&kn4;

maskn[4]=&kn5;

actTextCol=15;

actBgCol=1;

pasTextCol=0;

pasBgCol=2;

FILE* fin=fopen("menus.txt","r") ;

char str[80];

for (int i=0;i<5;i++)

{

fgets(str,80,fin) ;

maskn[i]->setparam(x,y,x+strlen(str)-2,y,str);

x=x+strlen(str);

}

fclose(fin);

show() ;

}

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Особливості редагування за допомогою текстового редактора NotePad вхідного файлу. C++ як універсальна мова програмування, знайомство с функціями. Характеристика графічних засобів мови С. Аналіз основних понять об’єктно-орієнтованого програмування.

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

  • Розробка програми для тренування швидкого десяти пальцевого набору тексту на клавіатурі за допомогою класів, які будуть містити в собі параметри об’єктів та їх методи. Аналіз об'єкту програмування. Основні принципи об'єктно-орієнтованого програмування.

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

  • Розроблення додатка за допомогою об'єктно-орієнтованого візуального проектування Delphi для виконання арифметичних операцій або з використанням меню. Створення інтерфейсу користувача з використанням компонентів SYSTEM і WIN32. Обробка двовимірного масиву.

    методичка [326,1 K], добавлен 13.01.2010

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