📄 zftinput1.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 + -