49565 (Дослідження зміни температури термопари за допомогою чисельних методів на ЕОМ), страница 3

2016-07-30СтудИзба

Описание файла

Документ из архива "Дослідження зміни температури термопари за допомогою чисельних методів на ЕОМ", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49565"

Текст 3 страницы из документа "49565"

Головне меню містить такі пункти:

- “Довідка”;

-“Тестування ”;

-„Результати”;

  • Вихід ”.

1. Пункт меню „ Довідка ” включає в себе такі пункти підменю:

  • Про автора ”, яке містить короткі відомості про автора програми;

  • Про програму ” - за допомогою якого ми можемо переглянути коротке описання програми.

2.Пункт меню „Тестування” включає в себе пункти підменю:

  • Тест 1” - за допомогою якого ми можемо протестувати дану програму за першим інтерполяційним многочленом Ньютона та Лагранжа;

  • Тест 2 ” - за допомогою якого ми можемо протестувати дану програму за другим інтерполяційним многочленом Ньютона та Лагранжа;

3.Пункт меню „Результати” включає в себе такі пункти підменю:

  • В файл ” - за допомогою якого ми можемо записати нові тестування у вказаний файл;

  • На екран ” – за допомогою якого ми можемо вивести на екран результати тестування;

  • На друк ” - за допомогою якого ми можемо вивести результати тестування на друк.

4. Пункт меню „Вихід” дає змогу користувачеві вийти з даної програми.

2.4 Схема алгоритму головної програми

Рисунок 2.4.1 Логічна схема керуючої програми

Рисунок 2.4.2 Логічна схема підменю „Довідка”

Рисунок 2.4.3 Логічна схема підменю „Тестування”

Рисунок 2.4.4 Логічна схема підменю „Результати”.

Рисунок 2.4.5 Логічна схема підменю „Вихід ”.

2.5 Опис основних функцій моделювання

Перелік функцій CALC.H:

double stepin(double x1,int f) – піднесення числа до степені f;

double faktorial(int k) – факторіал числа k;

double GetA(int i) – отримання множника а для першої інтерполяційної формули Ньютона;

double IntNuton1(double X1) – обчислення по першій інтерполяційній формулі Ньютона;

double GetВ(int i) – отримання множника а для другої інтерполяційної формули Ньютона;

double IntNuton2(double X1) – обчислення по другій інтерполяційній формулі Ньютона;

double IntLang(double X1) – обчислення по Лагранжу.

2.6 Структура комплексу програм для дослідження зміни температури термопари

Поскільки програма написана з використання модульного програмування, то розроблена программа складається з декількох модулів, розроблених самостійно.

Розбивання програми на модулі (бібліотеки) дозволяє згрупувати функції за певним їх призначенням, що призводить до зменшення помилок в програмі та легкого їх пошуку.

В даному випадку программа використовує функції п’ятьох стандартних модулів, та п’ятьох, розроблених самостійно. Список модулів приведений у таблиці 2.6.2.

Таблиця 2.6.2. Список бібліотек, які використовуються.

Назва модуля

Принадлежність

Опис

STDIO.H

Стандартна бібліотека

Функції вводу-виводу

CONIO.H

Стандартна бібліотека

Функції роботи з екраном(консолью)

IOSTREAM.H

Стандартна бібліотека

Потоки ввод-вивід

DOS.H

Стандартна бібліотека

Спеціальні функції

MATH.H

Стандартна бібліотека

Математичні функції

MENYS.H

Власна бібліотека

Головне меню програми.Бібліотека з меню та кнопками.

INTERP.CPP

Власна бібліотека

Основна програма.

DIALOGS.H

Власна бібліотека

Бібліотека з вікнами для вводу тексту.

CALC.H

Власна бібліотека

Бібліотека з функціями для роботи з обчисленням. Даний файл можна доробляти, редагувати в залежності від потреб користувача.

WIND.H

Власна бібліотека

Бібліотека малює вікна і панельки.

3 Лістинг програми

3.1 Лістинг головної програми INTERP.CPP

#include

#include "menys.h"

#include

#include

#include

#include

/////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////

void main(void)

{

grinit();

init();

while (1)

{

getcurcorpos();

if (kbhit())

if (getch()==0)

if (getch()==45)break;

};

closegraph();

}

3.2 Лістинг модуля MENYS.H

#include

#include

#include "wind.h"

#include "edits.h"

#include "calc.h"

#include

//---

// =0 если клавиши подняты

// =2 или на уровне панели

const Flat=2;

const coloron=10;

const coloroff=1;

const colordn=14;

const colorhead=1;

//----

int OnPMenu=0, MenN2=0;

float Tt=-1000, Ttn=-1000;// значення температури яку вводять

double FLTt,FNTt1,FNTt2;

char string[25],sd[25];

float E;

FILE *in;

const colorsel=10;

const colornotsel=1;

const ButtonColor=7;

const ButtonN=5;

const Meny1=2;

const Meny2=2;

const Meny3=3;

const Meny4=0;

const Meny5=0;

const Meny6=0;

const PMeny1=2;

const PMeny2=2;

int BoolMeny1=0;

int BoolMeny2=0;

int BoolMeny3=0;

int BoolMeny4=0;

int BoolMeny5=0;

int BoolMeny6=0;

int BoolPMeny1=0;

int BoolPMeny2=0;

void DoSome(int i);

void windows(int x,int y,int xx,int yy,int color,char s[100],int p);

class TButton

{

public:

TButton(); //Конструктор

~TButton(){}; //деструктор

virtual void Draw();

void setwidth(int x){width=x;};

void setheight(int x){height=x;};

void settop(int x){top=x;};

void setleft(int x){left=x;};

virtual void setonoff(int x){onoff=x;Draw();};

void setcol(int x){color=x;};

void setcapt(char *x){caption=x;};

int getwidth()const {return width;};

int getheight()const {return height;};

int gettop()const {return top;};

int getleft()const {return left;};

int getonoff()const {return onoff;};

int getcol()const {return color;};

const char* getcapt(){return caption;};

virtual void mousemove(int i);

virtual void setpos(int x,int y, char* capt,int i=0);

protected:

int width;

int height;

int top;

int left;

int onoff;

int color;

char *caption;

};

class TMeny:public TButton

{

public:

TMeny();

~TMeny(){};

virtual void Draw();

virtual void setonoff(int x)

{

onoff=x;

if (!onoff) color=colornotsel;

else color=colorsel;

Draw();

};

virtual void mousemove(int i);

virtual void setpos(int x,int y, char* capt,int i=0);

virtual void close(int p=0);

};

void DrowMenyAll(TMeny FirstMeny[],int FMeny, int p=0);

//////////////////////////////////////////////////////////////////////////////

//ОБЪЯВЛЕНИЕ ОБЪЕКТОВ

///////////////////////////////////////////////////////////////////////////////////////////

TButton button[ButtonN];

TMeny FMeny1[Meny1],FMeny2[Meny2],FMeny3[Meny3],

FPMeny2[PMeny2],FPMeny1[PMeny1];

//////////////////////////////////////////////////////////////////////////////////////////

void TMeny::close(int p)

{

if (!p)

{

setonoff(0);

mouseoff();

putimage(xy1-2,yy1-2, arrow, 0);

mouseon();

free(arrow);

}

else

{

setonoff(0);

mouseoff();

putimage(xy1p-2,yy1p-2, arrowp, 0);

mouseon();

free(arrowp);

}

}

void TMeny::mousemove(int i)

{

if (mousein(left,top,left+width,top+height))

{

if (!getbutton(1))

{ //Не нажата

if (!onoff) setonoff(1);

if ((BoolMeny2)&&(!OnPMenu))

switch (i)

{

case 0:

if (BoolPMeny2)

{

FPMeny2[0].close(1);

BoolPMeny2=0;

}

if (!BoolPMeny1)

{

DrowMenyAll(FPMeny1,PMeny1,1);

BoolPMeny1=1;

}

break;

case 1:

if (BoolPMeny1)

{

FPMeny1[0].close(1);

BoolPMeny1=0;

}

if (!BoolPMeny2)

{

DrowMenyAll(FPMeny2,PMeny2,1);

BoolPMeny2=1;

}

break;

}

}

else

{

if ((onoff)&&(!(MenN2)))

{

//Нажата

close(OnPMenu);

if (BoolPMeny1)

{

if (BoolMeny2) FMeny2[0].close();

DoSome(i+100);

}

else

if (BoolPMeny2)

{

if (BoolMeny2) FMeny2[0].close();

DoSome(i+110);

}

else

if (BoolMeny1) DoSome(i+20); else

if (BoolMeny2) DoSome(i+30);else

if (BoolMeny3) DoSome(i+40);else

if (BoolMeny4) DoSome(i+50);else

if (BoolMeny5) DoSome(i+60);else

if (BoolMeny6) DoSome(i+70);

BoolPMeny1=0;

BoolPMeny2=0;

BoolMeny1=0;

BoolMeny2=0;

BoolMeny3=0;

BoolMeny4=0;

BoolMeny5=0;

BoolMeny6=0;

}

}

}

else

if ((getbutton(1))&&(!OnPMenu)&&(!MenN2))

{

if (!mousein(xy1,yy1,xy2+6,yy2+yy1+4))

{

close(OnPMenu);

if (BoolPMeny1)

{

FPMeny1[0].close(1);

BoolPMeny1=0;

}

if (BoolPMeny2)

{

FPMeny2[0].close(1);

BoolPMeny2=0;

}

BoolMeny1=0;

BoolMeny2=0;

BoolMeny3=0;

BoolMeny4=0;

BoolMeny5=0;

BoolMeny6=0;

BoolPMeny1=0;

BoolPMeny2=0;

}

}

else if (onoff) setonoff(0);

}

void TMeny::setpos(int x,int y, char* capt,int i)

{

left=x;

top=y;

caption=capt;

if (i) Draw();

}

void TMeny::Draw()// Метод постройки кнопок------------

{

int i;

setfillstyle(1,7);

setlinestyle(0,0,0);

setcolor(color);

mouseoff();

bar(left,top,left+width,top+height);

moveto(5+left,5+top);

outtext(caption);

if (color==colornotsel) setcolor(7);

rectangle(left,top,left+width,top+height);

rectangle(left+2,top+2,left+width-2,top+height-2);

mouseon();

} // Метод постройки кнопок--------------------------------

TMeny::TMeny()

{

caption='\0';

width=180;

height=18;

top=0;

left=0;

color=colornotsel;

onoff=0;

}

void DrowMenyAll(TMeny FirstMeny[],int FMeny, int p)

{

if (!p)

{

xy1=FirstMeny[0].getleft()-4;

yy1=FirstMeny[0].gettop()-4;

xy2=FirstMeny[0].getleft()+FirstMeny[0].getwidth();

yy2=FirstMeny[FMeny-1].gettop()-FirstMeny[0].gettop()+FirstMeny[0].getheight()+8;

size = imagesize(xy1-2, yy1-2, xy2+6, yy1+yy2+4);

arrow = malloc(size);

mouseoff();

getimage(xy1-2, yy1-2, xy2+6, yy1+yy2+4, arrow);

int dx=(xy2-xy1+4)/5;

int dy=(yy2+2)/5;

for (int k=1;k<=5; k++)

{

windows(xy1,yy1,dx*k,dy*k,7,"",0);

delay(30);

}

mouseon();

windows(xy1,yy1,xy2-xy1+4,yy2+2,7,"",0);

windows(xy1+2,yy1+2,xy2-xy1,yy2-2,7,"",1);

for (int gg=0;gg

{

FirstMeny[gg].Draw();

}

}

else

{

xy1p=FirstMeny[0].getleft()-4;

yy1p=FirstMeny[0].gettop()-4;

xy2p=FirstMeny[0].getleft()+FirstMeny[0].getwidth();

yy2p=FirstMeny[FMeny-1].gettop()-FirstMeny[0].gettop()+FirstMeny[0].getheight()+8;

sizep = imagesize(xy1p-2, yy1p-2, xy2p+6, yy1p+yy2p+4);

arrowp = malloc(sizep);

mouseoff();

getimage(xy1p-2, yy1p-2, xy2p+6, yy1p+yy2p+4, arrowp);

int dx=(xy2p-xy1p+4)/5;

int dy=(yy2p+2)/5;

for (int k=1;k<=5; k++)

{

windows(xy1p,yy1p,dx*k,dy*k,7,"",0);

delay(30);

}

mouseon();

windows(xy1p,yy1p,xy2p-xy1p+4,yy2p+2,7,"",0);

windows(xy1p+2,yy1p+2,xy2p-xy1p,yy2p-2,7,"",1);

for (int gg=0;gg

{

FirstMeny[gg].Draw();

}

}

}

void mysound()

{

sound(1000);

delay(30);

nosound();

}

void messageabout()

{ mysound();

size=imagesize(199,99,200+241,241);

arrow=malloc(size);

getimage(199,99,200+241,241,arrow);

mouseon();

windows(200,100,240,140,7,"",0);

windows(202,102,236,15,colorhead,"Про програму",1);

setcolor(11);

mouseoff();

outtextxy(230,130," КУРСОВА РОБОТА ");

outtextxy(230,150," ");

outtextxy(230,170," iнтерполяцiя по");

outtextxy(230,190," Лагранжу i Ньютону ");

outtextxy(230,210,"");

mouseon();

while (getbutton(1));

while ((!getbutton(1))&&(!kbhit()));

mouseoff();

putimage(199,99,arrow,0);

mouseon();

free(arrow);

while (kbhit()) getch();

}

void messageaboutavt()

{ mysound();

size=imagesize(199,99,200+241,241);

arrow=malloc(size);

getimage(199,99,200+241,241,arrow);

mouseon();

windows(200,100,240,140,7,"",0);

windows(202,102,236,15,colorhead,"Про автора",1);

setcolor(11);

mouseoff();

outtextxy(230,130," КУРСОВА РОБОТА ");

outtextxy(230,150," Програму написав ");

outtextxy(230,170," ");

outtextxy(230,190," ст.гр.5AC-02 ");

outtextxy(230,210," Гега А.М.");

mouseon();

while (getbutton(1));

while ((!getbutton(1))&&(!kbhit()));

mouseoff();

putimage(199,99,arrow,0);

mouseon();

free(arrow);

while (kbhit()) getch();

}

void TButton::mousemove(int i)

{

if (mousein(left,top,left+width,top+height))

{

if (getbutton(1))

{

if (onoff!=1) setonoff(1);

}

else

if (onoff==1)

{

setonoff(0);

DoSome(i);

}

else

{

if (onoff!=Flat) setonoff(Flat);

}

}else if (onoff!=0) setonoff(0);

}

void TButton::setpos(int x,int y, char* capt,int i)

{

left=x;

top=y;

caption=capt;

Draw();

}

TButton::TButton()

{

caption='\0';

width=100;

height=18;

top=0;

left=0;

color=ButtonColor;

onoff=0;

}

void TButton::Draw()// Метод постройки кнопок------------

{

int i=onoff;

setfillstyle(1,color);

setlinestyle(0,0,0);

mouseoff();

bar(left,top,left+width,top+height);

setcolor(1);

switch (i)

{

case 0:setcolor(coloroff);break;

case 1:setcolor(colordn);break;

case 2:setcolor(coloron);break;

}

rectangle(left,top,left+width,top+height);

rectangle(left+2,top+2,left+width-2,top+height-2);

switch (i)

{

case 0:moveto(5+left,5+top);break;

case 1:moveto(6+left,6+top);break;

case 2:moveto(5+left,5+top);break;

}

if ((!Flat)&&(!i)) moveto(5+left,5+top);

outtext(caption);

mouseon();

} // Метод постройки кнопок--------------------------------

void grinit()//---Инициал графики----------------------------

{

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s\n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

mouseinit();

mouseon();

}//_void grinit()//-----------------------------------------------

void getcurcorpos()

{

int i;

if (BoolMeny1)

for (i=0; i

{

if (BoolMeny1)

FMeny1[i].mousemove(i);

}//===================================

MenN2=1;

if (BoolMeny2)

for (i=0; i

{

if (BoolMeny2)

FMeny2[i].mousemove(i);

}//====================================

MenN2=0;

if (BoolMeny3)

for (i=0; i

{

if (BoolMeny3)

FMeny3[i].mousemove(i);

}//====================================

OnPMenu=1;

if (BoolPMeny1)

for (i=0; i

{

if (BoolPMeny1)

FPMeny1[i].mousemove(i);

}//===================================

if (BoolPMeny2)

for (i=0; i

{

if (BoolPMeny2)

FPMeny2[i].mousemove(i);

}//====================================

OnPMenu=0;

for (i=0; i

{

button[i].mousemove(i);

}//=======================================

}

///////////////////////////////////////////////////////////////////

//----------------------------------------------------------------

//-----------------------------------------------------------------

void init()

{

mouseoff();

cleardevice();

mouseon();

windows(1,1,637,477,7,"",0);

// windows(1,25,637,27,7,"",0);

windows(3,50,630,406,7,"",1);

windows(3,3,633,20,colorhead,"Iнтерполяцiя по Лагранжу та Ньютону",1);

// windows(1+2,20+2,637-3,27-4,7,"",1);

windows(3,460,630,17,7,"",1);

button[0].setwidth(18);

button[0].setheight(18);

button[0].setpos(615,4,"X");

button[1].setpos(5,28," Довiдка");

button[2].setpos(110,28,"Тестування");

button[3].setpos(215,28,"Результати");

button[4].setpos(320,28," Вихiд");

int h;

for (h=0;h

FMeny1[h].setwidth(150);

FMeny1[0].setpos(10,53,"Про автора");

FMeny1[1].setpos(10,53+19,"Про програму");

for (h=0;h

FMeny2[h].setwidth(100);

FMeny2[0].setpos(115,53, "Тест 1 >");

FMeny2[1].setpos(115,53+19,"Тест 2 >");

for (h=0;h

FMeny3[h].setwidth(100);

FMeny3[0].setpos(220,53,"В файл");

FMeny3[1].setpos(220,53+19,"На екран");

FMeny3[2].setpos(220,53+19+19,"На друк");

for (h=0;h

FPMeny1[h].setwidth(100);

FPMeny1[0].setpos(227,57,"По Лагранжу");

FPMeny1[1].setpos(227,57+19,"По Ньютону");

for (h=0;h

FPMeny2[h].setwidth(100);

FPMeny2[0].setpos(227,57+19,"По Лагранжу");

FPMeny2[1].setpos(227,57+19+19,"По Ньютону");

}

///////////////////////////////////////////////////////////////////////

void DoSome(int i)

{

switch (i)

{

case 0:

closegraph();exit(1);

break;

case 1:

DrowMenyAll(FMeny1,Meny1,0);

BoolMeny1=1;

break;

case 2:

DrowMenyAll(FMeny2,Meny2,0);

BoolMeny2=1;

break;

case 3:DrowMenyAll(FMeny3,Meny3,0);

BoolMeny3=1;break;

case 4: closegraph();exit(0); break;

///////////////////////

case 20:messageaboutavt();break;

case 21:messageabout();;break;

case 22:;break;

case 23:;break;

////////////////////////

///////////////////////

case 30:;break;

case 31:break;

case 32:;break;

case 33:;break;

case 34:windows(3,50,630,406,7,"",1);break;

case 40:

/* int dy=30,dx=20;

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

{

putpixel(i+dx,dy*IntLang(i)+120,4);

putpixel(i+dx,dy*IntNuton1(i)+120,2);

putpixel(i+dx,dy*IntNuton2(i)+120,1);

if ((i%20)==0)

{

setcolor(4);

circle(i+dx,dy*IntLang(i)+120,2);

setcolor(2);

circle(i+dx,dy*IntNuton1(i)+120,2);

setcolor(1);

circle(i+dx,dy*IntNuton2(i)+120,2);

}

}

*/

edit1[0].setpos(200,200,"Введiть файл","");

EditEnter(edit1,FEdit1);

if (exittru==27) break;

if ((in = fopen(edit1[0].gettext(), "wt")) == NULL)

{

fprintf(stderr, "Cannot open input file.\n");

break;

}

fprintf(in,"Результати роботи\n");

if (Tt!=-1000)

{

fprintf(in," Iнтерполяцiя по Лагранжу\n");

fprintf(in,"T=%10.5f\n",Tt);

fprintf(in,"Q=%10.5f\n",FLTt);

E=fabs(FLTt/6006);

fprintf(in,"e=%10.5f\n",E);

}

if (Ttn!=-1000)

{

fprintf(in," Iнтерполяцiя по Ньютону\n");

fprintf(in,"T=%10.5f\n",Ttn);

fprintf(in,"Q=%10.5f\n",FNTt1);

E=fabs(FNTt1-IntLang(Ttn));

fprintf(in,"e=%10.5f\n",E);

}

fclose(in);

break;

case 41:

windows(3,50,630,406,7,"",1);

setcolor(4);

mouseoff();

outtextxy(240,80,"Результати роботи");

if (Tt!=-1000)

{

setcolor(1);

outtextxy(50,150," Iнтерполяцiя по Лагранжу");

sprintf(sd,"T=%10.5f",Tt);

outtextxy(40,170,sd);

sprintf(sd,"Q=%10.5f",FLTt);

outtextxy(40,190,sd);

E=fabs(FLTt/6006);

sprintf(sd,"e=%10.5f",E);

outtextxy(40,210,sd);

}

if (Ttn!=-1000)

{

setcolor(1);

outtextxy(50,250," Iнтерполяцiя по Ньютону");

sprintf(sd,"T=%10.5f",Ttn);

outtextxy(40,270,sd);

sprintf(sd,"Q=%10.5f",FNTt1);

outtextxy(40,290,sd);

E=fabs(FNTt1-IntLang(Ttn));

sprintf(sd,"e=%10.5f",E);

outtextxy(40,310,sd);

}

mouseon();

break;

case 42:

fprintf(stdprn,"Rezult\r\n");

if (Tt!=-1000)

{

fprintf(stdprn," Interpol LAGRANG\r\n");

fprintf(stdprn,"T=%10.5f\r\n",Tt);

fprintf(stdprn,"Q=%10.5f\r\n",FLTt);

E=fabs(FLTt/6006);

fprintf(stdprn,"e=%10.5f\r\n",E);

}

if (Ttn!=-1000)

{

fprintf(stdprn," Interpol NUTON\r\n");

fprintf(stdprn,"T=%10.5f\r\n",Ttn);

fprintf(stdprn,"Q=%10.5f\r\n",FNTt1);

E=fabs(FNTt1-IntLang(Ttn));

fprintf(stdprn,"e=%10.5f\r\n",E);

}

fprintf(stdprn, "\f");

break;

case 100:;

case 110:

edit1[0].setpos(200,200,"Введiть t (по Лагр.)","");

EditEnter(edit1,FEdit1);

if (exittru==27) break;

Tt=atof(edit1[0].gettext());

FLTt=IntLang(Tt);

//printf("\n f(%f)= %10.10f %10.10f %10.10f ",Tt,FLTt,FNTt1,FNTt2);

break;

case 101:;

case 111:

edit1[0].setpos(200,200,"Введiть t (по Ньютону)","");

EditEnter(edit1,FEdit1);

if (exittru==27) break;

Ttn=atof(edit1[0].gettext());

//FLTt=IntLang(Ttn);

if (Ttn<50)

FNTt1=IntNuton1(Ttn);

else

FNTt1=IntNuton2(Ttn);

//printf("\n f(%f)= %10.10f %10.10f %10.10f ",Tt,FLTt,FNTt1,FNTt2);

break;

///////////////////////

}

}

4 Розробка тестів та аналіз результату тестування

Для впевненості роботи програми проведемо її тестування. Але тестування необхідно виконувати в два основних етапи: тестування головної програми, тобто достовірність роботи головного меню програми, та власне і роботи самих пунктів меню, правильність роботи самих методів.

4.1 Опис тестів

При запуску програми (ехе-файл чи з середовища Туро Сі) з'являється головне меню програми (рисунок 4.2.1). Вибір необхідного пункту меню можна здійснювати за допомогою миші, вибраний пункт зразу ж підсвічується. Для його виконання достатньо нажати клавішу „Enter” чи клацнути два рази лівою клавішею мишки.

Тест 1: вихід з програми.

Активуємо пункт меню „Вихід”, за допомогою якого можна вийти з програми при натисненні кнопки миші.

Тест 2: тестування по Лагранжу.

Активуємо пункт меню „Тестування ” - „Тест 1 ” –“По Лагранжу”. З’являється вікно в якому вводимо значення температури для певного тестування.

Тест 3: тестування по Ньютону.

Активуємо пункт меню „Тестування” - „Тест 2 ”-–“По Ньютону”. З’являється вікно в якому вводимо значення температури для певного тестування.

Тест 4: запис результатів тестування в файл.

Для цього потрібно активувати пункт меню “Результати”-“В файл”. З’являється діалогове вікно в якому потрібно вказати назву файлу, в який безпосередньо буде виконуватись запис результатів тестування за відповідним методом.

Тест 5: вивід результатів тестування на екран.

Для цього потрібно активувати пункт меню “Результати”-“На екран”. На екрані зразу ж з’являються результати тестування за певним методом або обидва результати одночасно.

Тест 6: вивід результатів тестування на друк.

Це зробимо за допомогою кнопки меню “Результати”-“На друк”.Результати тестування виведуться на друк лише в тому випадку, якщо налаштований принтер.

Тест 7: отримання інформації про автора.

Активуємо пункт меню „Довідка”-„Про автора”. Активується діалогове вікно в якому описані короткі відомості про автора.

Тест 8: отримання інформації про програму.

Активуємо пункт меню „Довідка”-„Про програму”. Активується діалогове вікно в якому з’являється назва курсової роботи.

4.2 Аналіз результатів тестування


Рисунок 4.2.1. Головне меню програми

Тест 1. Відкрили пункт меню „Вихід” - „Вихід[Alt+X]” та вийшли з програми.

Тест 2. Активували пункт меню „Тестування ” - „Тест 1 ” –“По Лагранжу”. Вводимо по черзі в діалоговому вікні чисельне значення температури Т=270,320,550,750,670С.

Р исунок 4.2.2.Результати проведення тесту № 2

Тест 3. Активували пункт меню „Тестування” - „Тест 2 ”-–“По Ньютону”

Вводимо по черзі в діалоговому вікні чисельне значення температури Т=270,320,550,750,670С.


Рисунок 4.2.3. Результати проведення тесту № 3

Тест 4. Нехай потрібно записати результати тестування в файл „Інтерполяція”. Внесемо дану інформацію в діалогове вікно, яке зявиться на екрані.


Рисунок 4.2.4.Результати проведення тесту №4

Тест 5. Користувача цікавить вивід результатів тестування на екран. Н адамо йому таку інформацію.

Рисунок 4.2.5.Результати проведення тесту № 5

Т ест 6.Виведемо результати тестування на друк.

Рисунок 4.2.6. Результати проведення тесту № 6

Т ест 7. Активували пункт меню „Довідка”-„Про автора”.

Рисунок 4.2.7.Результати проведення тесту №7

Т ест 8. Активуємо пункт меню „Довідка”-„Про програму”.

Рисунок 4.2.8. Результати проведення тесту №8

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

До переваг даної програми можна віднести:

  • зручний інтерфейс, який за своєю простотою приховує можливість вирішувати різноманітні завдання різного ступеня складності;

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

Значною перевагою програми є те, що є можливість виводу на друк звітів про здійснене тестування матеріалів, що покращує конкурентоспроможність програмного продукту.

5 Оцінка похибок результатів експериментальних досліджень

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

Похибка при інтерполяції за Лагранжем може бути оцінена таким чином:

(5.1)

де .

Похибка інтерполяції для першої формули Ньютона можна оцінити відповідно як: (5.2)

де (5.3)

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

(5.4)

де (1.23)

6 Оцінка ефективності комплексу програм для дослідження

Комплекс програм дослідження зміни температури термопари розроблено в середовищі Turbo C .

Ефективність програми це багатокритеріальна оцінка, яка формується як на основі об’єктивних так і суб’єктивних оцінок її роботи користувачем. Але основними є:

  • швидкодія;

  • об’єм програмного коду;

  • взаємодія з іншими прикладними програмами та операційними системами.

Дана програма є ефективним варіантом розробки поставленої у курсовій роботі задачі завдяки тому, що були використані основи структурного програмування:

  • окремі частини програмного коду, які багаторазово використовуються розміщенні в окремих функціях ;

  • функції, для обробки самостійних частини знаходяться в окремих модулях;

  • структура програми є чітко структурованою;

  • дана програма складена з урахуванням використання оптимального об’єму пам’яті.

Передбачено зручний інтерфейс користувача, можливість запуску програми паралельно з іншими програмами (тільки в Windows), що прискорює роботу користувача і робить програму більш практичною.

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

Програма була написана під MS-DOS, але може працювати і під іншими оболонками, які симулюють роботу MS-DOS - Windows , OS/2, MAC, що підтримують 16-бітний код і кодування MS-DOS.

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

Таблиця 6.1 Дослідження ефективності програми

Файл

Розмір до трансляції (Кб)

Розмір ЕХЕ-файла (Кб)

Час виконання задачі (с)

INTERP.CPP

1

79,9

1,5

MENYS.H

17

-

0,2

EDITS.H

5

-

0,2

CALC.H

2

-

0,2

WIND.H

1

-

0,1

MOUSE.H

2

-

0,1

MINMENY.H

18

-

0,3

7 Розробка пакету документів для супроводження комплексу програм

7.1 Розробка інструкції програмісту

Дана програма написана на мові програмування С в середовищі Turbo C. Вона призначена для дослідження зміни температури термопари за допомогою чисельних методів. Використовується інтерполяція по Лагранжу і по Ньютону. Оцінюється похибка методів інтерполяції.

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

Таблиця 7.1.1 Потреби до ресурсів ПК

Процесор

ОЗУ

Монітор

HDD

FDD

486DX

8Mb

14”

600Mb

3.14 FDD

7.1.1 При написані даної програми використовується метод структурного програмування .

7.1.2 Програма знаходиться на дискеті на якій є всі необхідні файли для роботи з даною програмою.

7.1.3 Програма складається з таких файлів:

Таблиця 7.1.2 Файли програмного продукту.

Назва

Призначення

INTERP.CPP

Основна програма.

MENYS.H

Бібліотека з меню та кнопками

DIALOGS.H

Бібліотека з вікнами для вводу тексту

CALC.H

Бібліотека з функціями для роботи з обчисленням. Даний файл можна доробляти, редагувати в залежності від потреб користувача.

WIND.H

Бібліотека малює вікна, панельки

В робочому каталозі програми повинні бути розташовані файли:

  • INTERP.EXE – файл запуску програми

  • EGAVGA.BGI – драйвер підтримки графічного режиму

  • KEYRUS.COM – драйвер клавіатури, для підтримки українських і російських шрифтів

  • START.BAT – запуск KEYRUS.COM і INTERP.EXE.

Якщо всі ці файли знаходяться в одному каталозі, то програму можна запускати.

7.2 Інструкція користувачеві

7.2.1 Дана програма може використовуватися для покращення ефективності роботи інженера на підприємстві.

7.2.2 До початку роботи з програмою всі файли, що знаходяться на дискеті потрібно скопіювати в папку на жорсткому диску.

7 .2.3 Для запуску програми потрібно відкрити файл INTERP.EXE – це файл запуску програми, після чого з’являється головне меню програми.

Рисунок 7.2.1. Головне меню програми

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

7.2.5 Для активізації потрібного пункту меню використовується клавіша чи клацнути лівою клавішею миші.

7.2.6 Програма працює в інтерактивному режимі, тобто реагує на кожну дію користувача.

7.2.7 Для виходу з програми потрібно в головному меню вибрати пункт “Вихід” – „Вихід[Alt+X]” і натиснути .

Висновки

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

В першій главі було розглянуто варіантний аналіз чисельних методів моделювання зміни температури термопари.

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

В третій главі подано лістинг всієї програми, а саме головної програми та лістинг головних функцій.

В четвертій главі виконано тестування меню та тестування самої програми.

В п’ятій главі зроблено оцінку похибок отриманих результатів.

В шостій главі виконано дослідження на ефективність програми, приведено таблицю ефективності.

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

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

Використана література

  1. Проценко С.В. Техніка програмування мовою Сі: Навч.посібник.-К.:Либідь, 1993.

  2. Методичні вказівки до лабораторних робіт з курсу “Обчислювальні методи та застосування ЕОМ ” , Частина І, Вінниця ВПІ 1992.

  3. Міщенко С.М., Конспект лекцій з обчислювальних методів та застосування ЕОМ, ВНТУ,2004.

  4. Шуп Т. Розв’язання інженерних задач на ЕОМ.-М.:, 1982.

  5. Бахвалов Н.С. Чисельні методи.Т.І. Аналіз, алгебра, ЗДР.-М: Наука, 1975.

  6. Хеммінг Р.В. Чисельні методи – М.: Наука,1972

  7. Лященко

  8. Турчак Л.І. Основи чисельних методів. – М. Наука,1987.

Додаток А

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

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

Інститут автоматики електроніки та комп’ютерних систем управління

Кафедра комп’ютерних систем управління

Технічне завдання

на виконання курсової роботи

” Дослідження зміни температури термопари за допомогою чисельних методів на ЕОМ.”

При розробці даної роботи необхідно виконувати слідуючи етапи:

1.1 Найменування та галузь застосування об’єкта розробки: цей комплекс програм може бути застосований на будь-якому підприємстві для полегшення та покращення результатів роботи інженерів

1.2 Підстава для проведення роботи: дослід штучного інтелекту

1.3 Дата початку роботи:8.01.04.

1.4 Дата закінчення роботи: 10.04.04.

1.5 Мета призначення розробки: створити як найкращий комплекс програм для полегшення та покращення роботи інженера підприємства

1.6Вимоги до надійності системи: використання структурного програмування, окреме підключення модулів, єдине меню, тощо – усе це забезпечує надійність системи. Програмне забезпечення та супроводжуюча текстова документація повинна задовільнити таким гостам:

ГОСТ 19.701-90 (МСО 5807-85) ГОСТ 19.101-77 (СТСЄВ 1626-7а)

ГОСТ 19.781-74 ГОСТ 7.1-84 ДСТУ 3008-85

ГОСТ 19.401-78 ГОСТ 19.106-78

1.7 Стадії та етапи розробки:

1 етап: розробка індивідуального та технічного завдання.(до 15.01.04)

2 етап: огляд та аналіз методів моделювання зміни температури термопари на ЕОМ (до 1.02.04).

3 етап: розробка алгоритмів моделювання зміни температури термопари на ЕОМ (до 20.02.04).

4 етап: розробка керуючої програми, яка повинна працювати в режимі багато ієрархічного меню (до 10.03.04).

5 етап: об’єднання всіх програмних модулів та тестування керуючої програми (до 15.03.04).

6 етап: розробка тестів, тестування та демонстрація роботи всього комплексу (до 15.03.04).

7 етап: розробка технічної документації та пояснювальної записки (до 20.03.04).

8 етап: вимоги до безпеки: розроблене програмне забезпечення повинно відповідати вимогам Сніп та ДЕСТів до робочого місця оператора ЕОМ.

Додаток Б

Лістинги модулів

Лістинг модуля EDITS.H

#include

const coloredit=14; // цвет самого поля для ввода

const colordialog=7; //цвет окна диалог

const FEdit1=1;

const FEdit2=0;

const FEdit3=0;

const FEdit4=0;

const FEdit5=0;

const FEdit6=0;

void *arrow;

int size,xy1,xy2,yy1,yy2;

void *arrowp;

int sizep,xy1p,xy2p,yy1p,yy2p;

int FEdit=0;

class TEdit

{

public:

TEdit();

~TEdit(){};

void EditDrow();

void setwidth(int x){width=x;};

void setheight(int x){height=x;};

void settop(int x){top=x;};

void setleft(int x){left=x;};

void setonoff(int x,int k=1){

onoff=x;

if (k) EditDrow();

};

void setcol(int x){color=x;};

void setcapt(char *x){caption=x;};

void settext(char x[20]){strcpy(text,x);};

int getwidth()const {return width;};

int getheight()const {return height;};

int gettop()const {return top;};

int getleft()const {return left;};

int getonoff()const {return onoff;};

int getcol()const {return color;};

const char* getcapt(){return caption;};

const char* gettext(){return text;};

void mousemove(int i);

void onkeypress(int i);

void setpos(int x,int y, char* capt,char* texts,int i=0);

private:

int width;

int height;

int top;

int left;

int onoff;

int color;

char *caption;

char text[20];

};

void TEdit::setpos(int x,int y, char* capt,char* texts,int i)

{

strcpy(text,texts);

left=x;

top=y;

caption=capt;

if (i) EditDrow();

}

TEdit::TEdit()

{

caption='\0';

text[0]='2';

text[1]='3';

text[2]='\0';

width=170;

height=18;

top=0;

left=0;

color=coloredit;

onoff=0;

}

void TEdit::EditDrow()

{

int i;

int x=left;

int y=top;

int xx=width;

int yy=height;

setfillstyle(1,color);

setlinestyle(0,0,0);

mouseoff();

bar(x,y,x+xx,y+yy);

setcolor(8);

line(x-1,y-1,x-1,y+yy+1);

line(x-1,y-1,x+xx+1,y-1);

setcolor(15);

line(x,y+yy+1,x+xx+1,y+yy+1);

line(x+xx+1,y,x+xx+1,y+yy+1);

moveto(6+x,6+y);

setcolor(color+10);

outtext(text);

line(x+strlen(text)*8+6,y+15,x+strlen(text)*8+10,y+15);

moveto(x,y-15);

setcolor(color+13);

outtext(caption);

if (onoff) setcolor(11);

else setcolor(colordialog);

rectangle(x-4,y-4,x+xx+4,y+yy+4);

mouseon();

}

//////////////////////////////////////////////////////////////////

// ОБЪЯВЛЕНИЕ ОБЪЕКТОВ

//////////////////////////////////////////////////////////////////

TEdit *TempEdit, edit1[FEdit1];

// char *strrez[FEdit];

int exittru=1;

void TEdit::mousemove(int i)

{

if (mousein(left,top,left+width,top+height))

{

if (!onoff)

if (getbutton(1))

{

int j;

for ( j=0;j

if ((i!=j)&&(TempEdit[j].getonoff())) TempEdit[j].setonoff(0);

setonoff(1);

}

}

}

void TEdit::onkeypress(int i)

{

if ((onoff)&&(kbhit()))

{

char c=getch();

switch (c)

{

case 8: if (strlen(text))

{

text[strlen(text)-1]='\0';

EditDrow();

}break;

case 9: setonoff(0);

if (i==(FEdit-1)) TempEdit[0].setonoff(1);

else TempEdit[i+1].setonoff(1);break;

case 13:exittru=13;break;

case 27:exittru=27;break;

case 0:

switch (getch())

{

case 72:

setonoff(0);

if (i==0) TempEdit[FEdit-1].setonoff(1);

else TempEdit[i-1].setonoff(1);

break;//up

case 80:

setonoff(0);

if (i==(FEdit-1)) TempEdit[0].setonoff(1);

else TempEdit[i+1].setonoff(1);

break;//down

};break;

}

if (((c>=32)||(c<0))&&(strlen(text)<19))

{

int slen=strlen(text);

text[slen]=c;

text[slen+1]='\0';

EditDrow();

}

}

}

void EditInitall()

{

edit1[0].setpos(200,200,"","");

}

void EditInit()

{

TempEdit[0].setonoff(1,0);

int i;

for (i=1;i

TempEdit[i].setonoff(0,0);

xy1=TempEdit[0].getleft()-10;

yy1=TempEdit[0].gettop()-45;

xy2=TempEdit[FEdit-1].getleft()+TempEdit[FEdit-1].getwidth()+10;

yy2=TempEdit[FEdit-1].gettop()+TempEdit[FEdit-1].getheight()-yy1+10;

size = imagesize(xy1-2, yy1-2, xy2+4, yy1+yy2+2);

arrow = malloc(size);

mouseoff();

getimage(xy1-2, yy1-2, xy2+4, yy1+yy2+2, arrow);

mouseon();

windows(xy1,yy1,xy2-xy1+2,yy2,colordialog,"",0);

windows(xy1+2,yy1+2,xy2-xy1-2,18,1,"Ввiд",1);

for ( i=0;i

{

TempEdit[i].EditDrow();

}

}

void EditEnter(TEdit *edit1, int rrr)

{

int i;

FEdit=rrr;

TempEdit=edit1;

EditInit();

exittru=0;

while (!exittru)

{

for (i=0; i

{

TempEdit[i].onkeypress(i);

TempEdit[i].mousemove(i);

}

}

mouseoff();

putimage(xy1-2, yy1-2,arrow,0);

mouseon();

free(arrow);

}

/////////////////////// END DIALOG ////////////////////////////////

Лістинг модуля WIND.H

#include

#include "mouse.h"

void windows(int x,int y,int xx,int yy,int color,char s[100],int p)

{

int i;

setfillstyle(1,color);

setlinestyle(0,0,0);

mouseoff();

bar(x,y,x+xx,y+yy);

if (p) setcolor(8);

else setcolor(15);

line(x-1,y-1,x-1,y+yy+1);

line(x-1,y-1,x+xx+1,y-1);

if (! p) setcolor(8);

else setcolor(15);

line(x,y+yy+1,x+xx+1,y+yy+1);

line(x+xx+1,y,x+xx+1,y+yy+1);

if (! p) moveto(5+x,5+y);

else moveto(6+x,6+y);

setcolor(color+10);

outtext(s);

mouseon();

}

Лістинг модуля CALC.H

#include

#include

#include

#include

const N=6;

float x[N]={0, 20, 40, 60, 80, 100},

y[N]={-0.67, -0.254, 0.171, 0.609, 1.057, 1.517};

//float x[N]={1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7},

// y[N]={1, 0.90909, 0.83333, 0.76923, 0.71329, 0.66667, 0.625, 0.58824};

float

dy0=y[1]-y[0];

int COO=0;

float H=x[1]-x[0];

double stepin(double x1,int f)

{

if (f==0) return 1.0;

double rez=x1;

for (int i=1;i

rez*=x1;

// printf("\nx1=%f ^=%d rez=%f if_0=%d",x1,f,rez, rez==0);

return rez;

}

double faktorial(int k)

{

double rez=1;

for (int i=1;i<=k;i++)

rez*=i;

// printf("\n fact(%d)=%f",k,rez);

return rez;

}

double GetA(int i)

{

// if (i) return (stepin(((y[i]-y[i-1])/H),i)*(1/faktorial(i)));

if (i) return (stepin((dy0),i)/(faktorial(i)*stepin(H,i)));

else

return y[0];

}

double IntNuton1(double X1) //Интерполяц по NUTON 1

{

// return 0;

double D,S;

S=0;

int i,j;

for (i=0;i

{

D=GetA(i);

for (j=0;j

{

D*=(X1-x[j]);

}

S+=D;

// printf("\nS=%10.10f",S);

}

return S;

}

double GetB(int i)

{

if (i) return (stepin(((y[N-i]-y[N-i-1])/H),i)*(1/faktorial(i)));

else

return y[N-1];

}

double IntNuton2(double X1) //Интерполяц по NUTON 2

{

// return 0;

double D,S;

S=0;

int i,j;

for (i=0;i

{

D=GetB(i);

for (j=(N-1);j>=(N-i);j--)

{

D*=(X1-x[j]);

}

S+=D;

}

return S;

}

double IntLang(double X1) //Интерполяц по Лагранджу

{

// return 0;

// printf("\n%d",COO++);

double D,S;

S=0;

int i,j;

for (i=0;i

{

D=1;

for (j=0;j

{

if (i!=j) D*=(X1-x[j])/(x[i]-x[j]);

}

S+=D*y[i];

}

return S;

}

Лістинг модуля MOUSE.H

#include

#include

#include

#include

struct REGPACK reg;

//инициализирует мышу

int mouseinit()

{ reg.r_ax=0;

intr(0x33,®);

if (!reg.r_ax) {

textcolor(15+128);

gotoxy(23,10);printf("╔═════════E R R O R═════════╗");

gotoxy(23,11);printf("║ MOUSE IS NOT PRESENT! ║");

gotoxy(23,12);printf("║ Press any key ..... ║");

gotoxy(23,13);printf("╚═══════════════════════════╝");

getch();

textcolor(7);

return 1;

}

return 0;

}

//показывает курсор мыши

void mouseon()

{

reg.r_ax=1;

intr(0x33,®);

}

//прячет курсор мыши

void mouseoff()

{

reg.r_ax=2;

intr(0x33,®);

}

// возвращает координаты мыши

void getmousexy(int *x,int *y)

{

reg.r_ax=3;

intr(0x33,®);

*x=reg.r_cx;

*y=reg.r_dx;

}

//устанавливает координаты

void setmousexy(int x,int y)

{

reg.r_cx=x;

reg.r_dx=y;

reg.r_ax=4;

intr(0x33,®);

}

const left=1;

const right=2;

int getbutton(int but)

{

reg.r_ax=5;

reg.r_bx=but;

intr(0x33,®);

return (reg.r_ax)==but;

}

int mousein(int x1,int y1,int x2,int y2)

{

int x,y;

getmousexy(&x,&y);

if (x>=x1 & x=y1 & y<=y2) return 1; else return 0;

}

Додаток В

Структура дискети

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5138
Авторов
на СтудИзбе
442
Средний доход
с одного платного файла
Обучение Подробнее