ЗВІТ

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

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

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

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

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

Міністерство освіти та науки України Національний університет «Львівська політехніка» Інститут комп’ютерних технологій автоматики і метрології Кафедра ЕОМ ЗВІТ З навчальної практики з дисципліни Об'єктно орієнтованого прогрограмування Львів 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:03-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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