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

Implement_dyncreate(cLab3Doc, cDocument)

BEGIN_MESSAGE_MAP(CLab3Doc, CDocument)

//{{AFX_MSG_MAP(CLab3Doc)

ON_COMMAND(ID_DEL_LAST, OnDelLast)

ON_UPDATE_COMMAND_UI(ID_DEL_LAST, OnUpdateDelLast)

//}}AFX_MSG_MAP

ON_COMMAND(ID_DEL_FIRST, &CLab3Doc::OnDelFirst)

ON_UPDATE_COMMAND_UI(ID_DEL_FIRST, &CLab3Doc::OnUpdateDelFirst)

ON_COMMAND(ID_DEL_ALL, &CLab3Doc::OnDelAll)

ON_UPDATE_COMMAND_UI(ID_DEL_ALL, &CLab3Doc::OnUpdateDelAll)

ON_COMMAND(ID_INC1, &CLab3Doc::OnInc1)

ON_UPDATE_COMMAND_UI(ID_INC1, &CLab3Doc::OnUpdateInc1)

ON_COMMAND(ID_SORT, &CLab3Doc::OnSort)

ON_UPDATE_COMMAND_UI(ID_SORT, &CLab3Doc::OnUpdateSort)

END_MESSAGE_MAP()

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

// CLab3Doc construction/destruction

CLab3Doc::CLab3Doc()

{

// TODO: add one-time construction code here

}

CLab3Doc::~CLab3Doc()

{

}

BOOL CLab3Doc::OnNewDocument()

{

if (!CDocument::OnNewDocument())

return FALSE;

Stud s;

while (! v.empty()){

v.pop_back();

SetModifiedFlag(TRUE);

UpdateAllViews(0);}

s.f="Архипенко";

s.n="Николай";

s.pr=10;

s.sb=85;

v.push_back(s);

s.f="Безносов";

s.n="Антон";

s.pr=26;

s.sb=79;

v.push_back(s);

s.f="Буток";

s.n="Олег";

s.pr=0;

s.sb=82;

v.push_back(s);

s.f="Ваганов";

s.n="Александр";

s.pr=2;

s.sb=95;

v.push_back(s);

s.f="Туренок";

s.n="Алексей";

s.pr=22;

s.sb=91;

v.push_back(s);

s.f="Фомин";

s.n="Сергей";

s.pr=35;

s.sb=55;

v.push_back(s);

s.f="Волобуев";

s.n="Санек";

s.pr=17;

s.sb=43;

v.push_back(s);

s.f="Сильчев";

s.n="Женя";

s.pr=3;

s.sb=43;

v.push_back(s);

s.f="Равбель";

s.n="Никита";

s.pr=10;

s.sb=85;

v.push_back(s);

return TRUE;

}

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

// CLab3Doc commands

void CLab3Doc::SetTitle(LPCTSTR lpszTitle)

{

CString s(lpszTitle);

CString sn;

sn.Format(TEXT("ПОС-09а %i"), kol_vo_stud);

CDocument::SetTitle(sn);

}

void CLab3Doc::OnDelLast()

{

v.pop_back();

SetModifiedFlag(TRUE);

UpdateAllViews(0);

}

void CLab3Doc::OnUpdateDelLast(CCmdUI* pCmdUI)

{

pCmdUI->Enable(! v.empty());

}

void CLab3Doc::OnDelFirst()

{

v.erase(v.begin());

SetModifiedFlag(TRUE);

UpdateAllViews(0);

// TODO: добавьте свой код обработчика команд

}

void CLab3Doc::OnUpdateDelFirst(CCmdUI *pCmdUI)

{

pCmdUI->Enable(! v.empty());

// TODO: добавьте свой код обработчика ИП обновления команд

}

void CLab3Doc::OnDelAll()

{ while (! v.empty()){

v.pop_back();

SetModifiedFlag(TRUE);

UpdateAllViews(0);}

// TODO: добавьте свой код обработчика команд

}

void CLab3Doc::OnUpdateDelAll(CCmdUI *pCmdUI)

{

pCmdUI->Enable(! v.empty());

// TODO: добавьте свой код обработчика ИП обновления команд

}

void CLab3Doc::OnInc1()

{

int n=v.size();

if (v[n-1].sb!=0)

{

v[n-1].sb --;

SetModifiedFlag(TRUE);

UpdateAllViews(0);

}

}

void CLab3Doc::OnUpdateInc1(CCmdUI *pCmdUI)

{ pCmdUI->Enable(! v.empty());

// TODO: добавьте свой код обработчика ИП обновления команд

}

bool func(const Stud& l,const Stud& r)

{

return (l.f<r.f);

}

void CLab3Doc::OnSort()

{ sort(v.begin(),v.end(),func);

// TODO: добавьте свой код обработчика команд

}

void CLab3Doc::OnUpdateSort(CCmdUI *pCmdUI)

{

pCmdUI->Enable(! v.empty());

// TODO: добавьте свой код обработчика ИП обновления команд

}

// DiagView.cpp : implementation file

//

#include "stdafx.h"

#include "lab3.h"

#include "DiagView.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

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

// CDiagView

IMPLEMENT_DYNCREATE(CDiagView, CScrollView)

CDiagView::CDiagView()

{

}

CDiagView::~CDiagView()

{

}

BEGIN_MESSAGE_MAP(CDiagView, CScrollView)

//{{AFX_MSG_MAP(CDiagView)

// NOTE - the ClassWizard will add and remove mapping macros here.

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

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

// CDiagView drawing

void CDiagView::OnInitialUpdate()

{

CScrollView::OnInitialUpdate();

CSize sizeTotal;

// TODO: calculate the total size of this view

sizeTotal.cx = sizeTotal.cy = 100;

SetScrollSizes(MM_TEXT, sizeTotal);

}

/*void CDiagView::OnDraw(CDC* pDC)

{

CLab3Doc* pDoc = (CLab3Doc*)GetDocument();

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

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

{

pDC->LineTo(10, 10*i+10);

pDC->LineTo(100+5*pDoc->v[i].sb, 10*i+10)

}

}

*/

void CDiagView::OnDraw(CDC* pDC)

{

CLab3Doc* pDoc = (CLab3Doc*)GetDocument();

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

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

{

//pDC->Rectangle(10*i+100, 100+2*pDoc->v[i].sb, 10*i,pDoc->v[i].sb);

// pDC->Rectangle(10*i+10, 10*i+10,10,10);

pDC->LineTo((1+i)*2, pDoc->v[i].sb);

}

pDC->LineTo((pDoc->v.size()+1)*2,0);

}

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

// CDiagView diagnostics

#ifdef _DEBUG

void CDiagView::AssertValid() const

{

CScrollView::AssertValid();

}

void CDiagView::Dump(CDumpContext& dc) const

{

CScrollView::Dump(dc);

}

#endif //_DEBUG

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

// CDiagView message handlers

// lab3Doc.h : interface of the CLab3Doc class

//

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

#if !defined(AFX_LAB3DOC_H__E1076274_2346_4D65_9829_3A3EC66D3309__INCLUDED_)

#define AFX_LAB3DOC_H__E1076274_2346_4D65_9829_3A3EC66D3309__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

struct Stud

{

public:

CString f;

CString n;

int pr;

int sb;

};

class CLab3Doc : public CDocument

{

protected: // create from serialization only

CLab3Doc();

DECLARE_DYNCREATE(CLab3Doc)

// Attributes

public:

// Operations

public:

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CLab3Doc)

public:

virtual BOOL OnNewDocument();

virtual void Serialize(CArchive& ar);

virtual void SetTitle(LPCTSTR lpszTitle);

//}}AFX_VIRTUAL

// Implementation

public:

std::vector<Stud> v;

virtual ~CLab3Doc();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected:

// Generated message map functions

protected:

//{{AFX_MSG(CLab3Doc)

afx_msg void OnDelLast();

afx_msg void OnUpdateDelLast(CCmdUI* pCmdUI);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

public:

afx_msg void OnDelFirst();

afx_msg void OnUpdateDelFirst(CCmdUI *pCmdUI);

afx_msg void OnDelAll();

afx_msg void OnUpdateDelAll(CCmdUI *pCmdUI);

afx_msg void OnInc1();

afx_msg void OnUpdateInc1(CCmdUI *pCmdUI);

afx_msg void OnSort();

afx_msg void OnUpdateSort(CCmdUI *pCmdUI);

};

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

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_LAB3DOC_H__E1076274_2346_4D65_9829_3A3EC66D3309__INCLUDED_)