DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

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

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Вивчення структури програми для Windows на основі класів бібліотеки MFC

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

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

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

Рік:
2006
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Технології проектування комп’ютерних систем
Група:
КН
Коротко про документ

Про що ця робота

Звіт присвячено вивченню структури Windows-програм на базі бібліотеки MFC та побудові SDI-додатків. У роботі реалізовано ієрархію планіметричних фігур мовою C++ з їх подальшим графічним виведенням.

У роботі розглядаються

  • Програмування для Windows
  • Бібліотека MFC
  • Об'єктно-орієнтоване програмування
  • Мова програмування C++
  • Графічний інтерфейс
  • Ієрархія класів
  • Геометричні фігури

Зміст і розділи

  1. Мета роботи
  2. Завдання для роботи
  3. Програма та результати її виконання
  4. Текст програми файлу lab9doc.h
  5. Висновки
Для кого:Студенти технічних спеціальностей та розробники програмного забезпечення
Викладачі:Викладач кафедри

Ключові поняття

MFCSDI-програмаC++Windowsкласієрархіяпланіметричні фігуриCDCCDocumentCView

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

Міністерство освіти і науки України Національний університет „ Львівська політехніка “ Кафедра ІСМ  Звіт про виконання лабораторної роботи № 9 з курсу „Технології проектування програмних систем” на тему: «Вивчення структури програми для Windows на основі класів бібліотеки MFC» Львів-2006 Мета роботи: вивчення структури програми для Windows, побудованої на основі класів бібліотеки MFC як SDI-програма. Завдання для роботи Розробити базову SDI MFC-програму на мові С++ для Windows. Реалізувати ієрархію планіметричних фігур, здійснити їх вивід. Програма та результати її виконання #include "stdafx.h" #include "Lab9.h" #include "Lab9Doc.h" #include "Lab9View.h" #include "ChoiceDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif int choice=-1; ///////////////////////////////////////////////////////////////////////////// // CLab9View IMPLEMENT_DYNCREATE(CLab9View, CView) BEGIN_MESSAGE_MAP(CLab9View, CView) //{{AFX_MSG_MAP(CLab9View) ON_WM_LBUTTONDBLCLK() //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CLab9View construction/destruction CLab9View::CLab9View() { // TODO: add construction code here } CLab9View::~CLab9View() { } BOOL CLab9View::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CLab9View drawing void CLab9View::OnDraw(CDC* pDC) { CLab9Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); Lockable *shape; Point p1(10,10), p2(200,50), p3(50,200); switch (choice) { case 0: shape = new Triangle(p1,p2,p3); break; case 1: shape = new Rect(200,100); break; case 2: shape = new Square(200); break; case 3: shape = new Round(100); break; default: shape = NULL; } //draw code for native data if (shape) shape->OnDraw(pDC,10,10); if (shape) delete shape; } ///////////////////////////////////////////////////////////////////////////// // CLab9View printing BOOL CLab9View::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CLab9View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CLab9View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CLab9View diagnostics #ifdef _DEBUG void CLab9View::AssertValid() const { CView::AssertValid(); } void CLab9View::Dump(CDumpContext& dc) const { CView::Dump(dc); } CLab9Doc* CLab9View::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLab9Doc))); return (CLab9Doc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CLab9View message handlers void CLab9View::OnLButtonDblClk(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CChoiceDlg dlg; if(dlg.DoModal()==IDOK) choice = dlg.m_radio; Invalidate(); CView::OnLButtonDblClk(nFlags, point); } Текст програми файлу Lab9Doc.h: #if !defined(AFX_LAB9DOC_H__34F88DCF_2546_4559_98DF_188625F8B8AB__INCLUDED_) #define AFX_LAB9DOC_H__34F88DCF_2546_4559_98DF_188625F8B8AB__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include <math.h> #define Pi 3.14 class CLab9Doc : public CDocument { protected: // create from serialization only CLab9Doc(); DECLARE_DYNCREATE(CLab9Doc) // Attributes public: // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CLab9Doc) public: virtual BOOL OnNewDocument(); virtual void Serialize(CArchive& ar); //}}AFX_VIRTUAL // Implementation public: virtual ~CLab9Doc(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // Generated message map functions protected: //{{AFX_MSG(CLab9Doc) // NOTE - the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code ! //}}AFX_MSG DECLARE_MESSAGE_MAP() }; class Math { public: static int sqr(int exp) { return exp*exp; } static double sqr(double exp) { return exp*exp; } }; class Lockable // interface { public: virtual double calcArea(void) = 0; virtual double calcPerimetr(void) = 0; virtual void OnDraw(CDC *pDC, int x, int y) = 0; }; class Point { public: double x,y; Point(double _x=0, double _y=0) : x(_x), y(_y) {} }; class Triangle: public Lockable { private: double a, b, c; Point p1, p2, p3; public: Triangle(Point _p1, Point _p2, Point _p3) : p1(_p1), p2(_p2), p3(_p3) { a = sqrt(Math::sqr(p1.x-p2.x) + Math::sqr(p1.y-p2.y)); b = sqrt(Math::sqr(p2.x-p3.x) + Math::sqr(p2.y-p3.y)); c = sqrt(Math::sqr(p1.x-p3.x) + Math::sqr(p1.y-p3.y)); } double calcArea(void) { double p = calcPerimetr()/2; return sqrt(p*(p-a)*(p-b)*(p-c)); } double calcPerimetr(void) {return a+b+c;} void OnDraw(CDC *pDC, int x, int y) { pDC->MoveTo((int)p1.x+x,(int)p1.y+y); pDC->LineTo((int)p2.x+x,(int)p2.y+y); pDC->LineTo((int)p3.x+x,(int)p3.y+y); pDC->LineTo((int)p1.x+x,(int)p1.y+y); } }; class Rect: public Lockable { protected: double width; double height; public: Rect(double w=0, double h=0) : width(w), height(h) {} double calcArea(void) {return width*height;} double calcPerimetr(void) {return 2*(width+height);} virtual int isSquare() { if (width==height) return true; else return false; } virtual void OnDraw(CDC *pDC, int x, int y) { pDC->Rectangle(0+x,0+y,(int)width-1+x,(int)height-1+y); } }; class Square : public Rect { public: Square(double a) : Rect(a,a) {} virtual int isSquare() { return true; } virtual void OnDraw(CDC *pDC, int x, int y) { Rect::OnDraw(pDC, x, y); } }; class Round : public Lockable { private: double radius; public: Round(double r=0) : radius(r) {} double calcArea(void) {return Pi*radius*radius;} double calcPerimetr(void) {return 2*Pi*radius;} virtual void OnDraw(CDC *pDC, int x, int y) { pDC->Ellipse(x, y, (int)(x+radius+radius), (int)(y+radius+radius)); } };  Рис.1. Вигляд вікна програми після виконання  Рис.2. Вікно довідки  Рис.3. Вікно після виклику діалогового вікна Висновки
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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