Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kurs_prog_2 / MetodichkаCPP KR-2006.pdf
Скачиваний:
7
Добавлен:
17.05.2015
Размер:
451.34 Кб
Скачать

2.4. Зразок індивідуального завдання

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

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

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

ЗАТВЕРДЖУЮ Зав. кафедри ОТ, проф., д.т.н.

______________ О.Д. Азаров

(підпис)

”___” _________ 200_ р.

ІНДИВІДУАЛЬНЕ ЗАВДАННЯ на курсову роботу з дисципліни ”Програмування”

студенту _______________________________________________________

факультету_______________________ групи _________________________

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

1.Завдання №17

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

2.Постановка задачі

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

2.2.Розробити необхідні класи та об’єкти. Розробити функції та змінні класів.

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

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

21

2.5. З використанням механізму віртуальних функцій розробити програму для меню, за допомогою якого запускається програма, що виконує завдання.

3.Вихідні дані

3.1.Координати відрізків задати у текстовому файлі за допомогю текстового редактора. Формат запису координат повинен бути зручним для редагування, Наприклад:

Vidrizok1: x1=22; y1=130; x2=340; y2=14; Vidrizok2: x1=45; y1=39; x2=17; y2=200;

...

3.2.Кількість відрізків наперед невідома.

3.3.Програма для меню повинна мати команди, що виконують такі операції:

Виведення інформації про програму та автора;

Запуск текстового редактора notepad.exe з файлом вхідних даних;

Запуск середовища програмування з текстом програми основного завдання;

Запуск програми завдання;

Вихід з меню.

3.4.Дані про автора та назви команд програми для меню повинні знаходитись у різних текстових файлах.

Дата видачі ”____” __________________________________ 200_ р.

Керівник:

ст. викладач кафедри ОТ Черняк О.І. ___________________

(підпис)

Завдання отримав ____________________ ______________

(підпис) (ПІБ)

22

2.5.Зразок програми меню

Додаток Б (обов’язковий) Програма меню

#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

{

23

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(15,1); while(1)

mnu.getmessage(getch());

}

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

{

x1=xx1;

24

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] ;

FILE* fin=fopen("a:\\button.txt","r") ; textcolor(15);

textbackground(1) ; window(2,7,78,22) ; clrscr() ;

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

{

fgets(str,80,fin) ; gotoxy(1,1+i) ; cputs(str);

}

textbackground(0) ; getch() ;

clrscr() ;

}

void knopka2::run(void)

{

spawnl (P_WAIT,"c:\\windows\\notepad.exe","","a:\\dots.txt",NULL) ;

}

void knopka3::run(void)

{

25

spawnl (P_WAIT, "d:\\borlandc\\bin\\bc.exe","proga by AXE", "a:\\kursach.cpp", NULL) ;

}

void knopka4::run(void)

{

spawnl(P_WAIT,"a:\\kursach.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)

{

26

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("a:\\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() ;

}

Програма меню використовує файли menus.txt та button.txt. Файл button.txt містить текст про програму та автора. Файл menus.txt містить п’ять рядків тексту з назвами пунктів меню. Меню виводиться на екран у

27

текстовому режимі та має п’ять команд, що виконують такі дії:

1.Виведення інформації про програму та автора;

2.Запуск текстового редактора notepad.exe з файлом вхідних даних;

3.Запуск середовища програмування з текстом програми основного завдання;

4.Запуск програми основного завдання;

5.Вихід з меню.

28

Соседние файлы в папке kurs_prog_2