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

📄 dlgmenumanage.cpp

📁 本系统功能主要有两大块组成:前台销售管理功能和后台数据管理功能。 前台销售管理系统,包括:开单
💻 CPP
字号:
// DlgMenuManage.cpp : implementation file
//

#include "stdafx.h"
#include "Lhj_cyglxt.h"
#include "DlgMenuManage.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgMenuManage dialog
extern CDatabase m_db;
CString oldfoodid;
CDlgMenuManage::CDlgMenuManage(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgMenuManage::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgMenuManage)
	m_price = _T("");
	m_infor = _T("");
	m_foodname = _T("");
	m_foodid = _T("");
	m_classname = _T("");
	m_taste = _T("");
	m_classcode = _T("");
	m_class = _T("");
	//}}AFX_DATA_INIT
}


void CDlgMenuManage::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgMenuManage)
	DDX_Control(pDX, IDC_COMBO_foodclasscode, m_oclasscode);
	DDX_Control(pDX, IDC_COMBO_foodclass, m_oclass);
	DDX_Control(pDX, IDC_COMBO_taste, m_otaste);
	DDX_Control(pDX, IDC_LIST_showfoodname, m_ofoodnamelist);
	DDX_Text(pDX, IDC_EDIT_price, m_price);
	DDV_MaxChars(pDX, m_price, 10);
	DDX_Text(pDX, IDC_EDIT_information, m_infor);
	DDV_MaxChars(pDX, m_infor, 50);
	DDX_Text(pDX, IDC_EDIT_foodname, m_foodname);
	DDX_Text(pDX, IDC_EDIT_food_id, m_foodid);
	DDV_MaxChars(pDX, m_foodid, 10);
	DDX_Text(pDX, IDC_EDIT_classname, m_classname);
	DDV_MaxChars(pDX, m_classname, 10);
	DDX_CBString(pDX, IDC_COMBO_taste, m_taste);
	DDV_MaxChars(pDX, m_taste, 4);
	DDX_CBString(pDX, IDC_COMBO_foodclasscode, m_classcode);
	DDV_MaxChars(pDX, m_classcode, 4);
	DDX_CBString(pDX, IDC_COMBO_foodclass, m_class);
	DDV_MaxChars(pDX, m_class, 10);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgMenuManage, CDialog)
	//{{AFX_MSG_MAP(CDlgMenuManage)
	ON_LBN_SELCHANGE(IDC_LIST_showfoodname, OnSelchangeLISTshowfoodname)
	ON_BN_CLICKED(IDC_BUTTON_addvip, OnBUTTONaddvip)
	ON_BN_CLICKED(IDC_BUTTON_deletevip, OnBUTTONdeletevip)
	ON_BN_CLICKED(IDC_BUTTON_select, OnBUTTONselect)
	ON_BN_CLICKED(IDC_BUTTON_renewfoodclass, OnBUTTONrenewfoodclass)
	ON_BN_CLICKED(IDC_BUTTON_addfoodclass, OnBUTTONaddfoodclass)
	ON_BN_CLICKED(IDC_BUTTON_deletefoodclass, OnBUTTONdeletefoodclass)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgMenuManage message handlers

BOOL CDlgMenuManage::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
		if(!UpdateData())
		return 0;
	if(!m_db.IsOpen())
	{
		MessageBox("数据库未打开");
		return 0;
	}
TRY
{       
	    AddFoodIdToList();
		CRecordset rs(&m_db);
		CString classcode,name,sql;
		sql="select class_name,food_class from food_class ";
     	rs.Open(CRecordset::dynaset, sql);
		while (!rs.IsEOF())
		{
			rs.GetFieldValue((short)0,name);
			m_oclass.AddString(name);
			rs.GetFieldValue((short)1,classcode);
			m_oclasscode.AddString(classcode);
			rs.MoveNext();
		}
		m_classcode=classcode;
		m_classname=name;
		rs.Close();
		m_otaste.AddString("清谈");
		m_otaste.AddString("酸");
		m_otaste.AddString("甜");
		m_otaste.AddString("苦");
		m_otaste.AddString("辣");
		m_otaste.AddString("烫");
		m_otaste.AddString("适中");
}

	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   
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgMenuManage::OnSelchangeLISTshowfoodname() 
{
	// TODO: Add your control notification handler code here
	CString stemp,sql;
	int iOption; 
	iOption = m_ofoodnamelist.GetCurSel();
	m_ofoodnamelist.GetText(iOption, stemp);//得到选中项的文本
	sql="select food_id,food_name,food_price,class_name,food_taste,food_infor from menu_infor,food_class where food_class.food_class=menu_infor.food_class and food_id='"+stemp+"'";
TRY
{
	CRecordset rs(&m_db);
	rs.Open(CRecordset::dynaset, sql);
	if(!rs.IsEOF())
	{
		rs.GetFieldValue((short)0,m_foodid);
		rs.GetFieldValue((short)1,m_foodname);
		rs.GetFieldValue((short)2,m_price);
		rs.GetFieldValue((short)3,m_class);
		rs.GetFieldValue((short)4,m_taste);
		rs.GetFieldValue((short)5,m_infor);
		
	}
	oldfoodid=m_foodid;//保留菜的id 为保存修改做 修改条件用
	UpdateData(FALSE);
}

	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   
	UpdateData(FALSE);
}

void CDlgMenuManage::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData();
TRY
{
	//检查数据完整性
	
	if(m_foodid.IsEmpty()||m_foodname.IsEmpty()||m_price.IsEmpty()||m_class.IsEmpty()||m_taste.IsEmpty())
	{
		AfxMessageBox("请填写完整!都不能为空");
		return;
	}
	if(AfxMessageBox("保存修改吗?",MB_YESNO)==IDNO)
	{
		return;
	}
	CRecordset rs(&m_db);
	CString sql;
	sql="select food_class from food_class where class_name='"+m_class+"'";
	rs.Open(CRecordset::dynaset, sql);
	if (rs.IsEOF())
	{
		AfxMessageBox("没有该类别,输入错误");
		rs.Close();
		return;
	}
	CString classcode;
	rs.GetFieldValue((short)0,classcode);
	rs.Close();
	
	sql="update menu_infor set food_id='"+m_foodid+"',food_name='"+m_foodname+"',food_price='"+m_price+"',food_class='"+classcode+"',food_taste='"+m_taste+"',food_infor='"+m_infor+"'where food_id='"+oldfoodid+"'";
	TRACE(sql);
	m_db.ExecuteSQL(sql);
	AfxMessageBox("修改成功");

	AddFoodIdToList();//刷新 list   可能foodid被改	
	UpdateData(FALSE);
}

	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   
	UpdateData(FALSE);
	
	//CDialog::OnOK();
}

void CDlgMenuManage::AddFoodIdToList()
{
	m_ofoodnamelist.ResetContent();
		CRecordset rs(&m_db);
		CString sql="select food_id from menu_infor ";
     	rs.Open(CRecordset::dynaset, sql);
		CString idlist;
		while (!rs.IsEOF())
		{
			rs.GetFieldValue((short)0,idlist);
			m_ofoodnamelist.AddString(idlist);
			rs.MoveNext();
		}
		rs.Close();

}

void CDlgMenuManage::OnBUTTONaddvip() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
TRY
{
	//检查数据完整性
	
	if(m_foodid.IsEmpty()||m_foodname.IsEmpty()||m_price.IsEmpty()||m_class.IsEmpty()||m_taste.IsEmpty())
	{
		AfxMessageBox("请填写完整!员工编号,姓名,身份权限,性别,登录名,密码 都不能为空");
		return;
	}
	CRecordset rs(&m_db);
	CString sql;
	sql="select food_id from menu_infor where food_id='"+m_foodid+"'";
	rs.Open(CRecordset::dynaset, sql);
	if(!rs.IsEOF())
	{
		AfxMessageBox("该菜品编号已存在,编号不能重复。添加未成功");
		rs.Close();
		return;
	}
	rs.Close();
	
	sql="select food_class from food_class where class_name='"+m_class+"'";
	rs.Open(CRecordset::dynaset, sql);
	if (rs.IsEOF())
	{
		AfxMessageBox("没有该类别,输入错误");
		rs.Close();
		return;
	}
	CString classcode;
	rs.GetFieldValue((short)0,classcode);
	rs.Close();
	sql="insert into menu_infor(food_id,food_name,food_price,food_class,food_taste,food_infor) values('"+m_foodid+"','"+m_foodname+"','"+m_price+"','"+classcode+"','"+m_taste+"','"+m_infor+"') ";
	TRACE(sql);
	m_db.ExecuteSQL(sql);
	AfxMessageBox("添加成功");

	AddFoodIdToList();
	UpdateData(FALSE);
}
	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   
	UpdateData(FALSE);
	
}

void CDlgMenuManage::OnBUTTONdeletevip() 
{
	// TODO: Add your control notification handler code here
		UpdateData();
TRY
{
	if(AfxMessageBox("确定删除吗?",MB_YESNO)==IDNO)
	{
		return;
	}
	CRecordset rs(&m_db);
	CString sql;
	sql="select food_id from menu_infor where food_id='"+m_foodid+"'";
	rs.Open(CRecordset::dynaset, sql);
	if(rs.IsEOF())
	{
		AfxMessageBox("该 菜 编号不存在,无需删除资料");
		rs.Close();
		return;
	}
	rs.Close();
	sql="delete menu_infor where food_id='"+m_foodid+"' ";
	TRACE(sql);
	m_db.ExecuteSQL(sql);
	AfxMessageBox("删除成功");

	AddFoodIdToList();	
	UpdateData(FALSE);
}

	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   
	UpdateData(FALSE);
}

void CDlgMenuManage::OnBUTTONselect() 
{
	// TODO: Add your control notification handler code here

	UpdateData();
TRY
{	CRecordset rs(&m_db);
	CString sql;
	sql="select  class_name from food_class where food_class='"+m_classcode+"'";
	rs.Open(CRecordset::dynaset, sql);
	if (!rs.IsEOF())
	{
		rs.GetFieldValue((short)0,m_classname);
		rs.Close();
	}
	rs.Close();
	UpdateData(FALSE);
}

	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   
	UpdateData(FALSE);
}


void CDlgMenuManage::OnBUTTONrenewfoodclass() 
{
	// TODO: Add your control notification handler code here
		UpdateData();
TRY
{	CRecordset rs(&m_db);
	CString sql;
	sql="select  class_name from food_class where food_class='"+m_classcode+"'";
	rs.Open(CRecordset::dynaset, sql);
	if (rs.IsEOF())
	{
		AfxMessageBox("输入错误,没有该编码");
		rs.Close();
		return;
	}
	sql="update food_class set class_name='"+m_classname+"' where food_class='"+m_classcode+"'";
	TRACE(sql);
	m_db.ExecuteSQL(sql);
	AfxMessageBox("修改成功");
	if (!rs.IsEOF())
	{
		rs.GetFieldValue((short)0,m_classname);
		rs.Close();
	}
	UpdateData(FALSE);
}

	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   
	UpdateData(FALSE);
	
}

void CDlgMenuManage::OnBUTTONaddfoodclass() 
{
	// TODO: Add your control notification handler code here
			UpdateData();
TRY
{	
	if (m_classcode.IsEmpty())
	{
		AfxMessageBox("菜式编码不能为空");
		return;
	}
	CRecordset rs(&m_db);
	CString sql;
	sql="select food_class from food_class where food_class='"+m_classcode+"'";
	rs.Open(CRecordset::dynaset, sql);
	if (!rs.IsEOF())
	{
		AfxMessageBox("您添加的菜式编码已存在,请重新添加。");
		rs.Close();
		return;
	}
	rs.Close();
	sql="insert into food_class(food_class,class_name)values('"+m_classcode+"','"+m_classname+"')";
	TRACE(sql);
	m_db.ExecuteSQL(sql);
	AfxMessageBox("添加成功");

	//刷新组合框 
	m_oclasscode.ResetContent();//清空 
	m_oclass.ResetContent();
	CString name,classcode;
	sql="select class_name,food_class from food_class ";
     	rs.Open(CRecordset::dynaset, sql);
		while (!rs.IsEOF())
		{
			rs.GetFieldValue((short)0,name);
			m_oclass.AddString(name);
			rs.GetFieldValue((short)1,classcode);
			m_oclasscode.AddString(classcode);
			rs.MoveNext();
		}
	UpdateData(FALSE);
}

	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   
	UpdateData(FALSE);
	
}

void CDlgMenuManage::OnBUTTONdeletefoodclass() 
{
	// TODO: Add your control notification handler code here
			UpdateData();
TRY
{	if(AfxMessageBox("确定删除吗?",MB_YESNO)==IDNO)
	{
		return;
	}
	if (m_classcode.IsEmpty())
	{
		AfxMessageBox("菜式编码不能为空");
		return;
	}
	CRecordset rs(&m_db);
	CString sql;
	sql="select food_class from food_class where food_class='"+m_classcode+"'";
	rs.Open(CRecordset::dynaset, sql);
	if (rs.IsEOF())
	{
		AfxMessageBox("您要删除的菜式编码不存在,无需删除。");
		rs.Close();
		return;
	}
	rs.Close();
	sql="delete from food_class where food_class='"+m_classcode+"' ";
	TRACE(sql);
	m_db.ExecuteSQL(sql);
	AfxMessageBox("删除成功");
	m_classcode="";
	m_classname="";

	//刷新组合框 
	m_oclasscode.ResetContent();//清空 
	m_oclass.ResetContent();
	CString name,classcode;
	sql="select class_name,food_class from food_class ";
     	rs.Open(CRecordset::dynaset, sql);
		while (!rs.IsEOF())
		{
			rs.GetFieldValue((short)0,name);
			m_oclass.AddString(name);
			rs.GetFieldValue((short)1,classcode);
			m_oclasscode.AddString(classcode);
			rs.MoveNext();
		}
	UpdateData(FALSE);
}

	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   
	UpdateData(FALSE);
}

⌨️ 快捷键说明

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