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

📄 dlgpos.cpp

📁 本系统功能主要有两大块组成:前台销售管理功能和后台数据管理功能。 前台销售管理系统,包括:开单
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -