📄 bootstrap.cpp
字号:
// BootStrap.cpp : implementation file
//
#include "stdafx.h"
#include "SPSS.h"
#include "BootStrap.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBootStrap dialog
CBootStrap::CBootStrap(CWnd* pParent /*=NULL*/)
: CDialog(CBootStrap::IDD, pParent)
{
//{{AFX_DATA_INIT(CBootStrap)
m_Capacity = 0;
m_Number = 0;
//}}AFX_DATA_INIT
OriginData.DataNum = 0;
}
void CBootStrap::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBootStrap)
DDX_Control(pDX, IDC_RESULTDATA, m_ResultDataList);
DDX_Control(pDX, IDC_ORIGNDATA, m_OrignDataList);
DDX_Text(pDX, IDC_CAPACITY, m_Capacity);
DDX_Text(pDX, IDC_SAMPLENUMBER, m_Number);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBootStrap, CDialog)
//{{AFX_MSG_MAP(CBootStrap)
ON_BN_CLICKED(IDC_LOAD, OnLoad)
ON_BN_CLICKED(IDC_SAVE, OnSave)
ON_BN_CLICKED(IDC_CALCULATE, OnCalculate)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBootStrap message handlers
void CBootStrap::OnLoad()
{
CRecordset mRecord;
mRecord.m_pDatabase = &(mDataBase.m_db);
TRY
{
//=========================================================================
//============================对Affaire进行操作============================
char *tempName = "SELECT * FROM Samples";
mRecord.Open(CRecordset::dynaset,tempName,CRecordset::none);
mRecord.MoveFirst();
int i = 0;
while(!(mRecord.IsEOF()))
{
CDBVariant findValue;
short index = 0;
mRecord.GetFieldValue(index,findValue);
OriginData.Data[i] = *(findValue.m_pstring);
m_OrignDataList.InsertItem(i,OriginData.Data[i]);
++i;
mRecord.MoveNext();
}
OriginData.DataNum = i;
mRecord.Close();
}
CATCH(CDBException, ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException, pEx)
{
pEx->ReportError();
AfxMessageBox("Memory Exception!");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError, 100);
AfxMessageBox(szError);
}
END_CATCH
}
void CBootStrap::OnSave()
{
}
BOOL CBootStrap::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
LVCOLUMN Colum;
Colum.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER;
Colum.fmt = LVCFMT_CENTER;
Colum.cx = 130;
Colum.pszText = "Data";
Colum.iOrder = 0;
Colum.iSubItem = 0;
m_OrignDataList.InsertColumn(0,&Colum);
m_OrignDataList.SetExtendedStyle(m_OrignDataList.GetExtendedStyle()|LVS_EX_SUBITEMIMAGES|LVS_EX_GRIDLINES);
LVCOLUMN Columb;
Columb.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER;
Columb.fmt = LVCFMT_CENTER;
Columb.cx = 130;
Columb.pszText = "ResultData";
Columb.iOrder = 0;
Columb.iSubItem = 0;
m_ResultDataList.InsertColumn(0,&Columb);
m_ResultDataList.SetExtendedStyle(m_ResultDataList.GetExtendedStyle()|LVS_EX_SUBITEMIMAGES|LVS_EX_GRIDLINES);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CBootStrap::OnCalculate()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString *pStrTemp;
pStrTemp = new CString[m_Capacity];
srand((unsigned)time(NULL));
CString TableName[5] = {"One","Two","Three","Four","Five"};
CString SQLa = "CREATE TABLE One(Team1 CHAR(10),\
Team2 CHAR(10),\
Team3 CHAR(10),\
Team4 CHAR(10),\
Team5 CHAR(10),\
Team6 CHAR(10),\
Team7 CHAR(10),\
Team8 CHAR(10),\
Team9 CHAR(10),\
Team10 CHAR(10),\
Team11 CHAR(10),\
Team12 CHAR(10),\
Team13 CHAR(10),\
Team14 CHAR(10),\
Team15 CHAR(10),\
Team16 CHAR(10),\
Team17 CHAR(10),\
Team18 CHAR(10),\
Team19 CHAR(10),\
Team20 CHAR(10)\
);";
CString SQLb = "CREATE TABLE Two(Team1 CHAR(10),\
Team2 CHAR(10),\
Team3 CHAR(10),\
Team4 CHAR(10),\
Team5 CHAR(10),\
Team6 CHAR(10),\
Team7 CHAR(10),\
Team8 CHAR(10),\
Team9 CHAR(10),\
Team10 CHAR(10),\
Team11 CHAR(10),\
Team12 CHAR(10),\
Team13 CHAR(10),\
Team14 CHAR(10),\
Team15 CHAR(10),\
Team16 CHAR(10),\
Team17 CHAR(10),\
Team18 CHAR(10),\
Team19 CHAR(10),\
Team20 CHAR(10)\
);";
CString SQLc = "CREATE TABLE Three(Team1 CHAR(10),\
Team2 CHAR(10),\
Team3 CHAR(10),\
Team4 CHAR(10),\
Team5 CHAR(10),\
Team6 CHAR(10),\
Team7 CHAR(10),\
Team8 CHAR(10),\
Team9 CHAR(10),\
Team10 CHAR(10),\
Team11 CHAR(10),\
Team12 CHAR(10),\
Team13 CHAR(10),\
Team14 CHAR(10),\
Team15 CHAR(10),\
Team16 CHAR(10),\
Team17 CHAR(10),\
Team18 CHAR(10),\
Team19 CHAR(10),\
Team20 CHAR(10)\
);";
CString SQLd = "CREATE TABLE Four(Team1 CHAR(10),\
Team2 CHAR(10),\
Team3 CHAR(10),\
Team4 CHAR(10),\
Team5 CHAR(10),\
Team6 CHAR(10),\
Team7 CHAR(10),\
Team8 CHAR(10),\
Team9 CHAR(10),\
Team10 CHAR(10),\
Team11 CHAR(10),\
Team12 CHAR(10),\
Team13 CHAR(10),\
Team14 CHAR(10),\
Team15 CHAR(10),\
Team16 CHAR(10),\
Team17 CHAR(10),\
Team18 CHAR(10),\
Team19 CHAR(10),\
Team20 CHAR(10)\
);";
CString SQLe = "CREATE TABLE Five(Team1 CHAR(10),\
Team2 CHAR(10),\
Team3 CHAR(10),\
Team4 CHAR(10),\
Team5 CHAR(10),\
Team6 CHAR(10),\
Team7 CHAR(10),\
Team8 CHAR(10),\
Team9 CHAR(10),\
Team10 CHAR(10),\
Team11 CHAR(10),\
Team12 CHAR(10),\
Team13 CHAR(10),\
Team14 CHAR(10),\
Team15 CHAR(10),\
Team16 CHAR(10),\
Team17 CHAR(10),\
Team18 CHAR(10),\
Team19 CHAR(10),\
Team20 CHAR(10)\
);";
CString SQLCommand[5];
SQLCommand[0] = SQLa;
SQLCommand[1] = SQLb;
SQLCommand[2] = SQLc;
SQLCommand[3] = SQLd;
SQLCommand[4] = SQLe;
TRY
{
if(OriginData.DataNum == 0)
{
AfxMessageBox("小猪,你还没有载入数据!");
return;
}
else
{
if(m_Capacity == 0)
{
AfxMessageBox("小猪,你还没有输入数据样本容量!");
return;
}
else
if(m_Number == 0 || m_Number > 100)
{
AfxMessageBox("小猪,你还输入的数据样本个数有误!");
return;
}
else
{
for(int i = 0;i < m_Number;++i)
{
if(i == 0)
{
//(mDataBase.m_db).ExecuteSQL(SQLCommand[0]);
TableNum = 1;
}
if(i == 20)
{
// (mDataBase.m_db).ExecuteSQL(SQLCommand[1]);
TableNum = 2;
}
if(i == 40)
{
// (mDataBase.m_db).ExecuteSQL(SQLCommand[2]);
TableNum = 3;
}
if(i == 60)
{
// (mDataBase.m_db).ExecuteSQL(SQLCommand[3]);
TableNum = 4;
}
if(i == 80)
{
// (mDataBase.m_db).ExecuteSQL(SQLCommand[4]);
TableNum = 5;
}
for(int j = 0;j < m_Capacity;++j)
{
int k;
k = rand() % OriginData.DataNum;
pStrTemp[j] = OriginData.Data[k];
m_ResultDataList.InsertItem(j,pStrTemp[j]);
CString SQLOrder;
CString StrTempOne;
StrTempOne.Format("%d",(i % 20) + 1);
SQLOrder = "INSERT INTO " + TableName[i / 20] + "(Team" + StrTempOne + ")" + " VALUES('" + pStrTemp[j]+ "');";
mDataBase.m_db.ExecuteSQL(SQLOrder);
}
}
}
}
}
CATCH(CDBException, ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException, pEx)
{
pEx->ReportError();
AfxMessageBox("Memory Exception!");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError, 100);
AfxMessageBox(szError);
}
END_CATCH
}
void CBootStrap::OnDelete()
{
// TODO: Add your control notification handler code here
switch(TableNum)
{
case 1:
DeleteTable("One");
break;
case 2:
DeleteTable("One");
DeleteTable("Two");
break;
case 3:
DeleteTable("One");
DeleteTable("Two");
DeleteTable("Three");
break;
case 4:
DeleteTable("One");
DeleteTable("Two");
DeleteTable("Three");
DeleteTable("Four");
break;
case 5:
DeleteTable("One");
DeleteTable("Two");
DeleteTable("Three");
DeleteTable("Four");
DeleteTable("Five");
break;
default:
DeleteTable("One");
break;
}
}
void CBootStrap::DeleteTable(CString TableName)
{
CString SQLCommand[5];
SQLCommand[0] = "DELETE FROM One;";
SQLCommand[1] = "DELETE FROM Two;";
SQLCommand[2] = "DELETE FROM Three;";
SQLCommand[3] = "DELETE FROM Four;";
SQLCommand[4] = "DELETE FROM Five;";
TRY
{
//=========================================================================
//============================对Affaire进行操作============================
mDataBase.m_db.ExecuteSQL(SQLCommand[0]);
mDataBase.m_db.ExecuteSQL(SQLCommand[1]);
mDataBase.m_db.ExecuteSQL(SQLCommand[2]);
mDataBase.m_db.ExecuteSQL(SQLCommand[3]);
mDataBase.m_db.ExecuteSQL(SQLCommand[4]);
}
CATCH(CDBException, ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException, pEx)
{
pEx->ReportError();
AfxMessageBox("Memory Exception!");
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError, 100);
AfxMessageBox(szError);
}
END_CATCH
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -