📄 dlgmenumanage.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 + -