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

📄 dlgstockmange.cpp

📁 用VC编写的立体仓库的管理软件源程序和设计说明书。
💻 CPP
字号:
// DlgStockMange.cpp : implementation file
//

#include "stdafx.h"
#include "Manage_WH.h"
#include "DlgStockMange.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgStockMange dialog


CDlgStockMange::CDlgStockMange(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgStockMange::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgStockMange)
	m_max = 0;
	m_min = 0;
	//}}AFX_DATA_INIT
	m_iAddOrChange = 0;
	m_hIcon = AfxGetApp()->LoadIcon(IDI_MYICON);
}


void CDlgStockMange::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgStockMange)
	DDX_Control(pDX, IDC_MIN, m_EdtMin);
	DDX_Control(pDX, IDC_MAX, m_EdtMax);
	DDX_Control(pDX, IDCANCEL, m_ButExit);
	DDX_Control(pDX, IDC_UNDO, m_ButUndo);
	DDX_Control(pDX, IDC_SAVE, m_ButSave);
	DDX_Control(pDX, IDC_LIST, m_list);
	DDX_Control(pDX, IDC_DEL, m_ButDel);
	DDX_Control(pDX, IDC_CHANGE, m_ButEdit);
	DDX_Control(pDX, IDC_ADD, m_ButAdd);
	DDX_Text(pDX, IDC_MAX, m_max);
	DDV_MinMaxInt(pDX, m_max, 0, 4000);
	DDX_Text(pDX, IDC_MIN, m_min);
	DDV_MinMaxInt(pDX, m_min, 0, 4000);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgStockMange, CDialog)
	//{{AFX_MSG_MAP(CDlgStockMange)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnDblclkList)
	ON_BN_CLICKED(IDC_CHANGE, OnChange)
	ON_BN_CLICKED(IDC_DEL, OnDel)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	ON_CBN_SELCHANGE(IDC_GOODS, OnSelchangeGoods)
	ON_BN_CLICKED(IDC_UNDO, OnUndo)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgStockMange message handlers

BOOL CDlgStockMange::PreTranslateMessage(MSG* pMsg) 
{
	if (pMsg->message==WM_KEYDOWN && (pMsg->wParam==13 || pMsg->wParam==27))
		return TRUE;
	return CDialog::PreTranslateMessage(pMsg);
}

BOOL CDlgStockMange::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	SetIcon(m_hIcon,TRUE);
	m_list.InsertColumn(0,"商品编码",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(1,"商品名称",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(2,"最大数量",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(3,"最小数量",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(4,"现有数量",LVCFMT_LEFT,90,-1);
	m_list.InsertColumn(5,"放置区域",LVCFMT_LEFT,90,-1);
	m_list.SetExtendedStyle( LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT );

	gFillComboBox(static_cast<CComboBox *>(GetDlgItem(IDC_GOODS)),"T_Products","F_Name");
	gFillComboBox(static_cast<CComboBox *>(GetDlgItem(IDC_AREA)),"T_Goods_Area_Manage","F_Remark");
	Refresh();

	return TRUE;
}

void CDlgStockMange::Refresh()
{
	m_list.DeleteAllItems();
	int bz = 0;
	CAdoConnection cn;
	CAdoRecordSet  rs;
	cn.OpenUDLFile(gstrConSQLSer);
	rs.SetAdoConnection(&cn);
	rs.Open("T_Stock",adCmdTable);
	if (rs.GetRecordCount() > 0)
	{
		bz = 1;
		int row=0,iVal=0,iMaxNum=0,iMinNum=0,iArea=0;
		CString sVal,sMaxNum,sMinNum,sArea;
		rs.MoveFirst();
		while (!rs.IsEOF())
		{
			row = m_list.InsertItem(row,"");
			rs.GetCollect("F_Code",sVal);
			m_list.SetItemText(row,0,sVal);
			rs.GetCollect("F_Name",sVal);
			m_list.SetItemText(row,1,sVal);
			rs.GetCollect("F_MaxNum",iMaxNum);
			rs.GetCollect("F_MinNum",iMinNum);
			rs.GetCollect("F_Area",iArea);
			sMaxNum.Format("%d",iMaxNum);
			sMinNum.Format("%d",iMinNum);
			sArea.Format("%d",iArea);
			m_list.SetItemText(row,2,sMaxNum);
			m_list.SetItemText(row,3,sMinNum);
			m_list.SetItemText(row,5,sArea);
			rs.MoveNext();
			row++;
		}
	}
	rs.Close();
	if (bz == 1)
	{
		int iCount=0,iGoodsKind=0,iSum;
		CString szSQL,sGoodsCount,sAreaName;
		for (int i=0;i<m_list.GetItemCount();i++)
		{
			iSum=0;
			iGoodsKind = gfGetGoodsKind(m_list.GetItemText(i,1));
			szSQL.Format("select * from T_Goods_Site_Manage where F_GoodsKind=%d and F_SiteState!=2",iGoodsKind);
			rs.Open(szSQL,adCmdText);
			if (rs.GetRecordCount() > 0)
			{
				rs.MoveFirst();
				while (!rs.IsEOF())
				{
					rs.GetCollect("F_GoodsCount",iCount);
					iSum += iCount;
					rs.MoveNext();
				}
			}
			rs.Close();
			sGoodsCount.Format("%d",iSum);
			m_list.SetItemText(i,4,sGoodsCount);
			sAreaName = gfGetAreaName(atoi(m_list.GetItemText(i,5)));
			m_list.SetItemText(i,5,sAreaName);
		}
	}
	cn.Close();
}

void CDlgStockMange::Enabled(BOOL bEnabled)
{
	m_list.EnableWindow(!bEnabled);
	static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->EnableWindow(bEnabled);
	static_cast<CComboBox *>(GetDlgItem(IDC_AREA))->EnableWindow(bEnabled);
	m_EdtMax.EnableWindow(bEnabled);
	m_EdtMin.EnableWindow(bEnabled);
	m_ButUndo.EnableWindow(bEnabled);
	m_ButSave.EnableWindow(bEnabled);
	m_ButExit.EnableWindow(!bEnabled);
	m_ButDel.EnableWindow(!bEnabled);
	m_ButEdit.EnableWindow(!bEnabled);
	m_ButAdd.EnableWindow(!bEnabled);
}

void CDlgStockMange::ClearFrom()
{
	static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->SetCurSel(-1);
	static_cast<CComboBox *>(GetDlgItem(IDC_AREA))->SetCurSel(-1);
	m_EdtMax.SetWindowText("");
	m_EdtMin.SetWindowText("");
	static_cast<CEdit *>(GetDlgItem(IDC_NOW))->SetWindowText("");
}

void CDlgStockMange::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	for (int i=0; i<m_list.GetItemCount(); i++)
	{
		if (m_list.GetItemState(i,LVIS_SELECTED) == LVIS_SELECTED)
		{
			static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->SetCurSel(static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->FindString(-1,m_list.GetItemText(i,1)));
			static_cast<CComboBox *>(GetDlgItem(IDC_AREA))->SetCurSel(static_cast<CComboBox *>(GetDlgItem(IDC_AREA))->FindString(-1,m_list.GetItemText(i,5)));
			m_EdtMax.SetWindowText(m_list.GetItemText(i,2));
			m_EdtMin.SetWindowText(m_list.GetItemText(i,3));
			static_cast<CEdit *>(GetDlgItem(IDC_NOW))->SetWindowText(m_list.GetItemText(i,4));
			break;
		}
	}
	*pResult = 0;
}

void CDlgStockMange::OnAdd() 
{
	ClearFrom();
	Enabled(true);
	m_iAddOrChange=1;	
}
void CDlgStockMange::OnChange() 
{
	CString sGoodsName;
	static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->GetWindowText(sGoodsName);
	if (sGoodsName.IsEmpty())
	{
		MessageBox("请选择要修改的商品!","系统提示",MB_ICONSTOP|MB_OK);
		return;
	}
	Enabled(true);
	static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->EnableWindow(false);	
	m_iAddOrChange=2;	
}

void CDlgStockMange::OnDel() 
{
	CString sName;
	static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->GetWindowText(sName);
	if (sName.IsEmpty())
	{
		MessageBox("请选择要删除的商品!\n","系统提示",MB_ICONSTOP|MB_OK);
		return;
	}
	if (gstrPopedom == "普通用户")
	{
		MessageBox("对不起,您没有执行删除操作的权限!","系统提示",MB_ICONSTOP|MB_OK);
		return;
	}
	CString sGoodsCount;
	static_cast<CEdit *>(GetDlgItem(IDC_NOW))->GetWindowText(sGoodsCount);
	if (atoi(sGoodsCount) > 0)
	{
		MessageBox("无法执行删除操作,["+sName+"]的库存数量不为零!","系统提示",MB_ICONSTOP|MB_OK);
		return;
	}

	if (MessageBox("是否删除["+sName+"]的库存设置信息?","系统提示",MB_ICONINFORMATION|MB_YESNO) == IDNO)
		return;

	CAdoConnection cn;
	cn.Execute("delete from T_Stock where F_Name = '"+sName+"'",adCmdText);
	cn.Close();
	AddLog("删除["+sName+"]的库存设置信息!");
	Enabled(false);
	ClearFrom();
	Refresh();
}

void CDlgStockMange::OnSave() 
{
	if(MessageBox("确定要保存此商品的库存设置信息吗?","系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1)
		return;
	//取出文本框中的值
	UpdateData(TRUE);
	CAdoConnection cn;
	CAdoRecordSet  rs;
	CString sSQL,sName,sMaxNum,sMinNum,sArea,sWarning;
	
	static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->GetWindowText(sName);
	static_cast<CComboBox *>(GetDlgItem(IDC_AREA))->GetWindowText(sArea);
	m_EdtMax.GetWindowText(sMaxNum);
	m_EdtMin.GetWindowText(sMinNum);

	if (sName.IsEmpty())					sWarning = "商品名称不能为空,请选择!";
	else if (sMaxNum.IsEmpty())				sWarning = "商品最大库存量不能为空,请输入!";
	else if (sMinNum.IsEmpty())				sWarning = "商品最小库存量不能为空,请选择!";
	else if (sMaxNum.Mid(0,1) == "0")		sWarning = "商品最大库存量不正确,请重新输入!";
	else if (sArea.IsEmpty())				sWarning = "商品放置区域不能为空,请选择!";
	else if (m_iAddOrChange==1 && IsHave(sName))	sWarning = "该商品库存设置信息已存在!";
	
	if (!sWarning.IsEmpty())
	{
		MessageBox(sWarning,"系统提示",MB_ICONSTOP|MB_OK);
		return;
	}

	int nAreaIndex  = gfGetAreaIndex(sArea);

	switch(m_iAddOrChange)
	{
	case 1:
		sSQL.Format("INSERT INTO T_Stock(F_Type,F_Code,F_Name,F_MaxNum,F_MinNum,F_Area) VALUES(%d,'%s','%s',%d,%d,%d)",gfGetGoodsKind(sName),m_sCode,sName,atoi(sMaxNum),atoi(sMinNum),nAreaIndex);
		break;
	case 2:
		sSQL.Format("UPDATE T_Stock SET F_MaxNum = %d,F_MinNum = %d,F_Area = %d WHERE F_Name = '"+sName+"'",atoi(sMaxNum),atoi(sMinNum),nAreaIndex);
		break;
	}
	
	if (cn.OpenUDLFile(gstrConSQLSer))
	{
		cn.Execute(sSQL,adCmdText);
		cn.Close();
		switch(m_iAddOrChange)
		{
		case 1:
			AddLog("添加商品["+sName+"]的库存设置信息");
			MessageBox("信息添加成功!","系统提示",MB_ICONINFORMATION|MB_OK);
			break;
		case 2:
			AddLog("修改商品["+sName+"]的库存设置信息!");
			MessageBox("信息修改成功!","系统提示",MB_ICONINFORMATION|MB_OK);
			break;
		}
		Enabled(false);
		ClearFrom();
		Refresh();
	}
	else
	{
		MessageBox("数据库连接失败!","系统提示",MB_ICONSTOP|MB_OK);
	}	
}

BOOL CDlgStockMange::IsHave(const CString &sName)
{
	BOOL bHave;
	CAdoConnection cn;
	CAdoRecordSet  rs;
	cn.OpenUDLFile(gstrConSQLSer);
	rs.SetAdoConnection(&cn);
	rs.Open("select * from T_Stock where F_Name = '"+sName+"'",adCmdText);
	if (rs.GetRecordCount() == 0)
	{
		bHave = FALSE;
	}
	else
	{
		bHave = TRUE;
	}
	rs.Close();
	cn.Close();
	return bHave;
}

void CDlgStockMange::OnSelchangeGoods() 
{
	CString sName;
	static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->GetWindowText(sName);
	
	CAdoConnection cn;	
	CAdoRecordSet  rs;
	cn.OpenUDLFile(gstrConSQLSer);
	rs.SetAdoConnection(&cn);
	rs.Open("select * from T_Products where F_Name = '"+sName+"'",adCmdText);
	rs.GetCollect("F_Code",m_sCode);
	rs.Close();
	cn.Close();	
}

void CDlgStockMange::OnUndo() 
{
	ClearFrom();
	Enabled(false);
	Refresh();	
}

⌨️ 快捷键说明

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