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

📄 zftinput1.cpp

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

#include "stdafx.h"
#include "Ex07b.h"
#include "ZftInput1.h"

extern BOOL m_pmenu;
extern BOOL m_smenu;
extern BOOL m_zmenu;


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

/////////////////////////////////////////////////////////////////////////////
// CZftInput1

IMPLEMENT_DYNCREATE(CZftInput1, CFormView)

CZftInput1::CZftInput1()
	: CFormView(CZftInput1::IDD)
{
	//{{AFX_DATA_INIT(CZftInput1)
	m_lmin = 0.0f;
	m_lZftshuju = 0.0f;
	//}}AFX_DATA_INIT
}

CZftInput1::~CZftInput1()
{
}

void CZftInput1::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CZftInput1)
	DDX_Text(pDX, IDC_EDIT1, m_lmin);
	DDX_Text(pDX, IDC_EDIT2, m_lZftshuju);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CZftInput1, CFormView)
	//{{AFX_MSG_MAP(CZftInput1)
	ON_BN_CLICKED(IDC_MINOK, OnMinok)
	ON_BN_CLICKED(IDC_ZFTADD, OnZftadd)
	ON_BN_CLICKED(IDC_ZFTTONGJI, OnZfttongji)
	ON_BN_CLICKED(IDC_ZFTNEXT, OnZftnext)
	ON_BN_CLICKED(IDC_ZFTXG, OnZftxg)
	ON_BN_CLICKED(IDC_ZINSERT, OnZinsert)
	ON_BN_CLICKED(IDC_ZREMOVE, OnZremove)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CZftInput1 diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CZftInput1 message handlers

void CZftInput1::OnMinok() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	CEx07bDoc* pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	pDoc->m_unit=m_lmin;
//	CZjdshuju * pZjdshuju;
//	pZjdshuju->m_unit=pDoc->m_unit;
}

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

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

	pDoc->m_zCount++;

	CZshuju *pZshuju;
	pZshuju=new CZshuju(m_lZftshuju);
	
//	pZshuju->m_lShuju=m_lZftshuju;
	if (pDoc->m_lShujumax<pZshuju->m_lShuju)
		pDoc->m_lShujumax=pZshuju->m_lShuju;
	if (pDoc->m_lShujumin>pZshuju->m_lShuju)
		pDoc->m_lShujumin=pZshuju->m_lShuju;
	pDoc->m_zdataList.AddTail(pZshuju);
	pDoc->SetModifiedFlag(TRUE);
	pDoc->Zpos=pDoc->m_zdataList.GetHeadPosition();


	pDoc->UpdateAllViews(this);
//控件的允许控制
		CWnd *m_Wnd=NULL;
		m_Wnd=GetDlgItem(IDC_ZFTTONGJI);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZFTNEXT);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZFTXG);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZINSERT);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZREMOVE);
		m_Wnd->EnableWindow();
	
}

void CZftInput1::OnZfttongji() 
{

	m_zmenu=true;
	// TODO: Add your control notification handler code here
	CEx07bDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);

  pDoc->m_zfdataList.RemoveAll();

	pDoc->m_zCount=pDoc->m_zdataList.GetCount() ;
/*	if (pDoc->m_zCount<30)
	{
		AfxMessageBox("输入数据不够,请输入至少30个数据");
		return ;
	}
*/
	float m_zR=0;			//数据极差
	float m_zh=0;	//组距

	UpdateData();

		
	pDoc->m_iunit=m_lmin;
	pDoc->m_unit=pDoc->m_iunit/2;
	m_zR=pDoc->m_lShujumax-pDoc->m_lShujumin;
	pDoc->m_lk=pDoc->m_zCount/10;
	if (pDoc->m_lk>20)
		pDoc->m_lk=20;
//	if (m_zR%pDoc->m_lk==0)
//		m_zh=m_zR/pDoc->m_lk;
//	else
		m_zh=m_zR/pDoc->m_lk+pDoc->m_unit;

	//统计分组界限.

	POSITION pos=pDoc->m_zfdataList.GetHeadPosition();
     POSITION  pos2=pDoc->m_zdataList.GetHeadPosition();
	 
	//	CZftfzsj *pZftfzsj;
	for (int i=1;i<=pDoc->m_lk;i++)
	{

		float lin;
		CZftfzsj *pZftfzsj;//=pDoc->m_zfdataList.GetNext(pos);
		if (i==1)
		{
			pZftfzsj=new CZftfzsj();
			pZftfzsj->m_zmin=pDoc->m_lShujumin-pDoc->m_unit;
			pZftfzsj->m_zmax=pDoc->m_lShujumin-pDoc->m_unit+m_zh;
		//	pZftfzsj->m_zfi=0;
		//	pZftfzsj->m_zMiddle=0;
		//	pZftfzsj->m_zfiui=0;
		//	pZftfzsj->m_zfiui2=0;
		//	pZftfzsj->m_zui=0;
			lin=pZftfzsj->m_zmax;
			pDoc->m_zfdataList.AddTail(pZftfzsj);
		}
		else
		{

			pZftfzsj=new CZftfzsj();//lin,pDoc->m_lShujumin-pDoc->m_unit+m_zh);

			pZftfzsj->m_zmin=lin;
			pZftfzsj->m_zmax=lin+m_zh;
		//	pZftfzsj->m_zfi=0;
		//	pZftfzsj->m_zMiddle=0;
		//	pZftfzsj->m_zfiui=0;
		//	pZftfzsj->m_zfiui2=0;
		//	pZftfzsj->m_zui=0;
			lin=pZftfzsj->m_zmax;

			lin=pZftfzsj->m_zmax;

			pDoc->m_zfdataList.AddTail(pZftfzsj);
		}
	}

	//统计组中值,频率
	pos=pDoc->m_zfdataList.GetHeadPosition();
 
	while (pos!=NULL)
	{
		float min=0;
		float max=0;


		CZftfzsj *pZftfzsj=pDoc->m_zfdataList.GetAt(pos);
		pZftfzsj->m_zMiddle=(pZftfzsj->m_zmax-pZftfzsj->m_zmin)/2+pZftfzsj->m_zmin;

		min=pZftfzsj->m_zmin;
		max=pZftfzsj->m_zmax;
		pZftfzsj=pDoc->m_zfdataList.GetNext(pos);

		pos2=pDoc->m_zdataList.GetHeadPosition();
		int i=0;
		while (pos2!=NULL)
		{

			CZshuju * pZshuju=pDoc->m_zdataList.GetAt(pos2);
			if (pZshuju->m_lShuju>min&&pZshuju->m_lShuju<max)
				i++;
			pZshuju=pDoc->m_zdataList.GetNext(pos2);
		}
				pZftfzsj->m_zfi=i;
	}
/*//统计Ui 
	pos=pDoc->m_zfdataList.GetHeadPosition();
	long Hz=0;
	CZftfzsj *pZftfzsj;
	while (pos!=NULL)
	{
		pZftfzsj=pDoc->m_zfdataList.GetNext(pos);
		if (pZftfzsj->m_zfi>Hz)
			Hz=pZftfzsj->m_zfi;
	}
	pos=pDoc->m_zfdataList.GetHeadPosition();
	while (2)
	{
		pZftfzsj=pDoc->m_zfdataList.GetNext(pos);
		if (pZftfzsj->m_zfi==Hz)
			break;
	}
	pZftfzsj->m_zui=0;
	long j=1;
	while (pos!=NULL)
	{

		pZftfzsj=pDoc->m_zfdataList.GetNext(pos);
		pZftfzsj->m_zui=j;
		j++;
	}

	pos=pDoc->m_zfdataList.GetHeadPosition();
	while (2)
	{
		pZftfzsj=pDoc->m_zfdataList.GetAt(pos);
		if (pZftfzsj->m_zfi==Hz)
			break;
		pZftfzsj=pDoc->m_zfdataList.GetNext(pos);
	}

//		pZftfzsj=pDoc->m_zfdataList.GetPrev(pos);
		pZftfzsj=pDoc->m_zfdataList.GetPrev(pos);
	long m=0;
	while (pos!=NULL)
	{
		m--;
		pZftfzsj=pDoc->m_zfdataList.GetPrev(pos);
		pZftfzsj->m_zui=m;

	}
//统计Fiui Fiui2
	pos=pDoc->m_zfdataList.GetHeadPosition();
	while(pos!=NULL)
	{
		pZftfzsj=pDoc->m_zfdataList.GetNext(pos);
		pZftfzsj->m_zfiui=pZftfzsj->m_zfi*pZftfzsj->m_zui;
		pZftfzsj->m_zfiui2=pZftfzsj->m_zfiui*pZftfzsj->m_zui;
	}
*/
   pDoc->UpdateAllViews(this);	


}

#ifdef _DEBUG

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

void CZftInput1::OnZftnext() 
{
	// TODO: Add your control notification handler code here
	CEx07bDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);

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

		CZshuju * pZshuju=pDoc->m_zdataList.GetAt(pDoc->Zpos);

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

	
}

void CZftInput1::OnZftxg() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	CEx07bDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	pDoc->m_zdataList.GetPrev(pDoc->Zpos);
		if(pDoc->Zpos==NULL)
				pDoc->Zpos=pDoc->m_zdataList.GetTailPosition();

	CZshuju * pZshuju=pDoc->m_zdataList.GetAt(pDoc->Zpos);
    pZshuju->m_lShuju=m_lZftshuju;
	pDoc->m_zdataList.GetNext(pDoc->Zpos);
		if(pDoc->Zpos==NULL)
				pDoc->Zpos=pDoc->m_zdataList.GetHeadPosition();

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

void CZftInput1::OnInitialUpdate() 
{

	m_zmenu=false;
	m_smenu=false;
	m_pmenu=false;


	CFormView::OnInitialUpdate();
	CEx07bDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	int m=pDoc->m_zdataList.GetCount();
	if (m!=0)
	{

		CZshuju * pZshuju=pDoc->m_zdataList.GetAt(pDoc->Zpos);

		m_lZftshuju=pZshuju->m_lShuju;
		m_lmin=pDoc->m_iunit;
	
	  //成员变量的数据传给控制ID,在对话框中显示数据
		UpdateData(false); 
		
		pDoc->m_zdataList.GetNext(pDoc->Zpos);
		if(pDoc->Zpos==NULL)
				pDoc->Zpos=pDoc->m_zdataList.GetHeadPosition();
		// 为进行下一轮循环做准备
		pDoc->UpdateAllViews(this);
//控件的允许控制
		CWnd *m_Wnd=NULL;
		m_Wnd=GetDlgItem(IDC_ZFTTONGJI);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZFTNEXT);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZFTXG);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZINSERT);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZREMOVE);
		m_Wnd->EnableWindow();

	}

 //创建丰富的按钮

//确认最小单位
	m_btnOk.SubclassDlgItem(IDC_MINOK,this);
	m_btnOk.SetIcon(IDI_OK);
	m_btnOk.SetActiveFgColor(RGB(128,0,128));
	m_btnOk.SetBtnCursor(IDC_HAND);
//添加数据
	m_btnAdd.SubclassDlgItem(IDC_ZFTADD,this);
	m_btnAdd.SetIcon(IDI_ADD2,IDI_ADD1);
	m_btnAdd.SetActiveFgColor(RGB(255,0,0));
	m_btnAdd.SetBtnCursor(IDC_HAND);
//数据统计
	m_btnTongji.SubclassDlgItem(IDC_ZFTTONGJI,this);
	m_btnTongji.SetIcon(IDI_TONGJI1,IDI_TONGJI2);
	m_btnTongji.SetActiveFgColor(RGB(255,0,0));
	m_btnTongji.SetBtnCursor(IDC_HAND);
//修改数据
	m_btnXg.SubclassDlgItem(IDC_ZFTXG,this);
	m_btnXg.SetIcon(IDI_XG1,IDI_XG2);
	m_btnXg.SetActiveFgColor(RGB(255,0,0));
	m_btnXg.SetBtnCursor(IDC_HAND);
//下一数据
	m_btnNext.SubclassDlgItem(IDC_ZFTNEXT,this);
	m_btnNext.SetIcon(IDI_NEXT1,IDI_NEXT2);
	m_btnNext.SetActiveFgColor(RGB(255,0,0));
	m_btnNext.SetBtnCursor(IDC_HAND);
//插入数据
	m_btnInsert.SubclassDlgItem(IDC_ZINSERT,this);
	m_btnInsert.SetIcon(IDI_INSERT1,IDI_INSERT2);
	m_btnInsert.SetActiveFgColor(RGB(255,0,0));
	m_btnInsert.SetBtnCursor(IDC_HAND);
//删除数据
    m_btnDel.SubclassDlgItem(IDC_ZREMOVE, this);
    m_btnDel.SetIcon(IDI_DEL1, IDI_DEL2);
    m_btnDel.SetActiveFgColor(RGB(255,0,0));
	 m_btnDel.SetBtnCursor(IDC_HAND);
	
}

void CZftInput1::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CFormView::OnBeginPrinting(pDC, pInfo);
}

void CZftInput1::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CFormView::OnEndPrinting(pDC, pInfo);
}

void CZftInput1::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CFormView::OnPrepareDC(pDC, pInfo);
}

BOOL CZftInput1::OnPreparePrinting(CPrintInfo* pInfo) 
{
	// TODO: call DoPreparePrinting to invoke the Print dialog box
	
	return CFormView::OnPreparePrinting(pInfo);
}

void CZftInput1::OnPrint(CDC* pDC, CPrintInfo* pInfo) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CFormView::OnPrint(pDC, pInfo);
}

void CZftInput1::OnZinsert() 
{
	// TODO: Add your control notification handler code here
	CEx07bDoc *pDoc =GetDocument();
	ASSERT_VALID(pDoc);

	UpdateData(); 
	
	CZshuju * pZshuju;
	pZshuju=new CZshuju(m_lZftshuju);
	pDoc->m_zdataList.InsertBefore(pDoc->Zpos,pZshuju);

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

void CZftInput1::OnZremove() 
{
	// TODO: Add your control notification handler code here
	CEx07bDoc *pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	CZshuju *pZshuju=pDoc->m_zdataList.GetPrev(pDoc->Zpos);
		if(pDoc->Zpos==NULL)
				pDoc->Zpos=pDoc->m_zdataList.GetTailPosition();
	pDoc->m_zdataList.RemoveAt(pDoc->Zpos);
	pDoc->Zpos=pDoc->m_zdataList.GetHeadPosition();

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



BOOL CZftInput1::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_EDIT2))->m_hWnd))
{
	UpdateData();

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

	pDoc->m_zCount++;

	CZshuju *pZshuju;
	pZshuju=new CZshuju(m_lZftshuju);
	
//	pZshuju->m_lShuju=m_lZftshuju;
	if (pDoc->m_lShujumax<pZshuju->m_lShuju)
		pDoc->m_lShujumax=pZshuju->m_lShuju;
	if (pDoc->m_lShujumin>pZshuju->m_lShuju)
		pDoc->m_lShujumin=pZshuju->m_lShuju;
	pDoc->m_zdataList.AddTail(pZshuju);
	pDoc->SetModifiedFlag(TRUE);
	pDoc->Zpos=pDoc->m_zdataList.GetHeadPosition();


	pDoc->UpdateAllViews(this);

	CEdit * pEdit=(CEdit*)GetDlgItem(IDC_EDIT2);
	pEdit->SetSel(0,-1,true);
//控件的允许控制
		CWnd *m_Wnd=NULL;
		m_Wnd=GetDlgItem(IDC_ZFTTONGJI);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZFTNEXT);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZFTXG);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZINSERT);
		m_Wnd->EnableWindow();
		m_Wnd=GetDlgItem(IDC_ZREMOVE);
		m_Wnd->EnableWindow();
}
	return CFormView::PreTranslateMessage(pMsg);
}



⌨️ 快捷键说明

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