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

📄 gcnlfxinput.cpp

📁 ISO9000质量管理小程序
💻 CPP
字号:
// GcnlfxInput.cpp : implementation file
//

#include "stdafx.h"
#include "Ex07b.h"
#include "GcnlfxInput.h"
#include "SbtDoc.h"
#include "math.h"

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

/////////////////////////////////////////////////////////////////////////////
// CGcnlfxInput

IMPLEMENT_DYNCREATE(CGcnlfxInput, CFormView)

CGcnlfxInput::CGcnlfxInput()
	: CFormView(CGcnlfxInput::IDD)
{
	//{{AFX_DATA_INIT(CGcnlfxInput)
	m_gmax = 0.0f;
	m_gmin = 0.0f;
	m_gsj = 0.0f;
	//}}AFX_DATA_INIT
}

CGcnlfxInput::~CGcnlfxInput()
{
}

void CGcnlfxInput::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CGcnlfxInput)
	DDX_Text(pDX, IDC_EDIT1, m_gmax);
	DDX_Text(pDX, IDC_EDIT2, m_gmin);
	DDX_Text(pDX, IDC_EDIT3, m_gsj);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CGcnlfxInput, CFormView)
	//{{AFX_MSG_MAP(CGcnlfxInput)
	ON_BN_CLICKED(IDC_GCADD, OnGcadd)
	ON_BN_CLICKED(IDC_GCTONGJI, OnGctongji)
	ON_BN_CLICKED(IDC_GCOK, OnGcok)
	ON_BN_CLICKED(IDC_GCXG, OnGcxg)
	ON_BN_CLICKED(IDC_GCNEXT, OnGcnext)
	ON_BN_CLICKED(IDC_GREMOVE, OnGremove)
	ON_BN_CLICKED(IDC_GINSERT, OnGinsert)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGcnlfxInput diagnostics

#ifdef _DEBUG
void CGcnlfxInput::AssertValid() const
{
	CFormView::AssertValid();
}

void CGcnlfxInput::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CGcnlfxInput message handlers

void CGcnlfxInput::OnGcadd() 
{
	// TODO: Add your control notification handler code here
	UpdateData();

	CSbtDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	CGcsj * pGcsj;
	pGcsj=new CGcsj(m_gsj);
	pDoc->m_gcdataList.AddTail(pGcsj);
    pDoc->SetModifiedFlag(TRUE); 
	pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();

	pDoc->UpdateAllViews(this);

//控制控件的允许,
	CWnd *m_Wnd=NULL;
	m_Wnd=GetDlgItem(IDC_GCTONGJI);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GCNEXT);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GCXG);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GINSERT);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GREMOVE);
	m_Wnd->EnableWindow();
}

void CGcnlfxInput::OnGctongji() 
{
	// TODO: Add your control notification handler code here

	CSbtDoc * pDoc=GetDocument();
//求平均值
	POSITION pos=pDoc->m_gcdataList.GetHeadPosition();

	float leiji=0;
	float i=0;
	while (pos!=NULL)
	{
		CGcsj *pGcsj=pDoc->m_gcdataList.GetNext(pos);
		leiji=leiji+pGcsj->m_fgcsj;
		i++;
	}
	pDoc->g_middle=leiji/i;
//求偏差
	leiji=0;
	pos=pDoc->m_gcdataList.GetHeadPosition();
	while(pos!=NULL)
	{
		CGcsj *pGcsj=pDoc->m_gcdataList.GetNext(pos);
		leiji=leiji+(pGcsj->m_fgcsj-pDoc->g_middle)*(pGcsj->m_fgcsj-pDoc->g_middle);


	}
	pDoc->g_pc=sqrt(leiji/(i-1));
	pDoc->g_cp=(pDoc->g_max-pDoc->g_min)/(6*pDoc->g_pc);
	pDoc->g_e=fabs((pDoc->g_max-pDoc->g_min)/2-pDoc->g_middle);
	pDoc->g_cpk=((pDoc->g_max-pDoc->g_min)-2*pDoc->g_e)/(6*pDoc->g_pc);


	pDoc->UpdateAllViews(this);
	}
#ifdef _DEBUG

	 CSbtDoc * CGcnlfxInput::GetDocument()
	{
		ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSbtDoc)));
		return (CSbtDoc*)m_pDocument;
	
	}
#endif



void CGcnlfxInput::OnGcok() 
{

	UpdateData();
	
	CSbtDoc * pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	pDoc->g_min=m_gmin;
	pDoc->g_max=m_gmax;
	
}

void CGcnlfxInput::OnGcxg() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	CSbtDoc * pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	pDoc->m_gcdataList.GetPrev(pDoc->gccurPos);
	CGcsj *pGcsj;
    pGcsj=pDoc->m_gcdataList.GetAt(pDoc->gccurPos);
	pGcsj->m_fgcsj=m_gsj;
	pDoc->m_gcdataList.GetNext(pDoc->gccurPos);
	pDoc->UpdateAllViews(this);
	
}

void CGcnlfxInput::OnGcnext() 
{
	// TODO: Add your control notification handler code here
	CSbtDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);


	if(pDoc->gccurPos!=NULL)   //
	{

		CGcsj *pGcsj=pDoc->m_gcdataList.GetAt(pDoc->gccurPos);

		m_gsj=pGcsj->m_fgcsj;
	
	  //成员变量的数据传给控制ID,在对话框中显示数据
		UpdateData(false); 
		
		pDoc->m_gcdataList.GetNext(pDoc->gccurPos);
		if(pDoc->gccurPos==NULL)
				pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();
		// 为进行下一轮循环做准备
	}
	else
		MessageBox("当前列表中没有数据!");
	pDoc->UpdateAllViews(this);

	
}

void CGcnlfxInput::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	CSbtDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	int m=pDoc->m_gcdataList.GetCount();
	if(m!=0)
	{
		CGcsj *pGcsj=pDoc->m_gcdataList.GetAt(pDoc->gccurPos);

		m_gsj=pGcsj->m_fgcsj;
	
	  //成员变量的数据传给控制ID,在对话框中显示数据
		m_gmin=pDoc->g_min;
		m_gmax=pDoc->g_max;

		UpdateData(false); 
		
		pDoc->m_gcdataList.GetNext(pDoc->gccurPos);
		if(pDoc->gccurPos==NULL)
				pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();
		
//控制控件的允许,
	CWnd *m_Wnd=NULL;
	m_Wnd=GetDlgItem(IDC_GCTONGJI);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GCNEXT);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GCXG);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GINSERT);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GREMOVE);
	m_Wnd->EnableWindow();

	}

 //创建丰富的按钮

//确认最小单位
	m_btnOk.SubclassDlgItem(IDC_GCOK,this);
	m_btnOk.SetIcon(IDI_OK);
	m_btnOk.SetActiveFgColor(RGB(128,0,128));
	m_btnOk.SetBtnCursor(IDC_HAND);

//添加数据
	m_btnAdd.SubclassDlgItem(IDC_GCADD,this);
	m_btnAdd.SetIcon(IDI_ADD2,IDI_ADD1);
	m_btnAdd.SetActiveFgColor(RGB(255,0,0));
	m_btnAdd.SetBtnCursor(IDC_HAND);
//数据统计
	m_btnTongji.SubclassDlgItem(IDC_GCTONGJI,this);
	m_btnTongji.SetIcon(IDI_TONGJI1,IDI_TONGJI2);
	m_btnTongji.SetActiveFgColor(RGB(255,0,0));
	m_btnTongji.SetBtnCursor(IDC_HAND);
//修改数据
	m_btnXg.SubclassDlgItem(IDC_GCXG,this);
	m_btnXg.SetIcon(IDI_XG1,IDI_XG2);
	m_btnXg.SetActiveFgColor(RGB(255,0,0));
	m_btnXg.SetBtnCursor(IDC_HAND);

//下一数据
	m_btnNext.SubclassDlgItem(IDC_GCNEXT,this);
	m_btnNext.SetIcon(IDI_NEXT1,IDI_NEXT2);
	m_btnNext.SetActiveFgColor(RGB(255,0,0));
	m_btnNext.SetBtnCursor(IDC_HAND);
//插入数据
	m_btnInsert.SubclassDlgItem(IDC_GINSERT,this);
	m_btnInsert.SetIcon(IDI_INSERT1,IDI_INSERT2);
	m_btnInsert.SetActiveFgColor(RGB(255,0,0));
	m_btnInsert.SetBtnCursor(IDC_HAND);

//删除数据
  m_btnDel256.SubclassDlgItem(IDC_GREMOVE, this);
  m_btnDel256.SetIcon(IDI_DEL1, IDI_DEL2);
  m_btnDel256.SetActiveFgColor(RGB(255,0,0));
  m_btnDel256.SetBtnCursor(IDC_HAND);

 }

void CGcnlfxInput::OnGremove() 
{
	// TODO: Add your control notification handler code here
	CSbtDoc * pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	CGcsj *pGcsj=pDoc->m_gcdataList.GetPrev(pDoc->gccurPos);
		if(pDoc->gccurPos==NULL)
				pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();
	pDoc->m_gcdataList.RemoveAt(pDoc->gccurPos);
	pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();

	pDoc->SetModifiedFlag();
	pDoc->UpdateAllViews(this);
	
}

void CGcnlfxInput::OnGinsert() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	CSbtDoc * pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	CGcsj * pGcsj;
	pGcsj=new CGcsj(m_gsj);	
	pDoc->m_gcdataList.InsertBefore(pDoc->gccurPos,pGcsj);

	pDoc->SetModifiedFlag();
	pDoc->UpdateAllViews(this);
}

BOOL CGcnlfxInput::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if (pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN&&pMsg->hwnd==((GetDlgItem(IDC_EDIT3))->m_hWnd))
	{
	UpdateData();

	CSbtDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	CGcsj * pGcsj;
	pGcsj=new CGcsj(m_gsj);
	pDoc->m_gcdataList.AddTail(pGcsj);
    pDoc->SetModifiedFlag(TRUE); 
	pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();

	pDoc->UpdateAllViews(this);

//控制控件的允许,
	CWnd *m_Wnd=NULL;
	m_Wnd=GetDlgItem(IDC_GCTONGJI);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GCNEXT);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GCXG);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GINSERT);
	m_Wnd->EnableWindow();
	m_Wnd=GetDlgItem(IDC_GREMOVE);
	m_Wnd->EnableWindow();
		
		CEdit * pEdit=(CEdit*)GetDlgItem(IDC_EDIT3);
		pEdit->SetSel(0,-1,true);
	}	
	return CFormView::PreTranslateMessage(pMsg);
}

⌨️ 快捷键说明

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