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

📄 guyihua.cpp

📁 采用c++编写的有关svm交叉验证的程序。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// guyihua.cpp : 实现文件
//

#include "stdafx.h"
#include "winsvm.h"
#include "guyihua.h"
#include ".\guyihua.h"
#include "winsvmDlg.h"

// Cguyihua 对话框

IMPLEMENT_DYNCREATE(Cguyihua, CDHtmlDialog)

Cguyihua::Cguyihua(CWnd* pParent /*=NULL*/)
	: CDHtmlDialog(Cguyihua::IDD, Cguyihua::IDH, pParent)
	, m_excelin(_T(""))
	, m_excelout(_T(""))
	, m_guyihuain(_T(""))
	, m_guyihuaout(_T(""))
	, y_lower(0)
	, y_upper(0)
	, upper(0)
	, lower(0)
	, m_sheet(1)
	, m_row(4)
	, m_lie(3)
	, m_rowend(273)
	, m_lieend(29)
	, m_jieguo(_T(""))
{

}

Cguyihua::~Cguyihua()
{
}

void Cguyihua::DoDataExchange(CDataExchange* pDX)
{
	CDHtmlDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT13, m_excelin);
	DDX_Text(pDX, IDC_EDIT14, m_excelout);
	DDX_Text(pDX, IDC_EDIT11, m_guyihuain);
	DDX_Text(pDX, IDC_EDIT12, m_guyihuaout);
	DDX_Text(pDX, IDC_EDIT1, y_lower);
	DDX_Text(pDX, IDC_EDIT15, y_upper);
	DDV_MinMaxDouble(pDX, y_upper, -1, 1);
	DDV_MinMaxDouble(pDX, y_lower, -1, 1);
	DDX_Text(pDX, IDC_EDIT18, upper);
	DDX_Text(pDX, IDC_EDIT17, lower);
	DDV_MinMaxDouble(pDX, lower, -1, 1);
	DDV_MinMaxDouble(pDX, upper, -1, 1);
	DDX_Text(pDX, IDC_EDIT2, m_sheet);
	DDX_Text(pDX, IDC_EDIT3, m_row);
	DDX_Text(pDX, IDC_EDIT4, m_lie);
	DDX_Text(pDX, IDC_EDIT5, m_rowend);
	DDX_Text(pDX, IDC_EDIT6, m_lieend);
	DDX_Text(pDX, IDC_EDIT16, m_jieguo);
}

BOOL Cguyihua::OnInitDialog()
{
	CDHtmlDialog::OnInitDialog();

	CString sPath;//合成数据源文件路径(在当前文件夹下)
	GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);//返回程序当前路径 d:\...\...\xx.exe
	sPath.ReleaseBuffer ();
	//AfxMessageBox(sPath);
	int nPos;
	//在发行状态,将*.exe & *.mdb放在同一文件夹下即可
	nPos = sPath.ReverseFind('\\');//只去掉 "\xx.exe"
	sPath = sPath.Left (nPos);

    m_guyihuaout = sPath + "\\guyihuaout.range";
    m_guyihuain = "<请输入地址>";
    m_excelout = sPath + "\\excelout.txt";
	m_excelin = "<请输入地址>";
	m_jieguo = sPath + "\\jieguo.txt";
	// TODO:  在此添加额外的初始化
    y_lower=lower=-1.0,y_upper=upper=1.0;
	y_scaling = 0;
	GetDlgItem(IDC_EDIT1)->ShowWindow(0);
    GetDlgItem(IDC_EDIT15)->ShowWindow(0);

    UpdateData(FALSE);

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

BEGIN_MESSAGE_MAP(Cguyihua, CDHtmlDialog)
	ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)
	ON_BN_CLICKED(IDC_BUTTON6, OnBnClickedButton6)
	ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
	ON_BN_CLICKED(IDC_BUTTON4, OnBnClickedButton4)
	ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON5, OnBnClickedButton5)
	ON_BN_CLICKED(IDC_CHECK1, OnBnClickedCheck1)
	ON_BN_CLICKED(IDC_CHECK2, OnBnClickedCheck2)
	ON_WM_CLOSE()
	ON_BN_CLICKED(IDC_BUTTON7, OnBnClickedButton7)
END_MESSAGE_MAP()

BEGIN_DHTML_EVENT_MAP(Cguyihua)
	DHTML_EVENT_ONCLICK(_T("ButtonOK"), OnButtonOK)
	DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnButtonCancel)
END_DHTML_EVENT_MAP()



// Cguyihua 消息处理程序

HRESULT Cguyihua::OnButtonOK(IHTMLElement* /*pElement*/)
{
	OnOK();
	return S_OK;  // 除非将焦点设置到控件,否则返回 TRUE
}

HRESULT Cguyihua::OnButtonCancel(IHTMLElement* /*pElement*/)
{
	OnCancel();
	return S_OK;  // 除非将焦点设置到控件,否则返回 TRUE
}

void Cguyihua::OnBnClickedButton3()
{
    CFileDialog fdlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"打开excel文件 (*.xls)|*.xls||");
	
	if(fdlg.DoModal()!=IDOK)
	{	
		return;
	}
	m_excelin=fdlg.GetPathName();
	SetDlgItemText(IDC_EDIT13,m_excelin);
}

void Cguyihua::OnBnClickedButton6()
{
	CFileDialog fdlg(false,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"保存文件 (*.txt)|*.txt||");
	if(fdlg.DoModal()!=IDOK)
	{	
		return;
	}
	m_excelout=fdlg.GetPathName();	SetDlgItemText(IDC_EDIT14,m_excelout);
}

void Cguyihua::OnBnClickedButton2()
{
    CFileDialog fdlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"打开文件 (*.*)|*.*||");
	
	if(fdlg.DoModal()!=IDOK)
	{	
		return;
	}
	m_guyihuain=fdlg.GetPathName();
	SetDlgItemText(IDC_EDIT11,m_guyihuain);
}

void Cguyihua::OnBnClickedButton4()
{  
	CButton* p2 = (CButton*)GetDlgItem(IDC_CHECK2);
	if (p2->GetCheck())
	{
    CFileDialog fdlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"打开文件 (*.*)|*.*||");
	
	if(fdlg.DoModal()!=IDOK)
	{	
		return;
	}
	m_guyihuaout=fdlg.GetPathName();
	SetDlgItemText(IDC_EDIT12,m_guyihuaout);
	}
	else
	{
	CFileDialog fdlg(false,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"保存文件 (*.range)|*.range||");
	if(fdlg.DoModal()!=IDOK)
	{	
		return;
	}
	m_guyihuaout=fdlg.GetPathName();	SetDlgItemText(IDC_EDIT12,m_guyihuaout);
	}
}


void Cguyihua::OnBnClickedButton1()
{
	CLSID clsid;
	HRESULT hr;
	hr=::CLSIDFromProgID(L"Word.Application",&clsid);	//通过ProgID取得CLSID
	if(FAILED(hr))
	{
		AfxMessageBox(_T("居然你连OFFICE都没有安装吗?"));
		return;
	}
    UpdateData();
	CFileStatus status;//发现有该文件就退出程序
	if( !CFile::GetStatus( m_excelin, status ) )
	{
	    MessageBox("excel文件不存在!");
		return;
	}

    CFile f;
    CFileException e;
    if( !f.Open( m_excelout, CFile::modeCreate | CFile::modeWrite, &e ) )
    {
		/*AfxGetMainWnd ()->*/MessageBox("excel输出不能备件!");
		return;
    }
	//f.Close();//一定要加,不然ini文件写不了	

//	excel初始化
	COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
	COleVariant covTrue((short)TRUE), covFalse((short)FALSE);
    _Application objApp;
	Workbooks objBooks;
	_Workbook objBook;
	Worksheets objSheets;
	_Worksheet objSheet;
	Range objRange;	
 
	//创建Excel对象
	if (!objApp.CreateDispatch("Excel.Application"))
	{
		AfxMessageBox("无法启动Excel服务器!");
		return;
	}
	objApp.SetVisible(true);//excel是否显示
    objApp.SetUserControl(TRUE);      //允许其它用户控制Excel

	objBooks=objApp.GetWorkbooks();	//返回工作簿对象

	// 打开指定Excel文件
	objBook.AttachDispatch(objBooks.Add(_variant_t(m_excelin)));
	objSheets=objBook.GetSheets();

	// 定义第m_sheet个表为对象
	objSheet=objSheets.GetItem((_variant_t)short(m_sheet));
 
    //得到全部的行数用  
 //   objRange.AttachDispatch(objSheet.GetRows());
	//long iRowNum=objRange.GetCount();
    //得到全部的列数用    
	//objRange.AttachDispatch(objSheet.GetColumns());
	//long iColNum=objRange.GetCount(); 
    //得到全部的区域 
	//得到全部Cells,此时,objRange是cells的集合 
    objRange.AttachDispatch(objSheet.GetCells(),true); 


	////读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列
 //   Range usedRange;
 //   usedRange.AttachDispatch(objSheet.GetUsedRange());
	////已经使用的行数,
 //   objRange.AttachDispatch(usedRange.GetRows());
 //   long iRowNum=objRange.GetCount();  
 //    //已经使用的列数
 //   objRange.AttachDispatch(usedRange.GetColumns());
 //   long iColNum=objRange.GetCount();  

    // long iStartRow=usedRange.GetRow();    //已使用区域的起始行,从1开始
    // long iStartCol=usedRange.GetColumn();    //已使用区域的起始列,从1开始
    
	BeginWaitCursor ();//鼠标光标

	//一下针对全部区域的位置读写
	CString excelfile,tr;
	char ch3[10];
	for(int i=m_row;i<=m_rowend;i++)
	{	
		excelfile+=CString(objRange.GetItem(_variant_t((long)(i)),_variant_t((long)(m_lie))));
		excelfile+=" ";
		for(int j=m_lie+1;j<=m_lieend;j++)
		{		
		    itoa(j-m_lie,ch3,10);
		    excelfile+=ch3;
			excelfile+=":";
			tr=CString(objRange.GetItem(_variant_t((long)(i)),_variant_t((long)(j))));
			if (tr.IsEmpty())
			{
			    excelfile+="0";
			}
			else
			{
				excelfile+=tr;
			}
			excelfile+=" ";
		}
		excelfile+="\n";
	}
//	CArchive ar(&f,CArchive::store);
 	f.Write(excelfile ,excelfile.GetLength());//写文本
 //   ar << excelfile;
//	ar.Close();
	f.Close();//一定要加,

//		COleVariant FileName(_T(m_excelin));
//		objBook.Close(covTrue,FileName,covOptional);//保存关闭表

  //  objBook.SaveAs(COleVariant(m_excelin),COleVariant((short)-4143),covOptional,covOptional,covOptional,covOptional,0,covOptional,covOptional,covOptional,covOptional,covOptional);//save

	objBook.Close(COleVariant((short)0),covOptional,covOptional); //close


//		COleVariant FileName(_T(m_excelin));
//	    objBook.SaveCopyAs(FileName);//另保存

	// 释放句柄
	objRange.ReleaseDispatch();
	//usedRange.ReleaseDispatch();//使用区域指针释放
	objSheet.ReleaseDispatch();
	objSheets.ReleaseDispatch();
	objBook.ReleaseDispatch();
	objBooks.ReleaseDispatch();
	//objApp.Quit();
	objApp.ReleaseDispatch();	
	EndWaitCursor ();	//结束光标
    if(MessageBox("excel信息已经成功导入文本\n继续作归一化处理么?","请选择 ",MB_YESNO)==IDNO)
	{
		return;
	} 
	SetDlgItemText(IDC_EDIT11,m_excelout);
	OnBnClickedButton5();
}

void Cguyihua::OnBnClickedButton5()
{
	UpdateData();
    CFile fg;
    CFileException e;
    if( !fg.Open( m_jieguo, CFile::modeCreate | CFile::modeWrite, &e ) )
    {
		/*AfxGetMainWnd ()->*/MessageBox("归一化输出不能备件!");
		return;
    }

	FILE *fp;	char save_filename[1024];//char*改为[1024]	char restore_filename[1024];//char*改为[1024]	char filename[1024];//char*改为[1024]	CButton* p2 = (CButton*)GetDlgItem(IDC_CHECK2);
	if (p2->GetCheck())
		strcpy(restore_filename, m_guyihuaout);
	else
		strcpy(save_filename, m_guyihuaout);
	strcpy(filename, m_guyihuain);
	if(!(upper > lower) || (y_scaling && !(y_upper > y_lower)))	{		//fprintf(stderr,"inconsistent lower/upper specification\n");		//exit(1);

⌨️ 快捷键说明

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