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

📄 tradedlg.cpp

📁 实现超市收银管理.能实现超市的正常收银情况........
💻 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 + -