📄 dlgpos.cpp
字号:
if(rs.IsEOF())
{
AfxMessageBox("无该会员卡,请重新输入,如果您还有没会员卡可以申请,或者使用系统默认的卡号88888888");
rs.Close();
//exit(1);//全部退出
return;
}
rs.Close();
m_cardedit.EnableWindow(FALSE);//禁止再次修改会员卡
//把cookfoodid[]中菜 一次性放入数据库
//先删掉 该bill 对应的 bill_menu 中所有foodid
//如果是新的账单 先新建bill
int iid,pnum;int tableno;tableno=atoi(m_TableNo);
pnum=atoi(m_PersonNum);iid=atoi(m_billid);
sql.Format("select bill_id from bill where bill_id=%d",iid);
rs.Open(CRecordset::dynaset, sql);
if(rs.IsEOF())
{
rs.Close();
sql.Format("insert into bill(bill_id,vip_card,person_num,table_no,pay_state,begin_time) values(%d,'%s',%d,%d,'%s','%s')",iid,m_vipcard,pnum,tableno,m_paystate,m_begintime);
TRACE(sql);
m_db.ExecuteSQL(sql);
if (TableNo=="null")
{ //判断桌号是否有效
if (tableno<=0||tableno>60)//桌号1-----60
{
AfxMessageBox("您输入的桌号不存在,请重新输入");
return;
}
else
{
sql.Format("select table_no from bill where pay_state='未付' and table_no=%d",tableno);
rs.Open(CRecordset::dynaset, sql);
if(!rs.IsEOF())
{
AfxMessageBox("此桌已有人使用,请再换一桌");
rs.Close();
return;
}
rs.Close();
}
}
}
else//删掉 旧bill 对应的 bill_menu 中所有foodid
{
rs.Close();
sql.Format("delete from bill_menu where bill_id=%d",iid);
TRACE(sql);
m_db.ExecuteSQL(sql);
}
//插入
for (int i=0;i<foodtotalnumber;i++)
{
sql.Format("insert into bill_menu(bill_id,food_id) values(%d,'%s')",iid,cookfoodid[i]);
TRACE(sql);
m_db.ExecuteSQL(sql);
}
//更新bill
sql.Format("update bill set person_num=%d,table_no=%d where bill_id=%d",pnum,tableno,iid);
TRACE(sql);
m_db.ExecuteSQL(sql);
UpdateData(FALSE);
GetBillId=m_billid;//注意 不然会出现 游标错误
CDlgcheckout checkoutDlg;
checkoutDlg.DoModal();
OnCancel();
}
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
}
void CDlgPos::OnClickLISTmenu(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
//记录其他信息 card table num
UpdateData(TRUE);
//得到当前选中的行
POSITION pos = m_menulist.GetFirstSelectedItemPosition();
//如果选中一行
CString foodclassname,foodid,foodname,price,sql;
if(pos)
{
int nItem = m_menulist.GetNextSelectedItem(pos);
foodclassname=m_menulist.GetItemText(nItem,0);
foodid=m_menulist.GetItemText(nItem,1);
foodname=m_menulist.GetItemText(nItem,2);
price=m_menulist.GetItemText(nItem,3);
}
//判断点的是否为空行
if(foodid=="")
{
MessageBox("没有选定要烹饪的菜");
return;
}
m_ToCookFoodId=foodid;//填入IDC_EDIT_tocookfoodid
//加入cook...[]
cookfoodid[foodtotalnumber]=foodid;foodtotalnumber++;
sumprice=sumprice+atof(price);
m_totalnumber.Format("%d",foodtotalnumber);
m_totalprice.Format("%f",sumprice);
//显示 在最前行追加
m_cookmenulist.InsertItem(0,foodclassname);
m_cookmenulist.SetItemText(0,1,foodid);
m_cookmenulist.SetItemText(0,2,foodname);
m_cookmenulist.SetItemText(0,3,price);
UpdateData(FALSE);
*pResult = 0;
}
void CDlgPos::OnClickLISTcookmenu(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
//记录其他信息 card table num
UpdateData(TRUE);
//得到当前选中的行
CString foodclassname,foodid,foodname,price,sql;//int nItem;
int nItem=m_cookmenulist.GetNextItem(-1, LVNI_SELECTED);//删除行
if(nItem==-1)
{
MessageBox("没有选定要删除的行");
return;
}
else
{
// nItem = m_menulist.GetNextSelectedItem(pos);
foodclassname=m_cookmenulist.GetItemText(nItem,0);
foodid=m_cookmenulist.GetItemText(nItem,1);
foodname=m_cookmenulist.GetItemText(nItem,2);
price=m_cookmenulist.GetItemText(nItem,3);
}
m_ToCookFoodId=foodid;//填入IDC_EDIT_tocookfoodid
//从cook...[]中取出
sumprice=sumprice-atof(price);
m_totalprice.Format("%f",sumprice);
int i=0;
while (foodid!=cookfoodid[i]&&i<foodtotalnumber)
{
i++;
}
for (int j=i;j<foodtotalnumber;j++)
{
cookfoodid[j]=cookfoodid[j+1];
}
foodtotalnumber--;
m_totalnumber.Format("%d",foodtotalnumber);
//显示 删除
m_cookmenulist.DeleteItem(nItem);
UpdateData(FALSE);
*pResult = 0;
}
void CDlgPos::OnBUTTONtempstore()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
TRY
{ //判断 会员卡是否有效
CRecordset rs(&m_db);CString sql;
sql.Format("select vip_card from vip_infor where vip_card='%s'",m_vipcard);
rs.Open(CRecordset::dynaset, sql);
if(rs.IsEOF())
{
AfxMessageBox("无该会员卡,请重新输入,如果您还有没会员卡可以申请,或者使用系统默认的卡号100000");
rs.Close();
//exit(1);//全部退出
return;
}
rs.Close();
m_cardedit.EnableWindow(FALSE);//禁止再次修改会员卡
int tableno;tableno=atoi(m_TableNo);
if (TableNo=="null")
{//判断桌号是否有效
if (tableno<=0||tableno>60)//桌号1-----60
{
AfxMessageBox("您输入的桌号不存在,请重新输入");
return;
}
else
{
sql.Format("select table_no from bill where pay_state='未付' and table_no=%d",tableno);
rs.Open(CRecordset::dynaset, sql);
if(!rs.IsEOF())
{
AfxMessageBox("此桌已有人使用,请再换一桌");
rs.Close();
return;
}
rs.Close();
}
}
//把cookfoodid[]中菜 一次性放入数据库
//先删掉 该bill 对应的 bill_menu 中所有foodid
//如果是新的账单 先新建bill
int iid,pnum;
pnum=atoi(m_PersonNum);iid=atoi(m_billid);
sql.Format("select bill_id from bill where bill_id=%d",iid);
rs.Open(CRecordset::dynaset, sql);
if(rs.IsEOF())
{
rs.Close();
sql.Format("insert into bill(bill_id,vip_card,person_num,table_no,pay_state,begin_time) values(%d,'%s',%d,%d,'%s','%s')",iid,m_vipcard,pnum,tableno,m_paystate,m_begintime);
TRACE(sql);
m_db.ExecuteSQL(sql);
}
else//删掉 旧bill 对应的 bill_menu 中所有foodid
{
rs.Close();
sql.Format("delete from bill_menu where bill_id=%d",iid);
TRACE(sql);
m_db.ExecuteSQL(sql);
}
//插入
for (int i=0;i<foodtotalnumber;i++)
{
sql.Format("insert into bill_menu(bill_id,food_id) values(%d,'%s')",iid,cookfoodid[i]);
TRACE(sql);
m_db.ExecuteSQL(sql);
}
//更新bill
sql.Format("update bill set person_num=%d,table_no=%d where bill_id=%d",pnum,tableno,iid);
TRACE(sql);
m_db.ExecuteSQL(sql);
UpdateData(FALSE);
AfxMessageBox("存单成功,你可以继续点菜或返回。从新开单或调单");
}
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
}
void CDlgPos::OnEditchangeCOMBOfoodclass()//不会自动改变后出来 函数存在问题
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
TRY{
CString foodnameget,sql;
m_foodclass.GetWindowText(foodnameget);
CRecordset rs(&m_db);
DWORD dwExStyle = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT;
sql.Format("select class_name,food_id,food_name,food_price from menu_infor,food_class where food_class.class_name='%s' and food_class.food_class=menu_infor.food_class ",foodnameget);
rs.Open(CRecordset::dynaset, sql);
m_cookmenulist.SetExtendedStyle(dwExStyle);
CString classname,foodid,foodname,price;int i=0;
m_menulist.DeleteAllItems();//去除所以记录
while (!rs.IsEOF())
{
rs.GetFieldValue((short)0,classname);
m_menulist.InsertItem(i,classname);
rs.GetFieldValue(1,foodid);
m_menulist.SetItemText(i,1,foodid);
rs.GetFieldValue(2,foodname);
m_menulist.SetItemText(i,2,foodname);
rs.GetFieldValue(3,price);
m_menulist.SetItemText(i,3,price);
rs.MoveNext();
}
rs.Close();
}
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 CDlgPos::OnBUTTONaddtocook()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
TRY{
CString tocookfoodid=m_ToCookFoodId,sql;
CRecordset rs(&m_db);
sql.Format("select class_name,food_id,food_name,food_price from menu_infor,food_class where menu_infor.food_id='%s' and food_class.food_class=menu_infor.food_class ",tocookfoodid);
rs.Open(CRecordset::dynaset, sql);
CString classname,foodid,foodname,price;int i=0;
if(!rs.IsEOF())
{
rs.GetFieldValue((short)0,classname);
m_cookmenulist.InsertItem(i,classname);
rs.GetFieldValue(1,foodid);
m_cookmenulist.SetItemText(i,1,foodid);
rs.GetFieldValue(2,foodname);
m_cookmenulist.SetItemText(i,2,foodname);
rs.GetFieldValue(3,price);
m_cookmenulist.SetItemText(i,3,price);
//加入cook...[]
cookfoodid[foodtotalnumber]=foodid;foodtotalnumber++;
sumprice=sumprice+atof(price);
m_totalnumber.Format("%d",foodtotalnumber);
m_totalprice.Format("%f",sumprice);
}
else
{
AfxMessageBox("输入的菜的编号不存在,无法加入您的烹饪菜单");
}
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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -