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

📄 gear_para_main.cpp

📁 C# 教学示例程序
💻 CPP
字号:
// Gear_Para_Main.cpp : implementation file
//

#include "stdafx.h"
#include "gear_cutter_database.h"
#include "Gear_Para_Main.h"
#include "Sheet_Gear.h"

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

int symbol_gear;
int symb;
CRecordset m_pset_gear1;

/////////////////////////////////////////////////////////////////////////////
// CGear_Para_Main dialog

CGear_Para_Main::CGear_Para_Main(CWnd* pParent /*=NULL*/)
	: CDialog(CGear_Para_Main::IDD, pParent)
{
	//{{AFX_DATA_INIT(CGear_Para_Main)
	m_edit_value = _T("");
	//}}AFX_DATA_INIT
}


void CGear_Para_Main::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CGear_Para_Main)
	DDX_Control(pDX, IDC_COMBO_rela, m_combo_rela);
	DDX_Control(pDX, IDC_COMBO_attri, m_combo_attri);
	DDX_Control(pDX, IDC_LIST_gear_para_view, m_list_control);
	DDX_Text(pDX, IDC_EDIT_value, m_edit_value);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CGear_Para_Main, CDialog)
	//{{AFX_MSG_MAP(CGear_Para_Main)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_COMMAND(ID_BUTTON_append, OnBUTTONappend)
	ON_COMMAND(ID_BUTTON_delete, OnBUTTONdelete)
	ON_COMMAND(ID_BUTTON_find, OnBUTTONfind)
	ON_COMMAND(ID_BUTTON_modify, OnBUTTONmodify)
	ON_COMMAND(ID_BUTTON_exit, OnBUTTONexit)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_gear_para_view, OnDblclkLISTgearparaview)
	ON_BN_CLICKED(ID_BUTTON_ask, OnBUTTONask)
	ON_BN_CLICKED(ID_Button_all_para, OnButtonallpara)
	ON_WM_CONTEXTMENU()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGear_Para_Main message handlers

int CGear_Para_Main::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here	
     if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
        m_wndToolBar.ShowWindow(SW_SHOW);
	    RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
	return 0;
}

BOOL CGear_Para_Main::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
    try
	{	
	m_pdatabase=new CDatabase();
	m_pset=new CRecordset();
    m_pdatabase->Open(_T("gear_cutter_database"),FALSE,FALSE,_T("ODBC;DSN=gear_cutter_database"),FALSE);
	m_pset->m_pDatabase=m_pdatabase;	
	}
	catch(CDBException* e)
	{
		e->ReportError();
        e->Delete();
	    delete m_pset;
		delete m_pdatabase;
		return TRUE;
	}
	ComboxData("gear_table");
    DataShow("gear_table");
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CGear_Para_Main::OnDestroy() 
{
	CDialog::OnDestroy();	
	// TODO: Add your message handler code here
	delete m_pset;
	delete m_pdatabase;
}

BOOL CGear_Para_Main::ShowInformation(CString strSQL)
{
    if(!m_pdatabase->IsOpen()) return FALSE;
	if(!m_pset) return FALSE;
	try{
		BeginWaitCursor();
		if(m_pset->IsOpen()) m_pset->Close();
		m_pset->Open(CRecordset::dynaset,strSQL);
		if(!m_pset->IsEOF())
		{m_pset->MoveLast();
		m_pset->MoveFirst();}
		int nFieldCount=m_pset->GetODBCFieldCount();
		CODBCFieldInfo fieldinfo;
		for(int n=0;n<nFieldCount;n++){
			m_pset->GetODBCFieldInfo(n,fieldinfo);
			int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
			m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
		}
		CString strValue;
		m_pset->MoveFirst();
		int nCount=0;
		while(!m_pset->IsEOF()){
			m_list_control.InsertItem(nCount,strValue);
			for(int j=0;j<nFieldCount;j++){
				m_pset->GetFieldValue(j,strValue);
				m_list_control.SetItemText(nCount,j,strValue);
			}
			m_pset->MoveNext();
			nCount++;
		}
		EndWaitCursor();
	}
	catch(CDBException *e){
		e->Delete();
        EndWaitCursor();
		return FALSE;
	}
	return TRUE;
}

void CGear_Para_Main::ClearList()
{
	//m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
	m_list_control.DeleteAllItems();
	while(m_list_control.DeleteColumn(0));
    UpdateWindow();
}

void CGear_Para_Main::DataShow(CString table_name)
{
    ClearList();
	CString strSQL;
	strSQL="select * from "+table_name;
	ShowInformation(strSQL);
}

void CGear_Para_Main::DataDelete(CString table_name,CString attri)
{
    if(m_list_control.GetSelectedCount()==0)
	{
	MessageBox("没有数据,请先选择齿轮参数!","提示",MB_ICONWARNING+MB_OK);
	return;
	}
    if(MessageBox("是否真的要删除这条记录!","提示",MB_ICONQUESTION+MB_OKCANCEL)!=IDOK)
	return;
	
	if(!m_pdatabase->IsOpen()) {MessageBox("数据获取失败!","提示",MB_ICONERROR+MB_OK);return;}
	if(!m_pset) {MessageBox("数据获取失败!","提示",MB_ICONERROR+MB_OK);return;}
	if(m_pset->IsOpen()) m_pset->Close();
	UINT i,uSelectedCount=m_list_control.GetSelectedCount();
	int nItemSel=0;
	if(uSelectedCount>0)
	{
		for(i=0;i<uSelectedCount;i++)
		{
			nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
			CString str("");
			str=m_list_control.GetItemText(nItemSel,0);
			CString strSQL,strSQL1,strSQL2,strSQL3,table_name1="standard_hob_table",table_name2="tiqian_tutai_hob_table",table_name3="tiqian_no_tutai_hob_table";
	
			strSQL="delete from "+table_name+" where "+attri+"="+"'"+str+"'";
			strSQL1="delete from "+table_name1+" where "+attri+"="+"'"+str+"'";
			strSQL2="delete from "+table_name2+" where "+attri+"="+"'"+str+"'";
			strSQL3="delete from "+table_name3+" where "+attri+"="+"'"+str+"'";

			try
			{
				m_pdatabase->ExecuteSQL(strSQL);
				m_pdatabase->ExecuteSQL(strSQL1);
				m_pdatabase->ExecuteSQL(strSQL2);
				m_pdatabase->ExecuteSQL(strSQL3);
			}
			catch(CDBException* e)
			{
				e->ReportError();
				e->Delete();
                return;
			}
			m_list_control.DeleteItem(nItemSel);
			UpdateWindow();
		}
	}
}

bool CGear_Para_Main::Edit_Data_Gain(CString table_name,CString attri)
{
	if(!m_pdatabase->IsOpen()) {MessageBox("数据获取失败!","提示",MB_ICONERROR+MB_OK);return FALSE;}

	UINT uSelectedCount=m_list_control.GetSelectedCount();
	if(uSelectedCount>1||uSelectedCount==0)
	{
	  if(uSelectedCount==0)
	  {
		  MessageBox("要选择一条记录!","提示",MB_ICONWARNING+MB_OK);
		  return FALSE;
	  }
      if(uSelectedCount>1)
	  {   
		  MessageBox("只能选择一条记录!","提示",MB_ICONWARNING+MB_OK);
		  return FALSE;
	  }
	}
	else
	{
		int nItemSel=0;
        nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
        CString strID,strSQL;
		strID=m_list_control.GetItemText(nItemSel,0);
	    strSQL="select * from "+table_name+" where "+attri+"='"+strID+"'";
			try
			{   
				m_pset_gear1.m_pDatabase=m_pdatabase;
				if(m_pset_gear1.IsOpen()) m_pset_gear1.Close();
	        	m_pset_gear1.Open(CRecordset::dynaset,strSQL);
			}
			catch(CDBException* e)
			{
				e->Delete();
				return FALSE;
			}
	return TRUE;
	}
return FALSE;	
}

void CGear_Para_Main::Gear_Para_Modify()
{
    CSheet_Gear gear_para_modify("修改",this,0);
	gear_para_modify.m_psh.dwFlags|=PSH_NOAPPLYNOW;
	if(gear_para_modify.DoModal()==1&&symb==1)
	{
		CString num=gear_para_modify.gear_para_dialog.m_num_gear_v;
		float mn=gear_para_modify.gear_para_dialog.m_mn_gear_v;
		int zn=gear_para_modify.gear_para_dialog.m_zn_gear_v;
    	float angle=gear_para_modify.gear_para_dialog.m_angle_gear_v;
		float helic_angle=gear_para_modify.gear_para_dialog.m_helic_gear_v;
		float nthick=gear_para_modify.gear_para_dialog.m_nthick_gear_v;
		float top_dia=gear_para_modify.gear_para_dialog.m_top_dia_gear_v;
		float bottom_dia=gear_para_modify.gear_para_dialog.m_bottom_dia_v;
		float thick=gear_para_modify.gear_para_dialog.m_thick_gear_v;
		float margin=gear_para_modify.gear_para_dialog.m_margin_gear_v;
		float coefficient=gear_para_modify.gear_para_dialog.m_coefficient_gear_v;
		
        CString strsql;
		strsql.Format("update gear_table set 齿轮模数=%f,齿轮齿数=%d,齿轮压力角=%f,齿轮螺旋角=%f,齿轮分度圆法向齿厚=%f,齿顶圆直径=%f,齿根圆直径=%f,齿轮厚度=%f,齿厚留剃余量=%f,滚刀齿根与齿轮齿顶的径向间隙系数=%f where 齿轮零件号='%s'",mn,zn,angle,helic_angle,nthick,top_dia,bottom_dia,thick,margin,coefficient,num);
	    
		CString strSQL1,strSQL2,strSQL3,table_name1="standard_hob_table",table_name2="tiqian_tutai_hob_table",table_name3="tiqian_no_tutai_hob_table";
		strSQL1="delete from "+table_name1+" where 齿轮零件号='"+num+"'";
		strSQL2="delete from "+table_name2+" where 齿轮零件号='"+num+"'";
		strSQL3="delete from "+table_name3+" where 齿轮零件号='"+num+"'";

		try
		{
			m_pdatabase->BeginTrans();
			if(m_pdatabase->CanUpdate())
			{
                m_pdatabase->ExecuteSQL(strsql);
			    m_pdatabase->ExecuteSQL(strSQL1);
			    m_pdatabase->ExecuteSQL(strSQL2);
			    m_pdatabase->ExecuteSQL(strSQL3);
			}
			m_pdatabase->CommitTrans();
		}
		catch(CDBException* e)
		{
			e->ReportError();
			e->Delete();
			m_pdatabase->Rollback();
            return;
		}
        DataShow("gear_table");	
	}
}

void CGear_Para_Main::Gear_Para_Append()
{	
    CSheet_Gear gear_para_append("添加",this,0);
	gear_para_append.m_psh.dwFlags|=PSH_NOAPPLYNOW;
	 if(gear_para_append.DoModal()!=1)
	 {
		  DataShow("gear_table");
	 }
}

bool CGear_Para_Main::append_combox(CString strSQL)
{
   try
	 {   
		if(m_pset->IsOpen()) m_pset->Close();
		m_pset->Open(CRecordset::dynaset,strSQL);
		if(!m_pset->IsEOF())
		{m_pset->MoveLast();
		m_pset->MoveFirst();}
		int nFieldCount=m_pset->GetODBCFieldCount();
		CODBCFieldInfo fieldinfo;
		for(int n=0;n<nFieldCount;n++){
		m_pset->GetODBCFieldInfo(n,fieldinfo);
		m_combo_attri.AddString(fieldinfo.m_strName);
		}
	 }
		catch(CDBException *e)
		{
		e->ReportError();
        EndWaitCursor();
	    return FALSE;
		}
		return TRUE;
}

void CGear_Para_Main::ComboxData(CString table_name)
{
    CString strSQL;
	m_combo_attri.ResetContent();
	strSQL="select * from "+table_name;
	if(!append_combox(strSQL)) MessageBox("数据获取失败!","提示",MB_ICONERROR+MB_OK);
}

void CGear_Para_Main::OnBUTTONappend() 
{
	// TODO: Add your command handler code here
	symbol_gear=0;
	Gear_Para_Append();
    return;
}

void CGear_Para_Main::OnBUTTONdelete() 
{
	// TODO: Add your command handler code here
	DataDelete("gear_table","齿轮零件号");
}

void CGear_Para_Main::OnBUTTONexit() 
{
	// TODO: Add your command handler code here
	CGear_Para_Main::EndDialog(0);
}


void CGear_Para_Main::OnBUTTONfind() 
{
	// TODO: Add your command handler code here
	OnBUTTONask() ;
}

void CGear_Para_Main::OnBUTTONmodify() 
{
	// TODO: Add your command handler code here
	symbol_gear=1;
    if(Edit_Data_Gain("gear_table","齿轮零件号")==FALSE) return;
	Gear_Para_Modify();
	return;
}

void CGear_Para_Main::OnDblclkLISTgearparaview(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	OnBUTTONmodify();
	*pResult = 0;
}

void CGear_Para_Main::OnBUTTONask() 
{
	// TODO: Add your control notification handler code here
	ClearList();
    CString strSQL;
    CString table_name="gear_table";
    CString attri,rela;
    m_combo_attri.GetWindowText(attri);
	m_combo_rela.GetWindowText(rela);
	this->UpdateData(TRUE);
    if(attri.IsEmpty()||rela.IsEmpty())
	{
		if(attri.IsEmpty())
		{
			MessageBox("属性不能为空,查询失败!","提示",MB_ICONERROR+MB_OK);
		    return;
		}
		else
		{
            MessageBox("关系不能为空,查询失败!","提示",MB_ICONERROR+MB_OK);
		    return;
		}
	}
	if(attri=="齿轮零件号")
	strSQL="select * from "+table_name+" where "+attri+rela+"'"+m_edit_value+"'";
	else
	strSQL="select * from "+table_name+" where "+attri+rela+m_edit_value;
	if(!ShowInformation(strSQL)) MessageBox("对不起,没有您所要的数据!","提示",MB_ICONWARNING+MB_OK);
	return;
}

void CGear_Para_Main::OnButtonallpara() 
{
	// TODO: Add your control notification handler code here
	ClearList();
	CString table_name="gear_table";
    CString strSQL;
	strSQL="select * from "+table_name;
	ShowInformation(strSQL);
	return;
}

void CGear_Para_Main::OnContextMenu(CWnd* pWnd, CPoint point) 
{
	// TODO: Add your message handler code here
	CMenu MyMenu;
	if(MyMenu.CreatePopupMenu())
	{   
		MyMenu.AppendMenu(MF_STRING,ID_Button_all_para,"全部显示");
		MyMenu.AppendMenu(MF_STRING,ID_BUTTON_append,"齿轮参数添加");
		MyMenu.AppendMenu(MF_STRING,ID_BUTTON_modify,"齿轮参数修改");	
		MyMenu.AppendMenu(MF_STRING,ID_BUTTON_delete,"齿轮参数删除");
		MyMenu.AppendMenu(MF_STRING,ID_BUTTON_ask,"齿轮参数查询");
		MyMenu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
	}
	else
	{
		MessageBox("菜单加载失败!","提示",MB_ICONWARNING+MB_OK);
	}
}

⌨️ 快捷键说明

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