📄 boxset.cpp
字号:
// BoxSet.cpp : implementation file
//
#include "stdafx.h"
#include "SwitchBox.h"
#include "BoxSet.h"
#include <list>
using std::list;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBoxSet dialog
//extern CSwitchBoxApp::g_pDb;
CBoxSet::CBoxSet(CWnd* pParent /*=NULL*/)
: CDialog(CBoxSet::IDD, pParent)
{
//{{AFX_DATA_INIT(CBoxSet)
m_Group1_1 = 0;
m_Group1_2 = 0;
m_Group2_1 = 0;
m_Group2_2 = 0;
m_Group3_1 = 0;
m_Group3_2 = 0;
m_Group4_1 = 0;
m_Group4_2 = 0;
m_Name = _T("");
//}}AFX_DATA_INIT
}
void CBoxSet::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBoxSet)
DDX_Text(pDX, IDC_Group1_1, m_Group1_1);
DDX_Text(pDX, IDC_Group1_2, m_Group1_2);
DDX_Text(pDX, IDC_Group2_1, m_Group2_1);
DDX_Text(pDX, IDC_Group2_2, m_Group2_2);
DDX_Text(pDX, IDC_Group3_1, m_Group3_1);
DDX_Text(pDX, IDC_Group3_2, m_Group3_2);
DDX_Text(pDX, IDC_Group4_1, m_Group4_1);
DDX_Text(pDX, IDC_Group4_2, m_Group4_2);
DDX_Text(pDX, IDC_Name, m_Name);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBoxSet, CDialog)
//{{AFX_MSG_MAP(CBoxSet)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBoxSet message handlers
void CBoxSet::OnOK()
{
DWORD dStart=GetTickCount();
UpdateData(true);
if ( m_Name.IsEmpty() )
{
AfxMessageBox(" 请输入方案名称!");
return;
}
group[0].order = 1;
group[0].data = m_Group1_1;
group[1].order = 1;
group[1].data = m_Group1_2;
group[2].order = 2;
group[2].data = m_Group2_1;
group[3].order = 2;
group[3].data = m_Group2_2;
group[4].order = 3;
group[4].data = m_Group3_1;
group[5].order = 3;
group[5].data = m_Group3_2;
group[6].order = 4;
group[6].data = m_Group4_1;
group[7].order = 4;
group[7].data = m_Group4_2;
if ( !AnalyseScheme() )
{
AfxMessageBox("方案不合理,电线之间会发生交叉!\n请重新设定方案!");
return ;
}
CString sql;
sql.Format("insert into switchbox ( ProjectName,Group1, Group2) values ('%s', '%d', '%d') ", m_Name, m_Group1_1, m_Group1_2);
((static_cast<CSwitchBoxApp *>(AfxGetApp()))->g_pDb)->Execute(sql);
sql.Format("insert into switchbox ( ProjectName,Group1, Group2) values ('%s', '%d', '%d') ", m_Name, m_Group2_1, m_Group2_2);
((static_cast<CSwitchBoxApp *>(AfxGetApp()))->g_pDb)->Execute(sql);
sql.Format("insert into switchbox ( ProjectName,Group1, Group2) values ('%s', '%d', '%d') ", m_Name, m_Group3_1, m_Group3_2);
((static_cast<CSwitchBoxApp *>(AfxGetApp()))->g_pDb)->Execute(sql);
sql.Format("insert into switchbox ( ProjectName,Group1, Group2) values ('%s', '%d', '%d') ", m_Name, m_Group4_1, m_Group4_2);
((static_cast<CSwitchBoxApp *>(AfxGetApp()))->g_pDb)->Execute(sql);
CDialog::OnOK();
DWORD dEnd=GetTickCount();
CString strDisplay;
strDisplay.Format("判断是否可布线算法耗时:%dms",dEnd-dStart);
MessageBox(strDisplay);
}
bool CBoxSet::AnalyseScheme()
{
/* list<Group> myList;
int index = BeSureOne();//1
myList.push_back(group[index]);
int curIndex = ReturnOrder(2);
if ( group[index].order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
//处理3
curIndex = ReturnOrder(3);
if ( myList.size() == 0 )
myList.push_back(group[2]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
//处理4
curIndex = ReturnOrder(4);
if ( myList.size() == 0)
myList.push_back(group[3]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
//处理5
curIndex = ReturnOrder(5);
if ( myList.size() == 0 )
myList.push_back(group[4]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
//处理6
curIndex = ReturnOrder(6);
if ( myList.size() == 0 )
myList.push_back(group[5]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
//处理7
curIndex = ReturnOrder(7);
if ( myList.size() == 0 )
myList.push_back(group[6]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
//处理8
curIndex = ReturnOrder(8);
if ( myList.size() == 0 )
myList.push_back(group[7]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
if ( myList.size() == 0)
return true;
else
return false;
}*/
list<Group> myList;
int index = BeSureOne();//1
myList.push_back(group[index]);
int curIndex = ReturnOrder(2);
if ( group[index].order == group[curIndex].order )
myList.pop_back();
else
myList.push_back(group[curIndex]);
//处理3
curIndex = ReturnOrder(3);
if ( myList.size() == 0 )
myList.push_back(group[curIndex]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
//处理4
curIndex = ReturnOrder(4);
if ( myList.size() == 0)
myList.push_back(group[curIndex]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
//处理5
curIndex = ReturnOrder(5);
if ( myList.size() == 0 )
myList.push_back(group[curIndex]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
//处理6
curIndex = ReturnOrder(6);
if ( myList.size() == 0 )
myList.push_back(group[curIndex]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
//处理7
curIndex = ReturnOrder(7);
if ( myList.size() == 0 )
myList.push_back(group[curIndex]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
//处理8
curIndex = ReturnOrder(8);
if ( myList.size() == 0 )
myList.push_back(group[curIndex]);
else
{
if ( myList.back().order == curIndex/2+1 )
myList.pop_back();
else
myList.push_back(group[curIndex]);
}
if ( myList.size() == 0)
return true;
else
return false;
}
int CBoxSet::BeSureOne()//返回是1的元素
{
if ( m_Group1_1 == 1)
return 0;
if ( m_Group1_2 == 1)
return 1;
if ( m_Group2_1 == 1)
return 2;
if ( m_Group2_2 == 1)
return 3;
if ( m_Group3_1 == 1)
return 4;
if ( m_Group3_2 == 1)
return 5;
if ( m_Group4_1 == 1)
return 6;
if ( m_Group4_2 == 1)
return 7;
}
int CBoxSet::ReturnOrder(int data)//返回元素号
{
for (int i=0; i<8; i++)
{
if ( group[i].data == data )
return i;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -