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

 

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

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

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

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








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

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

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

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

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

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

-39.П.72.01.00.000.ПЗ



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

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

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

Розробив

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

Лащенко І.І.


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

ВСТУП


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

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

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

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

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

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


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

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

При іншому підході до дослідження модельного світу, використовуючи комп'ютер, користувача може цікавити спостереження за зміною станів об'єктів у результаті їхніх взаємодій. Це вимагає досить цільного і загального представлення об'єкта в комп'ютері. Програмні компоненти, що реалізують відносини, у яких бере участь цей об'єкт, явно зв'язуються з ним. Для виконання такого підходу доводилося будувати програмні засоби, що моделюють процеси взаємодії об'єктів (модельного світу). Для традиційних засобів розробки це було досить трудомістким завданням. Проте, з'явилися мови програмування, спеціально орієнтовані на таке моделювання. але це лише частково спростило завдання розробки необхідних програм. Найбільш повно відповідає рішенню цього завдання об'єктний підхід до розробки програмних засобів. Його ідея полягає у систематичному використанні декомпозиції об'єктів при побудові структури ПЗ і текстів програм, що входять у нього. При цьому функції, які виконуються такими засобами, виражалися через відносини об'єктів різних рівнів, тобто їхня декомпозиція істотно залежала від декомпозиції об'єктів.++ - універсальна мова програмування, що дозволяє реалізувати обидва із описаних підходів до розробки програмних засобів. Вона дозволяє розробляти досить ефективні з точки зору виконання програми. Мову С++ було розроблено на основі мови програмування С. Крім можливостей, які дає С, С++ представляє свої гнучкі і ефективні засоби визначення нових типів, застосування яких значно полегшує та спрощує технологію програмування. У визначенні нового типу основна ідея - відокремлення несуттєвого від тих якостей, що істотні для правильного використання. Робота зі структурою даних і внутрішніми адміністративними підпрограмами здійснюється через спеціальний інтерфейс. Використовуючи визначення нових типів програміст може розділяти свою програму на простіші частини, які легше проконтролювати. Такий метод побудови програм часто називають абстракцією даних. Інформація про типи міститься в деяких обєктах типів, визначених користувачем. Програмування із застосуванням таких обєктів називають обєктно-орієнтованим [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:,y- змінні типу int.pryamokut:

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

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

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

Функції:Vidst(float x1,float y1,float x2,float y2)- знаходить відстань між двома точками.min2(int a,int b)min(int a,int b,int c,int d)max2(int a,int b)max(int a,int b,int c,int d)-функції, які знаходять найбільші і найменші числа.SQR(point TA,point TB,point TC,point TD)-функція, яка знаходить площу прямокутникаVklad(pryamokut *P1,pryamokut *P2)- перевіряє вкладеність прямокутниківDiagon(pryamokut A)- знаходить точку перетину діагоналей.Diag(pryamokut A,pryamokut B)- зєднує діагоналі.main() - головна функція програми [6].


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


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

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

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

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

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

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

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

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

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

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

Розглянемо класи, які використовуються при розробці програми меню.Knopka - базовий клас.x1; - поля даного класу типу int. Координати вікна кнопки та масив символів str відповідають надпису на кнопці. Усі змінні описані в private області.y1;x2;y2;str[80]; - поле типу char.:setparam (int xx1 , int yy1, int xx2,int yy2,char *sstr); - метод ініціалізації полів базового класу.show(int tcolor, int bcolor); - метод відображення кнопки з надписом на екрані.void run(void)=0; - чисто віртуальна функція касу, яка буде перевизначена у класах-нащадках, виконується при натисканні користувачем кнопки Enter для виконання певного пункту меню.knopka1:public Knopka - клас нащадок.:run(void); - перевизначена віртуальна функція, виводить дані про автора програми, які вона зчитує з файлу about.txt.knopka2:public Knopka - клас нащадок.:run(void) ; - перевизначена віртуальна функція, запускає програму notepad.exe для редагування файлу вхідних даних для програми виконання основного завдання DATA.TXT.knopka3:public Knopka - клас нащадок.:knopka4 : public Knopka - клас нащадок.:run (void); - перевизначена віртуальна функція, яка запускає програму bc.exe для редагування текстового (*.срр) файлу програми виконання основного завдання KUR.CPP.knopka5: public Knopka - клас нащадок.:run(void); - перевизначена віртуальна функція, яка використовується для запуску програми виконання основного завдання KUR.exe.knopka6: public Knopka - клас нащадок.:run(void) ; - перевизначена віртуальна функція, яка виконує вихід з програми меню.Menu - клас Меню.kn1; - обєкти класів-нащадків.kn2;kn3;kn4;kn5;kn6;*maskn[6] - вказівники на обєкти базового класу.x; - поля класу типу int.y;nomAct;actTextCol;actBgCol;pasTextCol;pasBgCol;show(void) - метод, який виводить на екран вікно заданих параметрів і виводить певний надпис.onLeft(void) - метод, який реагує на натискання користувачем клавіші ?onRight(void) - метод, який реагує на натискання користувачем клавіші ?

Функції призначені для зміни значення поля nomAct (тобто для зміни номера активного об'єкту).onDown(void) - метод, який реагує на натискання користувачем клавіші Enter. Виконує запуск віртуальної функції.:(int xx,int yy) - конструктор класу Меню. Ініціалізує поля класів, встановлює значення кольору тексту та тла для активної та пасивної кнопки та виводить на екран зображення меню за допомогою функції show().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, аналізує, обробляє її і виконує графічне відображення.

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


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


  1. Х. М. Дейтел, П. Дж. Дейтел, Как програмировать на С++. Введение в объектно-ориентированое програмирование с использованием UML. - Москва: Издательство БИНОМ, 2001. - 300 с.
  2. Джефф Елджер, С++. - Москва: Библиотека програмиста, 2002. - 220 с.
  3. В.П.Аверкин, А.И.Бобровский, Программирование на С++. - Москва: Библиотека программиста, 2001. - 252 с.
  4. Н. С. Пискунов, Справочник по высшей математики, том 2. - Москва: Наука, 1976. - 520 с.
  5. Р.Вайнер, Л.Пинсон, С++ изнутри. - Москва: Библиотека програмиста, 2003. - 290 с.

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

Додаток А


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


#include<stdio.h>

#include<dos.h>

#include<graphics.h>

#include<conio.h>

#include<string.h>

#include<math.h>

#include<stdlib.h>Vidst(float x1,float y1,float x2,float y2)

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

}min2(int a,int b)

{(a<b)a;b;

}max2(int a,int b)

{(a>b)a;b;

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

{int min1,min2;(a<b)=a;min1=b;(c<d)=c;min2=d;(min1<min2)min1;return min2;

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

{int max1,max2;(a>b)=a;max1=b;(c>d)=c;max2=d;(max1>max2)max1;return max2;

}point

{x,y;

};copy(point *T1,point T2)

{->x=T2.x;->y=T2.y;

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

{>x=q;>y=w;

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

{a=Vidst(TA.x,TA.y,TB.x,TB.y);b=Vidst(TC.x,TC.y,TB.x,TB.y);c=Vidst(TA.x,TA.y,TD.x,TD.y);d=Vidst(TC.x,TC.y,TD.x,TD.y);((a*b)==(c*d))(a*b);

{("NEVIRNI KOORDINATI");0;

}

}pryamokut

{:A,B,C,D;grup;mit;S;minx,maxx,miny,maxy;(point,point,point,point);();draw();setdata(point,point,point,point);

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

{(&A,TA);(&B,TB);(&C,TC);(&D,TD);=0;=0;=SQR(TA,TB,TC,TD);=min(A.x,B.x,C.x,D.x);=max(A.x,B.x,C.x,D.x);=min(A.y,B.y,C.y,D.y);=max(A.y,B.y,C.y,D.y);

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

{(&A,TA);(&B,TB);(&C,TC);(&D,TD);=0;=0;=SQR(TA,TB,TC,TD);=min(A.x,B.x,C.x,D.x);=max(A.x,B.x,C.x,D.x);=min(A.y,B.y,C.y,D.y);=max(A.y,B.y,C.y,D.y);

}::pryamokut()

{T;.x=0;.y=0;(&A,T);(&B,T);(&C,T);(&D,T);=0;=0;=0;

}

pryamokut::draw()

{(A.x,A.y,D.x,D.y);(A.x,A.y,B.x,B.y);(C.x,C.y,B.x,B.y);(C.x,C.y,D.x,D.y);

}Vklad(pryamokut *P1,pryamokut *P2)

{minX=min2(P1->minx,P2->minx);maxX=max2(P1->maxx,P2->maxx);minY=min2(P1->miny,P2->miny);maxY=max2(P1->maxy,P2->maxy);(((minX==P1->minx)&&(minY==P1->miny)&&(maxX==P1->maxx)&&(maxY==P1->maxy))||((minX==P2->minx)&&(minY==P2->miny)&&(maxX==P2->maxx)&&(maxY==P2->maxy)))1;0;

}Diagon(pryamokut A)

{a1,c1,a2,c2,b1=-1,b2=-1,X,Y;(A.A.x!=A.C.x)

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

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

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

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

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

}(A.A.x,A.A.y,A.C.x,A.C.y);(A.B.x,A.B.y,A.D.x,A.D.y);Point;.x=X;.y=Y;Point;

}Diag(pryamokut A,pryamokut B)

{W1,W2;(&W1,Diagon(A));(&W2,Diagon(B));(14);(W1.x,W1.y,W2.x,W2.y);

}main()

{s,str[100];q=0;gdriver = DETECT, gmode, errorcode;(&gdriver, &gmode, "");a,b,c,d;*f1;((f1=fopen("Data.txt","r+"))==NULL)("ERROR");((s=(getc(f1)))!=EOF)

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

}=q/8;*P=new pryamokut[q];(f1);I,J,K,L;(int i=0;i<q;i++)

{(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();

}>grup=1;(i=0;i<q;i++)(int j=0;j<q;j++)(int n=1;n<q;n++)((P+i)->grup==n)((P+j)->mit==0)(i!=j)

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

{[j].grup=n;[j].mit=1;

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

}(i=0;i<q;i++)(int j=0;j<q;j++)(i!=j)((P+i)->grup==(P+j)->grup)(Vklad(&P[i],&P[j])==0)[j].mit=0;*kilk=new int[q];(i=0;i<q;i++)[i]=0;(i=0;i<q;i++)(int n=0;n<q;n++)((P+i)->grup==n)((P+i)->mit==1)

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

}maxg=1,ming=1;max=kilk[1];min=kilk[1];(i=0;i<q;i++)(int n=0;n<q;n++)(kilk[n]>1)

{(kilk[n]>max)

{=kilk[n];=n;

}if(kilk[n]<min)

{=kilk[n];=n;

}

}();maxs,mins;minz,maxz;(i=0;i<q;i++)

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

{(4);=(P+i)->S;=i;

(P+i)->draw();

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

{(3);=(P+i)->S;=i;

(P+i)->draw();

}

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

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

{(P[i].S>maxs)

{=P[i].S;=i;

}

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

{(mins>P[i].S)

{=P[i].S;=i;

}

}

}();(5);[maxz].draw();[minz].draw();();(11);(P[minz],P[maxz]);();();0;

}


Додаток Б


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

#include<stdio.h>

#include <conio.h>

#include <process.h>

#include <string.h>

#define LEFT 75

#define RIGHT 77

#define DOWN 13Knopka

{x1;y1;x2;y2;str[80];:setparam (int xx1 , int yy1, int xx2,int yy2,char *sstr) ;show(int tcolor, int bcolor);void run(void)=0;

};knopka1:public Knopka

{:run(void);

};knopka2:public Knopka

{:run(void) ;

};knopka3 : public Knopka

{:run (void) ;

};knopka4: public Knopka

{:run(void);

};knopka5: public Knopka

{:run(void) ;

};Menu

{kn1;kn2;kn3;kn4;kn5;*maskn[5];x;y;nomAct;actTextCol;actBgCol;pasTextCol;pasBgCol;show(void);onLeft(void) ;onRight(void) ;onDown(void) ;:(int xx,int yy);getmessage(int msg);

};main()

{(0);();mnu(10,1);(1).getmessage(getch());

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

{=xx1;=yy1;=xx2;=yy2;(str,sstr);

};Knopka::show(int tcolor,int bcolor)

{(tcolor);(bcolor);(x1,y1,x2,y2);();(1,1);("%s",str);

}knopka1::run(void)

{str[80],b1 ;kstr=1;* fin=fopen("about.txt","r") ;(15);(1) ;(2,7,78,22) ;() ;(feof(fin)==0)

{(fin,"%c",&b1);(b1=='\n')++;

}(fin);(int i=0;i<kstr;i++)

{(str,80,fin) ;(40-0.5*strlen(str),1+i*2);(str);

}(0) ;() ;() ;

}knopka2::run(void)

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

}knopka3::run(void)

{adress[40]="C:\\bc31\\bin\\bc.exe";*adrf=fopen("BCadress.txt","r");(adrf!=NULL)(adress,40,adrf);(adrf);(P_WAIT,adress,"",

"kur.cpp", NULL) ;

}knopka4::run(void)

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

}knopka5::run (void)

{(0);

}Menu::onLeft(void)

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

}Menu::onRight(void)

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

}Menu::onDown(void)

{[nomAct]->run() ;

}Menu::show(void)

{

_setcursortype(_NOCURSOR) ;(int i=0;i<5;i++)(i==nomAct)[i]->show (actTextCol, actBgCol) ;[i]->show (pasTextCol, pasBgCol) ;

}Menu :: getmessage ( int msg)

{(msg)

{

LEFT:() ;() ;;RIGHT:() ;() ;;DOWN:() ;();

}

}::Menu(int xx,int yy)

{=xx;=yy;=0;[0]=&kn1;[1]=&kn2;[2]=&kn3;[3]=&kn4;[4]=&kn5;=15;=1;=0;=2;* fin=fopen("menus.txt","r") ;str[80];(int i=0;i<5;i++)

{(str,80,fin) ;[i]->setparam(x,y,x+strlen(str)-2,y,str);=x+strlen(str);

}(fin);() ;

}


Міністерство освіти і науки України Вінницький національний технічний університет Інститут інформаційних технологій і компютерної інженерії Кафедра обч

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ