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

📄 queryformview.cpp

📁 这是我本人闲暇开发的一个双色球彩票软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// QueryFormView.cpp : implementation file
//

#include "stdafx.h"
#include "QueryFormView.h"
#include "ssq.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "mainfrm.h"
/////////////////////////////////////////////////////////////////////////////
// CQueryFormView

IMPLEMENT_DYNCREATE(CQueryFormView, CFormView)

CQueryFormView::CQueryFormView()
	: CFormView(CQueryFormView::IDD)
{
	//{{AFX_DATA_INIT(CQueryFormView)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

CQueryFormView::~CQueryFormView()
{
}

void CQueryFormView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CQueryFormView)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CQueryFormView, CFormView)
	//{{AFX_MSG_MAP(CQueryFormView)
	ON_BN_CLICKED(IDC_QUERY, OnQuery)
	ON_BN_CLICKED(IDC_DRAWLINE, OnDrawline)
	ON_CBN_DROPDOWN(IDC_START, OnDropdownStart)
	ON_CBN_DROPDOWN(IDC_END, OnDropdownEnd)
	ON_CBN_SELCHANGE(IDC_END, OnSelchangeEnd)
	ON_CBN_SELCHANGE(IDC_START, OnSelchangeStart)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CQueryFormView diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CQueryFormView message handlers

void CQueryFormView::OnQuery() 
{
	//检查和获取各个选择项的状态及取值
	mystate.bhanRed = ((CButton*)GetDlgItem(IDC_CHECK1))->GetState();
	mystate.bRCount = ((CButton*)GetDlgItem(IDC_CHECK2))->GetState();
	mystate.bblue  = ((CButton*)GetDlgItem(IDC_CHECK3))->GetState();
	mystate.bminred  = ((CButton*)GetDlgItem(IDC_CHECK4))->GetState();
	mystate.bmaxred = ((CButton*)GetDlgItem(IDC_CHECK5))->GetState();
	mystate.b0 = ((CButton*)GetDlgItem(IDC_CHECK6))->GetState();
	mystate.b1 = ((CButton*)GetDlgItem(IDC_CHECK7))->GetState();
	mystate.b2 = ((CButton*)GetDlgItem(IDC_CHECK8))->GetState();

	int index = ((CComboBox*)GetDlgItem(IDC_START))->GetCurSel();
	((CComboBox*)GetDlgItem(IDC_START))->GetLBText( index, mystate.strstartNo);

	index = ((CComboBox*)GetDlgItem(IDC_END))->GetCurSel();
	((CComboBox*)GetDlgItem(IDC_END))->GetLBText( index, mystate.strendNo);
	
	((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(mystate.strred);
	((CEdit*)GetDlgItem(IDC_EDIT2))->GetWindowText(mystate.strRCount);

	CString  strtmp = "";
	((CEdit*)GetDlgItem(IDC_EDIT3))->GetWindowText(strtmp);
	mystate.ublue = atoi(strtmp);

	((CEdit*)GetDlgItem(IDC_EDIT4))->GetWindowText(strtmp);
	mystate.uminRed = atoi(strtmp);

	((CEdit*)GetDlgItem(IDC_EDIT5))->GetWindowText(strtmp);
	mystate.umaxRed = atoi(strtmp);
	
	((CEdit*)GetDlgItem(IDC_EDIT6))->GetWindowText(strtmp);
	mystate.ub0 = atoi(strtmp);

	((CEdit*)GetDlgItem(IDC_EDIT7))->GetWindowText(strtmp);
	mystate.ub1 = atoi(strtmp);

	((CEdit*)GetDlgItem(IDC_EDIT8))->GetWindowText(strtmp);
	mystate.ub2 = atoi(strtmp);


	QueryAll(mystate,myarray);

	//将查询到的结果送到显示视
	CMainFrame* pmain = (CMainFrame*)AfxGetMainWnd();
	(pmain->pview)->SendMessage(WM_DISPDATA,(WPARAM)&myarray,0);

}

//计算字符串中的参数个数,strDomain为要计算参数个数的字符串,cfgf为分隔符
void fjstrParam(CString strDomain,char cfgf,CStringArray& m_strarray)
{
	//首先初始化引用数组
	m_strarray.RemoveAll();

	int ifirst=0;
	int ilen;
	int ncount = 0;
	strDomain.TrimLeft();
	strDomain.TrimRight();
	strDomain.MakeUpper();
	int i = strDomain.Find(cfgf);
	if(i < 0)  //类型或值域字符串中仅仅只有一项时
	{
		m_strarray.Add(strDomain);
		return ;
	}

	CString strtemp;
	ilen = strDomain.GetLength();
	while(i<ilen)
	{
		strtemp = strDomain.Mid(ifirst,i);
		
		m_strarray.Add(strtemp);
	
		strDomain = strDomain.Mid(i+1,ilen);
		strDomain.TrimLeft();
		strDomain.TrimRight();

		ilen = strDomain.GetLength();
		i = strDomain.Find(cfgf);
		if(i<0)
		{
			//把最后一个数写入数组
			m_strarray.Add(strDomain);	
			return ;
		}
	}
}


int  subFind(UINT m[],UINT n[])
{
	int nCount = 0;
	for(int j = 0;j<6;j++)
	{
		for(int i=0;i<6;i++)
			if(m[j] == n[i])
				nCount ++;
	}
	return nCount;
}


//根据所给定的所有条件进行查询,最终结果存放在m_array中
void  CQueryFormView::QueryAll(QUERYSTATE mystate,SSQARRAY& m_array)
{
	m_array.RemoveAll();

	m_visit.OnInit();
	UINT  m_Red[6] = {0,0,0,0,0,0};
	UINT  m_RCount[2] = {0,0};
	CStringArray  m_strary;

	fjstrParam(mystate.strred,' ',m_strary);
	for(int i=0;i<m_strary.GetSize();i++)
		m_Red[i] = atoi(m_strary.GetAt(i));
	//所含红码个数nRCount
	int nRCount = m_strary.GetSize();

	fjstrParam(mystate.strRCount,' ',m_strary);
	for(i=0;(i<m_strary.GetSize() && i<2);i++)
		m_RCount[i] = atoi(m_strary.GetAt(i));
	int nCountValue = m_strary.GetSize();

	SSQDATA  myssqdata;

	bool  bstate = 0;
	while(!m_visit.m_pSet->IsEOF())
	{
		bstate = (mystate.bhanRed == 1) && (mystate.bRCount == 1) && (mystate.bminred == 1) && \
			(mystate.bmaxred == 1) && (mystate.bblue == 1) &&(mystate.b0 == 1) && (mystate.b1 == 1) && (mystate.b2 == 1);
		if(bstate)  //所有条件全部选择
		{
			//
		}

		bstate = (mystate.bhanRed == 1) && (mystate.bRCount == 1) && (mystate.bminred == 1) && \
			(mystate.bmaxred == 1) && (mystate.bblue == 1) &&(mystate.b0 == 0) && (mystate.b1 == 0) && (mystate.b2 == 0);
		if(bstate)   //只选择了前面5个条件
		{
			UINT utmp[6] = {m_visit.m_pSet->m_Red1,m_visit.m_pSet->m_Red2,m_visit.m_pSet->m_Red3,m_visit.m_pSet->m_Red4,m_visit.m_pSet->m_Red5,m_visit.m_pSet->m_Red6};
			if(nCountValue == 1)   //只给出一个和值,表示仅查询该单独值的记录
				m_RCount[1] = m_RCount[0];
			
			if(subFind(m_Red,utmp) == nRCount   && (m_visit.m_pSet->m_RCountValue >= m_RCount[0] && m_visit.m_pSet->m_RCountValue <= m_RCount[1]) \
			   &&  (m_visit.m_pSet->m_Red1 >= mystate.uminRed) && (m_visit.m_pSet->m_Red6 <= mystate.umaxRed) && (m_visit.m_pSet->m_Blue == mystate.ublue))   //该记录符合查询条件要求
			{
				myssqdata.strNo = m_visit.m_pSet->m_qishu;
				myssqdata.iBlue = m_visit.m_pSet->m_Blue;
				myssqdata.iCountValue = m_visit.m_pSet->m_RCountValue;
				for(i = 0;i<6;i++)
					myssqdata.iRed[i] = utmp[i];
				m_array.Add(myssqdata);
			}
		}

		bstate = (mystate.bhanRed == 1) && (mystate.bRCount == 0) && (mystate.bminred == 0) && \
			(mystate.bmaxred == 0) && (mystate.bblue == 0) &&(mystate.b0 == 0) && (mystate.b1 == 0) && (mystate.b2 == 0);
	
		if(bstate)   //只选择条件1
		{
			UINT utmp[6] = {m_visit.m_pSet->m_Red1,m_visit.m_pSet->m_Red2,m_visit.m_pSet->m_Red3,m_visit.m_pSet->m_Red4,m_visit.m_pSet->m_Red5,m_visit.m_pSet->m_Red6};
			if(subFind(m_Red,utmp) == nRCount)   //该记录符合查询条件要求
			{
				myssqdata.strNo = m_visit.m_pSet->m_qishu;
				myssqdata.iBlue = m_visit.m_pSet->m_Blue;
				myssqdata.iCountValue = m_visit.m_pSet->m_RCountValue;
				for(i = 0;i<6;i++)
					myssqdata.iRed[i] = utmp[i];
				m_array.Add(myssqdata);
			}
		}
	
		bstate = (mystate.bhanRed == 0) && (mystate.bRCount == 1) && (mystate.bminred == 0) && \
			(mystate.bmaxred == 0) && (mystate.bblue == 0) &&(mystate.b0 == 0) && (mystate.b1 == 0) && (mystate.b2 == 0);
		if(bstate)   //只选择条件2
		{
			if(nCountValue == 1)   //只给出一个和值,表示仅查询该单独值的记录
				m_RCount[1] = m_RCount[0];
			if(m_visit.m_pSet->m_RCountValue >= m_RCount[0] && m_visit.m_pSet->m_RCountValue <= m_RCount[1])
			{
				myssqdata.strNo = m_visit.m_pSet->m_qishu;
				myssqdata.iBlue = m_visit.m_pSet->m_Blue;
				myssqdata.iCountValue = m_visit.m_pSet->m_RCountValue;
				
				myssqdata.iRed[0] = m_visit.m_pSet->m_Red1;
				myssqdata.iRed[1] = m_visit.m_pSet->m_Red2;
				myssqdata.iRed[2] = m_visit.m_pSet->m_Red3;
				myssqdata.iRed[3] = m_visit.m_pSet->m_Red4;
				myssqdata.iRed[4] = m_visit.m_pSet->m_Red5;
				myssqdata.iRed[5] = m_visit.m_pSet->m_Red6;

				m_array.Add(myssqdata);
			}
		}

		bstate = (mystate.bhanRed == 0) && (mystate.bRCount == 0) && (mystate.bminred == 0) && \

⌨️ 快捷键说明

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