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

📄 queryview.cpp

📁 这是一个3D彩票统计查询方面的一个软件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// QueryView.cpp : implementation file
//

#include "stdafx.h"
#include "3d.h"
#include "QueryView.h"
#include "mainfrm.h"

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


/////////////////////////////////////////////////////////////////////////////
// CQueryView

IMPLEMENT_DYNCREATE(CQueryView, CFormView)

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

	//}}AFX_DATA_INIT
}

CQueryView::~CQueryView()
{
}

void CQueryView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CQueryView)
	DDX_Control(pDX, IDC_OTHERSTART2, m_bqstartctrl);
	DDX_Control(pDX, IDC_OTHERSTART, m_otherstartctrl);
	DDX_Control(pDX, IDC_END, m_endctrl);
	DDX_Control(pDX, IDC_START, m_startctrl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CQueryView, CFormView)
	//{{AFX_MSG_MAP(CQueryView)
	ON_BN_CLICKED(IDC_DRAWLINE1, OnDrawline1)
	ON_BN_CLICKED(IDC_QUERY1, OnQuery1)
	ON_BN_CLICKED(IDC_QUERY3DOTHER, OnQuery3dother)
	ON_BN_CLICKED(IDC_QUERY3DBQ, OnQuery3dbq)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CQueryView diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CQueryView message handlers

void CQueryView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(1);
	((CButton*)GetDlgItem(IDC_RADIO4))->SetCheck(1);

	m_visit.OnInit3D();
	CString strtmp = "";
	int ncount = 0;
	while(!m_visit.m_pSet->IsEOF())  
	{
		strtmp.Format ("%d",m_visit.m_pSet->m_ItemNo);
		m_startctrl.AddString(strtmp);
		m_endctrl.AddString(strtmp);
		m_otherstartctrl.AddString(strtmp);
		m_bqstartctrl.AddString(strtmp); 
		m_visit.m_pSet->MoveNext();
		ncount++;
	}
	m_visit.OnClose3D();

	m_startctrl.SetCurSel(5);
	m_endctrl.SetCurSel(ncount-1);
	m_otherstartctrl.SetCurSel(5);
	m_bqstartctrl.SetCurSel(5);
}

void CQueryView::OnDrawline1() 
{

}

void CQueryView::OnQuery1() 
{
	//检查和获取各个选择项的状态及取值
	mystate.bstartno = ((CButton*)GetDlgItem(IDC_CHECK1))->GetState();
	mystate.bendno = ((CButton*)GetDlgItem(IDC_CHECK2))->GetState();
	mystate.bhan  = ((CButton*)GetDlgItem(IDC_CHECK3))->GetState();
	mystate.bCount  = ((CButton*)GetDlgItem(IDC_CHECK4))->GetState();
	mystate.bcontinue = ((CButton*)GetDlgItem(IDC_CHECK5))->GetState();
	mystate.bsametail = ((CButton*)GetDlgItem(IDC_CHECK6))->GetState();
	mystate.bjgq = ((CButton*)GetDlgItem(IDC_CHECK7))->GetState();
	mystate.bjl = ((CButton*)GetDlgItem(IDC_CHECK8))->GetState();
	
	mystate.b0 = ((CButton*)GetDlgItem(IDC_CHECK9))->GetState();
	mystate.b1 = ((CButton*)GetDlgItem(IDC_CHECK10))->GetState();
	mystate.b2 = ((CButton*)GetDlgItem(IDC_CHECK11))->GetState();
	mystate.bds = ((CButton*)GetDlgItem(IDC_CHECK12))->GetState();
	

	if(((CButton*)GetDlgItem(IDC_RADIO1))->GetCheck() == 1)  //选择了直选方式
	{
		((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(0);
		((CButton*)GetDlgItem(IDC_RADIO3))->SetCheck(0);
		mystate.ustate = 1;
	}

	if(((CButton*)GetDlgItem(IDC_RADIO2))->GetCheck() == 1)  //选择了组3方式
	{
		((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(0);
		((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(0);
		mystate.ustate = 2;
	}

	if(((CButton*)GetDlgItem(IDC_RADIO3))->GetCheck() == 1)  //选择了组6方式
	{
		((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(0);
		((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(0);
		mystate.ustate = 3;
	}

	CString strtmp = "";
	int index = ((CComboBox*)GetDlgItem(IDC_START))->GetCurSel();
	((CComboBox*)GetDlgItem(IDC_START))->GetLBText( index, strtmp);
	mystate.ustartNo = atoi(strtmp);

	index = ((CComboBox*)GetDlgItem(IDC_END))->GetCurSel();
	((CComboBox*)GetDlgItem(IDC_END))->GetLBText( index, strtmp);
	mystate.uendNo = atoi(strtmp);
	
	((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(mystate.strhan);
	((CEdit*)GetDlgItem(IDC_EDIT2))->GetWindowText(mystate.strCount);


	((CEdit*)GetDlgItem(IDC_EDIT3))->GetWindowText(strtmp);
	mystate.ucontinue = atoi(strtmp);

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

	((CEdit*)GetDlgItem(IDC_EDIT5))->GetWindowText(strtmp);
	mystate.ujgq = atoi(strtmp);

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

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

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

	((CEdit*)GetDlgItem(IDC_EDIT10))->GetWindowText(strtmp);
	mystate.uds = atoi(strtmp);


	QueryAll(mystate,myarray);

	//将查询到的结果送到历史数据视
	CMainFrame* pmain = (CMainFrame*)AfxGetMainWnd();
	HWND m_hwnd;
	m_hwnd = (pmain->m_Framework.Get(3))->GetSafeWnd()->m_hWnd;
	::PostMessage(m_hwnd,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  FindSametail(UINT m[])
{
	int nmax = 0;
	int ntmp = 0;
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
		{
			if((m[i] - m[j]) == 0)
				ntmp++;
		}
		if(nmax < ntmp)
			nmax = ntmp;
		ntmp = 0;
	}
	return nmax;
}


//计算字符串中的参数个数,strDomain为要计算参数个数的字符串,cfgf为分隔符
int  fjstrtoUint(CString strDomain,char cfgf,CByteArray& barry)
{
	barry.RemoveAll();
	int ifirst=0;
	int ilen;
	int ncount = 0;
	strDomain.TrimLeft();
	strDomain.TrimRight();
	strDomain.MakeUpper();
	int i = strDomain.Find(cfgf);
	if(i < 0)  //类型或值域字符串中仅仅只有一项时
	{
		barry.Add(atoi(strDomain));
		ncount++;
		return ncount;
	}

	CString strtmp;
	ilen = strDomain.GetLength();
	while(i<ilen)
	{
		strtmp = strDomain.Mid(ifirst,i);
		
		if(strtmp == "*")
			barry.Add(99);
		else
			barry.Add(atoi(strtmp));
		ncount++;
	
		strDomain = strDomain.Mid(i+1,ilen);
		strDomain.TrimLeft();
		strDomain.TrimRight();

		ilen = strDomain.GetLength();
		i = strDomain.Find(cfgf);
		if(i<0)
		{
			//把最后一个数写入数组
			if(strDomain == "*")
				barry.Add(99);
			else
				barry.Add(atoi(strDomain));
			ncount++;
			return ncount;
		}
	}
	return 0;
}

//判断直选下所含号码时用
int FindSame(UINT m_data[],CByteArray& m)
{
	int n = 0;
	for(int j=0;j<m.GetSize();j++)
	{
		if(m[j] == 99)
			n++;
		if(m_data[j] == m[j])
			n++;
	}
	return n;
}

//判断组3下所含号码时用
int FindSamez3(UINT m_data[],CByteArray& m)
{
	int n = 0;
	for(int j=0;j<m.GetSize();j++)
	{
		if(m[j] == 99)
			n++;
		for(int k=0;k<3;k++)
		{
			if(m_data[k] == m[j] )
			{
				n++;
				continue;
			}
		}
	}
	return n;
}

//判断组6下所含号码时用
int FindSamez6(UINT m_data[],CByteArray& m)
{
	int n = 0;
	for(int j=0;j<m.GetSize();j++)
	{
		if(m[j] == 99)
			n++;
		for(int k=0;k<3;k++)
		{
			if(m_data[k] == m[j] )
			{
				n++;
				break;
			}
		}
	}
	return n;
}


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

	m_visit.OnInit3D();
	UINT  m_data[3] = {0,0,0};
	UINT  m_Count[2] = {0,0};
	CStringArray  m_strary;
	CByteArray    m_barry;

	fjstrParam(mystate.strhan,' ',m_strary);
	for(int i=0;i<m_strary.GetSize();i++)
		m_data[i] = atoi(m_strary.GetAt(i));
	//所含号码个数nCount
	int nCount = m_strary.GetSize();
	//号码和值
	int ncountvalue = 0;

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

	L3DDATA  myl3Ddata;

	bool  bstate = 0;
	CString strtmp = "";

	/////////////////////////////////////
	//在开始查询前限定查询范围

	while(!m_visit.m_pSet->IsEOF())
	{
		bstate = (mystate.bhan == 0) && (mystate.bCount == 0) && (mystate.bcontinue == 0) && \
			(mystate.bsametail == 0) && (mystate.bds == 0) &&(mystate.b0 == 0) && \
			(mystate.b1 == 0) && (mystate.b2 == 0) && (mystate.bjgq == 0) && (mystate.bjl == 0)\
			 && (mystate.bstartno == 0) && (mystate.bendno == 0);
		if(bstate)  //所有条件全部不选择
		{
			myl3Ddata.strbsg = "";
			myl3Ddata.uItemNo = m_visit.m_pSet->m_ItemNo;
			myl3Ddata.uBNo =  m_visit.m_pSet->m_BNo;
			myl3Ddata.uSNo =  m_visit.m_pSet->m_SNo;
			myl3Ddata.uGNo =  m_visit.m_pSet->m_GNo;
			
			strtmp.Format("%d ",myl3Ddata.uBNo);
			myl3Ddata.strbsg += strtmp;
			strtmp.Format("%d ",myl3Ddata.uSNo);
			myl3Ddata.strbsg += strtmp;
			strtmp.Format("%d",myl3Ddata.uGNo);
			myl3Ddata.strbsg += strtmp;

			myl3Ddata.uCountValue = m_visit.m_pSet->m_BNo + m_visit.m_pSet->m_SNo + m_visit.m_pSet->m_GNo;

			m_array.Add(myl3Ddata);
		}


		bstate = (mystate.bhan == 0) && (mystate.bCount == 0) && (mystate.bcontinue == 0) && \
			(mystate.bsametail == 1) && (mystate.bds == 0) &&(mystate.b0 == 0) && \
			(mystate.b1 == 0) && (mystate.b2 == 0) && (mystate.bjgq == 0) && (mystate.bjl == 0)\
			 && (mystate.bstartno == 1) && (mystate.bendno == 1);
		if(bstate && (m_visit.m_pSet->m_ItemNo >= mystate.ustartNo) && (m_visit.m_pSet->m_ItemNo <= mystate.uendNo))  //仅选择条件6:同尾个数
		{
			((CEdit*)GetDlgItem(IDC_EDIT4))->GetWindowText(strtmp);

⌨️ 快捷键说明

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