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

📄 stockmanage.cpp

📁 图书销售管理系统 1基本信息管理 主要是操作管理员信息管理
💻 CPP
字号:
// StockManage.cpp : implementation file
//

#include "stdafx.h"
#include "BookManage.h"
#include "StockManage.h"
#include "StockDlg2.h"

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

/////////////////////////////////////////////////////////////////////////////
// CStockManage dialog
extern _ConnectionPtr m_pCon;  
extern _RecordsetPtr m_pRs; 
extern _CommandPtr m_pCom;

extern int PID;

CStockManage::CStockManage(CWnd* pParent /*=NULL*/)
	: CDialog(CStockManage::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStockManage)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CStockManage::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStockManage)
	DDX_Control(pDX, IDC_STOCK_TAB, m_StockTab);
	//}}AFX_DATA_MAP
}

//公共对象...
CStockManage p_stock;

BEGIN_MESSAGE_MAP(CStockManage, CDialog)
	//{{AFX_MSG_MAP(CStockManage)
	ON_NOTIFY(TCN_SELCHANGE, IDC_STOCK_TAB, OnSelchangeStockTab)
	ON_COMMAND(ID_EXIT, OnExitStock)
	ON_COMMAND(ID_ADD_SUPPLY, OnAddSupply)
	ON_COMMAND(ID_MINU_SUPPLY, OnMinuSupply)
	ON_COMMAND(ID_CHOOSE_SUPPLY, OnChooseSupply)
	ON_COMMAND(ID_CLEAR, OnClear)
	ON_COMMAND(ID_SAVE, OnSave)
	ON_COMMAND(ID_DISPLAY, OnDisplay)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStockManage message handlers
BOOL CStockManage::OnInitDialog()
{
	CDialog::OnInitDialog();

	stockdlg1 = new CStockDlg1();
	stockdlg2 = new CStockDlg2();
	//将对话框贴在标签上...
	stockdlg1->Create(IDD_STOCK_DIALOG1,&m_StockTab);
	stockdlg2->Create(IDD_STOCK_DIALOG2,&m_StockTab);

	m_StockTab.InsertItem(0,"进货记录",0);
	m_StockTab.InsertItem(1,"供货商报价",1);
	m_StockTab.SetMinTabWidth(100);
	m_StockTab.SetCurSel(PID);
	DoTab(PID);

	bit=0;
	HasSupp = FALSE;
	return TRUE;
}

void CStockManage::SetDlgState(CWnd *pWnd, BOOL bShow)
{
	pWnd->EnableWindow(bShow);
	if(bShow)
	{
		pWnd->ShowWindow(SW_SHOW);
		pWnd->CenterWindow();
	}
	else
		pWnd->ShowWindow(SW_HIDE);
}

void CStockManage::DoTab(int nPid)
{
	if(nPid > 1) nPid = 1;
	if(nPid < 0) nPid =	0;
	
	BOOL iPid[2];
	iPid[0]=iPid[1]=FALSE;
	iPid[nPid]=TRUE;

	SetDlgState(stockdlg1,iPid[0]);
	SetDlgState(stockdlg2,iPid[1]);
}
//单击标签触发换页...
void CStockManage::OnSelchangeStockTab(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int select = m_StockTab.GetCurSel();
	if(select >= 0)
		DoTab(select);
	*pResult = 0;
}

void CStockManage::OnExitStock() 
{
	// TODO: Add your command handler code here
	EndDialog(0);
}

//增加供应商信息...
void CStockManage::OnAddSupply() 
{
	// TODO: Add your command handler code here
	// TODO: Add your command handler code here
	stockdlg2->UpdateData(TRUE);
	if(stockdlg2->m_ISBN.IsEmpty()||stockdlg2->m_Name.IsEmpty()||stockdlg2->m_Author.IsEmpty()
		||stockdlg2->m_Price.IsEmpty()||stockdlg2->m_Count.IsEmpty()||stockdlg2->m_Supply.IsEmpty())
	{
		MessageBox("供应信息不能留空","提示!");
		return;
	}
	int index = stockdlg2->m_StockSupplyList.InsertItem
		(stockdlg2->m_StockSupplyList.GetItemCount(),stockdlg2->m_ISBN);
	stockdlg2->m_StockSupplyList.SetItemText(index,1,stockdlg2->m_Name);
	stockdlg2->m_StockSupplyList.SetItemText(index,2,stockdlg2->m_Author);
	stockdlg2->m_StockSupplyList.SetItemText(index,3,stockdlg2->m_Supply);
	stockdlg2->m_StockSupplyList.SetItemText(index,4,stockdlg2->m_Price);
	stockdlg2->m_StockSupplyList.SetItemText(index,5,stockdlg2->m_Count);
}

//删减供应商信息...
void CStockManage::OnMinuSupply() 
{
	// TODO: Add your command handler code here
	if(stockdlg2->delIndex < 0||stockdlg2->delIndex > stockdlg2->m_StockSupplyList.GetItemCount())
	{
		MessageBox("请选择要删减的信息","提示!");
		return;
	}
	stockdlg2->m_StockSupplyList.DeleteItem(stockdlg2->delIndex);
	stockdlg2->delIndex = -1;
}

//选择供应商************************************************************
void CStockManage::OnChooseSupply() 
{
	if(HasSupp)
	{
		MessageBox("供货信息已生成\n要再次生成请先清空!","提示!");
		return;
	}
	// TODO: Add your command handler code here
	for(int row=0;row<stockdlg2->m_StockSupplyList.GetItemCount();row++)
	{
		//有同种书要比较成本
		for(int j=0;j<bit;j++)
			if(supply[j].ISBN == str_to_int(stockdlg2->m_StockSupplyList.GetItemText(row,0)))
			{
				//同种书选择成本低的
				if(supply[j].cost > str_to_float(stockdlg2->m_StockSupplyList.GetItemText(row,4)))
				{
					supply[j].ISBN = str_to_int(stockdlg2->m_StockSupplyList.GetItemText(row,0));
					supply[j].bookname = stockdlg2->m_StockSupplyList.GetItemText(row,1);
					supply[j].author = stockdlg2->m_StockSupplyList.GetItemText(row,2);
					supply[j].bookconcern = stockdlg2->m_StockSupplyList.GetItemText(row,3);
					supply[j].cost = str_to_float(stockdlg2->m_StockSupplyList.GetItemText(row,4));
					supply[j].supplycount = str_to_int(stockdlg2->m_StockSupplyList.GetItemText(row,5));
					break;;
				}
				else
					break;
			}
		if(j < bit)
			continue;
		//新的类型书就直接添加
		supply[bit].ISBN = str_to_int(stockdlg2->m_StockSupplyList.GetItemText(row,0));
		supply[bit].bookname = stockdlg2->m_StockSupplyList.GetItemText(row,1);
		supply[bit].author = stockdlg2->m_StockSupplyList.GetItemText(row,2);
		supply[bit].bookconcern = stockdlg2->m_StockSupplyList.GetItemText(row,3);
		supply[bit].cost = str_to_float(stockdlg2->m_StockSupplyList.GetItemText(row,4));
		supply[bit].supplycount = str_to_int(stockdlg2->m_StockSupplyList.GetItemText(row,5));
		++bit;
	}
	CString tmp;
	stockdlg2->m_StockSupplyList.DeleteAllItems();
	for(row=0;row<bit;row++)
	{
		//在控件中显示被选的供应商信息
		tmp.Format("%d",supply[row].ISBN);
		int index = stockdlg2->m_StockSupplyList.InsertItem
			(stockdlg2->m_StockSupplyList.GetItemCount(),tmp);
		stockdlg2->m_StockSupplyList.SetItemText(index,1,supply[row].bookname);
		stockdlg2->m_StockSupplyList.SetItemText(index,2,supply[row].author);
		stockdlg2->m_StockSupplyList.SetItemText(index,3,supply[row].bookconcern);
		tmp.Format("%f",supply[row].cost);
		stockdlg2->m_StockSupplyList.SetItemText(index,4,tmp);
		tmp.Format("%d",supply[row].supplycount);
		stockdlg2->m_StockSupplyList.SetItemText(index,5,tmp);
	}
	MessageBox("供货商列表已生成","提示!");
	HasSupp = TRUE;
}

void CStockManage::OnClear() 
{
	// TODO: Add your command handler code here	
	stockdlg2->m_ISBN.Empty();
	stockdlg2->m_Name.Empty();
	stockdlg2->m_Author.Empty();
	stockdlg2->m_Supply.Empty();
	stockdlg2->m_Price.Empty();
	stockdlg2->m_Count.Empty();
	stockdlg2->UpdateData(FALSE);

	stockdlg2->m_StockSupplyList.DeleteAllItems();
	//供应商记录量置零...
	bit=0;
	HasSupp = FALSE;
}

// 保存进货信息
void CStockManage::OnSave() 
{
	// TODO: Add your command handler code here
	if(!HasSupp)
	{
		MessageBox("请先生成供货信息","错误!");
		return;
	}
	CString time,sql;
	GetDate(time);
	for(int i=0;i<bit;i++)
	{
		//将供应商信息插入到供应表bm_Supply
		sql.Format("insert into bm_Supply values (%d,%d,'%s','%s','%s',%f,%d)",
			str_to_int(time),supply[i].ISBN,supply[i].bookname,supply[i].author,
			supply[i].bookconcern,supply[i].cost,supply[i].supplycount);
		m_pRs->raw_Close();
		m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
		//保存到进货表bm_BookStock
		sql.Format("insert into bm_BookStock values (%d,%d,'%s','%s','%s','%s',%f,%d)",
			str_to_int(time),supply[i].ISBN,supply[i].bookname,supply[i].author,
			supply[i].bookconcern,"",supply[i].cost,supply[i].supplycount);
		m_pRs->raw_Close();
		m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
		//更新库存
		sql.Format("select * from bm_BookStorage where ISBN='%d'",supply[i].ISBN);
		m_pRs->raw_Close();
		m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
		//此书库中已有
		if(m_pRs->RecordCount > 0)
		{
			int newcount = supply[i].supplycount + str_to_int((TCHAR*)
				(_bstr_t)m_pRs->GetFields()->GetItem((long)6)->Value);
			sql.Format("update bm_BookStorage set storecount='%d',cost='%f' where ISBN='%d'",
				newcount,supply[i].cost,supply[i].ISBN);
		}
		//库中没有这本书,就插入信息
		else
			sql.Format("insert into bm_BookStorage values (%d,'%s','%s','%s','%s',%f,%d,%f)",
				supply[i].ISBN,supply[i].bookname,supply[i].author,supply[i].bookconcern,
				"",supply[i].cost*1.12,supply[i].supplycount,supply[i].cost);
		m_pRs->raw_Close();
		m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
	}
	MessageBox("完成...","提示!");
	//在第一个对话框中回显信息
	stockdlg1->m_StockList.DeleteAllItems();
	stockdlg1->ShowStock();
}
//显示供应商数据库中的所有记录
void CStockManage::OnDisplay() 
{
	// TODO: Add your command handler code here
	OnClear();
	
	CString sql;
	sql.Format("select * from bm_Supply");
	m_pRs->raw_Close();
	m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
	int index = 0;
	stockdlg2->m_StockSupplyList.DeleteAllItems();
	while (!m_pRs->adoEOF)
	{
		index = stockdlg2->m_StockSupplyList.InsertItem(stockdlg2->m_StockSupplyList.GetItemCount(),
			(TCHAR*)(_bstr_t)m_pRs->GetFields()->GetItem((long)1)->Value);
		for(int col = 2;col<7;col++)
			stockdlg2->m_StockSupplyList.SetItemText(index,col-1,(TCHAR*)(_bstr_t)m_pRs->GetFields()->GetItem((long)col)->Value);
		m_pRs->MoveNext();
	}
}

⌨️ 快捷键说明

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