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

📄 statdlg.cpp

📁 一个关于怎样模拟双色球彩票的代码 非常好的哦~~ 直接在VC++6 可编译
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// StatDlg.cpp : implementation file
//

#include "stdafx.h"
#include "DoubleColorBall.h"
#include "StatDlg.h"
#include "excel9.h"
#include "FileDialogST.h"
#include "CommDef.h"
#include "CommonTool.h"

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

/////////////////////////////////////////////////////////////////////////////
// CStatDlg dialog

// 初始化变量
CStatDlg::CStatDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CStatDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStatDlg)
	m_csIssue = _T("");
	m_csRedBall1 = _T(""); // 红球1
	m_csRedBall2 = _T(""); // 红球2
	m_csRedBall3 = _T(""); // 红球3
	m_csRedBall4 = _T(""); // 红球4
	m_csRedBall5 = _T(""); // 红球5
	m_csRedBall6 = _T(""); // 红球6
	m_csFrom = _T(""); // 期号开始
	m_csTo = _T(""); // 期号结束
	m_csRedBlueBallIni = _T("");
	m_csBlueBall = _T(""); // 蓝球1
	//}}AFX_DATA_INIT

	m_csRedBallTimes = _T("");
    m_csBlueBallTimes = _T("");
    m_csRedBallFlag = _T("");
    m_csBlueBallFlag = _T("");
    m_bIsAllStat = false;
    m_csarSpecifiedRedBlueBall.RemoveAll();
}


void CStatDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStatDlg)
	DDX_Control(pDX, IDC_CHECK_RED_BLUE_BALL, m_chkRedBlueBall);
	DDX_Control(pDX, IDC_COMBO_BLUE_BALL, m_cmbBlueBall);
	DDX_Control(pDX, IDC_COMBO_RED_BALL, m_cmbRedBall);
	DDX_Text(pDX, IDC_EDIT_ISSUE, m_csIssue);
	DDX_Text(pDX, IDC_EDIT_RED_BALL1, m_csRedBall1);
	DDX_Text(pDX, IDC_EDIT_RED_BALL2, m_csRedBall2);
	DDX_Text(pDX, IDC_EDIT_RED_BALL3, m_csRedBall3);
	DDX_Text(pDX, IDC_EDIT_RED_BALL4, m_csRedBall4);
	DDX_Text(pDX, IDC_EDIT_RED_BALL5, m_csRedBall5);
	DDX_Text(pDX, IDC_EDIT_RED_BALL6, m_csRedBall6);
	DDX_Text(pDX, IDC_EDIT_FROM, m_csFrom);
	DDX_Text(pDX, IDC_EDIT_TO, m_csTo);
	DDX_Text(pDX, IDC_EDIT_FILE, m_csRedBlueBallIni);
	DDX_Text(pDX, IDC_EDIT_BLUE_BALL, m_csBlueBall);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CStatDlg, CDialog)
	//{{AFX_MSG_MAP(CStatDlg)
	ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
	ON_BN_CLICKED(IDC_BUTTON_SHOW_WIN_PRIZE, OnButtonShowWinPrize)
	ON_BN_CLICKED(IDC_BUTTON_BROWSE, OnButtonBrowse)
	ON_BN_CLICKED(IDC_BUTTON_STAT_SINGLE_RED_BALL, OnButtonStatSingleRedBall)
	ON_BN_CLICKED(IDC_BUTTON_STAT_SINGLE_BLUE_BALL, OnButtonStatSingleBlueBall)
	ON_BN_CLICKED(IDC_CHECK_RED_BLUE_BALL, OnCheckRedBlueBall)
	ON_BN_CLICKED(IDC_BUTTON_STAT_SELECTED_RED_BLUE_BALL, OnButtonStatSelectedRedBlueBall)
	ON_BN_CLICKED(IDC_BUTTON_STAT_ALL_BALL, OnButtonStatAllBall)
	ON_BN_CLICKED(IDC_BUTTON_QUIT, OnButtonQuit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStatDlg message handlers
// 初始化对话框
BOOL CStatDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	// 初始化工作目录
	CFile file;

	// 打开文件
    if (!file.Open(".\\PathRedBlueBallIni.ini",CFile::modeReadWrite|CFile::modeCreate|CFile::modeNoTruncate))
	{
		AfxMessageBox("File open fail!");
		return false;
	}
	
	// 移动到文件头
	file.SeekToBegin();
	int nLen = file.GetLength();

	// 读文件
	TCHAR buffer[200];
	buffer[0] = 0;
    file.Read(buffer,nLen);
	buffer[nLen ] = 0;
	
	// 关闭文件
	file.Close();
	
	m_csRedBlueBallIni = buffer;
	UpdateData(FALSE);
    GetDlgItem( IDC_EDIT_FILE )->EnableWindow( FALSE );
    
    // 添加33个红球和16个蓝球
    for ( int i = 1; i < 34; i++ )
    {
        CString csTempRedBall = _T("");
        csTempRedBall.Format( _T("%d"), i );
        m_cmbRedBall.AddString( csTempRedBall );
    }
    //m_cmbRedBall.SetCurSel( 0 );

    for ( int j = 1; j < 17; j++ )
    {
        CString csTempBlueBall = _T("");
        csTempBlueBall.Format( _T("%d"), j );
        m_cmbBlueBall.AddString( csTempBlueBall );
    }
	//m_cmbBlueBall.SetCurSel( 15 );
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

// 保存开过奖的红球和蓝球到文件中
void CStatDlg::OnButtonSave() 
{
	// TODO: Add your control notification handler code here
	// 检查期号
    bool bIsValidIssue = CheckIssue();
    if ( !bIsValidIssue )
    {
        return;
    }

    // 检查6个红球 
    bool bIsValidRedBall = CheckSixRedBall();
    if ( !bIsValidRedBall )
    {
        return;
    }
    
    // 检查1个蓝球 
    bool bIsValidBlueBall = CheckOneBlueBall();
    if ( !bIsValidBlueBall )
    {
        return;
    }

    // 开始保存
    // 创建 MySaveFile 文件夹.
	CFileFind finder;
	BOOL bFindMySaveFolder = finder.FindFile( SAVE_FILE_FOLDER );
    if ( !bFindMySaveFolder )
    {
        BOOL bSuccCreate = CreateDirectory( SAVE_FILE_FOLDER, NULL ) ;
        if ( !bSuccCreate )
        {
            AfxMessageBox( _T("^_^ 创建文件夹失败!") );
            return ;
        }
    }
    
    // 打开RedBlueBall.ini文件.
    if ( !myFile.Open( RED_BLUE_BALL_FILE_PATH, CFile::modeCreate|CFile::modeWrite|
         CFile::typeText|CFile::modeNoTruncate, &Fe) )
    {
        AfxMessageBox( _T("^_^ 打开文件失败!") );
		return;		
	}

	myFile.SeekToEnd();  // 将文件句柄移到文件最后
    CString csRedBlueBallInfo = m_csIssue;
    csRedBlueBallInfo += _T("|");
    csRedBlueBallInfo += m_csarRedBall.GetAt( 0 );
    csRedBlueBallInfo += _T(",");
    csRedBlueBallInfo += m_csarRedBall.GetAt( 1 );
    csRedBlueBallInfo += _T(",");
    csRedBlueBallInfo += m_csarRedBall.GetAt( 2 );
    csRedBlueBallInfo += _T(",");
    csRedBlueBallInfo += m_csarRedBall.GetAt( 3 );
    csRedBlueBallInfo += _T(",");
    csRedBlueBallInfo += m_csarRedBall.GetAt( 4 );
    csRedBlueBallInfo += _T(",");
    csRedBlueBallInfo += m_csarRedBall.GetAt( 5 );
    csRedBlueBallInfo += _T("|");
    csRedBlueBallInfo += m_csBlueBall;
    csRedBlueBallInfo += _T("\r\n");

    // 写文件
	myFile.WriteString( csRedBlueBallInfo );		
    
    // 关闭文件
	myFile.Close(); 
    
    // 给出保存成功的信息
    Sleep( 1500 );
    AfxMessageBox( _T("^_^ 恭喜你,保存成功!") );

    // 清空编辑框和数组
    m_csIssue = _T("");
    m_csRedBall1 = _T("");
    m_csRedBall2 = _T("");
    m_csRedBall3 = _T("");
    m_csRedBall4 = _T("");
    m_csRedBall5 = _T("");
    m_csRedBall6 = _T("");
    m_csBlueBall = _T("");

    m_csarRedBall.RemoveAll();

    UpdateData( FALSE );
}

// 显示开过奖的红蓝球信息
void CStatDlg::OnButtonShowWinPrize() 
{
	// TODO: Add your control notification handler code here
	UpdateData();

    // 检查开始期号和结束期号的有效性
    if ( m_csFrom.IsEmpty() )  // 开始期号为空
    {
        AfxMessageBox( _T("起始期号不可以为空!") );
        GetDlgItem( IDC_EDIT_FROM )->SetFocus();
        return;
    }

    if ( m_csTo.IsEmpty() )  // 结束期号为空
    {
        AfxMessageBox( _T("中止期号不可以为空!") );
        GetDlgItem( IDC_EDIT_TO )->SetFocus();
        return;
    }
    
    CCommonTool::DeleteLeftRightSpaceFromCString( m_csFrom );
    CCommonTool::DeleteLeftRightSpaceFromCString( m_csTo );

    int nFrom = atoi( m_csFrom );
    int nTo = atoi( m_csTo );

    if ( nFrom > nTo ) // 开始期号大于结束期号
    {
        AfxMessageBox( _T("起始期号不能大于中止期号,请重新输入!") );
        GetDlgItem( IDC_EDIT_FROM )->SetFocus();

        m_csFrom = _T("");
        m_csTo = _T("");
        UpdateData( FALSE );
        return;
    }

    // 检查用户输入的开奖起始期号和中止期号是否有效.
    CStringArray csarIssue;
    GetIssue( csarIssue );

    bool IsValidIssue = CheckIssue( csarIssue, m_csFrom );
    if ( !IsValidIssue )
    {
        AfxMessageBox( _T("你输入的开奖起始期号不存在!") );
        m_csFrom = _T("");
        UpdateData( FALSE );
        GetDlgItem( IDC_EDIT_FROM )->SetFocus();
        return;
    }

    IsValidIssue = CheckIssue( csarIssue, m_csTo );
    if ( !IsValidIssue )
    {
        AfxMessageBox( _T("你输入的开奖中止期号不存在!") );
        m_csTo = _T("");
        UpdateData( FALSE );
        GetDlgItem( IDC_EDIT_TO )->SetFocus();
        return;
    }

    // 获得指定期号的红球和蓝球.
    GetSpecifiedRedBlueBall(m_csFrom, 
		                    m_csTo, 
							m_csarSpecifiedRedBlueBall);

    // 显示获奖信息.
    CString csInfo = _T("");
    for ( int i = 0; i < m_csarSpecifiedRedBlueBall.GetSize(); i++ )
    {
        csInfo += m_csarSpecifiedRedBlueBall.GetAt( i );
        csInfo += _T("\r\n");
    }

    // 打开文件
	CFile file;
	if ( !file.Open( _T("c:\\WinPrizeRedBlueInfo.txt"),
		            CFile::modeReadWrite | 
					CFile::modeCreate | 
					CFile::modeNoTruncate) )
	{
		AfxMessageBox( _T("文件打开失败!" ));
		return;
	}
	
	// 将文件句柄定位到文件头
	file.SeekToBegin();	
	
	// 清空文件
	file.SetLength( 0 );
		
	// 写文件
	file.Write( LPCTSTR(csInfo),csInfo.GetLength() );

	// 关闭文件
	file.Close();
    
    m_csarSpecifiedRedBlueBall.RemoveAll();
    csarIssue.RemoveAll();
    myFile.Close();

    // 在记事本中显示文件信息
	WinExec( _T("notepad.exe c:\\WinPrizeRedBlueInfo.txt"), SW_MAXIMIZE );
}

// 浏览文件
void CStatDlg::OnButtonBrowse() 
{
	// TODO: Add your control notification handler code here
	CFileDialogST	dlg;	
	CString	 sStaticsDirectory;
	int	 nRetValue;

	nRetValue = dlg.SelectFolder(_T("请选择RedBlueBall.ini文件"), 
		                         RED_BLUE_BALL_FILE_PATH, 0x40|
								 BIF_RETURNFSANCESTORS| 
								 BIF_RETURNONLYFSDIRS|
								 BIF_BROWSEINCLUDEFILES|
								 OFN_ALLOWMULTISELECT, 
								 this);
	if ( IDOK == nRetValue )
	{
		m_csRedBlueBallIni = dlg.GetSelectedFolder();		
	} 

	UpdateData(FALSE);
    GetDlgItem( IDC_EDIT_FILE )->EnableWindow( FALSE );

    // 把RedBlueBall.ini 目录写入到.ini file,
	// 以便下次启动后编辑框中默认显示上次指定的目录。
	CFile file;
	CString csBuffer = m_csRedBlueBallIni;
	CString csIniFile = _T(".\\PathRedBlueBallIni.ini");

	// 打开文件
    if(!file.Open(csIniFile,
		          CFile::modeReadWrite | 
				  CFile::modeCreate | 
				  CFile::modeNoTruncate))
	{
		AfxMessageBox(_T("文件打开失败!"));
		return ;
	}
	
	// 把文件句柄移到文件头
	file.SeekToBegin();

	// 清空文件内容
	file.SetLength( 0 );

	// 写文件
	file.Write(LPCTSTR(csBuffer),csBuffer.GetLength());
	
	// 关闭文件
	file.Close();
}

// 统计单个红球
void CStatDlg::OnButtonStatSingleRedBall() 
{
	// TODO: Add your control notification handler code here
	int nIndex = m_cmbRedBall.GetCurSel();
    if ( -1 == nIndex  )
    {
        MessageBox( _T("^_^ 你还没有选择红球,请选择!"), 
			           _T("友情提示"), 
					   MB_ICONASTERISK );
        return;
    }

    // 从RedBlueBallIni.ini文件中获得红球.
    CStringArray csarRedBallString;
    GetRedBallString(csarRedBallString);

    // 获得所有红球
	CStringArray csarRedBall;
    GetAllRedBall( csarRedBallString, csarRedBall );  
    
    // 显示单个红球出现的次数.
    CString csCurSelRedBall = _T("");
    m_cmbRedBall.GetLBText( nIndex, csCurSelRedBall );
    int nCurSelRedBall = atoi( csCurSelRedBall );
    switch ( nCurSelRedBall )
    {
    case 1: // 红球1
        GetSingleRedBallTimes( 1, csarRedBall );
        break;
    case 2: // 红球2
        GetSingleRedBallTimes( 2, csarRedBall );
        break;
    case 3:
        GetSingleRedBallTimes( 3, csarRedBall );
        break;
    case 4:
        GetSingleRedBallTimes( 4, csarRedBall );
        break;
    case 5:
        GetSingleRedBallTimes( 5, csarRedBall );
        break;
    case 6:
        GetSingleRedBallTimes( 6, csarRedBall );
        break;
    case 7:
        GetSingleRedBallTimes( 7, csarRedBall );
        break;
    case 8:
        GetSingleRedBallTimes( 8, csarRedBall );
        break;
    case 9:
        GetSingleRedBallTimes( 9, csarRedBall );
        break;
    case 10:
        GetSingleRedBallTimes( 10, csarRedBall );
        break;
    case 11:
        GetSingleRedBallTimes( 11, csarRedBall );
        break;
    case 12:
        GetSingleRedBallTimes( 12, csarRedBall );
        break;
    case 13:
        GetSingleRedBallTimes( 13, csarRedBall );
        break;
    case 14:
        GetSingleRedBallTimes( 14, csarRedBall );
        break;
    case 15:
        GetSingleRedBallTimes( 15, csarRedBall );
        break;
    case 16:

⌨️ 快捷键说明

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