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

📄 buyoperview.cpp

📁 一个小型的医药零售管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			m_ctlList1.SetItemText(m_nItem, i, strValues[i]);
	}


	// 打开进货表,添加记录
	m_pRecordset->Open( ("select * from 进货"),
					    _variant_t((IDispatch*)theApp.m_pConnection,true),
						adOpenStatic, adLockOptimistic, adCmdText);	
	m_pRecordset->AddNew();
	for (i = 0; i < m_nFieldCount; i++)
	{
		vt1.SetString((LPCTSTR)m_strFields[i]);
		if (strValues[i].IsEmpty())
			vt2.vt = VT_NULL;
		else
			vt2.SetString((LPCTSTR)strValues[i]);
		m_pRecordset->PutCollect(vt1, vt2);
		vt1.Clear();
		vt2.Clear();
	}

	// 金额字段
	vt1.SetString("金额");										
	CString strTemp;
	double dblTemp = atoi(LPCTSTR(m_strNewQuantity)) * atof(LPCTSTR(m_strInPrice));
	strTemp.Format("%.2lf", dblTemp);
	vt2.SetString(LPCTSTR(strTemp));
	m_pRecordset->PutCollect(vt1, vt2);

	// 日期字段
	CTime t = CTime::GetCurrentTime();
	strTemp.Format("%d-%d-%d", t.GetYear(), t.GetMonth(), t.GetDay());
	vt1.SetString("日期");										
	vt2.SetString(LPCTSTR(strTemp));
	m_pRecordset->PutCollect(vt1, vt2);
	vt1.Clear();
	vt2.Clear();

	// 金额字段
	vt1.SetString("进货单位");										
	vt2.SetString(LPCTSTR(m_strWhere));
	m_pRecordset->PutCollect(vt1, vt2);

	// 更新数据库然后关闭
	m_pRecordset->Update();
	m_pRecordset->Close();

	// 把进货的内容显示到List2中
	int nIndex = m_ctlList2.GetItemCount();
	m_ctlList2.InsertItem(nIndex, strValues[0]);
	for (i = 1; i < m_nFieldCount; i++)
		m_ctlList2.SetItemText(nIndex, i, strValues[i]);

	Reset();			// 清空所有编辑框
	GetTotalMoney();	// 计算进货金额
}

//-----------------------------------------------------------------------------
// 功能: 更改库存表和进货表,添加一条新的记录到库存表
// 备注: 进货表总是每次都添加一条记录
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CBuyOperView::OnAppend() 
{
	if (CheckUserInput() == FALSE)	// 发现错误则不进行操作
		return;

	CString strValues[m_nFieldCount];
	strValues[0] = m_strMedName;
	strValues[1] = m_strSpecification;
	strValues[2] = m_strType;
	strValues[3] = m_strLocation;
	strValues[4] = m_strNewQuantity;
	strValues[5] = m_strUnit;
	strValues[6] = m_strInPrice;
	strValues[7] = m_strOutPrice;
	strValues[8] = m_strMemo;

	// 打开库存表,修改记录
	m_pRecordset->Open( _variant_t("select * from 库存"),
					    _variant_t((IDispatch*)theApp.m_pConnection,true),
						adOpenStatic, adLockOptimistic, adCmdText);	

	m_pRecordset->AddNew();
	int nQuantity = 0;	// 进货以后的数量
	_variant_t vt1,vt2;	
	for (int i = 0; i < m_nFieldCount; i++)
	{
		vt1.SetString((LPCTSTR)m_strFields[i]);
		if (strValues[i].IsEmpty())
			vt2.vt = VT_NULL;
		else
			vt2.SetString((LPCTSTR)strValues[i]);

		m_pRecordset->PutCollect(vt1, vt2);
		vt1.Clear();
		vt2.Clear();
	}
	m_pRecordset->Update();										
	m_pRecordset->Close();		

	// 打开进货表,添加记录
	m_pRecordset->Open( ("select * from 进货"),
					    _variant_t((IDispatch*)theApp.m_pConnection,true),
						adOpenStatic, adLockOptimistic, adCmdText);	
	m_pRecordset->AddNew();
	for (i = 0; i < m_nFieldCount; i++)
	{
		vt1.SetString((LPCTSTR)m_strFields[i]);
		if (strValues[i].IsEmpty())
			vt2.vt = VT_NULL;
		else
			vt2.SetString((LPCTSTR)strValues[i]);
		m_pRecordset->PutCollect(vt1, vt2);
		vt1.Clear();
		vt2.Clear();
	}

	// 金额字段
	vt1.SetString("金额");										
	CString strTemp;
	double dblTemp = atoi(LPCTSTR(m_strNewQuantity)) * atof(LPCTSTR(m_strInPrice));
	strTemp.Format("%.2lf", dblTemp);
	vt2.SetString(LPCTSTR(strTemp));
	m_pRecordset->PutCollect(vt1, vt2);

	// 日期字段
	CTime t = CTime::GetCurrentTime();
	strTemp.Format("%d-%d-%d", t.GetYear(), t.GetMonth(), t.GetDay());
	vt1.SetString("日期");										
	vt2.SetString(LPCTSTR(strTemp));
	m_pRecordset->PutCollect(vt1, vt2);
	vt1.Clear();
	vt2.Clear();

	// 金额字段
	vt1.SetString("进货单位");										
	vt2.SetString(LPCTSTR(m_strWhere));
	m_pRecordset->PutCollect(vt1, vt2);

	// 更新数据库然后关闭
	m_pRecordset->Update();
	m_pRecordset->Close();

	// 把进货的内容显示到List2中
	int nIndex = m_ctlList2.GetItemCount();
	m_ctlList2.InsertItem(nIndex, strValues[0]);
	for (i = 1; i < m_nFieldCount; i++)
		m_ctlList2.SetItemText(nIndex, i, strValues[i]);

	Reset();			// 清空所有编辑框
	GetTotalMoney();	// 计算进货金额	
}

//-----------------------------------------------------------------------------
// 功能: 当用户在List1上用鼠标点击时的消息处理函数,获得当前的选择项
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CBuyOperView::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	POSITION pos = m_ctlList1.GetFirstSelectedItemPosition();	
	if (pos == NULL)
	{
		m_nItem = -1;
		return;
	}
	m_nItem = m_ctlList1.GetNextSelectedItem(pos);					// 当前选择项

	// 目的是把当前选择的条目的内容显示到编辑框,以减轻用户输入的负担
	// 注意: 数量不显示出来
	CString strValues[m_nFieldCount];
	for (int i = 0; i < m_nFieldCount; i++)
		strValues[i] = m_ctlList1.GetItemText(m_nItem, i);

	m_strMedName			= strValues[0];
	m_strSpecification	= strValues[1];
	m_strType			= strValues[2];
	m_strLocation		= strValues[3];
	m_strUnit			= strValues[5];
	m_strMemo			= strValues[8];
	UpdateData(FALSE);

	SetDlgItemText(IDC_INPRICE, strValues[6]);	// 进价
	SetDlgItemText(IDC_OUTPRICE, strValues[7]);	// 零售价

	*pResult = 0;
}

//-----------------------------------------------------------------------------
// 功能: 对用户的输入进行容错性检查
// 输出: 没有错误返回TRUE,否则返回FALSE
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
BOOL CBuyOperView::CheckUserInput()
{
	UpdateData();

	// 容错性检查
	if (m_strMedName.IsEmpty())
	{
		MessageBox("请输入品名!", "提示", MB_ICONINFORMATION);
		GetDlgItem(IDC_MEDNAME)->SetFocus();
		return FALSE;
	}

	if (m_strSpecification.IsEmpty())
	{
		MessageBox("请输入规格!", "提示", MB_ICONINFORMATION);
		GetDlgItem(IDC_SPECIFICATION)->SetFocus();
		return FALSE;
	}

	if (m_strType.IsEmpty())
	{
		MessageBox("请输入剂型!", "提示", MB_ICONINFORMATION);
		GetDlgItem(IDC_COMBO1)->SetFocus();
		return FALSE;
	}

	if (m_strLocation.IsEmpty())
	{
		MessageBox("请输入产地!", "提示", MB_ICONINFORMATION);
		GetDlgItem(IDC_LOCATION)->SetFocus();
		return FALSE;
	}

	if (m_strUnit.IsEmpty())
	{
		MessageBox("请输入单位!", "提示", MB_ICONINFORMATION);
		GetDlgItem(IDC_UNIT)->SetFocus();
		return FALSE;
	}

	int nTemp = atoi(LPCTSTR(m_strNewQuantity));
	if (nTemp <= 0)
	{
		MessageBox("请正确输入新进货的数量!", "提示", MB_ICONINFORMATION);
		GetDlgItem(IDC_NEWQUANTITY)->SetFocus();
		((CEdit *)GetDlgItem(IDC_NEWQUANTITY))->SetSel(0, -1);
		return FALSE;
	}

	double dblTemp = atof(LPCTSTR(m_strInPrice));
	if (dblTemp <= 0)
	{
		MessageBox("请正确输入进价!","提示",MB_ICONINFORMATION);
		GetDlgItem(IDC_INPRICE)->SetFocus();
		((CEdit *)GetDlgItem(IDC_INPRICE))->SetSel(0, -1);
		return FALSE;
	}

	dblTemp = atof(LPCTSTR(m_strOutPrice));
	if (dblTemp <= 0)
	{
		MessageBox("请正确输入零售价!","提示",MB_ICONINFORMATION);
		GetDlgItem(IDC_OUTPRICE)->SetFocus();
		((CEdit *)GetDlgItem(IDC_OUTPRICE))->SetSel(0, -1);
		return FALSE;
	}

	if (m_strWhere.IsEmpty())
	{
		MessageBox("请输入购货单位名称!", "提示", MB_ICONINFORMATION);
		GetDlgItem(IDC_WHERE)->SetFocus();
		return FALSE;
	}

	return TRUE;
}

//-----------------------------------------------------------------------------
// 功能: 复位所有输入控件的内容,并把焦点重新设在品名上
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CBuyOperView::Reset()
{
	m_strMedName.Empty();
	m_strSpecification.Empty();
	m_strType.Empty();
	m_strLocation.Empty();
	m_strNewQuantity.Empty();
	m_strUnit.Empty();
	m_strInPrice.Empty();
	m_strOutPrice.Empty();
	m_strMemo.Empty();

	UpdateData(FALSE);

	GetDlgItem(IDC_MEDNAME)->SetFocus();
}

//-----------------------------------------------------------------------------
// 功能: 计算本次进货的总额,按照List2中显示的内容来计算
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CBuyOperView::GetTotalMoney()
{
	double fTotal = 0.0;
	for (int i = 0; i < m_ctlList2.GetItemCount(); i++)
	{
		CString str1 = m_ctlList2.GetItemText(i, 4);	
		CString str2 = m_ctlList2.GetItemText(i, 6);
		fTotal += atoi(LPCTSTR(str1)) * atof((LPCTSTR)str2);
	}
	CString strTotal;
	strTotal.Format("%.2f",fTotal);
	SetDlgItemText(IDC_EDIT8,strTotal);
}

⌨️ 快捷键说明

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