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

📄 vchomeworkdlg.cpp

📁 一些详细介绍ADO的案例
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	m_radio2 = 2;
	m_mark = 3;
	m_info.DeleteColumn(0);
	m_info.InsertColumn(0,"样品ID");
	RECT rect3;
	m_info.GetWindowRect(&rect3);
	int wid3 = rect3.right - rect3.left;
	m_info.SetColumnWidth(0,wid3);
	m_info.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	m_info.DeleteAllItems();
	m_info.SetRedraw(FALSE);
	_bstr_t str3("select * from swatch");
	_variant_t temp;
	try
	{ 
		int i = 0;
	    m_Ptr.CreateInstance(__uuidof(Recordset));
		m_Ptr = m_conn->Execute(str3,NULL,adCmdText);
		m_Ptr->MoveFirst();
		while(!m_Ptr->adoEOF)
		{
			temp = m_Ptr->GetCollect("样品ID");
			if(temp.vt != VT_NULL)
			   m_info.InsertItem(i,(char*)(_bstr_t)temp);
			m_Ptr->MoveNext();
		}
        m_Ptr->Close();
	}
    catch(_com_error& e)
	{
		 AfxMessageBox(e.ErrorMessage());
	}
	m_info.SetRedraw(TRUE);	
}

void CVcHomeworkDlg::OnRadio8() 
{
	// TODO: Add your control notification handler code here
	m_radio2 = 3;
	m_mark = 4;
	m_info.DeleteColumn(0);
	m_info.InsertColumn(0,"样品ID");
	RECT rect4;
	m_info.GetWindowRect(&rect4);
	int wid4 = rect4.right - rect4.left;
	m_info.SetColumnWidth(0,wid4);
	m_info.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	m_info.DeleteAllItems();
	m_info.SetRedraw(FALSE);
	_bstr_t str3("select * from swatch");
	_variant_t temp;
	try
	{ 
		int i = 0;
	    m_Ptr.CreateInstance(__uuidof(Recordset));
		m_Ptr = m_conn->Execute(str3,NULL,adCmdText);
		m_Ptr->MoveFirst();
		while(!m_Ptr->adoEOF)
		{
			temp = m_Ptr->GetCollect("样品ID");
			if(temp.vt != VT_NULL)
			   m_info.InsertItem(i,(char*)(_bstr_t)temp);
			m_Ptr->MoveNext();
		}
        m_Ptr->Close();
	}
    catch(_com_error& e)
	{
		 AfxMessageBox(e.ErrorMessage());
	}
	m_info.SetRedraw(TRUE);
}

void CVcHomeworkDlg::OnClickListInfo(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int i = m_info.GetSelectionMark();
    _variant_t T;	
    T = m_info.GetItemText(i,0);
    m_id = (long)T;

	*pResult = 0;
}

void CVcHomeworkDlg::OnButtonSearch() 
{
	// TODO: Add your control notification handler code here
  switch(m_mark)
  {
  case 1:
	  {
		  if(m_id <= 0)
		{
			AfxMessageBox("客户ID错误,请选择正确值!");
			return;
		}
	    m_Ptr.CreateInstance(__uuidof(Recordset));
	    _bstr_t str;
        _variant_t temp;
	    
		m_list.DeleteColumn(0);
	    m_list.DeleteColumn(1);
	    m_list.DeleteColumn(2);
	    m_list.InsertColumn(0,"样品ID");
	    m_list.InsertColumn(1,"客户ID");
	    m_list.InsertColumn(2,"仪器ID");
        RECT rect;
	    m_list.GetWindowRect(&rect);
	    int wid = rect.right - rect.left;
	    m_list.SetColumnWidth(0,wid/3);
	    m_list.SetColumnWidth(1,wid/3);
	    m_list.SetColumnWidth(2,wid/3);
        m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
		m_list.DeleteAllItems();
	    m_list.SetRedraw(FALSE);
        try
		{ 
	  	    CString sql;
		    sql.Format("select * from swatch where 客户ID = %ld",m_id);
		    str = sql;
            m_Ptr = m_conn->Execute(str,NULL,adCmdText);
		    if(m_Ptr->adoEOF)
			{       
				AfxMessageBox("此用户没有样品记录,请选择其他客户ID!");
			    return;
			}
            int i=0;
		    _variant_t roader;
		    while(!m_Ptr->adoEOF)
			{
				roader = m_Ptr->GetCollect("样品ID");
			    if(roader.vt != VT_NULL)
				    m_list.InsertItem(i,(char*)(_bstr_t)roader);
			    roader = m_Ptr->GetCollect("客户ID");
			    if(roader.vt != VT_NULL)
				    m_list.SetItemText(i,1,(char*)(_bstr_t)roader);
                roader = m_Ptr->GetCollect("仪器ID");
			    if(roader.vt != VT_NULL)
				    m_list.SetItemText(i,2,(char*)(_bstr_t)roader);
		        m_Ptr->MoveNext();
			}
            m_Ptr->Close();
		}
	    catch(_com_error& e)
		{
		    AfxMessageBox(e.ErrorMessage());
		}
        m_list.SetRedraw(TRUE);
		AfxMessageBox("查询成功!信息记录表中即为结果。");
		m_id = 0;
		m_Eflag = 1;
		break;
	  }
  case 2:
	  {
		  if(m_id <= 0)
		{
			AfxMessageBox("仪器ID错误,请选择正确值!");
			return;
		}
	    m_Ptr.CreateInstance(__uuidof(Recordset));
	    _bstr_t str;
        _variant_t temp;
	    
		m_list.DeleteColumn(0);
	    m_list.DeleteColumn(1);
	    m_list.DeleteColumn(2);
	    m_list.InsertColumn(0,"样品ID");
	    m_list.InsertColumn(1,"客户ID");
	    m_list.InsertColumn(2,"仪器ID");
        RECT rect;
	    m_list.GetWindowRect(&rect);
	    int wid = rect.right - rect.left;
	    m_list.SetColumnWidth(0,wid/3);
	    m_list.SetColumnWidth(1,wid/3);
	    m_list.SetColumnWidth(2,wid/3);
        m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
		m_list.DeleteAllItems();
	    m_list.SetRedraw(FALSE);
        try
		{ 
	  	    CString sql;
		    sql.Format("select * from swatch where 仪器ID = %ld",m_id);
		    str = sql;
            m_Ptr = m_conn->Execute(str,NULL,adCmdText);
		    if(m_Ptr->adoEOF)
			{       
				AfxMessageBox("此没有样品使用此仪器,请选择其它样品ID!");
			    return;
			}
            int i=0;
		    _variant_t roader;
		    while(!m_Ptr->adoEOF)
			{
				roader = m_Ptr->GetCollect("样品ID");
			    if(roader.vt != VT_NULL)
				    m_list.InsertItem(i,(char*)(_bstr_t)roader);
			    roader = m_Ptr->GetCollect("客户ID");
			    if(roader.vt != VT_NULL)
				    m_list.SetItemText(i,1,(char*)(_bstr_t)roader);
                roader = m_Ptr->GetCollect("仪器ID");
			    if(roader.vt != VT_NULL)
				    m_list.SetItemText(i,2,(char*)(_bstr_t)roader);
		        m_Ptr->MoveNext();
			}
            m_Ptr->Close();
		}
	    catch(_com_error& e)
		{
		    AfxMessageBox(e.ErrorMessage());
		}
        m_list.SetRedraw(TRUE);
		AfxMessageBox("查询成功!信息记录表中即为结果。");
		m_id = 0;
		m_Eflag = 1;
		break;
	  }
  case 3:
	  {
		  if(m_id <= 0)
		{
			AfxMessageBox("样品ID错误,请选择正确值!");
			return;
		}
	    m_Ptr.CreateInstance(__uuidof(Recordset));
	    _bstr_t str;
        _variant_t temp;
	    
		m_list.DeleteColumn(0);
	    m_list.DeleteColumn(1);
	    m_list.DeleteColumn(2);
	    m_list.InsertColumn(0,"样品ID");
	    m_list.InsertColumn(1,"自变量X");
	    m_list.InsertColumn(2,"因变量Y");
        RECT rect;
	    m_list.GetWindowRect(&rect);
	    int wid = rect.right - rect.left;
	    m_list.SetColumnWidth(0,wid/3);
	    m_list.SetColumnWidth(1,wid/3);
	    m_list.SetColumnWidth(2,wid/3);
        m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
		m_list.DeleteAllItems();
	    m_list.SetRedraw(FALSE);
        try
		{ 
	  	    CString sql;
		    sql.Format("select * from data where 样品ID = %ld",m_id);
		    str = sql;
            m_Ptr = m_conn->Execute(str,NULL,adCmdText);
		    if(m_Ptr->adoEOF)
			{       
				AfxMessageBox("此样品没有数据,请选择其它样品ID!");
			    return;
			}
            int i=0;
		    _variant_t roader;
		    while(!m_Ptr->adoEOF)
			{
				roader = m_Ptr->GetCollect("样品ID");
			    if(roader.vt != VT_NULL)
				    m_list.InsertItem(i,(char*)(_bstr_t)roader);
			    roader = m_Ptr->GetCollect("自变量X");
			    if(roader.vt != VT_NULL)
				    m_list.SetItemText(i,1,(char*)(_bstr_t)roader);
                roader = m_Ptr->GetCollect("因变量Y");
			    if(roader.vt != VT_NULL)
				    m_list.SetItemText(i,2,(char*)(_bstr_t)roader);
		        m_Ptr->MoveNext();
			}
            m_Ptr->Close();
		}
	    catch(_com_error& e)
		{
		    AfxMessageBox(e.ErrorMessage());
		}
        m_list.SetRedraw(TRUE);
		AfxMessageBox("查询成功!信息记录表中即为结果。");
		m_id = 0;
		m_Eflag = 1;
		break;
	  }
  }
}

void CVcHomeworkDlg::OnButtonAbout() 
{
	// TODO: Add your control notification handler code here
	CAboutDlg dlg;
	dlg.DoModal();
}

void CVcHomeworkDlg::OnNihe(double m_x[], double m_y[], int n, double a[], int power)
{
    int i,j,k;
	double s[100],t[100],b[100];
	double z,p,c,g,q,d1,d2;
	
	for(i = 0;i <= power-1; i++)a[i] = 0.0;
	if(power > n) power = n;
	if(power > 20) power = 20;
	z= 0.0;

	for(i=0;i<=n-1;i++)
		z = z+m_x[i]/(1.0*n);

	b[0] = 1.0; d1 = 1.0*n; p = 0.0; c= 0.0;
	for(i=0;i<=n-1; i++)
	{
		p=p+(m_x[i]-z); 
		c= c+m_y[i];
	}
	c=c/d1;
	p=p/d1;
	a[0] = c*b[0];
	if(power>1)
	{
		t[1] = 1.0;
		t[0] = -p;
		d2 = 0.0;
		c=0.0;
		g=0.0;
		for(i=0;i<=n-1;i++)
		{
			q=m_x[i]-z-p;
			d2=d2+q*q;
			c=c+m_y[i]*q;
			g=g+(m_x[i]-z)*q*q;
		}
		c=c/d2;
		p=g/d2;
		q=d2/d1;
		d1 = d2;
		a[1]= c*t[1];
		a[0] = c*t[0]+a[0];
	}
	for(j=2;j<=power-1;j++)
	{
		s[j]=t[j-1];
		s[j-1]= -p*t[j-1]+t[j-2];
		if(j>=3)
			for(k=j-2;k>=1;k--)
				s[k]=-p*t[k]+t[k-1]-q*b[k];
		s[0]=-p*t[0]-q*b[0];
		d2=0.0;
		c=0.0;
		g=0.0;
		for(i=0;i<=n-1;i++)
		{
			q=s[j];
			for(k=j-1;k>=0;k--)
				q=q*(m_x[i]-z)+s[k];
			d2=d2+q*q;
			c=c+m_y[i]*q;
			g=g+(m_x[i]-z)*q*q;
		}
		c=c/d2;
		p=g/d2;
		q=d2/d1;
		d1=d2;
		a[j]=c*s[j];
		t[j]=s[j];
		for(k=j-1;k>=0;k--)
		{
			a[k]=c*s[k]+a[k];
			b[k]=t[k];
			t[k]=s[k];
		}
	}
}

void CVcHomeworkDlg::OnButtonFit() 
{
	// TODO: Add your control notification handler code here
  if(m_mark == 4)
  {
	 if (m_id == 0)
	{
		MessageBox("请选择样品ID!");
		return;
	}
	int power;
	CPowerDlg dlg;
    if(dlg.DoModal() == IDCANCEL)
		return;
	power = dlg.Getpower();
	//从数据库中读取要拟合的数据
	CString sql_;
    sql_.Format("select * from data where 样品ID=%ld",m_id);
    _bstr_t sql = sql_;
    _variant_t temp;
	double sx[100],sy[100],sa[100];
	int n;
	try
	{
		m_Ptr.CreateInstance(__uuidof(Recordset));
		m_Ptr =m_conn->Execute(sql,NULL,adCmdText);
		n = 0;
		m_Ptr->MoveFirst();
        if(m_Ptr->adoEOF)
		{
			MessageBox("样品没有数据,不能拟合!");
		    return;
		}
		while(!m_Ptr->adoEOF)
		{
			temp = m_Ptr->GetCollect("自变量X");
			if(temp.vt != VT_NULL)
				sx[n] =(double)temp;
            temp = m_Ptr->GetCollect("因变量Y");
			if(temp.vt != VT_NULL)
				sy[n]=(double)temp;
			m_Ptr->MoveNext();
			n++;
		}
		if(n<=2)
		{
			MessageBox("样品数据太少!");
		    return;
		}
		m_Ptr->Close();
	} 
	catch(_com_error& e)
    {
        AfxMessageBox(e.ErrorMessage());
		return;
    }

	if (power >= n)
	{
		MessageBox("拟合次数需小于数据个数!");
		return;
	}
    OnNihe(sx,sy,n,sa,power);
	CString func1,func2,func3;
    func1.Format("Y = ");
	for(int i=0;i<power-1;i++)
	{
       func2.Format(" %lf (X - x(平均值))",sa[i]);
	   func3.Format("^%d +",i);
	   func1 += func2;
	   func1 += func3;
	}
	func2.Format(" %lf (X - x(平均值))",sa[power-1]);
	func3.Format("^%d ",power-1);
	func1 += func2;
	func1 += func3;
	AfxMessageBox(func1);
	m_id = 0;
  }
}

⌨️ 快捷键说明

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