Смекни!
smekni.com

Разработка подсистемы учета гематологических анализов для КДЛ ГБСМП-2 (стр. 11 из 12)

#include "Hematology_CounterDoc.h"

#include "Hematology_CounterView.h"

#include "Form.h"

#include "MainFrm.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

IMPLEMENT_DYNCREATE(CHematology_CounterView, CFormView)

BEGIN_MESSAGE_MAP(CHematology_CounterView, CFormView)

ON_WM_DESTROY()

ON_WM_CREATE()

ON_COMMAND_RANGE(ID_LEIKOFORMULA,ID_MIELOGRAMMA,&CHematology_CounterView::OnDATA)

END_MESSAGE_MAP()

CHematology_CounterView::CHematology_CounterView()

: CFormView(CHematology_CounterView::IDD),dForm(NULL)

{

}

CHematology_CounterView::~CHematology_CounterView()

{

if(dForm){delete dForm;dForm=NULL;}

}

void CHematology_CounterView::DoDataExchange(CDataExchange* pDX)

{

CFormView::DoDataExchange(pDX);

if(dForm)dForm->UpdateData(0);

}

BOOL CHematology_CounterView::PreCreateWindow(CREATESTRUCT& cs)

{

return CFormView::PreCreateWindow(cs);

}

void CHematology_CounterView::OnInitialUpdate()

{

CFormView::OnInitialUpdate();

GetParentFrame()->RecalcLayout();

ResizeParentToFit();

CHematology_CounterDoc* Doc=GetDocument();

if(!Leikoformula::Create(&dForm,&Doc->DATA))return;

dForm->Create(IDD_FORM_LEIKOFORMULA,this);

CreateMenuParametre(IDR_LEIKOFORMULA);

}

#ifdef _DEBUG

void CHematology_CounterView::AssertValid() const

{

CFormView::AssertValid();

}

void CHematology_CounterView::Dump(CDumpContext& dc) const

{

CFormView::Dump(dc);

}

CHematology_CounterDoc* CHematology_CounterView::GetDocument() const

{

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

return (CHematology_CounterDoc*)m_pDocument;

}

#endif

void CHematology_CounterView::OnDestroy()

{

dForm->DestroyWindow();

if(dForm){delete dForm;dForm=NULL;}

CFormView::OnDestroy();

}

int CHematology_CounterView::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFormView::OnCreate(lpCreateStruct) == -1)return -1;

return 0;

}

void CHematology_CounterView::OnDATA(UINT id)

{

CHematology_CounterDoc* Doc=GetDocument();

switch(id)

{

case ID_LEIKOFORMULA:

{

if(!Leikoformula::Create(&dForm,&Doc->DATA))return;

}

break;

case ID_TROMBOCITY:

{

if(!Trombocity::Create(&dForm,&Doc->DATA))return;

break;

}

case ID_MIELOGRAMMA:

if(!Mielogramma::Create(&dForm,&Doc->DATA))return;

break;

}

CreateMenuParametre(IDR_LEIKOFORMULA+id-ID_LEIKOFORMULA);

dForm->Create(IDD_FORM_LEIKOFORMULA+id-ID_LEIKOFORMULA,this);

Doc->Undo.RemoveAll();

}

void CHematology_CounterView::CreateMenuParametre(UINT ID)

{

CMenu** parametres=&(((CMainFrame*)AfxGetMainWnd())->ParametresMenu);

if((*parametres)){(*parametres)->DestroyMenu();delete (*parametres);}

(*parametres)=new CMenu;

(*parametres)->LoadMenuW(ID);

AfxGetMainWnd()->GetMenu()->ModifyMenuW(2,MF_BYPOSITION| MF_POPUP ,(UINT_PTR)((*parametres)->m_hMenu),L"Параметры");

DestroyAcceleratorTable(((CMainFrame*)AfxGetMainWnd())->m_hAccelTable);

((CMainFrame*)AfxGetMainWnd())->m_hAccelTable=LoadAccelerators(AfxGetApp()->m_hInstance,MAKEINTRESOURCEW(ID));

AfxGetMainWnd()->GetMenu()->CheckMenuRadioItem(ID_LEIKOFORMULA,ID_MIELOGRAMMA,ID_LEIKOFORMULA+ID-IDR_LEIKOFORMULA,MF_BYCOMMAND);

((CMainFrame*)AfxGetMainWnd())->ParametresToolBar.LoadToolBar(ID);

}

Представление и определение класса Data

#pragma once

class Data

{

protected:

Data();

public:

virtual ~Data();

virtual void RemoveAll()=0;

virtual bool Add(int*)=0;

virtual void Remove()=0;

};

Реализация класса Data

#include "StdAfx.h"

#include "Data.h"

Data::Data(){}

Data::~Data(){}

Представление и определение класса Leikoformula

#pragma once

#include "Data.h"

class CDialog;

class Leikoformula: public Data

{

private:

int Sum;

public:

Leikoformula();

int & GetSum();

static bool Create(CDialog ** dForm,Data** pData);

virtual void RemoveAll();

virtual bool Add(int * pLeikoformula);

virtual void Remove();

int NORMOBLAST;

int PALOCHKOYADERN;

int SEGMEHTARN;

int MONOCIT;

int LIMFOCIT;

int MIELOCIT;

int METAMELOCIT;

int EOZILOFIL;

int BAZOFIL;

};

Реализация класса Leikoformula

#include "StdAfx.h"

#include "Leikoformula.h"

#include "Form.h"

Leikoformula::Leikoformula():Data(),PALOCHKOYADERN(0),SEGMEHTARN(0),MONOCIT(0),LIMFOCIT(0),MIELOCIT(0),METAMELOCIT(0),EOZILOFIL(0),BAZOFIL(0),NORMOBLAST(0),Sum(0)

{

}

int & Leikoformula::GetSum()

{

return Sum;

}

void Leikoformula::RemoveAll()

{

PALOCHKOYADERN=SEGMEHTARN=MONOCIT=LIMFOCIT=MIELOCIT=METAMELOCIT=EOZILOFIL=BAZOFIL=NORMOBLAST=Sum=0;

}

bool Leikoformula::Add(int * pLeikoformula)

{

if(100<=Sum)return false;

Sum++;

(*pLeikoformula)++;

return true;

}

void Leikoformula::Remove()

{

if(0<Sum)Sum--;

}

bool Leikoformula::Create(CDialog ** dForm,Data** pData)

{

if((*dForm)&&(*dForm)->IsKindOf(RUNTIME_CLASS(Form_Leikoformula)))return false;

if((*dForm)){(*dForm)->DestroyWindow();delete (*dForm);(*dForm)=0;}

(*dForm)=new Form_Leikoformula();

if((*pData)){delete (*pData);(*pData)=0;}

(*pData)=new Leikoformula;

((Form_Leikoformula*)*dForm)->pData=(*pData);

return true;

}

Реализация класса Mielogramma

#include "StdAfx.h"

#include "Mielogramma.h"

#include "Form.h"

Mielogramma::Mielogramma():Data(),PALOCHKOYADERN(0),SEGMEHTARN(0),MONOCIT(0),LIMFOCIT(0),MIELOCIT(0),METAMELOCIT(0),EOZILOFIL(0),BAZOFIL(0)

,_9(0)

,_10(0)

,_11(0)

,_12(0)

,_13(0)

,_14(0)

,_15(0)

,_16(0)

,_17(0)

,_18(0)

,_19(0)

,_20(0)

,_21(0)

,_22(0)

,_23(0)

,_24(0)

{

}

Mielogramma::~Mielogramma(){}

bool Mielogramma::Create(CDialog ** dForm,Data** pData)

{

if((*dForm)&&(*dForm)->IsKindOf(RUNTIME_CLASS(Form_Mielogramma)))return false;

(*dForm)->DestroyWindow();

if((*dForm)){delete (*dForm);(*dForm)=0;}

(*dForm)=new Form_Mielogramma();

if((*pData)){delete (*pData);(*pData)=0;}

(*pData)=new Mielogramma;

((Form_Mielogramma*)*dForm)->pData=(*pData);

return true;

}

void Mielogramma::RemoveAll()

{

PALOCHKOYADERN=SEGMEHTARN=MONOCIT=LIMFOCIT=MIELOCIT=METAMELOCIT=EOZILOFIL=BAZOFIL=_9=_10=_11=_12=_13=_14=_15=_16=_17=_18=_19=_20=_21=_22=_23=_24=0;

}

bool Mielogramma::Add(int * pMielogramma)

{

(*pMielogramma)++;

return true;

}

void Mielogramma::Remove(){}

Представление и определение класса Trombocity

#pragma once

#include "Data.h"

class Data;

class CDialog;

class Trombocity: public Data

{

public:

Trombocity();

~Trombocity();

static bool Create(CDialog ** dForm,Data** pData);

virtual void RemoveAll();

virtual bool Add(int * pTrombocity);

virtual void Remove();

};

Реализация класса Trombocity

#include "StdAfx.h"

#include "Trombocity.h"

#include "Form.h"

Trombocity::Trombocity():Data(){}

Trombocity::~Trombocity(){}

bool Trombocity::Create(CDialog ** dForm,Data** pData)

{

if((*dForm)&&(*dForm)->IsKindOf(RUNTIME_CLASS(Form_Trombocity)))return false;

(*dForm)->DestroyWindow();

if((*dForm)){delete (*dForm);(*dForm)=0;}

(*dForm)=new Form_Trombocity();

if((*pData)){delete (*pData);(*pData)=0;}

(*pData)=new Trombocity;

((Form_Trombocity*)*dForm)->pData=(*pData);

return true;

}

void Trombocity::RemoveAll(){}

bool Trombocity::Add(int * pTrombocity){return 1;}

void Trombocity::Remove(){}

Представление и определение классов: Form_Leikoformula, Form_Mielogramma, Form_Trombocity.

#pragma once

#include "resource.h"

class Data;

class Form_Leikoformula : public CDialog

{

DECLARE_DYNAMIC(Form_Leikoformula)

public:

Form_Leikoformula(CWnd* pParent = NULL); // standard constructor

virtual ~Form_Leikoformula();

enum { IDD = IDD_FORM_LEIKOFORMULA };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

DECLARE_MESSAGE_MAP()

public:

Data * pData;

};

class Form_Mielogramma : public CDialog

{

DECLARE_DYNAMIC(Form_Mielogramma)

public:

Form_Mielogramma(CWnd* pParent = NULL); // standard constructor

virtual ~Form_Mielogramma();

enum { IDD = IDD_FORM_MIELOGRAMMA };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

DECLARE_MESSAGE_MAP()

public:

Data * pData;

};

class Form_Trombocity : public CDialog

{

DECLARE_DYNAMIC(Form_Trombocity)

public:

Form_Trombocity(CWnd* pParent = NULL); // standard constructor

virtual ~Form_Trombocity();

enum { IDD = IDD_FORM_TROMBOCITY };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

DECLARE_MESSAGE_MAP()

public:

Data * pData;

};

Реализация классов: Form_Leikoformula, Form_Mielogramma, Form_Trombocity.

#include "stdafx.h"

#include "Hematology_Counter.h"

#include "Form.h"

#include "Leikoformula.h"

IMPLEMENT_DYNAMIC(Form_Leikoformula, CDialog)

Form_Leikoformula::Form_Leikoformula(CWnd* pParent /*=NULL*/)

: CDialog(Form_Leikoformula::IDD, pParent),pData(NULL)

{

}

Form_Leikoformula::~Form_Leikoformula()

{

}

void Form_Leikoformula::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

if(!pData)return;

Leikoformula* LEIKOFORMULA=(Leikoformula*)pData;

DDX_Text(pDX, IDC_STATIC_PALOCHKOYADERN,LEIKOFORMULA->PALOCHKOYADERN);

DDX_Text(pDX, IDC_STATIC_SEGMEHTARN,LEIKOFORMULA->SEGMEHTARN);

DDX_Text(pDX, IDC_STATIC_MONOCIT, LEIKOFORMULA->MONOCIT);

DDX_Text(pDX, IDC_STATIC_LIMFOCIT, LEIKOFORMULA->LIMFOCIT);

DDX_Text(pDX, IDC_STATIC_MIELOCIT,LEIKOFORMULA->MIELOCIT);

DDX_Text(pDX, IDC_STATIC_METAMELOCIT, LEIKOFORMULA->METAMELOCIT);

DDX_Text(pDX, IDC_STATIC_EOZILOFIL,LEIKOFORMULA->EOZILOFIL);

DDX_Text(pDX, IDC_STATIC_BAZOFIL, LEIKOFORMULA->BAZOFIL);

DDX_Text(pDX, IDC_STATIC_NORMOBLAST,LEIKOFORMULA->NORMOBLAST);

DDX_Text(pDX, IDC_STATIC_SUM, LEIKOFORMULA->GetSum());

}

BEGIN_MESSAGE_MAP(Form_Leikoformula, CDialog)

END_MESSAGE_MAP()

#include "Mielogramma.h"

IMPLEMENT_DYNAMIC(Form_Mielogramma, CDialog)

Form_Mielogramma::Form_Mielogramma(CWnd* pParent /*=NULL*/)

: CDialog(Form_Mielogramma::IDD, pParent),pData(NULL)

{

}

Form_Mielogramma::~Form_Mielogramma()

{

}

void Form_Mielogramma::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

if(!pData)return;

Mielogramma* MIELOGRAMMA=(Mielogramma*)pData;

DDX_Text(pDX, IDC_STATIC_PALOCHKOYADERN,MIELOGRAMMA->PALOCHKOYADERN);

DDX_Text(pDX, IDC_STATIC_SEGMEHTARN,MIELOGRAMMA->SEGMEHTARN);

DDX_Text(pDX, IDC_STATIC_MONOCIT, MIELOGRAMMA->MONOCIT);

DDX_Text(pDX, IDC_STATIC_LIMFOCIT, MIELOGRAMMA->LIMFOCIT);

DDX_Text(pDX, IDC_STATIC_MIELOCIT,MIELOGRAMMA->MIELOCIT);

DDX_Text(pDX, IDC_STATIC_METAMELOCIT, MIELOGRAMMA->METAMELOCIT);

DDX_Text(pDX, IDC_STATIC_EOZILOFIL,MIELOGRAMMA->EOZILOFIL);

DDX_Text(pDX, IDC_STATIC_BAZOFIL, MIELOGRAMMA->BAZOFIL);

DDX_Text(pDX, IDC_STATIC_9,MIELOGRAMMA->_9);

DDX_Text(pDX, IDC_STATIC_10,MIELOGRAMMA->_10);

DDX_Text(pDX, IDC_STATIC_11, MIELOGRAMMA->_11);

DDX_Text(pDX, IDC_STATIC_12, MIELOGRAMMA->_12);

DDX_Text(pDX, IDC_STATIC_13,MIELOGRAMMA->_13);

DDX_Text(pDX, IDC_STATIC_14, MIELOGRAMMA->_14);

DDX_Text(pDX, IDC_STATIC_15,MIELOGRAMMA->_15);

DDX_Text(pDX, IDC_STATIC_16,MIELOGRAMMA->_16);

DDX_Text(pDX, IDC_STATIC_17,MIELOGRAMMA->_17);

DDX_Text(pDX, IDC_STATIC_18, MIELOGRAMMA->_18);

DDX_Text(pDX, IDC_STATIC_19, MIELOGRAMMA->_19);

DDX_Text(pDX, IDC_STATIC_20,MIELOGRAMMA->_20);

DDX_Text(pDX, IDC_STATIC_21, MIELOGRAMMA->_21);

DDX_Text(pDX, IDC_STATIC_22,MIELOGRAMMA->_22);

DDX_Text(pDX, IDC_STATIC_23,MIELOGRAMMA->_23);

DDX_Text(pDX, IDC_STATIC_24,MIELOGRAMMA->_24);

}

BEGIN_MESSAGE_MAP(Form_Mielogramma, CDialog)

END_MESSAGE_MAP()

#include "Trombocity.h"

IMPLEMENT_DYNAMIC(Form_Trombocity, CDialog)

Form_Trombocity::Form_Trombocity(CWnd* pParent /*=NULL*/)

: CDialog(Form_Trombocity::IDD, pParent),pData(NULL)

{

}

Form_Trombocity::~Form_Trombocity()

{

}

void Form_Trombocity::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

if(!pData)return;

}

BEGIN_MESSAGE_MAP(Form_Trombocity, CDialog)

END_MESSAGE_MAP()

Приложение Ж – ОБОСНОВАНИЕ МОДЕЛИ ВЫБОРА ЖИЗНЕННОГО ЦИКЛА

Таблица Е.1 - Выбор модели ЖЦ на основе характеристик требований

Требования Каскадная V-образная Прото-типиро-вание Спиральная RAD Инкрементная
Являются ли требования легко определимыми и/или хорошо известными Да Да Нет Нет Да Нет
Могут ли требования заранее определятся в цикле Да Да Нет Нет Да Да
Часто ли изменяются требования в цикле Нет Нет Да Да Нет Нет
Нужно ли демонстрировать требования с целью определения Нет Нет Да Да Да Нет
Требуется ли демонстрация возможностей проверка концепции Нет Нет Да Да Да Нет
Будут ли требования отражать сложность системы Нет Нет Да Да Нет Да
Обладает ли требование функциональными свойствами на раннем этапе Нет Нет Да Да Да Да

Таблица Е.2 - Выбор модели ЖЦ на основе характеристик участников команды разработчиков

Команда разработчиков проекта Каскадная V- образная Прото-типиро-вание Спиральная RAD Инкрементная
Являются ли проблемы предметной области проекта новыми для большинства разработчиков Нет Нет Да Да Нет Нет
Является ли технология предметной области проекта новой для большинства разработчиков Да Да Нет Да Да Да
Являются ли инструменты, используемые проектом, новыми для большинства разработчиков Да Да Нет Да Да Нет
Изменяются ли роли участников проекта во время ЖЦ Нет Нет Да Да Нет Да
Могут ли разработчики проекта пройти обучение Нет Да Нет Нет Да Да
Является ли структура более значимой для разработчиков, чем гибкость Да Да Нет Нет Да Да
Будет ли менеджер проекта строго отслеживать прогресс проекта Да Да Нет Да Нет Да
Важна легкость распределения ресурсов Да Да Нет Нет Да Да
Приемлет ли команда равноправные обзоры инспекций, менеджмент/обзоры заказчиков, а так же стадии Да Да Да Да Да Да

Таблица В.З - Выбор модели ЖЦ на основе характеристик типа проектов и рисков