📄 tradedlg.cpp
字号:
// TradeDlg.cpp : implementation file
//
#include "stdafx.h"
#include "supermarketcahsier.h"
#include "MainFrm.h"
#include "TradeDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTradeDlg dialog
CTradeDlg::CTradeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTradeDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTradeDlg)
m_strNum1 = _T("");
m_strNum3 = _T("");
m_strNum2 = _T("");
m_strNum4 = _T("");
m_strNum5 = _T("");
m_nQuan1 = 0;
m_nQuan2 = 0;
m_nQuan3 = 0;
m_nQuan4 = 0;
m_nQuan5 = 0;
m_strCustomerNum = _T("");
//}}AFX_DATA_INIT
}
void CTradeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTradeDlg)
DDX_Text(pDX, IDC_EDIT_NUM1, m_strNum1);
DDX_Text(pDX, IDC_EDIT_NUM3, m_strNum3);
DDX_Text(pDX, IDC_EDIT_NUM2, m_strNum2);
DDX_Text(pDX, IDC_EDIT_NUM4, m_strNum4);
DDX_Text(pDX, IDC_EDIT_NUM5, m_strNum5);
DDX_Text(pDX, IDC_EDIT_QUAN1, m_nQuan1);
DDV_MinMaxInt(pDX, m_nQuan1, 0, 100);
DDX_Text(pDX, IDC_EDIT_QUAN2, m_nQuan2);
DDV_MinMaxInt(pDX, m_nQuan2, 0, 100);
DDX_Text(pDX, IDC_EDIT_QUAN3, m_nQuan3);
DDV_MinMaxInt(pDX, m_nQuan3, 0, 100);
DDX_Text(pDX, IDC_EDIT_QUAN4, m_nQuan4);
DDV_MinMaxInt(pDX, m_nQuan4, 0, 100);
DDX_Text(pDX, IDC_EDIT_QUAN5, m_nQuan5);
DDV_MinMaxInt(pDX, m_nQuan5, 0, 100);
DDX_Text(pDX, IDC_EDIT_CNUM, m_strCustomerNum);
DDV_MaxChars(pDX, m_strCustomerNum, 9);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTradeDlg, CDialog)
//{{AFX_MSG_MAP(CTradeDlg)
ON_BN_CLICKED(IDOK, OnOKClicked)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTradeDlg message handlers
void CTradeDlg::OnOKClicked()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CMainFrame * m_Frm=(CMainFrame *)::AfxGetMainWnd();
m_dMoney = 0;
m_bInput = FALSE;
Calculate();
if (m_bInput)
{
if(!m_strCustomerNum.IsEmpty())
{
//顾客编号是否存在
if(m_Customer.IsOpen())
m_Customer.Close();
m_Customer.m_strFilter.Format("Cno = '%s'",m_strCustomerNum);
m_Customer.Open(CCustomerRecordSet::snapshot,NULL,CCustomerRecordSet::none);
if(!m_Customer.IsEOF())
{
m_dMoney = m_dMoney * 0.9;
AfxMessageBox("会员顾客,享受9折优惠!");
}
else
{
m_Customer.Close();
m_bInput = FALSE;
AfxMessageBox("顾客编号不存在!");
return;
}
if(m_Customer.IsOpen())
m_Customer.Close();
}
//收银额增加
m_Frm->m_dCashMoney += m_dMoney;
CString strMoney;
strMoney.Format("应收顾客金额:%f 元。",m_dMoney);
AfxMessageBox(strMoney);
//发放会员卡
if (m_dMoney >= 1000 && m_strCustomerNum.IsEmpty())
{
AfxMessageBox("此顾客一次性消费超过1000元,\n可以免费为其发放一张会员卡!");
m_Frm->OnCustomerAdd();
}
//更新商品库存信息
UpdateGoodsStorage();
if (!m_strCustomerNum.IsEmpty())
{
//更新顾客消费金额
UpdateCustomer();
//更新交易信息
AddTradeInfo();
}
}
if(m_bInput)
CDialog::OnOK();
}
void CTradeDlg::Calculate()
{
CString strNum[5];
int strQuan[5];
CString strSQL;
CString strPrice;
double dPrice;
double dQuan;
CString strWarn;
strNum[0] = m_strNum1;
strNum[1] = m_strNum2;
strNum[2] = m_strNum3;
strNum[3] = m_strNum4;
strNum[4] = m_strNum5;
strQuan[0] = m_nQuan1;
strQuan[1] = m_nQuan2;
strQuan[2] = m_nQuan3;
strQuan[3] = m_nQuan4;
strQuan[4] = m_nQuan5;
for(int i=0; i<5; i++ )
{
if (!strNum[i].IsEmpty() && strQuan[i])
{
m_bInput = TRUE;
if(m_goods.IsOpen())
m_goods.Close();
m_goods.m_strFilter.Format("Gno = '%s'",strNum[i]);
m_goods.Open(CGoodsRecordSet::snapshot,NULL,CGoodsRecordSet::none);
if(!m_goods.IsEOF())
{
strPrice = m_goods.m_Gprice;
if(strQuan[i] > m_goods.m_Gstorage)
{
m_bInput = FALSE;
strWarn.Format("第%d行商品库存不能满足要求!",i+1);
AfxMessageBox(strWarn);
return;
}
}
else
{
m_goods.Close();
m_bInput = FALSE;
strWarn.Format("第%d行商品号不存在!",i+1);
AfxMessageBox(strWarn);
return;
}
if(m_goods.IsOpen())
m_goods.Close();
dPrice = atof((LPCTSTR) strPrice);
dQuan = strQuan[i];
m_dMoney += dPrice * dQuan;
}
else if(strNum[i].IsEmpty() && !strQuan[i])
{
}
else
{
m_bInput = FALSE;
strWarn.Format("第%d行输入不正确!",i+1);
AfxMessageBox(strWarn);
return;
}
}
}
void CTradeDlg::UpdateGoodsStorage()
{
CString strNum[5];
int strQuan[5];
CString strSQL;
strNum[0] = m_strNum1;
strNum[1] = m_strNum2;
strNum[2] = m_strNum3;
strNum[3] = m_strNum4;
strNum[4] = m_strNum5;
strQuan[0] = m_nQuan1;
strQuan[1] = m_nQuan2;
strQuan[2] = m_nQuan3;
strQuan[3] = m_nQuan4;
strQuan[4] = m_nQuan5;
for(int i=0; i<5; i++ )
{
if (!strNum[i].IsEmpty() && strQuan[i])
{
if(m_goods.IsOpen())
m_goods.Close();
m_goods.m_strFilter.Format("Gno = '%s'",strNum[i]);
m_goods.Open(CGoodsRecordSet::snapshot,NULL,CGoodsRecordSet::none);
if(!m_goods.IsEOF())
{
m_goods.m_Gstorage = m_goods.m_Gstorage - strQuan[i];
CString strStore;
strStore.Format("%d",m_goods.m_Gstorage);
m_Frm->OnGoodsEdit(strNum[i],strStore);
}
if(m_goods.IsOpen())
m_goods.Close();
}
}
}
void CTradeDlg::UpdateCustomer()
{
if (!m_strCustomerNum.IsEmpty())
{
//顾客编号是否存在
if(m_Customer.IsOpen())
m_Customer.Close();
m_Customer.m_strFilter.Format("Cno = '%s'",m_strCustomerNum);
m_Customer.Open(CCustomerRecordSet::snapshot,NULL,CCustomerRecordSet::none);
if(!m_Customer.IsEOF())
{
double dConsumption = atof((LPCTSTR)m_Customer.m_Cconsumption);
dConsumption += m_dMoney;
//顾客在会员期内消费达到12,000元,增加一年会员期
if( dConsumption > 12,000) ;
CString strConsumption;
strConsumption.Format("%f",dConsumption);
m_Frm->OnCustomerEdit(m_strCustomerNum,strConsumption);
}
if(m_Customer.IsOpen())
m_Customer.Close();
}
}
void CTradeDlg::AddTradeInfo()
{
CString strNum[5];
int nQuan[5];
CString strSQL;
strNum[0] = m_strNum1;
strNum[1] = m_strNum2;
strNum[2] = m_strNum3;
strNum[3] = m_strNum4;
strNum[4] = m_strNum5;
nQuan[0] = m_nQuan1;
nQuan[1] = m_nQuan2;
nQuan[2] = m_nQuan3;
nQuan[3] = m_nQuan4;
nQuan[4] = m_nQuan5;
if (!m_strCustomerNum.IsEmpty())
{
for(int i=0; i<5; i++ )
{
if (!strNum[i].IsEmpty() && nQuan[i])
{
CString strQuan;
strQuan.Format("%d",nQuan[i]);
m_Frm->OnTradeinfoAdd(m_strCustomerNum,strNum[i],strQuan);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -