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

Український Державній Університет Водного господарства і природо
користування

Кафедра електротехніки і автоматики

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

з дисципліни “Програмування і алгоритмічні мови”

на тему: ” Розробка програми для відображення динамічної мнемосхеми
насосної станції підкачки.”

Виконав:

студент 1-го курсу

ФПМ і КІС

АУТП 12

Кузьмич С.В.

Перевірив:

Пастушенко В.Й.

Рівне 2002

Завдання

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

Зміст

Вступ………………………………………………………….
…………………………………………………………3

Задача
………………………………………………………………
……………………………………………4

Текст
програми……………………………………………………….
…………………………………5

Приклад………………………………………………………..
…………………………………………………..14

Висновок……………………………………………………….
………………………………………………….15

Література……………………………………………………..
…………………………………………………16

Вступ

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

Задача .

Скласти на одній з алгоритмічних мов програму,яка б відображувала
графічно динамічну мнемосхему насосної станції підкачки (мал.1) і
працювала з різними даними.

мал.1

Текст програми.

//————-Оголошення бiблiотек———————————

#include

#include

#include

#include

#include

#define PIXEL_COUNT 10000

#define DELAY_TIME 0

//————-Пiдпрограма,для побудови схеми————————

void sxema(void)

{ int gdriver=DETECT,gmode,errorcode;

initgraph(&gdriver,&gmode,»c:\\bcpp\\bgi»);

errorcode=graphresult();

if(errorcode !=grOk)

{

printf(«Помилка графiчного режиму
типу:%s\n»,grapherrormsg(errorcode));

printf(«Натиснiть будь-яку клавiшу для виходу»);

getch();

exit(1);

}

setcolor(2); //Задання кольору

rectangle(0,360,350,390); //будуе прямокутник

rectangle(0,390,350,430);

setfillstyle(7,6); //стиль заповнення

floodfill(141,361,2); //координати простору,який потрiбно
заповнити

setfillstyle(1,1);

floodfill(141,391,2);

setcolor(2);

line(410,390,630,390); //будуе лiнiю

line(410,200,410,390);

line(410,200,406,210);

line(410,200,414,210);

line(620,386,630,390);

line(620,394,630,390);

setcolor(10);

outtextxy(470,35,»Графiк»); //виводить на екран текст

setcolor(15);

line(425,70,435,70);

outtextxy(440,67,»H1(перший насос)»);

setcolor(3);

rectangle(410,65,420,75);

setfillstyle(1,3);floodfill(411,70,3);

setcolor(15);

line(425,90,435,90);

outtextxy(440,87,»H2(другий насос)»);

setcolor(4);

rectangle(410,85,420,95);

setfillstyle(1,4);floodfill(411,90,4);

setcolor(15);

line(425,110,435,110);

outtextxy(440,107,»H3(третiй насос)»);

setcolor(5);

rectangle(410,105,420,115);

setfillstyle(1,5);floodfill(411,110,5);

setcolor(15);

line(425,130,435,130);

outtextxy(440,127,»H4(четвертий насос)»);

setcolor(6);

rectangle(410,125,420,135);

setfillstyle(1,6);floodfill(411,130,6);

setcolor(10);

outtextxy(70,65,»Схема насосноi станцii»);

setcolor(12);

outtextxy(390,200,»V»);

outtextxy(625,375,»t»);

//————Шкала—————————————————-

line(408,355,412,355);

outtextxy(380,350,»100″);

line(408,322,412,322);

outtextxy(380,315,»200″);

line(408,289,412,289);

outtextxy(380,285,»300″);

line(408,256,412,256);

outtextxy(380,251,»400″);

//—————<1>НАСОС———————————————

setcolor(6);

outtextxy(50,200,»M1″);

outtextxy(50,250,»H1″);

setcolor(2);

line(30,85,30,110);

line(25,110,35,110);

line(25,110,35,130);

line(35,110,25,130);

line(25,130,35,130);

line(30,130,30,150);

line(25,150,35,150);

line(25,150,35,170);

line(35,150,25,170);

line(25,170,35,170);

НАСОС———————————————

setcolor(6);

outtextxy(130,200,»M2″);

outtextxy(130,250,»H2″);

setcolor(2);

line(110,85,110,110);

line(105,110,115,110);

line(105,110,115,130);

line(115,110,105,130);

line(105,130,115,130);

line(110,130,110,150);

line(105,150,115,150);

line(115,150,105,170);

line(105,150,115,170);

line(105,170,115,170);

line(110,170,110,230);

line(120,233,126,227);

line(123,236,130,229);

circle(133,222,8);

circle(110,245,15);

line(110,260,110,290);

line(104,290,116,290);

НАСОС———————————————

setcolor(6);

outtextxy(210,200,»M3″);

outtextxy(210,250,»H3″);

setcolor(2);

line(190,85,190,110);

line(185,110,195,110);

line(185,110,195,130);

line(195,110,185,130);

line(185,130,195,130);

line(190,130,190,150);

line(185,150,195,150);

line(195,150,185,170);

line(185,150,195,170);

line(185,170,195,170);

line(190,170,190,230);

line(200,233,206,227);

line(203,236,210,229);

circle(213,222,8);

circle(190,245,15);

line(190,260,190,290);

line(184,290,196,290);

НАСОС———————————————

setcolor(6);

outtextxy(290,200,»M4″);

outtextxy(290,250,»H4″);

setcolor(2);

line(270,85,270,110);

line(265,110,275,110);

line(265,110,275,130);

line(275,110,265,130);

line(265,130,275,130);

line(270,130,270,150);

line(265,150,275,150);

line(275,150,265,170);

line(265,150,275,170);

line(265,170,275,170);

line(270,170,270,230);

line(280,233,286,227);

line(283,236,290,229);

circle(293,222,8);

circle(270,245,15);

line(270,260,270,290);

line(264,290,276,290);

стиль лiнii

line(30,85,330,85);

setfillstyle(1,2);floodfill(30,169,2);

setfillstyle(1,2);floodfill(110,169,2);

setfillstyle(1,2);floodfill(190,169,2);

setfillstyle(1,2);floodfill(270,169,2);

}

void Men(void);

void *er;

int ze;

//————Пiдпрограма для автоматичного
режиму——————————

float avtomat(void)

{ int i,j,k,l;

float N1,N2,N3,N4;

int gdriver=DETECT,gmode,errorcode;

initgraph(&gdriver,&gmode,»c:\\bcpp\\bgi»);

errorcode=graphresult();

if(errorcode !=grOk)

{

printf(«Помилка графiчного режиму
типу:%s\n»,grapherrormsg(errorcode));

printf(«Натиснiть будь-яку клавiшу для виходу»);

getch();

exit(1);

}

N1=90; //Присвоюемо змiнним значення

N2=185;

N3=278;

N4=392;

sxema();

//Закрашуе коло червоним кольором(включаються 1 i 3 насоси).

setfillstyle(1,4);floodfill(30,245,2);

setfillstyle(1,4);floodfill(190,245,2);

//Цикл,який будуе на графiку лiнiю 1-го насоса

for(i=389;i>389-N1/3;i—)

{setcolor(3);

line(420,i,432,i);

delay(100); //Затримка

}

//Цикл,який будуе на графiку лiнiю 3-го насоса

for(j=389;j>389-N3/3;j—)

{setcolor(5);

line(432,j,444,j);delay(100);

}

//Закрашуе коло чорним кольором(виключаються 1 i 3 насоси).

setfillstyle(1,0);floodfill(30,245,2);

setfillstyle(1,0);floodfill(190,245,2);

delay(100);

//Закрашуе коло червоним кольором(включаються 2 i 4 насоси).

setfillstyle(1,4);floodfill(110,245,2);

setfillstyle(1,4);floodfill(270,245,2);

//Цикл,який будуе на графiку лiнiю 2-го насоса

for(j=389;j>389-N2/3;j—)

{setcolor(4);

line(444,j,456,j);delay(100);

}

//Цикл,який будуе на графiку лiнiю 4-го насоса

for(j=389;j>389-N4/3;j—)

{setcolor(6);

line(456,j,468,j);delay(100);

}

//Закрашуе коло чорним кольором(виключаються 2 i 4 насоси).

setfillstyle(1,0);floodfill(110,245,2);

setfillstyle(1,0);floodfill(270,245,2);

delay(100);

//Закрашуе коло червоним кольором(включаються 1 i 4 насоси).

setfillstyle(1,4);floodfill(30,245,2);

setfillstyle(1,4);floodfill(270,245,2);

for(i=389;i>389-N1/3;i—)

{setcolor(3);

line(468,i,480,i);delay(100);

}

for(j=389;j>389-N4/3;j—)

{setcolor(6);

line(480,j,492,j);delay(100);

}

//Закрашуе коло чорним кольором(виключаються 1 i 4 насоси).

setfillstyle(1,0);floodfill(30,245,2);

setfillstyle(1,0);floodfill(270,245,2);

delay(100);

//Закрашуе коло червоним кольором(включаються 2 i 3 насоси).

setfillstyle(1,4);floodfill(110,245,2);

setfillstyle(1,4);floodfill(190,245,2);

for(j=389;j>389-N2/3;j—)

{setcolor(4);

line(492,j,504,j);delay(100);

}

for(j=389;j>389-N3/3;j—)

{setcolor(5);

line(504,j,516,j);delay(100);

}

//Закрашуе коло чорним кольором(виключаються 2 i 3 насоси).

setfillstyle(1,0);floodfill(110,245,2);

setfillstyle(1,0);floodfill(190,245,2);

delay(100);

//Закрашуе коло червоним кольором(включаються 1 i 2 насоси).

setfillstyle(1,4);floodfill(30,245,2);

setfillstyle(1,4);floodfill(110,245,2);

for(i=389;i>389-N1/3;i—)

{setcolor(3);

line(516,i,528,i);delay(100);

}

for(j=389;j>389-N2/3;j—)

{setcolor(4);

line(528,j,540,j);delay(100);

}

//Закрашуе коло чорним кольором(виключаються 1 i 2 насоси).

setfillstyle(1,0);floodfill(30,245,2);

setfillstyle(1,0);floodfill(110,245,2);

delay(100);

//Закрашуе коло червоним кольором(включаються 3 i 4 насоси).

setfillstyle(1,4);floodfill(190,245,2);

setfillstyle(1,4);floodfill(270,245,2);

for(j=389;j>389-N3/3;j—)

{setcolor(5);

line(540,j,552,j);delay(100);

}

for(j=389;j>389-N4/3;j—)

{setcolor(6);

line(552,j,564,j);delay(100);

}

//Закрашуе коло чорним кольором(виключаються 3 i 4 насоси).

setfillstyle(1,0);floodfill(190,245,2);

setfillstyle(1,0);floodfill(270,245,2);

getch();

return(0);

}

//————Пiдпрограма для ручного
режиму——————————

float ruchnuy_regum(void)

{ int i,j,k,l;

float N1,N2,N3,N4,voda;

int gdriver=DETECT,gmode,errorcode;

initgraph(&gdriver,&gmode,»c:\\bcpp\\bgi»);

errorcode=graphresult();

if(errorcode !=grOk)

{

printf(«Помилка графiчного режиму
типу:%s\n»,grapherrormsg(errorcode));

printf(«Натиснiть будь-яку клавiшу для виходу»);

getch();

exit(1);

}

restorecrtmode(); //вихiд з графiчного режиму

printf(«\n Введiть кiлькiсть кубiчних метрiв води,»); //виводить на
екран текст

printf(«\n яку будуть викачувати насоси при включеннi:»);

H1:

printf(«\n H1(max:100)=»);

scanf(«%f»,&N1);

if(N1>100)goto H1; //Умова,при якiй потрiбно буде ввести нове значення

//printf(«\n Буде велике навантаження на насос»);

else

{H2: printf(» H2(max:200)=»);

scanf(«%f»,&N2);}

if(N2>200)goto H2;

else

{H3: printf(» H3(max:300)=»);

scanf(«%f»,&N3);}

if(N3>300)goto H3;

else

{H4: printf(» H4(max:400)=»);

scanf(«%f»,&N4);}

if(N4>400)goto H4;

voda=(N1+N2+N3+N4)*3;

printf(«\n Буде викачано %.f кубiчних метрiв»,voda);

getch();

clrscr();

setgraphmode(getgraphmode());//вихiд в графiчний режим

sxema();

setfillstyle(1,4);floodfill(30,245,2);

setfillstyle(1,4);floodfill(190,245,2);

for(i=389;i>389-N1/3;i—)

{setcolor(3);

line(420,i,432,i);delay(100);

}

for(j=389;j>389-N3/3;j—)

{setcolor(5);

line(432,j,444,j);delay(100);

}

setfillstyle(1,0);floodfill(30,245,2);

setfillstyle(1,0);floodfill(190,245,2);

delay(100);

setfillstyle(1,4);floodfill(110,245,2);

setfillstyle(1,4);floodfill(270,245,2);

for(j=389;j>389-N2/3;j—)

{setcolor(4);

line(444,j,456,j);delay(100);

}

for(j=389;j>389-N4/3;j—)

{setcolor(6);

line(456,j,468,j);delay(100);

}

setfillstyle(1,0);floodfill(110,245,2);

setfillstyle(1,0);floodfill(270,245,2);

delay(100);

setfillstyle(1,4);floodfill(30,245,2);

setfillstyle(1,4);floodfill(270,245,2);

for(i=389;i>389-N1/3;i—)

{setcolor(3);

line(468,i,480,i);delay(100);

}

for(j=389;j>389-N4/3;j—)

{setcolor(6);

line(480,j,492,j);delay(100);

}

setfillstyle(1,0);floodfill(30,245,2);

setfillstyle(1,0);floodfill(270,245,2);

delay(100);

setfillstyle(1,4);floodfill(110,245,2);

setfillstyle(1,4);floodfill(190,245,2);

for(j=389;j>389-N2/3;j—)

{setcolor(4);

line(492,j,504,j);delay(100);

}

for(j=389;j>389-N3/3;j—)

{setcolor(5);

line(504,j,516,j);delay(100);

}

setfillstyle(1,0);floodfill(110,245,2);

setfillstyle(1,0);floodfill(190,245,2);

delay(100);

setfillstyle(1,4);floodfill(30,245,2);

setfillstyle(1,4);floodfill(110,245,2);

for(i=389;i>389-N1/3;i—)

{setcolor(3);

line(516,i,528,i);delay(100);

}

for(j=389;j>389-N2/3;j—)

{setcolor(4);

line(528,j,540,j);delay(100);

}

setfillstyle(1,0);floodfill(30,245,2);

setfillstyle(1,0);floodfill(110,245,2);

delay(100);

setfillstyle(1,4);floodfill(190,245,2);

setfillstyle(1,4);floodfill(270,245,2);

for(j=389;j>389-N3/3;j—)

{setcolor(5);

line(540,j,552,j);delay(100);

}

for(j=389;j>389-N4/3;j—)

{setcolor(6);

line(552,j,564,j);delay(100);

}

setfillstyle(1,0);floodfill(190,245,2);

setfillstyle(1,0);floodfill(270,245,2);

getch();

return???

//———Головна програма———————————————

void main(void)

{ int STEP=85;

char c;

int X,y,q=1;

int gdriver=DETECT,gmode,errorcode;

initgraph(&gdriver,&gmode,»c:\\bcpp\\bgi»);

errorcode=graphresult();

if(errorcode !=grOk)

{

printf(«Помилка графiчного режиму
типу:%s\n»,grapherrormsg(errorcode));

printf(«Натиснiть будь-яку клавiшу для виходу»);

getch();

exit(1);

}

//————-Створення меню—————————————

meny:

q=1;

Men();

X=160;

y=90;

setfillstyle(1,8);

setcolor(10);

rectangle(220,100,370,130);floodfill(222,110,10);

rectangle(220,185,370,215);floodfill(222,192,10);

rectangle(220,270,370,300);floodfill(222,290,10);

outtextxy(224, 114, «Автоматичний режим»);

outtextxy(248,197,»Ручний режим»);

outtextxy(278,283,»Вихiд»);

do

{

//putimage(X+185,y-30,er,XOR_PUT);

putimage(X,y-30,er,XOR_PUT);

c=getch();

//putimage(X+185,-30,er,XOR_PUT);

putimage(X,y-30,er,XOR_PUT);

switch(c)

{

case 80: y+=STEP;q++;if(y==345){y=90 ;q=1;}break;

case 72: y-=STEP;q—;if(y==5){y=260;q=3;}break;

case 13:

//Якщо в меню буде вибраний третiй пункт,то здiйсниться вихiд з програми

if(q==3)

{closegraph();}

//Якщо в меню буде вибраний другий пункт,то вiдбудеться запуск
пiдпрограми

// з ручним режимом

if(q==2)

{ ruchnuy_regum();

clrscr();

setgraphmode(getgraphmode());

goto meny;

}

//Якщо в меню буде вибраний перший пункт,то вiдбудеться запуск
пiдпрограми

// з атоматичним режимом

if(q==1)

{avtomat();

clrscr();

setgraphmode(getgraphmode());

goto meny;

}}}

while(c!=27);

}

//——-Пiдпрограма,яка будуе хлопчика———————————

void Men(void )

{setcolor(14);

circle(100,100,8);

line(100,108,100,123);

line(94,111,100,117);

line(100,117,106,111);

line(100,123,94,130);

line(100,123,106,130);

line(97,98,97,98);

line(103,98,103,98);

line(100,100,100,102);

arc(100,105,180,0,1);

line(94,89,96,92);

line(104,92,106,89);

line(100,92,100,88);

setfillstyle(1,4);floodfill(102,102,14);

rectangle(90,99,92,101);

rectangle(108,99,110,101);

//setcolor(4);

//fillell???????????????????????????????????????????????????????????????
?????????????????

Приклад

Введіть кількість кубічних метрів води,яку будуть викачувати насоси при
включенні:

H1(max:100)=50

H2(max:200)=125

H3(max:300)=230

H4(max:400)=345

Висновок

Завдяки цій курсовій роботі я закріпив здобуті теоретичні знання з
курсу “Програмування та алгоритмічні мови”, навчився застосувати їх при
вирішенні питань виробничого характеру.

Література

1.Крис Паппас, Уїльям Мюррей, Програмирование на С и С++,“Ирина”,
BHV,Киев,2000.

2.Ганкин М.З. Комплексна автоматизація і АСУ ТП, М., “Агропромиздат”,

1991 р.

Ця курсова робота люб’язно надана HYPERLINK
«http://rivneclub.narod.ru/kontakt.html» Олександром Подранецьким

PAGE

PAGE

PAGE 17

Похожие записи