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

📄 srecord.cpp

📁 小型自选商场商品管理系统 要求:能对小型自选商场的商品进货、销售、库存等环节进行管理。主要有: 1)能记录每一笔进货
💻 CPP
字号:
// SRecord.cpp : implementation file
//

#include "stdafx.h"
#include "ShopManage.h"
#include "SRecord.h"
#include "DataManage.h"

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


extern _RecordsetPtr Record1;
extern	_ConnectionPtr DataConn;
extern	_RecordsetPtr DataRecord;
extern	_CommandPtr Com;

/////////////////////////////////////////////////////////////////////////////
// SRecord dialog


SRecord::SRecord(CWnd* pParent /*=NULL*/)
	: CDialog(SRecord::IDD, pParent)
{
	//{{AFX_DATA_INIT(SRecord)
	//}}AFX_DATA_INIT
}


void SRecord::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(SRecord)
	DDX_Control(pDX, IDC_SpayAcount, m_PayAcount);
	DDX_Control(pDX, IDC_SgoodsID, m_GoodsID);
	DDX_Control(pDX, IDC_Scount, m_Count);
	DDX_Control(pDX, IDC_SRList, m_SRList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(SRecord, CDialog)
	//{{AFX_MSG_MAP(SRecord)
	ON_BN_CLICKED(IDC_SsaveButton, OnSsaveButton)
	ON_WM_CLOSE()
	ON_BN_CLICKED(IDC_SCLOSE, OnSclose)
	ON_BN_CLICKED(IDC_Pay, OnPay)
	ON_BN_CLICKED(IDC_Update, OnUpdate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// SRecord message handlers

void SRecord::OnOK() 
{
	// TODO: Add extra validation here
	
	//CDialog::OnOK();
}

BOOL SRecord::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	m_SRList.ModifyStyle(LVS_EDITLABELS,0);
	m_SRList.ModifyStyle(0,LVS_REPORT);
	m_SRList.ModifyStyle(0,LVS_SHOWSELALWAYS);
	m_SRList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE|LVS_EX_FLATSB);

	m_SRList.InsertColumn(0,"商品ID");
	m_SRList.InsertColumn(1,"数量");
	m_SRList.InsertColumn(2,"金额");
	//设置列宽度
	m_SRList.SetColumnWidth(0,80);
	m_SRList.SetColumnWidth(1,73);
	m_SRList.SetColumnWidth(2,70);	

	row = 0;
	col = 0;
	pay = 0;
	return TRUE;
}

void SRecord::OnSsaveButton() 
{
	// TODO: Add your control notification handler code here
	CString SaleID="",GoodsID="2",Price="2",Count="2",Acount="2",StubNumber="",Date="";
	CString sql;
	int gcount = 0;
	float price = 0,acount = 0;
	CDataManage dm;
	/***********************************************************/
	/*GoodsID*/
	m_GoodsID.GetWindowText(GoodsID);
	if(GoodsID.GetLength() == 0)
	{
		MessageBox("请输入数据","提示");
		return;
	}
	/*SaleID*/
	/**************************************************/
	try
	{
		dm.ConnectDataBase();
		Record1->Open(_variant_t("Sale"),
		_variant_t((IDispatch *)DataConn,true), adOpenKeyset,
		adLockOptimistic, adCmdTable);
	}
	catch (_com_error& e)
	{
		MessageBox(e.ErrorMessage(),"提示");
	}
	/*****************************************/
	sql.Format("select SaleID from Sale");
	try
	{
		Record1->raw_Close();
		Record1->Open((_variant_t)sql,DataConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
	}
	catch(_com_error &e)
	{
		MessageBox(e.ErrorMessage(),"提示");
	}
	if(Record1->RecordCount > 0)
	{
		Record1->MoveLast();
		SaleID = (TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)0)->Value;
		int saleid = atoi(SaleID);
		saleid+=1;
		SaleID.Format("%d",saleid);
	}
	else
	{
		SaleID = "20060001";
	}
	/*Price*/
	/**************************************************/
	try
	{
		dm.ConnectDataBase();
		Record1->Open(_variant_t("Storage"),
		_variant_t((IDispatch *)DataConn,true), adOpenKeyset,
		adLockOptimistic, adCmdTable);
	}
	catch (_com_error& e)
	{
		MessageBox(e.ErrorMessage(),"提示");
	}
	/*****************************************/
	sql.Format("select GoodsPrice from Storage where GoodsID=%s",GoodsID);
	try
	{
		Record1->raw_Close();
		Record1->Open((_variant_t)sql,DataConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
	}
	catch(_com_error &e)
	{
		MessageBox(e.ErrorMessage(),"提示");
	}
	if(Record1->RecordCount > 0)
	{
		Price = (TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)0)->Value;
		price = (float)atof(Price);
	}
	else
	{
		MessageBox("库存中没有此种商品","提示");
		return;
	}
	/*Count*/
	m_Count.GetWindowText(Count);
	gcount = atoi(Count);
	/*Acount*/
	acount = gcount*price;
	pay+=acount;
	/*StubNumber*/
	StubNumber = SaleID;
	/*Date*/
	int year,month,day;
	CString date;
	CTime t= CTime::GetCurrentTime();
	year = t.GetYear();
	month = t.GetMonth();
	day = t.GetDay();
	Date.Format("%d/%d/%d",year,month,day);
	/*********插入到ListControl中*****************************************/
	Acount.Format("%f",acount);
	m_SRList.InsertItem(100,"");
	m_SRList.SetItemText(row,0,GoodsID);
	m_SRList.SetItemText(row,1,Count);
	m_SRList.SetItemText(row,2,Acount);
	row++;
	/****************售货记录插入*******************************/

	sql.Format("insert into Sale values('%s','%s','%f','%d','%f','%s','%s')",SaleID,GoodsID,price,gcount,acount,StubNumber,Date);
	/**************************************************/
	try
	{
		dm.ConnectDataBase();
		Record1->Open(_variant_t("Sale"),
		_variant_t((IDispatch *)DataConn,true), adOpenKeyset,
		adLockOptimistic, adCmdTable);
	}
	catch (_com_error& e)
	{
		MessageBox(e.ErrorMessage(),"提示");
	}
	/*****************************************/
	try
	{
		dm.ExecSQL(sql);
		//this->MessageBox("操作成功","提示");
	}
	catch(_com_error &e)
	{
		this->MessageBox(e.ErrorMessage(),"出错提示");
	}
	/****************日盘存记录修改********************/
	CString temp1 = "",temp2 = "";
	Record1->raw_Close();
	sql.Format("select * from DayStorage where GoodsID=%s",GoodsID);
	Record1->Open((_variant_t)sql,DataConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
	
	if(Record1->RecordCount > 0)
	{
		temp1 = (TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)2)->Value;
		temp2 = (TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)3)->Value;
		int addcount = atoi(temp1);
		float addacount = (float)atof(temp2);
		addcount+=gcount;
		addacount+=acount;
		sql.Format("update DayStorage set GoodsCount=%d,GoodsAcount=%f where GoodsID=%s",addcount,addacount,GoodsID);
		try
		{
			dm.ExecSQL(sql);
		}
		catch(_com_error &e)
		{
			this->MessageBox(e.ErrorMessage(),"出错提示");
		}
	}
	else
	{
		sql.Format("insert into DayStorage values('%s','%f','%d','%f','%s')",GoodsID,price,gcount,acount,Date);
		try
		{
			dm.ExecSQL(sql);
		}
		catch(_com_error &e)
		{
			this->MessageBox(e.ErrorMessage(),"出错提示");
		}
	}
	/*****************月盘存记录修改***********************/
	Record1->raw_Close();
	sql.Format("select * from MonthStorage where GoodsID=%s",GoodsID);
	Record1->Open((_variant_t)sql,DataConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
	
	if(Record1->RecordCount > 0)
	{
		temp1 = (TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)2)->Value;
		temp2 = (TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)3)->Value;
		int addcount = atoi(temp1);
		float addacount = (float)atof(temp2);
		addcount+=gcount;
		addacount+=acount;
		sql.Format("update MonthStorage set GoodsCount=%d,GoodsAcount=%f where GoodsID=%s",addcount,addacount,GoodsID);
		try
		{
			dm.ExecSQL(sql);
		}
		catch(_com_error &e)
		{
			this->MessageBox(e.ErrorMessage(),"出错提示");
		}
	}
	else
	{
		sql.Format("insert into MonthStorage values('%s','%f','%d','%f')",GoodsID,price,gcount,acount);
		try
		{
			dm.ExecSQL(sql);
		}
		catch(_com_error &e)
		{
			this->MessageBox(e.ErrorMessage(),"出错提示");
		}
	}
	/*****************库存修改*****************************/
	CString temp = "";
	Record1->raw_Close();
	sql.Format("select StorageCount from Storage where GoodsID=%s",GoodsID);
	Record1->Open((_variant_t)sql,DataConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
	temp = (TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)0)->Value;
	if(temp.GetLength() > 0)
	{
		Record1->raw_Close();
		int tCount=atoi(temp);
		tCount-=gcount;
		sql.Format("update Storage set StorageCount=%d where GoodsID=%s",tCount,GoodsID);
		try
		{
			dm.ExecSQL(sql);
		}
		catch(_com_error &e)
		{
			this->MessageBox(e.ErrorMessage(),"出错提示");
		}
	}
	/**************************************************/
	m_GoodsID.SetWindowText("");
	m_Count.SetWindowText("");
}

void SRecord::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	
	//CDialog::OnClose();
}

void SRecord::OnSclose() 
{
	// TODO: Add your control notification handler code here
	EndDialog(0);
}

void SRecord::OnPay() 
{
	// TODO: Add your control notification handler code here
	CString Pay;
	Pay.Format("%f",pay);
	m_PayAcount.SetWindowText(Pay);
	
}

void SRecord::OnUpdate() 
{
	// TODO: Add your control notification handler code here
	int Row;
	for(Row=0;Row<row;Row++)
	{
		for(col=0;col<3;col++)
		{
			m_SRList.SetItemText(Row,col,"");
		}
	}
	row = 0;
	m_Count.SetWindowText("");
	m_GoodsID.SetWindowText("");
	m_PayAcount.SetWindowText("");
}

⌨️ 快捷键说明

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