DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

ЗВІТ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп'ютерних технологій
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2013
Тип роботи:
Практика
Предмет:
Метрологія

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет «Львівська політехніка» Інститут комп’ютерних технологій автоматики і метрології Кафедра ЕОМ ЗВІТ З навчальної практики з дисципліни Об'єктно орієнтованого прогрограмування Львів 2009 Мета практити Розвинути навики використання Об’єктно-Орієетованого Програмування (ООП) при створенні програмних продуктів для операційної системи Windows та системного програмного забезпечення. Засвоїти навики використання типових об’єктно-орієнтованих бібліотек при розробці сучасного графічного інтерфейсу користувача. Познайомитись з бібліотекою класів MFC, навчитись створювати віконні програми, що будуються на основі діалогу, одно- та багатодокументної архітектури. Частина 1. Завдання:  Розробити клас CСomplex за допомогою якого візуальна програма буде виконуватись прості математичні операції над комплексними числами. Основними методами класу є: void CAdd(double re, double im); - Виконує операцію додавання void CSub(double re, double im); - Виконує операцію віднімання void CMul(double re, double im); - Виконує операцію множення void CDiv(double re, double im); - Виконує операцію ділення void CRes(double re, double im); - Виводить результат операції double GetRe(); - повертає значення дійсної частини комплексного числа double GetIm();- повертає значення уявної частини комплексного числа void ToFile() – записує у файл; Вікно програми:  Аналіз виконання Частини 2: Завдання: Розробити програму на основі, однодокументного проекту, за допомогою якої будуть відкриватис і редагуватись текстові файли. Основними класами і методами є: class CDocumentView : public CeditView – клас вигляду, на основі класу CeditView virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); початок друку virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo) – завершення друку; class CDocumentDoc : public Cdocument – клас документ, відповідає за вміст документу Вигляд програми:  Аналіз виконання Частини 3: Завдання: Розробити багатодокументну програму на основі класу ClistView, за допомогою якої буде читатись текстовий документ і відображатись у вигляді таблиці Частина 3 Основними структурами є: struct StableRow – структура таблиці class CStoreTableDoc : public Cdocument – клас відповідає за роботу з документом програми class CStoreTableView : public ClistView – клас який відповідає за вигляд таблиці, на основі красу ClistView У середовищі Visual Studio 2008 створюємо багатодокументну програму.. Вигляд програми:  Висновок: на навчальній практиці я навчився працювати з візуальним середовищем розробки MS Visual Studio 2008, навчився працювати з стандартною бібліотекою компонентів MFC, а зокрема розробляти програми на основі діалогового проекту, однодокуметного проекту і багатодокументного проекту. Додаток 1 Код програми: #pragma once #include "afxwin.h" class CComplex { private: double m_Re, m_Im; char m_oper; CString m_ReS, m_ImS; CString m_text; CStdioFile file; public: CComplex(); void CAdd(double re, double im); void CSub(double re, double im); void CMul(double re, double im); void CDiv(double re, double im); void CRes(double re, double im); double GetRe(); double GetIm(); void ToFile(); }; #include "stdafx.h" #include "CComplex.h" CComplex::CComplex (){ m_Re = 0; m_Im = 0; file.Open ((CString)"Operation.txt", CFile::modeCreate ); file.Close (); } void CComplex::CAdd (double re, double im){ m_Re = re; m_Im = im; m_oper = '+'; m_ReS.Format ((CString)"%0.1Lf", m_Re); m_ImS.Format ((CString)"%0.1Lf", m_Im); m_text =(CString)"(" + m_ReS +(CString)" + " + m_ImS +(CString)"i) + "; } void CComplex::CSub(double re, double im){ m_Re = re; m_Im = im; m_oper = '-'; m_ReS.Format ((CString)"%0.1Lf", m_Re); m_ImS.Format ((CString)"%0.1Lf", m_Im); m_text =(CString)"(" + m_ReS +(CString)" + " + m_ImS +(CString)"i) - "; } void CComplex::CMul (double re, double im){ m_Re = re; m_Im = im; m_oper = '*'; m_ReS.Format ((CString)"%0.1Lf", m_Re); m_ImS.Format ((CString)"%0.1Lf", m_Im); m_text =(CString)"(" + m_ReS +(CString)" + " + m_ImS +(CString)"i) * "; } void CComplex::CDiv (double re, double im){ m_Re = re; m_Im = im; m_oper = '/'; m_ReS.Format ((CString)"%0.1Lf", m_Re); m_ImS.Format ((CString)"%0.1Lf", m_Im); m_text =(CString)"(" + m_ReS +(CString)" + " + m_ImS +(CString)"i) / "; } void CComplex::CRes(double re, double im){ m_ReS.Format ((CString)"%0.1Lf", re); m_ImS.Format ((CString)"%0.1Lf", im); m_text = m_text + (CString)"(" + m_ReS +(CString)" + " + m_ImS +(CString)"i) = "; switch(m_oper){ case '+': m_Re = m_Re + re; m_Im = m_Im + im; break; case '-': m_Re = m_Re - re; m_Im = m_Im - im; break; case '*': m_Re = m_Re * re - m_Im * im; m_Im = m_Re * im + m_Im * re; break; case '/': if (re!=0&&im!=0){ m_Re = (m_Re * re + m_Im * im)/(re*re+im*im); m_Im = (m_Im * re - m_Re * im)/(re*re+im*im); } break; } m_ReS.Format ((CString)"%0.1Lf", m_Re); m_ImS.Format ((CString)"%0.1Lf", m_Im); m_text = m_text + (CString)"(" + m_ReS +(CString)" + " + m_ImS +(CString)"i)"; } double CComplex::GetRe() { return m_Re; } double CComplex::GetIm() { return m_Im; } void CComplex::ToFile (){ file.Open ((CString)"Operation.txt", CFile::modeWrite); file.SeekToEnd (); file.WriteString (m_text + (CString)"\n"); m_text = ""; file.Close (); } void Cpract1Dlg::OnBnClickedButton6() { if (op) { m_valRe="0"; m_valIm="0"; UpdateData(FALSE); op=FALSE; } if(m_var1.GetCheck ()){ UpdateData(TRUE); if (m_valRe == (CString)"0") m_valRe.Empty(); m_valRe = m_valRe + (CString)"1"; UpdateData(FALSE); }else{ UpdateData(TRUE); if (m_valIm == (CString)"0") m_valIm.Empty(); m_valIm = m_valIm + (CString)"1"; UpdateData(FALSE); } // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton7() { if (op) { m_valRe="0"; m_valIm="0"; UpdateData(FALSE); op=FALSE; } if(m_var1.GetCheck ()){ UpdateData(TRUE); if (m_valRe == (CString)"0") m_valRe.Empty(); m_valRe = m_valRe + (CString)"2"; UpdateData(FALSE); }else{ UpdateData(TRUE); if (m_valIm == (CString)"0") m_valIm.Empty(); m_valIm = m_valIm + (CString)"2"; UpdateData(FALSE); } // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton8() { if (op) { m_valRe="0"; m_valIm="0"; UpdateData(FALSE); op=FALSE; } if(m_var1.GetCheck ()){ UpdateData(TRUE); if (m_valRe == (CString)"0") m_valRe.Empty(); m_valRe = m_valRe + (CString)"3"; UpdateData(FALSE); }else{ UpdateData(TRUE); if (m_valIm == (CString)"0") m_valIm.Empty(); m_valIm = m_valIm + (CString)"3"; UpdateData(FALSE); } // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton3() { if (op) { m_valRe="0"; m_valIm="0"; UpdateData(FALSE); op=FALSE; } if(m_var1.GetCheck ()){ UpdateData(TRUE); if (m_valRe == (CString)"0") m_valRe.Empty(); m_valRe = m_valRe + (CString)"4"; UpdateData(FALSE); }else{ UpdateData(TRUE); if (m_valIm == (CString)"0") m_valIm.Empty(); m_valIm = m_valIm + (CString)"4"; UpdateData(FALSE); } // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton4() { if (op) { m_valRe="0"; m_valIm="0"; UpdateData(FALSE); op=FALSE; } if(m_var1.GetCheck ()){ UpdateData(TRUE); if (m_valRe == (CString)"0") m_valRe.Empty(); m_valRe = m_valRe + (CString)"5"; UpdateData(FALSE); }else{ UpdateData(TRUE); if (m_valIm == (CString)"0") m_valIm.Empty(); m_valIm = m_valIm + (CString)"5"; UpdateData(FALSE); } // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton5() { if (op) { m_valRe="0"; m_valIm="0"; UpdateData(FALSE); op=FALSE; } if(m_var1.GetCheck ()){ UpdateData(TRUE); if (m_valRe == (CString)"0") m_valRe.Empty(); m_valRe = m_valRe + (CString)"6"; UpdateData(FALSE); }else{ UpdateData(TRUE); if (m_valIm == (CString)"0") m_valIm.Empty(); m_valIm = m_valIm + (CString)"6"; UpdateData(FALSE); } // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton10() { if (op) { m_valRe="0"; m_valIm="0"; UpdateData(FALSE); op=FALSE; } if(m_var1.GetCheck ()){ UpdateData(TRUE); if (m_valRe == (CString)"0") m_valRe.Empty(); m_valRe = m_valRe + (CString)"7"; UpdateData(FALSE); }else{ UpdateData(TRUE); if (m_valIm == (CString)"0") m_valIm.Empty(); m_valIm = m_valIm + (CString)"7"; UpdateData(FALSE); }// TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton1() { if (op) { m_valRe="0"; m_valIm="0"; UpdateData(FALSE); op=FALSE; } if(m_var1.GetCheck ()){ UpdateData(TRUE); if (m_valRe == (CString)"0") m_valRe.Empty(); m_valRe = m_valRe + (CString)"8"; UpdateData(FALSE); }else{ UpdateData(TRUE); if (m_valIm == (CString)"0") m_valIm.Empty(); m_valIm = m_valIm + (CString)"8"; UpdateData(FALSE); } // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton2() { if (op) { m_valRe="0"; m_valIm="0"; UpdateData(FALSE); op=FALSE; } if(m_var1.GetCheck ()){ UpdateData(TRUE); if (m_valRe == (CString)"0") m_valRe.Empty(); m_valRe = m_valRe + (CString)"9"; UpdateData(FALSE); }else{ UpdateData(TRUE); if (m_valIm == (CString)"0") m_valIm.Empty(); m_valIm = m_valIm + (CString)"9"; UpdateData(FALSE); } // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton9() { if (op) { m_valRe="0"; m_valIm="0"; UpdateData(FALSE); op=FALSE; } if(m_var1.GetCheck ()){ UpdateData(TRUE); if (m_valRe == (CString)"0") m_valRe.Empty(); m_valRe = m_valRe + (CString)"0"; UpdateData(FALSE); }else{ UpdateData(TRUE); if (m_valIm == (CString)"0") m_valIm.Empty(); m_valIm = m_valIm + (CString)"0"; UpdateData(FALSE); } // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton19() { m_valRe = (CString)"0"; m_valIm = (CString)"0"; UpdateData(FALSE); m_plus.EnableWindow (TRUE); m_minus.EnableWindow (TRUE); m_mul.EnableWindow (TRUE); m_div.EnableWindow (TRUE); // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton18() { m_valRe = (CString)"0"; m_valIm = (CString)"0"; UpdateData(FALSE); // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton17() { UpdateData(TRUE); if(m_var1.GetCheck ()){ len = m_valRe.GetLength (); m_valRe.Delete (len-1,1); if (m_valRe==(CString)"") m_valRe = (CString)"0"; }else{ len = m_valIm.GetLength (); m_valIm.Delete (len-1,1); if (m_valIm==(CString)"") m_valIm = (CString)"0"; } UpdateData(FALSE); // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton16() { UpdateData(TRUE); re = _tstof(m_valRe); im = _tstof(m_valIm); complex.CAdd(re, im); op=TRUE; m_plus.EnableWindow (FALSE); m_minus.EnableWindow (FALSE); m_mul.EnableWindow (FALSE); m_div.EnableWindow (FALSE); // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton12() { UpdateData(TRUE); re = _tstof(m_valRe); im = _tstof(m_valIm); complex.CRes(re, im); m_valRe.Format ((CString)"%0.1Lf", complex.GetRe()); m_valIm.Format ((CString)"%0.1Lf", complex.GetIm()); UpdateData(FALSE); op=TRUE; complex.ToFile (); m_plus.EnableWindow (TRUE); m_minus.EnableWindow (TRUE); m_mul.EnableWindow (TRUE); m_div.EnableWindow (TRUE); // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton15() { UpdateData(TRUE); re = _tstof(m_valRe); im = _tstof(m_valIm); complex.CSub(re, im); op=TRUE; m_plus.EnableWindow (FALSE); m_minus.EnableWindow (FALSE); m_mul.EnableWindow (FALSE); m_div.EnableWindow (FALSE); // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton14() { UpdateData(TRUE); re = _tstof(m_valRe); im = _tstof(m_valIm); complex.CMul(re, im); op=TRUE; m_plus.EnableWindow (FALSE); m_minus.EnableWindow (FALSE); m_mul.EnableWindow (FALSE); m_div.EnableWindow (FALSE); // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton13() { UpdateData(TRUE); re = _tstof(m_valRe); im = _tstof(m_valIm); complex.CDiv(re, im); op=TRUE; m_plus.EnableWindow (FALSE); m_minus.EnableWindow (FALSE); m_mul.EnableWindow (FALSE); m_div.EnableWindow (FALSE); // TODO: Add your control notification handler code here } void Cpract1Dlg::OnBnClickedButton11() { UpdateData(TRUE); re = _tstof(m_valRe); re = re * (-1); m_valRe.Format ((CString)"%0.1Lf", re); UpdateData(FALSE); // TODO: Add your control notification handler code here } Додаток 2 Код програми: #include "stdafx.h" #include "Document.h" #include "MainFrm.h" #include "DocumentDoc.h" #include "DocumentView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDocumentApp BEGIN_MESSAGE_MAP(CDocumentApp, CWinApp) //{{AFX_MSG_MAP(CDocumentApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP // Standard file based document commands ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) // Standard print setup command ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDocumentApp construction CDocumentApp::CDocumentApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance } ///////////////////////////////////////////////////////////////////////////// // The one and only CDocumentApp object CDocumentApp theApp; ///////////////////////////////////////////////////////////////////////////// // CDocumentApp initialization BOOL CDocumentApp::InitInstance() { AfxEnableControlContainer(); // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif // Change the registry key under which our settings are stored. // TODO: You should modify this string to be something appropriate // such as the name of your company or organization. SetRegistryKey(_T("Local AppWizard-Generated Applications")); LoadStdProfileSettings(); // Load standard INI file options (including MRU) // Register the application's document templates. Document templates // serve as the connection between documents, frame windows and views. CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CDocumentDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CDocumentView)); AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; // The one and only window has been initialized, so show and update it. m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) // No message handlers //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() // App command to run the dialog void CDocumentApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } Додаток 3 Код програми: struct STableRow { char num1[35]; char op[35]; char num2[35]; char dorv[35]; char rez[35]; }; class CStoreTableDoc : public CDocument { protected: // create from serialization only CStoreTableDoc(); DECLARE_DYNCREATE(CStoreTableDoc) // Attributes public: // Operations public: // Overrides public: virtual BOOL OnNewDocument(); virtual void Serialize(CArchive& ar); virtual BOOL OnOpenDocument(LPCTSTR lpszPathName); virtual void DeleteContents(); int GetRowTotal(){ return m_RowTotal; } STableRow * GetTable(){ return m_pTable; } // Implementation public: virtual ~CStoreTableDoc(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // Generated message map functions protected: DECLARE_MESSAGE_MAP() int m_RowTotal; STableRow * m_pTable; }; #pragma once class CStoreTableView : public CListView { protected: // create from serialization only CStoreTableView(); STableRow m_SelectedPos; DECLARE_DYNCREATE(CStoreTableView) // Attributes public: CStoreTableDoc* GetDocument() const; // Operations public: // Overrides public: afx_msg void OnNMDblclk(NMHDR *pNMHDR, LRESULT *pResult); virtual BOOL PreCreateWindow(CREATESTRUCT& cs); protected: virtual void OnInitialUpdate(); // called first time after construct // Implementation public: virtual ~CStoreTableView(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // Generated message map functions protected: DECLARE_MESSAGE_MAP() }; #ifndef _DEBUG // debug version in StoreTableView.cpp inline CStoreTableDoc* CStoreTableView::GetDocument() const { return reinterpret_cast<CStoreTableDoc*>(m_pDocument); } #endif #include "stdafx.h" #include "StoreTable.h" #include "StoreTableDoc.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CStoreTableDoc IMPLEMENT_DYNCREATE(CStoreTableDoc, CDocument) BEGIN_MESSAGE_MAP(CStoreTableDoc, CDocument) END_MESSAGE_MAP() // CStoreTableDoc construction/destruction CStoreTableDoc::CStoreTableDoc() { m_RowTotal = 0; } CStoreTableDoc::~CStoreTableDoc() { if (m_RowTotal) free(m_pTable), m_RowTotal = 0; } BOOL CStoreTableDoc::OnOpenDocument(LPCTSTR lpszPathName) { if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; int i; char szInBuff[1024]; char * szCurr; FILE * fIn = fopen(lpszPathName, "r"); while (!feof(fIn)) { fgets(szInBuff, 1024, fIn); m_RowTotal++; } fseek(fIn, 0, 0); if (m_RowTotal) { m_pTable = (STableRow *)malloc(m_RowTotal * sizeof(STableRow)); i = 0; while (!feof(fIn) && i < m_RowTotal) { fgets(szInBuff, 1024, fIn); if (szCurr = strtok(szInBuff, ",")) { sscanf(szCurr, "%s", m_pTable[i].num1); } if (szCurr = strtok(NULL, ",")) { sscanf(szCurr, "%s", m_pTable[i].op); } if (szCurr = strtok(NULL, ",")) { sscanf(szCurr, "%s", m_pTable[i].num2); } if (szCurr = strtok(NULL, ",")) { sscanf(szCurr, "%s", m_pTable[i].dorv); } if (szCurr = strtok(NULL, ",")) { sscanf(szCurr, "%s", m_pTable[i].rez); } i++; } m_RowTotal = i; } fclose(fIn); return TRUE; } void CStoreTableDoc::DeleteContents() { if (m_RowTotal) free(m_pTable), m_RowTotal = 0; CDocument::DeleteContents(); } BOOL CStoreTableDoc::OnNewDocument() { if (!
Антиботан аватар за замовчуванням

25.03.2013 23:28

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!