Методические указания для лабораторных работ по дисциплине: «Проектирование информационных систем», страница 2

#include<dos.h>

#include<io.h>

#include<fcntl.h>

//*********************************************************************//

void rama(int,int,int,int,char,char*);

void help(char c);

void clear_okno();

int go_menu(int,int,int);

//*********************************************************************//

// ОПИСАНИЕ ПЕРЕМЕННЫХ //

int y[15],x[15],kol=4,i,j,x1,y1,m=5;

int k_y=-1;

char *s[]={" ********** ",

" ********** ",

" ********** "

" ********** "};

//*********************************************************************//

void help()

{

char c; char ch;

textbackground(YELLOW);

rama(19,19,64,22,'  '," Подсказка ");

gotoxy(20,20); textcolor(11);

cprintf(" ESC - выход,Enter - выбор %c%c - перемещение",27,26);

}

//********************************************************************//

void rama(int x1,int y1,int x2,int y2,char ch, char *ms)

{                                              //Эта функция рисует

int kmsg=((x1+x2)/2)-strlen(ms)/2;            //окно и ставит заголовок.

window(1,1,80,25);                           //Параметры функции:

textbackground(8);                           //x1,x2,y1,y2-координаты.

textcolor(15);                               //ch-символы заполнения.

int k=0;                                     //(т.е. этими символами

gotoxy(x1,y1);                                 //заполняется все окно)

cprintf("╔");                              //ms-заголовок окна.

for(int i=x1+1;i<x2;i++)                      //

cprintf("═");                              //

gotoxy(kmsg,y1);                              //

cprintf("%s",ms);                          //

gotoxy(x2,y1);                                //

cprintf("╗");                              //

for(int j=y1+1;j<y2;j++)                      //

{                                            //

gotoxy(x1,j);                               //

cprintf("║");                              //

for(k=x1+1;k<x2;k++)                        //

{                                          //

textcolor(15);                           //

cprintf("%c",ch);                        //

}                                          //

textcolor(15);                             //

cprintf("║");                              //

}                                            //

gotoxy(x1,y2);                                //

cprintf("╚");                                //

for(i=x1+1;i<x2;i++)                          //

cprintf("═");                              //

gotoxy(x2,y2);                               //

cprintf("╝");                              //

window(x1+1,y1+1,x2-1,y2-1);

}

//*********************************************************************//

void clear_okno()

{

window(2,2,78,24);

textbackground(11);clrscr();

textbackground(3);

rama(1,1,80,24,'  ',"");

}

//*********************************************************************//

void procr(int x1,int y1,int kol)

{

_setcursortype(_NOCURSOR);

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

{

if (i==k_y)

{

textcolor(10);

cprintf("%s",s[i]); }

else

{

textcolor(6);

cprintf("%s",s[i]); }

}

return;

}

//*********************************************************************//

int go_menu(int x1, int y1, int kol)

{

int cc;

gotoxy(x1,y1+k_y-1);

gotoxy(x1,y1);

cc=getch();

if(cc==27) exit(1);

if(cc==13)

{

clear_okno();textbackground(0); textcolor(4);gotoxy(14,14);

cprintf("\n\n\nНажат ENTER!");

sleep(3); return 0;

}

cc=getch();

if(cc==0)

cc=getch();

switch(cc)

{

case 77:

if (k_y!=kol)

k_y=k_y+1;

else

k_y=0;

break;

case 75:

if(k_y!=0)

k_y=k_y-1;

else

k_y=kol;

break;

}

procr(x1,y1,kol);

go_menu(x1,y1,kol);

}

//*********************************************************************/