Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otchet.docx
Скачиваний:
8
Добавлен:
26.03.2015
Размер:
1.27 Mб
Скачать

7.4 Опис класів та методів

При реалізації задачі в якості об’єктів розглядаємо форми для обчислення тих чи інших змінних. Для заданих об’єктів в проекті розроблені наступні класи: CFox6Dlg, Czz1, Czz2, CKvadr_base, CKvadr1, CKvadr2 з наступними інтерфейсними частинами представлених у підрозділу 7.4 і наступною реалізацію представленою у підрозділу 7.5.

Клас CFox6Dlg має наступний інтерфейс:

class CFox6Dlg : public CDialog

{

// Construction

public:

CFox6Dlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data

//{{AFX_DATA(CFox6Dlg)

enum { IDD = IDD_FOX6_DIALOG };

float m_a;

float m_b;

float m_v;

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CFox6Dlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

HICON m_hIcon;

// Generated message map functions

//{{AFX_MSG(CFox6Dlg)

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

afx_msg void OnMenuitem32771();

afx_msg void OnMenuitem32772();

afx_msg void OnMenuitem32773();

afx_msg void OnRadio1();

afx_msg void OnRadio2();

afx_msg void OnRadio3();

afx_msg void OnMas();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

Методи є обробниками подій кнопок. Члени змінних додаються до класу за допомогою майстра ClassWizard, шляхом зв’язування об’єктів для вводу значень змінних та заданих ідентифікаторів для змінних, це представлено у таблиці 7.3

Таблиця 7.3 – Члени – змінні класу CFox6Dlg

Ідентифікатор об’єкта

Ідентифікатор змінної - члена класу

Тип змінної

IDC_EDIT1

m_a

float

IDC_EDIT2

m_b

float

IDC_EDIT2

m_v

float

Клас Czz1 має наступний інтерфейс:

class Czz1 : public CDialog

{

// Construction

public:

Czz1(CWnd* pParent = NULL); // standard constructor

// Dialog Data

//{{AFX_DATA(Czz1)

enum { IDD = IDD_DIALOG1 };

// NOTE: the ClassWizard will add data members here

//}}AFX_DATA

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(Czz1)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

// Generated message map functions

//{{AFX_MSG(Czz1)

// NOTE: the ClassWizard will add member functions here

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

Клас Czz2 має наступний інтерфейс:

class Czz2 : public CDialog

{

// Construction

public:

Czz2(CWnd* pParent = NULL); // standard constructor

// Dialog Data

//{{AFX_DATA(Czz2)

enum { IDD = IDD_DIALOG2 };

int m_i;

int m_j;

CMSFlexGrid m_mas;

//}}AFX_DATA

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(Czz2)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

// Generated message map functions

//{{AFX_MSG(Czz2)

afx_msg void OnButton1();

afx_msg void OnRadio1();

afx_msg void OnRadio2();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

Методи є обробниками подій кнопок. Члени змінних додаються до класу за допомогою майстра ClassWizard, шляхом зв’язування об’єктів для вводу значень змінних та заданих ідентифікаторів для змінних, це представлено у таблиці 7.4.

Таблиця 7.4 – Члени – змінні класу Czz2

Ідентифікатор об’єкта

Ідентифікатор змінної - члена класу

Тип змінної

IDC_EDIT4

m_i

Int

IDC_EDIT5

m_j

Int

IDC_MSFLEXGRID1

m_mas

CMSFLEXGRID

6.5 Програмний код

//Блок 1 – інтерфейс класів CKvadr_base, CKvadr1, CKvadr2

class CKvadr_base

{

protected:

float a, float p, float s;

public:

CKvadr_base();

CKvadr_base(float);

virtual ~CKvadr_base();

float p1_kvadr();

float s1_kvadr();

};

class CKvadr1:public CKvadr_base

{

// public:CKvadrat;

protected:

float b;

public:

CKvadr1();

CKvadr1(float a1,float);

virtual ~CKvadr1();

float p1_kvadr();

float s1_kvadr();

};

class CKvadr2:public CKvadr1

{

// public:CKvadrat;

protected:

float v;

public:

CKvadr2();

CKvadr2(float a1,float b1,float);

virtual ~CKvadr2();

float p1_kvadr();

float s1_kvadr();

};

//Блок 2 – реалізація класів CKvadr_base, CKvadr1, CKvadr2

CKvadr_base::CKvadr_base()

{

}

CKvadr_base::~CKvadr_base()

{

}

CKvadr_base::CKvadr_base(float a1)

{

a=a1;

}

float CKvadr_base::p1_kvadr()

{

p=2*(a+a);

return(p);

}

float CKvadr_base::s1_kvadr()

{

s=a*a;

return(s);

}

CKvadr1::CKvadr1(float a1,float b1):CKvadr_base(a1)

{

b=b1;

}

CKvadr1::CKvadr1()

{

}

CKvadr1::~CKvadr1()

{

}

float CKvadr1::p1_kvadr()

{

p=2*(a+b);

return(p);

}

float CKvadr1::s1_kvadr()

{

s=a*b;

return(s);

}

CKvadr2::CKvadr2(float a1,float b1,float v1):CKvadr1(a1,b1)

{

v=v1;

}

CKvadr2::CKvadr2()

{

}

CKvadr2::~CKvadr2()

{

}

float CKvadr2::p1_kvadr()

{

p=2*(a+b);

return(p);

}

float CKvadr2::s1_kvadr()

{

s=a*b*v;

return(s);

}

//Блок 3 – інтерфейс класy Czz1

class Czz1 : public CDialog

{

// Construction

public:

Czz1(CWnd* pParent = NULL); // standard constructor

// Dialog Data

//{{AFX_DATA(Czz1)

enum { IDD = IDD_DIALOG1 };

// NOTE: the ClassWizard will add data members here

//}}AFX_DATA

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(Czz1)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

// Generated message map functions

//{{AFX_MSG(Czz1)

// NOTE: the ClassWizard will add member functions here

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

//Блок 4 – інтерфейс класy Czz2

class Czz2 : public CDialog

{

// Construction

public:

Czz2(CWnd* pParent = NULL); // standard constructor

// Dialog Data

//{{AFX_DATA(Czz2)

enum { IDD = IDD_DIALOG2 };

int m_i;

int m_j;

CMSFlexGrid m_mas;

//}}AFX_DATA

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(Czz2)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

// Generated message map functions

//{{AFX_MSG(Czz2)

afx_msg void OnButton1();

afx_msg void OnRadio1();

afx_msg void OnRadio2();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

//Блок 5 – метод по обробці кнопки RadioButton1 на формі масиву.

void Czz2::OnRadio1()

{

int p=0,pr=0;

int stolb;

CString s,w,mn,mx,sw,st,qw;

int st2,i,j;

UpdateData();

stolb=m_i+1;

st2=m_j+1;

for (i=1;i<st2;i++)

for (j=1;j<stolb;j++){

m_mas.SetRow(i);

m_mas.SetCol(j);

if (atoi(m_mas.GetText())>0)

{pr=pr+1;}

if (atoi(m_mas.GetText())<0)

{p=p+1;}

}

if (pr==0) {MessageBox("Нет положительных элементов в данном массиве");}

else{s.Format("%d",pr);s="Кол-во положительных элементов = "+s; MessageBox(s);}

if (p==0) {MessageBox("Нет отрицательных элементов в данном массиве");}

else{s.Format("%d",p);s="Кол-во отрицательных элементов = "+s; MessageBox(s);}

}

//Блок 6 – метод по обробці кнопки RadioButton2 на формі масиву.

void Czz2::OnRadio2()

{

int p=0,pr=0;

int stolb;

CString s,w,mn,mx,sw,st,qw;

int st2,i,j;

UpdateData();

stolb=m_i+1;

st2=m_j+1;

for (i=1;i<st2;i++)

for (j=1;j<stolb;j++){

m_mas.SetRow(i);

m_mas.SetCol(j);

if (atoi(m_mas.GetText())==0)

{pr=pr+1;} }

if (pr==0) {MessageBox("Нет элементов с нулевым значением в данном массиве");}

else{s.Format("%d",pr);s="Кол-во нулевых элементов = "+s; MessageBox(s);}

}

//Блок 7 – метод по обробці кнопки Button1 на формі масиву.

void Czz2::OnButton1()

{ int stolb;

CString s;

int st2,i,j;

UpdateData();

stolb=m_i+1;

st2=m_j+1;

m_mas.SetCols(stolb);

m_mas.SetRows(st2);

int **mas=new int *[st2];

for (i=1;i<st2;i++)

mas[i]=new int [stolb];

for (i=1;i<st2;i++)

for (j=1;j<stolb;j++)

{

m_mas.SetRow(i);

m_mas.SetCol(j);

mas[i][j]=rand()%801-400;

s.Format("%d",mas[i][j]);

m_mas.SetText(s);

}}

//Блок 8 – метод по обробці кнопки RadioButton1 на формі об’ектів.

void CFox6Dlg::OnRadio1()

{

float se,qe;

CString s,q;

UpdateData();

CKvadr_base ob1(m_a);

se=ob1.p1_kvadr();

qe=ob1.s1_kvadr();

s.Format("%4.2f",se);

q.Format("%4.2f",qe);

s="Периметр = "+s+"; Площадь = "+q;

MessageBox(s);

UpdateData(false);

}

//Блок 9 – метод по обробці кнопки RadioButton2 на формі об’ектів.

void CFox6Dlg::OnRadio2()

{

float se,qe;

CString s,q;

UpdateData();

CKvadr1 ob2(m_a,m_b);

se=ob2.p1_kvadr();

qe=ob2.s1_kvadr();

s.Format("%4.2f",se);

q.Format("%4.2f",qe);

s="Периметр = "+s+"; Площадь = "+q;

MessageBox(s);

UpdateData(false);

}

//Блок 10 – метод по обробці кнопки RadioButton3 на формі об’ектів.

void CFox6Dlg::OnRadio3()

{

// TODO: Add your control notification handler code here

float se,qe;

CString s,q;

UpdateData();

CKvadr2 ob3(m_a,m_b,m_v);

se=ob3.p1_kvadr();

qe=ob3.s1_kvadr();

s.Format("%4.2f",se);

q.Format("%4.2f",qe);

s="Периметр = "+s+"; Площадь = "+q;

MessageBox(s);

UpdateData(false);

}

7.6 Керівництво користувачеві

Для запуску програми запустити файл Fox6.exe. Після чого з’явиться меню програми яка представлена на рисунку 7.5.

Рисунок 7.5 – Меню

Для розрахунку треба ввести необхідні данні, тобто задати значення елементу, а саме 2 сторони та угол між ними. Для виводу результатів треба натиснути кнопки, які виконують розрахунки – «Квадрат», «Прямокутник», «Паралелограм» після чого автоматично з’явиться результат в діалоговому вікні.

Для розв’язання задачі з масивом необхідно натиснути на пункт меню «Mas». Після чого з’явиться форма з умовою задачі та вводу даних для розв’язання задачі, яка представлена на рисунку 7.6.

Рисунок 7.6 – Масиви

Для розрахунку треба ввести необхідні данні, тобто задати кількість елементів та самі елементи. Для виводу результатів треба натиснути кнопки, які виконують розрахунки – «Кількість парних і непорних», «Кількість елементів з нульовим значенням».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]