Зворотний зв'язок

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

Вступ

Для закріплення здобутих теоретичних знань, застосування їх при вирішенні питань виробничого характеру, а також з метою набуття навиків по створенню програмного забезпечення , виконується курсова робота з дисципліни “Програмування та алгоритмічні мови” . В курсовій роботі необхідно розробити програму на мові програмування 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);

line(30,170,30,230);

line(40,233,46,227);

line(43,236,50,229);

circle(53,222,8);

circle(30,245,15);

line(30,260,30,290);

line(24,290,36,290);

line(24,320,36,320);

line(24,290,36,320);

line(36,290,24,320);

line(30,320,30,360);

//---------------<2>НАСОС--------------------------------------------

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

line(104,320,116,320);

line(104,290,116,320);

line(116,290,104,320);

line(110,320,110,360);

//---------------<3>НАСОС--------------------------------------------

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

line(184,320,196,320);

line(184,290,196,320);

line(196,290,184,320);

line(190,320,190,360);//---------------<4>НАСОС--------------------------------------------

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

line(264,320,276,320);

line(264,290,276,320);

line(276,290,264,320);

line(270,320,270,360);

setlinestyle(0,0,3); //стиль л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(0);

}

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

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

//fillellipse(100,100,15,5);

ze=imagesize(50,50,150,150);

er=malloc(ze);

getimage(58,58,152,152,er);

putimage(58,58,er,XOR_PUT);

}

Приклад

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

H1(max:100)=50

H2(max:200)=125

H3(max:300)=230

H4(max:400)=345

Висновок

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

Література

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

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

1991 р.


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат