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

📄 selldlg.cpp

📁 VC++ 开发的一个大型进销存管理系统,并附带有Visio的数据库开发模型,商品采用分类管理.但是各位同仁需要注意,本系统的开发过程是基于VC++6.0 SQL Server2000的基础之上开发的.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// SellDlg.cpp : implementation file
//

#include "stdafx.h"
#include "QGZX_InfoPlat.h"
#include "SellDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSellDlg dialog


CSellDlg::CSellDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSellDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSellDlg)
	m_className = _T("");
	m_customerID = _T("");
	m_customerName = _T("");
	m_goodName = _T("");
	m_managerName = _T("");
	m_address = _T("");
	m_email = _T("");
	m_info = _T("");
	m_inteqral = _T("");
	m_num = _T("");
	m_price = _T("");
	m_qq = _T("");
	m_sum = _T("");
	m_tele = _T("");
	m_sellID = _T("");
	//}}AFX_DATA_INIT
	m_ds = new CData();
	m_ds->InitData();
}


void CSellDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSellDlg)
	DDX_Control(pDX, IDC_LIST_THISSELL, m_listThisSell);
	DDX_Control(pDX, IDC_LIST_TEMP, m_listTEMP);
	DDX_Control(pDX, IDC_COMBO_CUSTOMERID, m_comboCustomerID);
	DDX_Control(pDX, IDC_COMBO_GOODNAME, m_comboGoodName);
	DDX_Control(pDX, IDC_COMBO_CLASSNAME, m_comboClassName);
	DDX_Control(pDX, IDC_SPIN_NUM, m_spinNum);
	DDX_CBString(pDX, IDC_COMBO_CLASSNAME, m_className);
	DDX_CBString(pDX, IDC_COMBO_CUSTOMERID, m_customerID);
	DDX_CBString(pDX, IDC_COMBO_CUSTOMERNAME, m_customerName);
	DDX_CBString(pDX, IDC_COMBO_GOODNAME, m_goodName);
	DDX_CBString(pDX, IDC_COMBO_MANAGERNAME, m_managerName);
	DDX_Text(pDX, IDC_EDIT_ADDRESS, m_address);
	DDX_Text(pDX, IDC_EDIT_EMAIL, m_email);
	DDX_Text(pDX, IDC_EDIT_INFO, m_info);
	DDX_Text(pDX, IDC_EDIT_INTEQRAL, m_inteqral);
	DDX_Text(pDX, IDC_EDIT_NUM, m_num);
	DDX_Text(pDX, IDC_EDIT_PRICE, m_price);
	DDX_Text(pDX, IDC_EDIT_QQ, m_qq);
	DDX_Text(pDX, IDC_EDIT_SUM, m_sum);
	DDX_Text(pDX, IDC_EDIT_TELE, m_tele);
	DDX_Text(pDX, IDC_EDIT_SELLID, m_sellID);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSellDlg, CDialog)
	//{{AFX_MSG_MAP(CSellDlg)
	ON_WM_CTLCOLOR()
	ON_CBN_SELCHANGE(IDC_COMBO_CLASSNAME, OnSelchangeComboClassname)
	ON_CBN_SELCHANGE(IDC_COMBO_GOODNAME, OnSelchangeComboGoodname)
	ON_CBN_EDITCHANGE(IDC_COMBO_CUSTOMERID, OnEditchangeComboCustomerid)
	ON_LBN_KILLFOCUS(IDC_LIST_TEMP, OnKillfocusListTemp)
	ON_LBN_SELCHANGE(IDC_LIST_TEMP, OnSelchangeListTemp)
	ON_EN_CHANGE(IDC_EDIT_NUM, OnChangeEditNum)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_NUM, OnDeltaposSpinNum)
	ON_BN_CLICKED(IDC_BTN_CALC, OnBtnCalc)
	ON_BN_CLICKED(IDC_BTN_ADDCUSTOMER, OnBtnAddcustomer)
	ON_LBN_DBLCLK(IDC_LIST_TEMP, OnDblclkListTemp)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSellDlg message handlers

HBRUSH CSellDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
	if(pWnd->GetDlgCtrlID()==IDC_STATIC_NOTICE)			
	{   
		pDC->SetTextColor(RGB(255, 100, 0));			//设置文本颜色  
	}   
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CSellDlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData();
	if(this->m_className == "" || this->m_goodName == "" ||
		this->m_sellID== "" || this->m_num == "" ||
		this->m_price == "" || this->m_sum == "" ||
		this->m_managerName == "" || this->m_info == "")
	{
		MessageBox("错误:销售信息不完整!","信息不完整",MB_ICONERROR | MB_OK);
		return;
	}
	else
	{
		CString strGoodID ,strClassID, strDate, strManagerID, strIsCheck;
		CString strSQL;
		int nIsCheck;
		//判断是否添加了客户信息
		if(m_customerID == "" || m_customerName == "")
		{
			if(MessageBox("提示:您目前还没有添加客户信息,是否添加?","客户信息提示",MB_YESNO) == IDYES)
			{
				this->m_comboCustomerID.SetFocus();
				return;
			}
		}
		//如果金额为0
		UpdateData(TRUE);
		if(m_sum == "0.00")
		{
			MessageBox("提示:总金额不能为零,请按计算按钮重新计算","错误",MB_ICONINFORMATION | MB_OK);
			return;
		}
		//如果库存不足则返回
		int nStorageNum;	//库存数量
		int nSellNum;		//将要买出的数量
		CString str_Notice;
		strSQL.Format("Select StorageNum From _tGoodsLibrary Where GoodName = '%s'", \
			this->m_goodName);
		m_ds->ExecuteSQL(strSQL);
		nStorageNum = m_ds->GetAsInteger("StorageNum");
		nSellNum = atoi(this->m_num);
		if(nSellNum > nStorageNum)
		{
			str_Notice.Format("提示:\n尊敬的客户,当前库存数量只有:%d件产品,无法开单!", nStorageNum);
			MessageBox(str_Notice, "错误", MB_ICONINFORMATION | MB_OK);
			return;
		}
		//获取商品编号
		strSQL.Format("Select GoodID From _tGoodsLibrary Where GoodName = '%s'", \
			this->m_goodName);
		m_ds->ExecuteSQL(strSQL);
		strGoodID = m_ds->GetAsString("GoodID");
		//获取分类编号
		strSQL.Format("Select ClassID From _tClass Where ClassName = '%s'", \
			this->m_className);
		m_ds->ExecuteSQL(strSQL);
		strClassID = m_ds->GetAsString("ClassID");
		//获取日期
		strDate = this->m_sellID.Left(8);
		//获取管理员的ID
		strSQL.Format("Select ManagerID From _tSysManager Where ManagerName = '%s'", \
			this->m_strManager);
		m_ds->ExecuteSQL(strSQL);
		strManagerID = m_ds->GetAsString("ManagerID");
		//是否为内部员工  1是  0不是
		nIsCheck = ((CButton*)GetDlgItem(IDC_CHECK_INTER))->GetCheck();
		if(nIsCheck == 1)
		{
			strIsCheck = "是";
		}
		else
		{
			strIsCheck = "否";
		}

		//库存减nSellNum , 买出件数加nSellNum;
		strSQL.Format("Update _tGoodsLibrary  set StorageNum = StorageNum - %d, \
			SellNum = SellNum + %d Where GoodID = '%s'", nSellNum, nSellNum, strGoodID);
		m_ds->ExecuteOther(strSQL);

		//记录销售事件
		strSQL.Format("Insert into _tGoodsSellEvent(GoodSellID, GoodID, ClassID, \
			Price, Num, SumMoney, SellDate, ManagerID, CustomerID, Remarks, IsInner) \
			values('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", \
			this->m_sellID, strGoodID, strClassID, this->m_price, this->m_num, this->m_sum, strDate, \
			strManagerID, this->m_customerID, this->m_info, strIsCheck);
		m_ds->ExecuteOther(strSQL);


		CString str_notice;
		str_notice.Format("事务处理完成!以下是本次交易情况:\n\n单价:%s\n\n数量:%s\n\n总金额:%s",this->m_price,this->m_num,this->m_sum);
		MessageBox(str_notice, "提交成功", MB_OK);
		this->m_sellID = m_ds->AutoNumber("_tGoodsSellEvent", "GoodSellID", "NO", 2);
		UpdateData(FALSE);
		//更新列表视图
		int nListViewCount;
		nListViewCount = m_listThisSell.GetItemCount();
		m_listThisSell.InsertItem(nListViewCount, "");
		m_listThisSell.SetItemText(nListViewCount, 0, this->m_sellID);
		m_listThisSell.SetItemText(nListViewCount, 1, this->m_className);
		m_listThisSell.SetItemText(nListViewCount, 2, this->m_goodName);
		m_listThisSell.SetItemText(nListViewCount, 3, this->m_price);
		m_listThisSell.SetItemText(nListViewCount, 4, this->m_num);
		m_listThisSell.SetItemText(nListViewCount, 5, this->m_sum);
		m_listThisSell.SetItemText(nListViewCount, 6, this->m_strManager);
		m_listThisSell.SetItemText(nListViewCount, 7, this->m_customerName);
/*
	m_listThisSell.InsertColumn(0,"销售编号",LVCFMT_LEFT,80);
	m_listThisSell.InsertColumn(1,"分类名称",LVCFMT_LEFT,120);
	m_listThisSell.InsertColumn(2,"商品名",LVCFMT_LEFT,90);
	m_listThisSell.InsertColumn(3,"单价",LVCFMT_LEFT,100);
	m_listThisSell.InsertColumn(4,"数量",LVCFMT_LEFT,100);
	m_listThisSell.InsertColumn(5,"总额",LVCFMT_LEFT,150);
	m_listThisSell.InsertColumn(6,"操作员",LVCFMT_LEFT,150);
	m_listThisSell.InsertColumn(7,"客户姓名",LVCFMT_LEFT,150);*/
	}


//	CDialog::OnOK();
}

BOOL CSellDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
//************************CSpintButtonCtrl的使用方法********************
/*
CSpinButtonCtrl使用说明2007/05/11 14:01CSpinButtonCtrl使用起来比较特殊,使用起来,需要注意一些地方.实际的教程也比较少.为了让后人少走弯路,这里写这篇文章以说明.
1.添加EDIT控件
2.添加Spin控件
如果不是这样的顺序的话,使用ctrl+D改变Tab顺序,使spin紧靠edit后面
3.在EDIT控件上面设置group属性(特别注意)
4.在Spin控件上设置
Auto Buddy 为 true
Set Buddy Integer 为 true
Alignment 为 Right Align
5.添加Edit控件 int 变量 m_nNumK;
这个时候点击向下应该可以增加数值
6.在OnInitDialog中添加以下语句
((CSpinButtonCtrl *)GetDlgItem(IDC_SPIN1))->SetRange(-100, 100);
这个时候向上的箭头为增加,向下的箭头为减小.
大功告成.欢迎留言.*/
//*************************************************
 

	this->m_spinNum.SetBuddy(GetDlgItem(IDC_EDIT_NUM));
	this->m_spinNum.SetRange(1, 100);
	this->m_spinNum.SetPos(1);

	this->m_num = "1";
	this->m_price = "0.00";
	this->m_sum = "0.00";
	this->m_info = "<无>";
	UpdateData(FALSE);
	
	//初始化类名ComboBox
	CString str_tmp1;
/*	int nRecordCount = 0;
	m_ds->ExecuteSQL("Select * From _tClass");
	nRecordCount = m_ds->GetRecordCount();
	for(int i = 0; i < nRecordCount; i++)
	{
		str_tmp1 = m_ds->GetAsString("ClassName");
		m_comboClassName.InsertString(i,str_tmp1);
		m_ds->MoveNext();
	}*/
	InitComboBox(&m_comboClassName);
	this->m_inteqral = "0";
	//生成商品销售编号
	str_tmp1 = m_ds->AutoNumber("_tGoodsSellEvent", "GoodSellID", "NO", 2);
	m_sellID = str_tmp1;
	this->m_managerName = this->m_strManager;
	UpdateData(FALSE);


//**********************初始化列表视图*********************
	m_listThisSell.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
//	m_listThisSell.SetBkColor(RGB(250,250,0));
//	m_classView.SetTextBkColor(RGB(255,0,0));

	m_listThisSell.InsertColumn(0,"销售编号",LVCFMT_LEFT,90);
	m_listThisSell.InsertColumn(1,"分类名称",LVCFMT_LEFT,110);
	m_listThisSell.InsertColumn(2,"商品名",LVCFMT_LEFT,150);
	m_listThisSell.InsertColumn(3,"单价",LVCFMT_LEFT,70);
	m_listThisSell.InsertColumn(4,"数量",LVCFMT_LEFT,60);
	m_listThisSell.InsertColumn(5,"总额",LVCFMT_LEFT,80);
	m_listThisSell.InsertColumn(6,"操作员",LVCFMT_LEFT,85);
	m_listThisSell.InsertColumn(7,"客户姓名",LVCFMT_LEFT,85);

//	HBITMAP hbmp=::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1)); 
//	m_listThisSell.SetBkImage(hbmp);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSellDlg::OnDeltaposSpinPrice(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -