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

📄 boxset.cpp

📁 这是一个开关盒布线程序
💻 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 + -