商店管理系统源代码(三)

摘要:
#如果!
#if !defined(AFX_SALESBILL_H__E95A758E_1C5A_442D_91F0_BA25EF86E146__INCLUDED_)
#define AFX_SALESBILL_H__E95A758E_1C5A_442D_91F0_BA25EF86E146__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// SalesBill.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CSalesBill dialog
#include "MyButton.h"

class CSalesBill : public CDialog
{
private:
	CBitmapButton bitmapButton;
	
// Construction
public:
	CSalesBill(CWnd* pParent = NULL);   // standard constructor

// Dialog Data
	//{{AFX_DATA(CSalesBill)
	enum { IDD = IDD_SALESBILLDLG };
	CMyButton	m_btnCommoditySearch;
	CMyButton	m_btnCommodityResearch;
	CListCtrl	m_ctrlListMain;
	CString	m_strBillDate;
	CString	m_strBiller;
	CString	m_strNote;
	CString	m_strSerchCode;
	float	m_fltSalePrice;
	int		m_iNum;
	float	m_fltAmount;
	CString	m_strClient;
	CString	m_strBillCode;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CSalesBill)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(CSalesBill)
	virtual BOOL OnInitDialog();
	afx_msg void OnBill();
	afx_msg void OnSave();
	afx_msg void OnUpdate();
	afx_msg void OnDelete();
	afx_msg void OnAccount();
	afx_msg void OnExit();
	afx_msg void OnClientfind();
	afx_msg void OnCommodityserch();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_SALESBILL_H__E95A758E_1C5A_442D_91F0_BA25EF86E146__INCLUDED_)





// SalesBill.cpp : implementation file
//

#include "stdafx.h"
#include "SalesManagementSystem.h"
#include "SalesManagementSystemDlg.h"
#include "SalesBill.h"
#include "ADOConn.h"
#include "MyTime.h"
#include "DiagLog.h"
#include "DlgAll.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSalesBill dialog


CSalesBill::CSalesBill(CWnd* pParent /*=NULL*/)
	: CDialog(CSalesBill::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSalesBill)
	m_strBillDate = _T("");
	m_strBiller = _T("");
	m_strNote = _T("");
	m_strSerchCode = _T("");
	m_fltSalePrice = 0.0f;
	m_iNum = 0;
	m_fltAmount = 0.0f;
	m_strClient = _T("");
	m_strBillCode = _T("");
	//}}AFX_DATA_INIT
}


void CSalesBill::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSalesBill)
	DDX_Control(pDX, IDC_COMMODITYSERCH, m_btnCommoditySearch);
	DDX_Control(pDX, IDC_LISTCOMMODITY, m_ctrlListMain);
	DDX_Text(pDX, IDC_BILLDATE, m_strBillDate);
	DDX_Text(pDX, IDC_BILLER, m_strBiller);
	DDX_Text(pDX, IDC_NOTE, m_strNote);
	DDX_Text(pDX, IDC_SERCHCODE, m_strSerchCode);
	DDX_Text(pDX, IDC_SALEPRICE, m_fltSalePrice);
	DDX_Text(pDX, IDC_NUM, m_iNum);
	DDX_Text(pDX, IDC_AMOUNT, m_fltAmount);
	DDX_Text(pDX, IDC_CLIENT, m_strClient);
	DDX_Text(pDX, IDC_BILLCODE, m_strBillCode);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSalesBill, CDialog)
	//{{AFX_MSG_MAP(CSalesBill)
	ON_BN_CLICKED(IDC_BILL, OnBill)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	ON_BN_CLICKED(IDC_UPDATE, OnUpdate)
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	ON_BN_CLICKED(IDC_ACCOUNT, OnAccount)
	ON_BN_CLICKED(IDC_CLIENTFIND, OnClientfind)
	ON_BN_CLICKED(IDC_COMMODITYSERCH, OnCommodityserch)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSalesBill message handlers

BOOL CSalesBill::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_btnCommoditySearch.SetXIcon(IDI_ICONSERCH);
	//CBitmapButton bitmapButton;
	//bitmapButton.LoadBitmaps(IDB_BITMAP1, IDB_BITMAP1);
	bitmapButton.AutoLoad(IDC_BUTTON2, this);
	bitmapButton.LoadBitmaps(IDI_ICONSERCH, IDB_BITMAP3);
	//bitmapButton.SubclassDlgItem(IDC_COMMODITYSERCH, this);
	bitmapButton.SizeToContent();
	m_ctrlListMain.InsertColumn(0, "条形码", LVCFMT_CENTER, 100);
	m_ctrlListMain.InsertColumn(1, "名称", LVCFMT_CENTER, 100);
	m_ctrlListMain.InsertColumn(2, "标准", LVCFMT_CENTER, 100);
	m_ctrlListMain.InsertColumn(3, "单位", LVCFMT_CENTER, 50);
	m_ctrlListMain.InsertColumn(4, "价格", LVCFMT_CENTER, 50);
	m_ctrlListMain.InsertColumn(5, "库存", LVCFMT_CENTER, 50);
	m_ctrlListMain.InsertColumn(6, "数量", LVCFMT_CENTER, 50);
	m_ctrlListMain.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
	
	return TRUE;  
	// return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void CSalesBill::OnBill() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CMyTime myTime;

	m_strBillCode = myTime.GetSimpleString();
	m_strBillDate = myTime.GetDateString(FALSE);
	m_strClient = "";
	m_strNote = "";
	m_fltSalePrice = 0;
	m_iNum = 0;
	m_fltAmount = 0;
	UpdateData(FALSE);
}

void CSalesBill::OnSave() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	POSITION pos;
	int index;
	CString strNum, strPrice;
	
	strNum.Format(_T("%d"), m_iNum);
	strPrice.Format(_T("%f"), m_fltSalePrice);
	pos = m_ctrlListMain.GetFirstSelectedItemPosition();
	index = m_ctrlListMain.GetNextSelectedItem(pos);
	m_fltAmount = m_fltAmount - atof(m_ctrlListMain.GetItemText(index, 4)) * atoi(m_ctrlListMain.GetItemText(index, 6));
	m_ctrlListMain.SetItemText(index, 6, strNum);
	m_ctrlListMain.SetItemText(index, 4, strPrice);
	m_fltAmount = m_fltAmount + atof(m_ctrlListMain.GetItemText(index, 4)) * atoi(m_ctrlListMain.GetItemText(index, 6));
	UpdateData(FALSE);
}

void CSalesBill::OnUpdate() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CString strSQL, strTemp;
	CADOConn adoSaleBill, adoSaleCommodity, adoStoreInfo, adoIntegral;

	strSQL = "INSERT INTO SaleBill VALUES ('";
	strSQL = strSQL + m_strBillCode + "', '";
	strSQL = strSQL + m_strBillDate + "', '";
	strSQL = strSQL + m_strBiller + "', '";
	strSQL = strSQL + m_strClient + "', '";
	strSQL = strSQL + m_strNote + "')";
	adoSaleBill.ExecuteSQL(strSQL);

	for(int i = 0; i < m_ctrlListMain.GetItemCount(); i++)
	{
		strSQL = "INSERT INTO SaleCommodity VALUES ('";
		strSQL = strSQL + m_strBillCode + "', '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(i, 0) + "', '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(i, 4) + "', '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(i, 6) + "')";
		adoSaleCommodity.ExecuteSQL(strSQL);

		int num = atoi(m_ctrlListMain.GetItemText(i, 5)) - atoi(m_ctrlListMain.GetItemText(i, 6));
		strSQL = "UPDATE StoreInfo SET num = '";
		strTemp.Format(_T("%d"), num);
		strSQL = strSQL + strTemp + "' WHERE barcode = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(i, 0) + "'";
		adoStoreInfo.ExecuteSQL(strSQL);
	}

	strSQL = "SELECT * FROM Integral WHERE cardcode = '";
	strSQL = strSQL + m_strClient + "'";
	adoIntegral.Open(strSQL);
	if (!adoIntegral.adoEOF())
	{
		strSQL = "UPDATE Integral SET totalintegral = '";
		strTemp.Format(_T("%0.2f"), m_fltAmount + atoi(adoIntegral.GetItemString(1)));
		strSQL = strSQL + strTemp + "', remainderintegral = '";
		strTemp.Format(_T("%0.2f"), m_fltAmount + atoi(adoIntegral.GetItemString(3)));
		strSQL = strSQL + strTemp + "' WHERE cardcode = '";
		strSQL = strSQL + m_strClient + "'";
		adoIntegral.ExecuteSQL(strSQL);
	}
	else
	{
		strSQL = "INSERT INTO Integral VALUES ('";
		strSQL = strSQL + m_strClient + "', '";
		strTemp.Format(_T("%d"), m_fltAmount);
		strSQL = strSQL + strTemp + "', '0', '";
		strSQL = strSQL + strTemp + "')";
		adoIntegral.ExecuteSQL(strSQL);
	}
	
}

void CSalesBill::OnDelete() 
{
	// TODO: Add your control notification handler code here
	POSITION pos;
	int index;
	CADOConn adoSaleBill;
	CString strSQL;
	
	pos = m_ctrlListMain.GetFirstSelectedItemPosition();
	index = m_ctrlListMain.GetNextSelectedItem(pos);
	strSQL = "DELETE * FROM SaleBill WHERE SaleBill.salecode ='";
	strSQL = strSQL + m_ctrlListMain.GetItemText(index, 0) + "'";
 	adoSaleBill.ExecuteSQL(strSQL);
	m_fltAmount = m_fltAmount - atof(m_ctrlListMain.GetItemText(index, 4)) * atoi(m_ctrlListMain.GetItemText(index, 6));
	m_ctrlListMain.DeleteItem(index);
}

void CSalesBill::OnAccount() 
{
	// TODO: Add your control notification handler code here
	m_strBillCode = "";
	m_strBillDate = "";
	m_strClient = "";
	m_strNote = "";
	m_fltSalePrice = 0;
	m_iNum = 0;
	m_ctrlListMain.DeleteAllItems();
	UpdateData(FALSE);
}

void CSalesBill::OnClientfind() 
{
	// TODO: Add your control notification handler code here
	CADOConn adoFind;
	CDlgAll dlgAll;
	dlgAll.strTitle = "客户信息";
	dlgAll.strSQL = "SELECT * FROM ClientInfo";
	dlgAll.intKey = 0;

	if (dlgAll.DoModal() == IDOK)
	{
		m_strClient = dlgAll.strKey;
		UpdateData(FALSE);
	}
}

void CSalesBill::OnCommodityserch() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CADOConn adoFind;
	CDlgAll dlgAll;
	CString strSQL;
	
	strSQL = "SELECT CommodityInfo.barcode, CommodityInfo.name, CommodityInfo.standard, ";
	strSQL = strSQL + "CommodityInfo.unit, StoreInfo.saleprice, StoreInfo.num FROM CommodityInfo INNER JOIN StoreInfo ON ";
	strSQL = strSQL + "CommodityInfo.barcode = StoreInfo.barcode WHERE CommodityInfo.barcode = '";
	strSQL = strSQL + m_strSerchCode + "' OR CommodityInfo.commoditycode = '";
	strSQL = strSQL + m_strSerchCode + "' OR CommodityInfo.spellcode = '";
	strSQL = strSQL + m_strSerchCode + "'";
	dlgAll.strTitle = "商品基本信息";
	dlgAll.strSQL = strSQL;
	dlgAll.intKey = 0;

	if (dlgAll.DoModal() == IDOK)
	{
		strSQL = "SELECT CommodityInfo.barcode, CommodityInfo.name, CommodityInfo.standard, ";
		strSQL = strSQL + "CommodityInfo.unit, StoreInfo.saleprice, StoreInfo.num FROM CommodityInfo INNER JOIN StoreInfo ON ";
		strSQL = strSQL + "CommodityInfo.barcode = StoreInfo.barcode WHERE CommodityInfo.barcode = '";
		strSQL = strSQL + dlgAll.strKey + "'";
		adoFind.Open(strSQL);
		//adoFind.InitList(&m_ctrlListMain);
		adoFind.FillList(&m_ctrlListMain);
		m_ctrlListMain.SetItemText(0, 6, "1");
		m_fltSalePrice = atof(m_ctrlListMain.GetItemText(0, 4));
		m_iNum = 1;
		m_fltAmount = m_fltAmount + m_iNum * m_fltSalePrice;
		UpdateData(FALSE);
	}
}


免责声明:文章转载自《商店管理系统源代码(三)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Tushare模块EncryptHelper加密对象-工具类下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

kubelet 配置管理 (一)

Kubelet解释说,首先,Kubelet的运行环境是Kubernets集群中节点上的每个工作节点都需要运行Kubelet来与ApiServer kubeadmjoin进程通信。如果您使用kubeadm集群管理工具来安装集群,政府提供了两种方法来使用共享令牌apiserver address:port(特定命令格式:kubeadmjoinapiserver...

压倒程序员的最后一个面试题,iOS性能优化的面试题

以及如何进行性能优化?关于instruments网上有很多资料,作为一个合格iOS开发者,熟悉这个工具还是很有必要的。一个tableview维持一个队列的数据可重用的UITableViewCell对象。这一过程即为Blending。在运行中缩放图片是很耗费资源的,特别是UIImageView嵌套在UIScrollView中的情况下。...

Android开发 Camera2的CaptureRequest属性整理--完善中

当android.control.aeExposureCompensation改变时,即使AE锁定为ON,则相机设备将仍然调整其曝光值。如果android.control.aeMode是ON_ALWAYS_FLASH,现场可能会变得过度曝光。同样,AEprecapture触发取消了当AE已被锁定没有影响。见android.control.aeState为AE...

unity, 设置帧率上限

使用unity制作演示,并移除所有昂贵的特效。在真正的机器上运行仍然会导致问题。最大显示帧速率为30。默认情况下,IOS设备上统一的原始帧速率限制为30。应用targetFrameRate=60;更改为最大值60。请注意,此设置对编辑器没有影响。...

ubuntu中VNC的安装配置笔记

设置密码并首次启动vncserver后。vnc/directory将在用户的主目录中生成。注意:安装后,用户的主目录中没有vnc目录。这是因为默认情况下启用了桌面配置,并且需要修改配置文件。后来,我在网上找到了一篇可靠的文章:http://blog.csdn.net/njchenyi/article/details/8489689本文中描述的配置方法确实可行...

Dto和Entity如何优雅的相互转换

什么是Dto,Entity,用来干什么?这个时候就有一个麻烦事,Entity和Dto的互转。通常的转换方法有两个途径,一个是通过反射的方式,来进行对象属性的复制;另一种是,通过硬编码进行对象属性的赋值;1.在service层中添加实体类转换函数@ServicepublicMyEntityService{publicSomeDtogetEntityById{S...