Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Министерство образования и науки3.doc
Скачиваний:
1
Добавлен:
29.07.2019
Размер:
112.13 Кб
Скачать

Министерство образования и науки, молодежи и спорта Украины

ГВУЗ ДонНТУ Институт информатики и искусственного интеллекта

Д6.050103.1.01.09/256.ЛР

Лабораторная работа № 3

по курсу: «Конструирование программного обеспечения»

Тема: «Конструирование приложений MFC в архитектуре документ-вид»

Выполнил: ст.гр. ПОC-09в

Г ончаренко А.И.

(дата, подпись)

Проверили:

асс. Анипко Г.Н.

(дата, подпись)

а сс. Курило Е. В.

(дата, подпись)

Донецк–2011 г.

Задание:

  1. С использованием AppWizard создать SDI (нечетные номера по журналу) или MDI (четные номера) приложение для работы с документом определенного типа.

  2. Документ имеет расширение YХХ (где Y – номер группы A,B или C, а ХХ - номер по журналу) и содержит название группы, список фамилий и имен студентов группы в порядке возрастания их номеров, а также средний балл ECTS (0-100) и количество пропусков занятий для каждого из студентов. Переопределить сериализацию документа и протестировать сохранение и загрузку документа.

  3. Реализовать отображение (вид) отсортированного списка студентов группы в определенном порядке: Фамилия (возрастание).

  4. Приложение отображает в заголовке название документа, название группы и количество студентов в документе (переопределить метод SetTitle).

  5. Приложение отображает уникальную пиктограмму для документа, содержащую инициалы студента, выполнившего работу.

  6. уменьшение количества пропусков на 1 (до 0) для последнего студента из списка. а также удаление первого, последнего и всех студентов из списка.

  7. Реализовать предварительный просмотр, печать документа и вызов диалога настройки печати.

  8. * Реализовать класс дополнительного вида документа: круговая диаграмма количества пропусков (процент пропусков кратных 3); +дополнительные баллы за собственные 2D, 3D, 4D, 5D отображения.

  9. * Реализовать с использованием класса CSplitterWnd отображение нескольких, выбор и переключение вида через меню, акселераторы и панель инструментов.

  10. * Реализовать систему контекстной помощи.

// lab3View.cpp : implementation of the CLab3View class

//

#include "stdafx.h"

#include "lab3.h"

#include "lab3Doc.h"

#include "lab3View.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CLab3View

IMPLEMENT_DYNCREATE(CLab3View, CScrollView)

BEGIN_MESSAGE_MAP(CLab3View, CScrollView)

//{{AFX_MSG_MAP(CLab3View)

// 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 printing commands

ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CLab3View construction/destruction

CLab3View::CLab3View()

{

// TODO: add construction code here

}

CLab3View::~CLab3View()

{

}

BOOL CLab3View::PreCreateWindow(CREATESTRUCT& cs)

{

// TODO: Modify the Window class or styles here by modifying

// the CREATESTRUCT cs

return CScrollView::PreCreateWindow(cs);

}

/////////////////////////////////////////////////////////////////////////////

// CLab3View drawing

void CLab3View::OnDraw(CDC* pDC)

{

CLab3Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

int n = pDoc->v.size();

for (int i=0; i<n; i++)

{

CString s;

s.Format("[%i]", i+1);

CString s1;

s1.Format("%i %i", pDoc->v[i].pr, pDoc->v[i].sb);

CString s2;

s2.Format("%s %s",pDoc->v[i].f,pDoc->v[i].n);

pDC->TextOut(10, 20*i+10,s+" "+s2+" "+s1);

///pDC->TextOut(10, 20*i+10,s+" "+" "+" "+pDoc->v[i].f+" "+pDoc->v[i].n+" "+s1);

}

}

void CLab3View::OnInitialUpdate()

{

CScrollView::OnInitialUpdate();

CLab3Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

SetScrollSizes(MM_TEXT, CSize(300, pDoc->v.size()*20+20));

}

/////////////////////////////////////////////////////////////////////////////

// CLab3View printing

BOOL CLab3View::OnPreparePrinting(CPrintInfo* pInfo)

{

// default preparation

return DoPreparePrinting(pInfo);

}

void CLab3View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

// TODO: add extra initialization before printing

}

void CLab3View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

// TODO: add cleanup after printing

}

/////////////////////////////////////////////////////////////////////////////

// CLab3View diagnostics

#ifdef _DEBUG

void CLab3View::AssertValid() const

{

CScrollView::AssertValid();

}

void CLab3View::Dump(CDumpContext& dc) const

{

CScrollView::Dump(dc);

}

CLab3Doc* CLab3View::GetDocument() // non-debug version is inline

{

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLab3Doc)));

return (CLab3Doc*)m_pDocument;

}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////

// CLab3View message handlers

// lab3Doc.cpp : implementation of the CLab3Doc class

//

#include "stdafx.h"

#include "lab3.h"

#include <algorithm>

#include "lab3Doc.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CLab3Doc