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

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

При реалізації задачі в якості об’єктів розглядаємо форми для обчислення тих чи інших змінних. Для заданих об’єктів в проекті розроблені наступні класи: CFox5Dlg, Csv, Czz1, Czz2 з наступними інтерфейсними частинами представлених у підрозділу 6.4 і наступною реалізацію представленою у підрозділу 6.5.

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

class CFox5Dlg : public CDialog

{

// Construction

public:

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

// Dialog Data

//{{AFX_DATA(CFox5Dlg)

enum { IDD = IDD_FOX5_DIALOG };

// NOTE: the ClassWizard will add data members here

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CFox5Dlg)

protected:

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

//}}AFX_VIRTUAL

// Implementation

protected:

HICON m_hIcon;

// Generated message map functions

//{{AFX_MSG(CFox5Dlg)

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

afx_msg void OnMenuitem32773();

afx_msg void OnMenuitem32771();

afx_msg void OnMenuitem32772();

afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);

//}}AFX_MSG

DECLARE_MESSAGE_MAP() };

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

class Czz1 : public CDialog

{

// Construction

public:

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

// Dialog Data

//{{AFX_DATA(Czz1)

enum { IDD = IDD_DIALOG1 };

float m_r;

float m_h;

CString m_res;

//}}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)

afx_msg void OnButton2();

afx_msg void OnButton1();

afx_msg void OnButton3();

//}}AFX_MSG

DECLARE_MESSAGE_MAP() };

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

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

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

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

Тип змінної

IDC_EDIT1

m_r

float

IDC_EDIT2

m_h

float

IDC_EDIT3

m_res

CString

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

class Czz2 : public CDialog

{

// Construction

public:

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

// Dialog Data

//{{AFX_DATA(Czz2)

enum { IDD = IDD_DIALOG2 };

float m_r;

float m_h;

CString m_res;

//}}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 OnButton3();

afx_msg void OnButton2();

//}}AFX_MSG

DECLARE_MESSAGE_MAP() };

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

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

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

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

Тип змінної

IDC_EDIT1

m_r

float

IDC_EDIT2

m_h

float

IDC_EDIT3

m_res

CString

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

//Блок 1 – інтерфейс класу Csv

class Csv

{

public:

double rs(float r);

double rs(float r,float h);

Csv();

virtual ~Csv();

// afx_msg double proc1(float);

// afx_msg double proc1(float, float);

template <class T> T TriangleSquare(T r)

{ return(T)((4.0/3.0)*pow(r,3)); }

template <class T> T TriangleSquare(T r, T h)

{ return (T)(3.14*pow(r,2)*h); }};

//Блок 2 – реалізація класу Csv

Csv::Csv()

{

}

Csv::~Csv()

{

//r=0;

// h=0;

}

double Csv::rs(float r)

{

return((4.0/3.0)*3.14*pow(r,3));

}

double Csv::rs(float r,float h)

{

return(3.14*pow(r,2)*h);

}

//Блок 3 – метод по обробці кнопки Button1 на формі перегрузки

void Czz1::OnButton1()

{

double se;

CString s;

UpdateData();

if (m_r=0) MessageBox("Нет такого шара радиус кооторого равен 0"); else

if (m_r<0) MessageBox("Радиус не может быть меньше 0"); else

{ Csv ob1;

se=ob1.rs(m_r);

m_res.Format("%4.2f",se);}

UpdateData(false);

}

//Блок 4 – метод по обробці кнопки Button3 на формі перегрузки

void Czz1::OnButton3()

{

double se;

CString s;

UpdateData();

if (m_r<=0) MessageBox("Нет такого цилиндра радиус кооторого равен 0"); else

if (m_h<=0) MessageBox("Нет такого цилиндра высота кооторого равна 0"); else

{Csv ob2;

se=ob2.rs(m_r,m_h);

m_res.Format("%4.2f",se);}

UpdateData(false);

}

//Блок 5 – метод по обробці кнопки Button1 на формі шаблону

void Czz2::OnButton1()

{

double se;

UpdateData();

Csv ob1;

se=ob1.rs(m_r);

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

UpdateData(false);

}

//Блок 6 – метод по обробці кнопки Button3 на формі шаблону

void Czz2::OnButton3()

{

double se;

UpdateData();

Csv ob2;

se=ob2.rs(m_r,m_h);

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

UpdateData(false);

}

//Блок 7 – метод по обробці пунктів меню

void CFox5Dlg::OnMenuitem32773()

{

CString Message ="\t \t Вы \n \t действительно \n хотите завершить работу?" ;

CString Title = "Завершение работы";

UINT nType = MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2 ;

int anser = MessageBox ( Message , Title , nType ) ;

if (anser==IDYES) CDialog:: OnOK();

}

void CFox5Dlg::OnMenuitem32771()

{

Czz1 ds;

ds.DoModal();

}

void CFox5Dlg::OnMenuitem32772()

{

Czz2 sd;

sd.DoModal();

}

//Блок 7 – метод по обробці контекстного меню

void CFox5Dlg::OnContextMenu(CWnd* pWnd, CPoint point)

{ CMenu cMenu, *pMenu;

cMenu.LoadMenu(IDR_MENU1);

pMenu=cMenu.GetSubMenu(0);

pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);

}

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

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

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

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

Рисунок 6.5 – Форма перегрузки

Для розрахунку треба ввести необхідні данні, тобто R та h. Для виводу результатів треба натиснути кнопки, які виконують розрахунки – «Вичислення обєму кулі», «Вичислення обєму циліндру». Для виходу з програми або для переходу на інший розрахунов нажміть на кнопку «ВИХІД».

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

Рисунок 6.6 – Форма шаблону

Для розрахунку треба ввести необхідні данні, тобто R та h. Для виводу результатів треба натиснути кнопки, які виконують розрахунки – «Вичислення об’єму кулі», «Вичислення об’єму циліндру». Для виходу з програми або для переходу на інший розрахунов нажміть на кнопку «ВИХІД».

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