mygatherformula.cpp

来自「一个学生考试成绩管理的半成品」· C++ 代码 · 共 501 行 · 第 1/2 页

CPP
501
字号
		GotoDlgCtrl(GetDlgItem(IDC_GOODNUMBER));
		return;
	}
	else
		m_goodnumber.GetLBText(m_goodnumber.GetCurSel(),str4);
	if(m_low.GetCurSel()<0)
	{
		AfxMessageBox("必须选择[低分率],或单击[使用默认值]按钮自动填入默认值!");
		GotoDlgCtrl(GetDlgItem(IDC_LOW));
		return;
	}
	else
		m_low.GetLBText(m_low.GetCurSel(),str5);
	if(m_lownumber.GetCurSel()<0)
	{
		AfxMessageBox("必须选择[低分率取值],或单击[使用默认值]按钮自动填入默认值!");
		GotoDlgCtrl(GetDlgItem(IDC_LOWNUMBER));
		return;
	}
	else
		m_lownumber.GetLBText(m_lownumber.GetCurSel(),str6);
	if(m_averagenumber.GetCurSel()<0)
	{
		AfxMessageBox("必须选择[平均分取值],或单击[使用默认值]按钮自动填入默认值!");
		GotoDlgCtrl(GetDlgItem(IDC_AVERAGENUMBER));
		return;
	}
	else
		m_averagenumber.GetLBText(m_averagenumber.GetCurSel(),str7);
	if(m_averages.GetCurSel()<0)
	{
		AfxMessageBox("必须选择[均值计算公式],或单击[使用默认值]按钮自动填入默认值!");
		GotoDlgCtrl(GetDlgItem(IDC_AVERAGES));
		return;
	}
		m_averages.GetLBText(m_averages.GetCurSel(),str8);
	if(m_dataorder.GetCheck())
		str9=_T("是");
	else
		str9=_T("否");
	CString strSQL;
	strSQL="select * from formula";
	strSQL=strSQL+" where my_year='";
	strSQL=strSQL+str0+"'";
	HRESULT hTRes;
	hTRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset"));				
	hTRes = m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()),
		((CScoreGatherApp*)AfxGetApp())->m_pConn.GetInterfacePtr(),
		adOpenDynamic,adLockPessimistic,adCmdText); //执行查询,打开记录集
	if(!(m_pRecordset->adoEOF))//修改
	{
		CString strSQL;
		strSQL="update formula set ";
		strSQL=strSQL+"my_year='"+str0+"',";
		strSQL=strSQL+"my_segment='"+str1+"',";
		strSQL=strSQL+"my_qualifiedformula='"+"及格人数÷"+str2+"',";
		strSQL=strSQL+"my_goodformula='"+str3+"÷"+str4+"',";
		strSQL=strSQL+"my_lowformula='"+str5+"÷"+str6+"',";
		strSQL=strSQL+"my_averageformula='"+str7+"',";
		strSQL=strSQL+"my_averagesformula='"+str8+"',";
		strSQL=strSQL+"my_dataorder='"+str9+"'";
		strSQL=strSQL+" where my_year='";
		strSQL=strSQL+str0+"'";
		(((CScoreGatherApp*)AfxGetApp())->m_pConn)->Execute((_bstr_t)strSQL,NULL,adCmdText);
	}
	else//增加
	{
		m_pRecordset->AddNew();
		m_pRecordset->PutCollect("my_year",_variant_t(str0));
		m_pRecordset->PutCollect("my_segment",_variant_t(str1));
		m_pRecordset->PutCollect("my_qualifiedformula",_variant_t("及格人数÷"+str2));
		m_pRecordset->PutCollect("my_goodformula",_variant_t(str3+"÷"+str4));
		m_pRecordset->PutCollect("my_lowformula",_variant_t(str5+"÷"+str6));
		m_pRecordset->PutCollect("my_averageformula",_variant_t(str7));
		m_pRecordset->PutCollect("my_averagesformula",_variant_t(str8));
		m_pRecordset->PutCollect("my_dataorder",_variant_t(str9));
		m_pRecordset->Update();
	}
	m_pRecordset->Close();
	m_pRecordset=NULL;
}

BOOL CMyGatherFormula::PreTranslateMessage(MSG* pMsg)
{
	m_tooltip.RelayEvent(pMsg);
	return CDialog::PreTranslateMessage(pMsg);
}

void CMyGatherFormula::OnCancel()
{
}

void CMyGatherFormula::OnOK()
{
}

BOOL CMyGatherFormula::OnEraseBkgnd(CDC* pDC)
{
	CBrush brush(RGB(250,220,250));
	CBrush* pOldBrush=pDC->SelectObject(&brush);
	CRect rcClip;
	pDC->GetClipBox(&rcClip);
	pDC->PatBlt(rcClip.left,rcClip.top,rcClip.Width(),rcClip.Height(),PATCOPY);
	pDC->SelectObject(pOldBrush);
	return TRUE;
}

HBRUSH CMyGatherFormula::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	if(nCtlColor!=CTLCOLOR_EDIT)
	{
		pDC->SetTextColor(RGB(40,20,255));
		pDC->SetBkMode(TRANSPARENT);
		HBRUSH B = CreateSolidBrush(RGB(250,220,250));
		return (HBRUSH) B;
	}
	else
		return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); 
}

void CMyGatherFormula::OnCbnSelchangeYear()
{
	view();
}

void CMyGatherFormula::OnBnClickedNewview()
{
	if(m_year.GetCurSel()<0)
	{
		AfxMessageBox("必须选择学年度!");
		GotoDlgCtrl(cwnd_year);
		return;
	}
	else
		view();
}

void CMyGatherFormula::view(void)
{
	CString str0;
	str0=_T("");
	if(m_year.GetCurSel()>=0)
	{
		m_year.GetLBText(m_year.GetCurSel(),str0);
		CString strSQL;
		strSQL="select * from formula";
		strSQL=strSQL+" where my_year='";
		strSQL=strSQL+str0+"'";
		HRESULT hTRes;
		hTRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset"));				
		if (SUCCEEDED(hTRes))
		{
			hTRes = m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(130),
				((CScoreGatherApp*)AfxGetApp())->m_pConn.GetInterfacePtr(),
				adOpenDynamic,adLockPessimistic,adCmdText);
			CString string;
			if(!(m_pRecordset->adoEOF))
			{
				string.Empty();
				string=p_MySetClass->GetString(m_pRecordset->GetCollect("my_year"));
				m_year.SetCurSel(m_year.FindString(0,string));
				string.Empty();
				string=p_MySetClass->GetString(m_pRecordset->GetCollect("my_segment"));
				m_segment.SetCurSel(m_segment.FindString(0,string));
				string.Empty();
				string=p_MySetClass->GetString(m_pRecordset->GetCollect("my_qualifiedformula"));
				m_qualifiednumber.SetCurSel(m_qualifiednumber.FindString(0,string.Right(string.GetLength()-10)));
				string.Empty();
				string=p_MySetClass->GetString(m_pRecordset->GetCollect("my_goodformula"));
				m_good.SetCurSel(m_good.FindString(0,string.Left(10)));
				m_goodnumber.SetCurSel(m_goodnumber.FindString(0,string.Right(8)));
				string.Empty();
				string=p_MySetClass->GetString(m_pRecordset->GetCollect("my_lowformula"));
				m_low.SetCurSel(m_low.FindString(0,string.Left(10)));
				m_lownumber.SetCurSel(m_lownumber.FindString(0,string.Right(8)));
				string.Empty();
				string=p_MySetClass->GetString(m_pRecordset->GetCollect("my_averageformula"));
				m_averagenumber.SetCurSel(m_averagenumber.FindString(0,string));
				string.Empty();
				string=p_MySetClass->GetString(m_pRecordset->GetCollect("my_averagesformula"));
				m_averages.SetCurSel(m_averages.FindString(0,string));
				string.Empty();
				string=p_MySetClass->GetString(m_pRecordset->GetCollect("my_dataorder"));
				if(string==_T("是"))
					m_dataorder.SetCheck(1);
				else
					m_dataorder.SetCheck(0);
			}
			else
			{
				clsctrl();
			}
		}
	}
}

void CMyGatherFormula::clsctrl(void)
{
	m_segment.SetCurSel(-1);
	m_qualifiednumber.SetCurSel(-1);
	m_good.SetCurSel(-1);
	m_goodnumber.SetCurSel(-1);
	m_low.SetCurSel(-1);
	m_lownumber.SetCurSel(-1);
	m_averagenumber.SetCurSel(-1);
	m_averages.SetCurSel(-1);
	m_dataorder.SetCheck(0);
}

void CMyGatherFormula::OnBnClickedDel()
{
	int x=m_year.GetCurSel();
	if(x>=0)
	{
		CString strSQL,str;
		m_year.GetLBText(x,str);
		strSQL="select my_year from formula where my_year='";
		strSQL=strSQL+str+"'";
		HRESULT hTRes;
		hTRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
		if (SUCCEEDED(hTRes))
		{
			hTRes = m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(130),
				((CScoreGatherApp*)AfxGetApp())->m_pConn.GetInterfacePtr(),
				adOpenDynamic,adLockPessimistic,adCmdText);
			if(SUCCEEDED(hTRes))
			{
				if (!(m_pRecordset->adoEOF))//公式表中有此年度的公式则删除
				{
					strSQL="delete from formula where my_year='";
					strSQL=strSQL+str+"'";
					(((CScoreGatherApp*)AfxGetApp())->m_pConn)->Execute((_bstr_t)strSQL,NULL,adCmdText);
					if(m_year.GetCount()>1)
					{
						if(m_year.GetCount()>x+1)//如果删除项不是最后项则下移,否则上移
							m_year.SetCurSel(x+1);
						else
							m_year.SetCurSel(x-1);
						view();
					}
					else
						clsctrl();
				}
			}
		}
	}
	else
		AfxMessageBox("学年度信息为空!");
}

⌨️ 快捷键说明

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