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

📄 dlgbillmanager.cpp

📁 本系统功能主要有两大块组成:前台销售管理功能和后台数据管理功能。 前台销售管理系统,包括:开单
💻 CPP
字号:
// DlgBillManager.cpp : implementation file
//

#include "stdafx.h"
#include "Lhj_cyglxt.h"
#include "DlgBillManager.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgBillManager dialog
extern CDatabase m_db;


CDlgBillManager::CDlgBillManager(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgBillManager::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgBillManager)
	m_sum = _T("");
	m_deletenum = _T("");
	m_billnum = _T("");
	//}}AFX_DATA_INIT
}


void CDlgBillManager::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgBillManager)
	DDX_Control(pDX, IDC_LIST_billlist, m_billlist);
	DDX_Text(pDX, IDC_EDIT_sum, m_sum);
	DDX_Text(pDX, IDC_EDIT_deletenum, m_deletenum);
	DDX_Text(pDX, IDC_EDIT_billnum, m_billnum);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgBillManager, CDialog)
	//{{AFX_MSG_MAP(CDlgBillManager)
	ON_NOTIFY(NM_CLICK, IDC_LIST_billlist, OnClickLISTbilllist)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgBillManager message handlers

BOOL CDlgBillManager::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	if(!UpdateData())
		return 0;
	if(!m_db.IsOpen())
	{
		MessageBox("数据库未打开");
		return 0;
	}
TRY
{
		CString c;
		DWORD dwExStyle = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
    LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT;
		m_billlist.SetExtendedStyle(dwExStyle);
		m_billlist.InsertColumn(0,"账单号",LVCFMT_CENTER,80);
		m_billlist.InsertColumn(1,"会员卡号",LVCFMT_CENTER,80);
		m_billlist.InsertColumn(2,"人数",LVCFMT_CENTER,50);
		m_billlist.InsertColumn(3,"桌号",LVCFMT_CENTER,50);
		m_billlist.InsertColumn(4,"结帐人员",LVCFMT_CENTER,80);
		m_billlist.InsertColumn(5,"支付状态",LVCFMT_CENTER,80);
		m_billlist.InsertColumn(6,"开始时间",LVCFMT_CENTER,150);
		m_billlist.InsertColumn(7,"结束时间",LVCFMT_CENTER,150);
		m_billlist.InsertColumn(8,"总消费",LVCFMT_CENTER,60);
		m_billlist.InsertColumn(9,"实收",LVCFMT_CENTER,60);
		m_billlist.InsertColumn(10,"找回",LVCFMT_CENTER,60);

		initbilllist();
}

	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);		
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox ("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
	}
	END_CATCH   
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgBillManager::initbilllist()
{
		CRecordset rs(&m_db);
		CString sql;
		sql.Format("select bill_id,bill.vip_card,person_num,table_no,get_money_person,pay_state,begin_time,end_time,total_price,receive,change_back from bill");
		rs.Open(CRecordset::dynaset, sql);
		
		CString billid,cardid,personnum,tableno,username,paystate,begintime,endtime,totalprice,receive,changeback;
		int i=0;//账单数 
		float sum=0.0;
		int temp; CDBVariant var;
		m_billlist.DeleteAllItems();//去除所以记录
		while (!rs.IsEOF()) 
		{  rs.GetFieldValue((short)0, var, SQL_C_SLONG);// billid,
		   if (var.m_dwType != DBVT_NULL)	
			   temp= var.m_lVal;
		   billid.Format("%d",temp);
		   var.Clear();		   
		   m_billlist.InsertItem(i,billid);
		   
		   rs.GetFieldValue(1,cardid);
		   m_billlist.SetItemText(i,1,cardid);// cardid,
		   
		   rs.GetFieldValue((short)2, var, SQL_C_SLONG);// personnum
		   if (var.m_dwType != DBVT_NULL)
			   temp= var.m_lVal;
		   personnum.Format("%d",temp);
		   var.Clear();
		   m_billlist.SetItemText(i,2,personnum);
		   
		   rs.GetFieldValue((short)3, var, SQL_C_SLONG);//,tableno
		   if (var.m_dwType != DBVT_NULL)	
			   temp= var.m_lVal;
			tableno.Format("%d",temp);
			var.Clear();
			m_billlist.SetItemText(i,3,tableno);
		   rs.GetFieldValue(4,username);//,username
		   m_billlist.SetItemText(i,4,username);
		   rs.GetFieldValue(5,paystate);//,paystate
		   m_billlist.SetItemText(i,5,paystate);
		   rs.GetFieldValue(6,begintime);//,begintime,
		   m_billlist.SetItemText(i,6,begintime);
		   rs.GetFieldValue(7,endtime);//endtime
		   m_billlist.SetItemText(i,7,endtime);
		   rs.GetFieldValue(8,totalprice);//totalprice
		   m_billlist.SetItemText(i,8,totalprice);
		   rs.GetFieldValue(9,receive);//receive
		   m_billlist.SetItemText(i,9,receive);
		   rs.GetFieldValue(10,changeback);//,,,changeback;	
		   m_billlist.SetItemText(i,10,changeback);
		   sum=sum+atof(totalprice);
		   rs.MoveNext();
		   i++;
		}
		m_billnum.Format("%d",i);m_sum.Format("%.3f",sum);
		rs.Close();
	UpdateData(FALSE);
}

void CDlgBillManager::OnClickLISTbilllist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	//得到当前选中的行
	POSITION pos = m_billlist.GetFirstSelectedItemPosition();
	//如果选中一行
	CString	billid,sql;
	if(pos)
	{
		int nItem = m_billlist.GetNextSelectedItem(pos);
		billid=m_billlist.GetItemText(nItem,0);
	}
	
TRY
{
	if(AfxMessageBox("确定删除账单吗?",MB_YESNO)==IDNO)
	{
		return;
	}
	int temp;temp=atoi(billid);
	sql.Format("delete from bill where bill_id=%d",temp);
	TRACE(sql);
	m_db.ExecuteSQL(sql);
	AfxMessageBox("删除成功");

	
	initbilllist();
	UpdateData(FALSE);
}

	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);		
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox ("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
	}
	END_CATCH   
	UpdateData(FALSE);
	*pResult = 0;
}

void CDlgBillManager::OnOK() 
{
	// TODO: Add extra validation here
TRY
{
	UpdateData(TRUE);
	if(AfxMessageBox("确定成批删除账单吗?一旦删除大量资料将无法找回",MB_YESNO)==IDNO)
	{
		return;
	}
	int temp;temp=atoi(m_deletenum);
	CString sql;
	sql.Format("delete from bill where bill_id=%d",temp);
	TRACE(sql);
	m_db.ExecuteSQL(sql);
	AfxMessageBox("删除成功");

	
	initbilllist();
	UpdateData(FALSE);
}

	CATCH(CDBException,ex)
	{
		AfxMessageBox (ex->m_strError);
		AfxMessageBox (ex->m_strStateNativeOrigin);		
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox ("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox (szError);
	}
	END_CATCH   
	UpdateData(FALSE);
	
	//CDialog::OnOK();
}

⌨️ 快捷键说明

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