www.pudn.com > hotel2003.rar > ChooseFood.cpp


// ChooseFood.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "qq.h" 
#include "ChooseFood.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CChooseFood dialog 
 
 
CChooseFood::CChooseFood(CWnd* pParent /*=NULL*/) 
	: CDialog(CChooseFood::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CChooseFood) 
	m_PaidType = -1; 
	//}}AFX_DATA_INIT 
	m_DefaultSum=0.00f; 
	bStriked=false; 
} 
 
 
void CChooseFood::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CChooseFood) 
	DDX_Control(pDX, IDC_PAID, Paid); 
	DDX_Control(pDX, IDC_SUM, Sum); 
	DDX_Control(pDX, IDC_REBATE, Rebate); 
	DDX_Control(pDX, IDC_FOODBILLLIST, FoodBillList); 
	DDX_Control(pDX, IDC_FOODNUM, FoodNum); 
	DDX_Control(pDX, IDC_FOODLIST, FoodList); 
	DDX_Control(pDX, IDC_BILLCODE, BillCode); 
	DDX_Control(pDX, IDC_HANDCODE, HandCode); 
	DDX_Radio(pDX, IDC_RADIO1, m_PaidType); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CChooseFood, CDialog) 
	//{{AFX_MSG_MAP(CChooseFood) 
	ON_BN_CLICKED(IDC_ADD, OnAdd) 
	ON_BN_CLICKED(IDC_DELETE, OnDelete) 
	ON_BN_CLICKED(IDC_UPDATEDATA, OnUpdatedata) 
	ON_BN_CLICKED(IDC_RADIO1, OnRadio) 
	ON_BN_CLICKED(IDC_RADIO2, OnRadio) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CChooseFood message handlers 
 
BOOL CChooseFood::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	HICON m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME2); 
	this->SetIcon(m_hIcon,true);//设置对话框图标 
	// TODO: Add extra initialization here 
	 
	if(!m_FoodInfoSet.Open()) 
	{ 
		MessageBox("打开数据库失败!","数据库错误",MB_OK); 
		return false; 
	} 
	m_FoodInfoSet.MoveFirst(); 
	while (!m_FoodInfoSet.IsEOF()) 
	{ 
		CString strFoodList="",strFoodPrice=""; 
        strFoodList=m_FoodInfoSet.m_FoodName; 
		strFoodList=strFoodList+"  "; 
		strFoodPrice.Format("%5.0f",m_FoodInfoSet.m_FoodPrice); 
		strFoodList=strFoodList+strFoodPrice; 
		FoodList.AddString(strFoodList); 
		m_FoodInfoSet.MoveNext(); 
	} 
	m_FoodInfoSet.Close(); 
	//产生帐单号码 
	CCreateBillCode billcode; 
	BillCode.SetWindowText(billcode.GenereBillCode()); 
	//将钱的总数设置为0 
	Sum.SetWindowText("0"); 
	///Paid无效话 
	Paid.SetWindowText("0"); 
    Paid.EnableWindow(FALSE); 
	//设置缺省折扣率 
	Rebate.SetWindowText("1"); 
	bStriked=false; 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CChooseFood::OnAdd()  
{ 
	// TODO: Add your control notification handler code here 
 //////////////////////////////////////////////////////////////////// 
	////////////////////////////////////////////////////////////////////////// 
///////////////////////添加一个项目模块 
    int nCurSel=FoodList.GetCurSel(); 
	if(nCurSel==-1) 
	{ 
		MessageBox("请选择至少一种菜!","选择错误",MB_OK); 
		return; 
	} 
	CString strFoodNum; 
	FoodNum.GetWindowText(strFoodNum); 
	if(strFoodNum==""||strFoodNum=="0") 
	{ 
		MessageBox("数量至少要为一","选择错误",MB_OK); 
		return; 
	} 
	CString strFoodName=""; 
	FoodList.GetText(nCurSel,strFoodName);//得到文本 
	char* s=strFoodName.GetBuffer(strFoodName.GetLength()); 
	char* str=strtok(s," ");//得到菜的名字 
	bool bSame=false; 
	for(int i=0;iUpdateData(true); 
	if(m_PaidType==0) 
	{ 
		bStriked=true; 
        Paid.EnableWindow(true); 
	} 
	if(m_PaidType==1) 
    { 
		bStriked=false; 
       Paid.EnableWindow(false); 
    } 
} 
 
void CChooseFood::OnOK()  
{//保存数据到数据库中 
	// TODO: Add extra validation here 
	OnUpdatedata();//自动更新数据,防止因为忘记更新或者其他的原因产生误操作 
	CString strHandCode; 
	HandCode.GetWindowText(strHandCode); 
    if(strHandCode=="") 
	{ 
	    MessageBox("请输入手牌号!","数据为空错误",MB_OK); 
		return; 
	} 
	/////如果选择的是"现结"方式,而已经付的金额为<0则提示输入错误 
	CString strPaidTemp=""; 
	Paid.GetWindowText(strPaidTemp);//得到已经付的款 
	if(bStriked) 
	{ 
		if(strPaidTemp==""||strPaidTemp=="0") 
		{ 
			MessageBox("你可能输入错误,客人已经付的款应该大于0!!","输入错误",MB_OK); 
			return; 
		} 
	} 
	//查找客人数据库中是否存在这个手牌号 
	if(!m_GuestInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE)) 
	{ 
		MessageBox("打开数据库失败!","数据库错误",MB_OK); 
		return; 
	} 
	m_GuestInfoSet.MoveFirst(); 
	bool bhas=false; 
	while(!m_GuestInfoSet.IsEOF()) 
	{ 
        if(m_GuestInfoSet.m_HandCode==strHandCode) 
		{  
			////////////////////////////////////////////////////////////////////////// 
			//////////////////////////////////////////	 
			bhas=true;//存在这条记录  
			break; 
		} 
		m_GuestInfoSet.MoveNext();//移动到下一条记录 
	} 
	if(!bhas) 
	{ 
		MessageBox("你输入的手牌号不正确!","输入消息错误",MB_OK); 
		m_GuestInfoSet.Close();//关闭数据库  
		return; 
	} 
	m_GuestInfoSet.Close();//关闭数据库  
	////////查询完毕 
	////////////////////////////////////////////////////////////////////////// 
	/////将数据保存到相应的数据库中 
	/////写BillInfoSet表 
	if(!m_BillInfoSet.Open()) 
	{//打开数据库失败处理异常 
		MessageBox("打开数据库失败!","数据库错误",MB_OK); 
		return; 
	} 
     /////新增加一条帐单的记录 
	m_BillInfoSet.AddNew(); 
	/////数据填充 
	CString strBillCode,strSum,strPaid,strRebate; 
	BillCode.GetWindowText(strBillCode); 
	m_BillInfoSet.m_BillCode=strBillCode;//帐单号码 
    m_BillInfoSet.m_HandCode=strHandCode;//客人手牌 
	Sum.GetWindowText(strSum); 
	char* s=strSum.GetBuffer(strSum.GetLength()); 
	long nSum=atol(s); 
	m_BillInfoSet.m_Sum=nSum;//应付总数 
	Paid.GetWindowText(strPaid); 
	s=strPaid.GetBuffer(strPaid.GetLength()); 
	long nPaid=atol(s); 
	m_BillInfoSet.m_Paid=nPaid;//实付总数 
	Rebate.GetWindowText(strRebate); 
	m_BillInfoSet.m_Rebate=strRebate;//折扣率 
	m_BillInfoSet.m_Striked=bStriked;//是否已经付款 
	m_BillInfoSet.Update();//数据更新 
	m_BillInfoSet.Close(); //关闭数据库 
 ////////////////////////////////////////////////////////////////////////// 
 //      开始写BillContentInfo表,记录这个帐单的具体消费情况 
	if(!m_BillContentInfoSet.Open()) 
	{ 
		MessageBox("打开数据库失败!","数据库错误",MB_OK); 
		return; 
	} 
	m_BillContentInfoSet.AddNew();//新增一条记录 
	CString strBillContent=""; 
	for(int i=0;i