⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataanalisisview.cpp

📁 数据分析系统主要研究大量的数据
💻 CPP
字号:
// dataanalisisView.cpp : implementation of the CDataanalisisView class
//

#include "stdafx.h"
#include "dataanalisis.h"
#include "Dlg_row.h"
#include "Dlg_cum.h"
#include "Dlg_zhishu.h"
#include "Dlg_moveavg.h"
#include "Dlg_location.h"
#include "Dlg_common.h"
#include "math.h"

#include "dataanalisisDoc.h"
#include "dataanalisisView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDataanalisisView

IMPLEMENT_DYNCREATE(CDataanalisisView, CView)

BEGIN_MESSAGE_MAP(CDataanalisisView, CView)
	//{{AFX_MSG_MAP(CDataanalisisView)
	ON_COMMAND(ID_START, OnStart)
	ON_COMMAND(ID_CUM, OnCum)
	ON_COMMAND(ID_ZHISHU, OnZhishu)
	ON_COMMAND(ID_MOVEAVG, OnMoveavg)
	ON_UPDATE_COMMAND_UI(ID_CUM, OnUpdateCum)
	ON_UPDATE_COMMAND_UI(ID_ZHISHU, OnUpdateZhishu)
	ON_UPDATE_COMMAND_UI(ID_MOVEAVG, OnUpdateMoveavg)
	ON_UPDATE_COMMAND_UI(ID_START, OnUpdateStart)
	ON_WM_RBUTTONDOWN()
	ON_COMMAND(PREDICT, OnPREDICT)
	ON_COMMAND(MoveP, OnMoveP)
	//}}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()

/////////////////////////////////////////////////////////////////////////////
// CDataanalisisView construction/destruction

CDataanalisisView::CDataanalisisView()
{
	// TODO: add construction code here
	flag=1;//表示一种默认的选择

}

CDataanalisisView::~CDataanalisisView()
{
}

BOOL CDataanalisisView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CDataanalisisView drawing

void CDataanalisisView::OnDraw(CDC* pDC)
{
	CDataanalisisDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	extern int n;
	extern double x[];
	extern double y[]; 
    
	double a=10,b=500,dx=10;
	double x1,y1,x2,y2;
	double x_min,y_min,x_max,y_max;//函数的极小值和极大值的坐标
	CPen pen,*p_pen;
	CString str;
	CRect rc;
	for(y_min=y_max=f(x_min=x_max=x1=a);x1<b+dx*0.5;x1+=dx)
	{
		y1=f(x1);
		if(y1<y_min)
		{
			x_min=x1;y_min=y1;//侯选的极小值点
		}
		if(y1>y_max)
		{
			x_max=x1;y_max=y1;//侯选的极大值点
		}
	}
	GetClientRect(&rc);
	str.Format("min: F(%.3f)=%.3f,max:F(%.3f)=%.3f,y_ext=%.3f",x_min,y_min,x_max,y_max,y_max-y_min);
	pDC->DrawText(str,&rc,DT_BOTTOM|DT_SINGLELINE|DT_CENTER);//显示极值数据以及值域高度

	x2=(rc.right-b+a)*0.5;
	pDC->MoveTo(x2,0);
	pDC->LineTo(x2,rc.bottom);

	y2=-y_min/(y_max-y_min)*rc.bottom;
	pDC->MoveTo(0,rc.bottom-y2);
	pDC->LineTo(rc.right,rc.bottom-y2);

	pen.CreatePen(PS_SOLID,3,RGB(0,0,255));
	p_pen=pDC->SelectObject(&pen);

	for(x1=a;x1<b+dx*0.5;x1+=dx)
	{
		y1=rc.bottom-(f(x1)+y2);
		if(flag)//使用折线方式画曲线
			if(x1==a)
				pDC->MoveTo(x1+x2,y1);//在起点落笔
			else 
				pDC->LineTo(x1+x2,y1);//向下一点连折线
		else  //离散方式
			pDC->Ellipse(x1+x2-3,y1-3,x1+x2+4,y1+4);
	}
	pDC->SelectObject(p_pen);
	pen.DeleteObject();

}

/////////////////////////////////////////////////////////////////////////////
// CDataanalisisView printing

BOOL CDataanalisisView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CDataanalisisView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CDataanalisisView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CDataanalisisView diagnostics

#ifdef _DEBUG
void CDataanalisisView::AssertValid() const
{
	CView::AssertValid();
}

void CDataanalisisView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CDataanalisisDoc* CDataanalisisView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDataanalisisDoc)));
	return (CDataanalisisDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CDataanalisisView message handlers

void CDataanalisisView::OnStart() 
{
	// TODO: Add your command handler code here
	Menu_NO=1;
	CDlg_row row;
	row.DoModal();
}

void CDataanalisisView::OnPREDICT() 
{
	// TODO: Add your command handler code here
	Menu_NO=2;
	CDlg_common common;
	common.DoModal();
	
}

void CDataanalisisView::OnCum() 
{
	// TODO: Add your command handler code here
	//Menu_NO=2;
	//CDlg_cum cum;
	//cum.DoModal();	
}

void CDataanalisisView::OnZhishu() 
{
	// TODO: Add your command handler code here
	//Menu_NO=3;
	//CDlg_zhishu zhishu;
	//zhishu.DoModal();	
}

void CDataanalisisView::OnMoveavg() 
{
	// TODO: Add your command handler code here
	//Menu_NO=4;
	//CDlg_moveavg moveavg;
	//moveavg.DoModal();	
}

void CDataanalisisView::OnUpdateStart(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(Menu_NO==1)
		pCmdUI->SetCheck(1);
	else
		pCmdUI->SetCheck(0);	
	
}

void CDataanalisisView::OnUpdateCum(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(Menu_NO==2)
		pCmdUI->SetCheck(1);
	else
		pCmdUI->SetCheck(0);	
}

void CDataanalisisView::OnUpdateZhishu(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
   // if(Menu_NO==3)
	//	pCmdUI->SetCheck(1);
	//else
	//	pCmdUI->SetCheck(0);	
}

void CDataanalisisView::OnUpdateMoveavg(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
//	if(Menu_NO==4)
	//	pCmdUI->SetCheck(1);
	//else
	//	pCmdUI->SetCheck(0);	
	
}


double CDataanalisisView::f(double x)
{
    extern double minlicha,licha1,licha2,licha3,licha4;
	extern double k,b1,a,b,c,k1,a1,k3,a3;

	if(minlicha==licha1)
		return k*x+b1;
	if(minlicha==licha2)
		return a*x*x+b*x+c;
	if(minlicha==licha3)
		return k1*pow(a1,x);
	if(minlicha==licha4)
		return k3*log(x)/log(a3);
	UpdateData(false);
}

void CDataanalisisView::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	flag=!flag;
	InvalidateRect(NULL);
	CView::OnRButtonDown(nFlags, point);
}


void CDataanalisisView::OnMoveP() 
{
	// TODO: Add your command handler code here
     // CDlg_cum cum;
	 // cum.DoModal();
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -