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

📄 financeborrowdlg.cpp

📁 这是一个学生信息管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// FinanceBorrowDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "SMS.h"
#include "FinanceBorrowDlg.h"


// CFinanceBorrowDlg 对话框

IMPLEMENT_DYNAMIC(CFinanceBorrowDlg, CDialog)

CFinanceBorrowDlg::CFinanceBorrowDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CFinanceBorrowDlg::IDD, pParent)
	, m_iBorrowAmount(0)
	, m_pCashSet(&theApp.m_db)
	, m_pSet(&theApp.m_db )
{
	m_backcolor=m_RGB_BkColor;
	m_brush.CreateSolidBrush(m_backcolor);
	m_bItemClick=false;
}

CFinanceBorrowDlg::~CFinanceBorrowDlg()
{
}

void CFinanceBorrowDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_BORROW_AMOUNT_STATIC, m_iBorrowAmount);
	DDX_Control(pDX, IDC_FINANCE_BORROW_LIST, m_cBorrowListCtrl);
	DDX_Control(pDX, IDC_FINANCE_BORROW_DELETE_BT, m_cDeleteBt);
	DDX_Control(pDX, IDC_FINANCE_BORROW_UPDATE_BT, m_cUpdateBt);
	DDX_Control(pDX, IDC_FINANCE_BORROW_PRINT_BT, m_cPrintBt);
}


BEGIN_MESSAGE_MAP(CFinanceBorrowDlg, CDialog)
	ON_BN_CLICKED(IDC_FINANCE_BORROW_ALL_BT, &CFinanceBorrowDlg::OnBnClickedFinanceBorrowAllBt)
	ON_BN_CLICKED(IDC_BORROW_KIND_BT, &CFinanceBorrowDlg::OnBnClickedBorrowKindBt)
	ON_BN_CLICKED(IDC_FINANCE_BORROW_ADD_BT, &CFinanceBorrowDlg::OnBnClickedFinanceBorrowAddBt)
	ON_BN_CLICKED(IDC_FINANCE_BORROW_UPDATE_BT, &CFinanceBorrowDlg::OnBnClickedFinanceBorrowUpdateBt)
	ON_BN_CLICKED(IDC_FINANCE_BORROW_DELETE_BT, &CFinanceBorrowDlg::OnBnClickedFinanceBorrowDeleteBt)
	ON_BN_CLICKED(IDC_FINANCE_BORROW_SEARCH_BT, &CFinanceBorrowDlg::OnBnClickedFinanceBorrowSearchBt)
	ON_WM_QUERYDRAGICON()//打印
	ON_BN_CLICKED(IDC_FINANCE_BORROW_PRINT_BT, &CFinanceBorrowDlg::OnBnClickedFinanceBorrowPrintBt)
	ON_WM_CTLCOLOR()
	ON_NOTIFY(HDN_ITEMCLICK, 0, &CFinanceBorrowDlg::OnHdnItemclickFinanceBorrowList)
	ON_WM_CLOSE()
	ON_WM_CONTEXTMENU()
	ON_WM_TIMER()
	ON_COMMAND(ID_BORROW_ALL, &CFinanceBorrowDlg::OnBorrowAll)
	ON_COMMAND(ID_BORROW_KIND, &CFinanceBorrowDlg::OnBorrowKind)
	ON_COMMAND(ID_BORROW_ADD, &CFinanceBorrowDlg::OnBorrowAdd)
	ON_COMMAND(ID_BORROW_UPDATE, &CFinanceBorrowDlg::OnBorrowUpdate)
	ON_COMMAND(ID_BORROW_DELETE, &CFinanceBorrowDlg::OnBorrowDelete)
	ON_COMMAND(ID_BORROW_SEARCH, &CFinanceBorrowDlg::OnBorrowSearch)
	ON_COMMAND(ID_BORROW_PRINT, &CFinanceBorrowDlg::OnBorrowPrint)
    ON_UPDATE_COMMAND_UI(ID_BORROW_UPDATE, &CFinanceBorrowDlg::OnUpdateBorrowUpdate )
	ON_UPDATE_COMMAND_UI(ID_BORROW_DELETE, &CFinanceBorrowDlg::OnUpdateBorrowDelete )
	ON_UPDATE_COMMAND_UI(ID_BORROW_PRINT, &CFinanceBorrowDlg::OnUpdateBorrowPrint )
	ON_WM_INITMENUPOPUP()
END_MESSAGE_MAP()


// CFinanceBorrowDlg 消息处理程序
void CFinanceBorrowDlg::ViewAll()
{
	BeginWaitCursor();
	CString s;
	int Length;
	m_cBorrowListCtrl.DeleteAllItems ();
	if(m_pSet.IsOpen ())
		m_pSet.Close ();
	m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Borrow order by bDate");
	m_pSet.m_strFilter .Empty ();
	int count;
	count=m_pSet.GetRecordCount ();
	if(count==0)//如果该数据表为空,则不用显示
	{
		m_pSet.Close ();
		EndWaitCursor();
		return ;
	}
	m_pSet.MoveFirst ();
	int i=0; 
	while (!m_pSet.IsEOF ())
	{
		m_cBorrowListCtrl.InsertItem(i,m_pSet.m_bOtherName ,0);
		m_cBorrowListCtrl.SetItemText (i,1,m_pSet.m_bAction );
		s.Format (L"%f",m_pSet.m_bAmount );
		Length=s.GetLength ();
		s.Delete (Length-4,4);
	    m_cBorrowListCtrl.SetItemText (i,2,s );
		m_cBorrowListCtrl.SetItemText (i,5,FormatDate(m_pSet.m_bDate ) );
		if(m_pSet.m_bAction ==L"借入"||m_pSet.m_bAction ==L"借出")
		{//当借入借出的时候,不用显示扔欠余额,但是要显示有效日期
			m_cBorrowListCtrl.SetItemText (i,6,L"");
			m_cBorrowListCtrl.SetItemText (i,3,FormatDate(m_pSet.m_bStartDate ));
			m_cBorrowListCtrl.SetItemText (i,4,FormatDate(m_pSet.m_bEndDate  ) );
		}
		else//否则,刚好相反
		{
			s.Format (L"%f",m_pSet.m_bMoneyLeft);
			Length=s.GetLength ();
			s.Delete (Length-4,4);
			m_cBorrowListCtrl.SetItemText (i,6,s);
			m_cBorrowListCtrl.SetItemText (i,3,L"");
			m_cBorrowListCtrl.SetItemText (i,4,L"");
		}
		m_cBorrowListCtrl.SetItemText (i,7,m_pSet.m_bRemark );
        s.Format (L"%d",m_pSet.m_bId );
		m_cBorrowListCtrl.SetItemText (i,8,s);
        i++;
		m_pSet.MoveNext ();
	}
	m_pSet.Close ();
	//现在在右边显示个数
	m_iBorrowAmount=i;
	s.Format (L"%d",m_iBorrowAmount);
	SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
}
void CFinanceBorrowDlg::OnBnClickedFinanceBorrowAllBt()
{
	// TODO: 在此添加控件通知处理程序代码
	ViewAll();
}

void CFinanceBorrowDlg::Kind()
{
	CString s;
	int Length;
	int i=0;
    CFinanceBorrowKindDlg dlg;
	if(dlg.DoModal ()==IDOK)
	{
		BeginWaitCursor();
		m_cBorrowListCtrl.DeleteAllItems ();
	    if(m_pSet.IsOpen ())
		    m_pSet.Close ();
	    m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Borrow order by bDate");
	    m_pSet.m_strFilter .Empty ();
	    m_pSet.Requery ();
	    if(m_pSet.IsEOF ())
	    {
	   	    m_iBorrowAmount=i;
		    s.Format (L"%d",m_iBorrowAmount);
			SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
		    MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
		    m_pSet.Close ();
			EndWaitCursor();
		    return ;
	    }
	    else
	    {
		   
	        if(m_pSet.GetRecordCount ()==0)
		    {
	   	        m_iBorrowAmount=i;
				s.Format (L"%d",m_iBorrowAmount);
				SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
			    m_pSet.Close ();
				EndWaitCursor();
			    return ;
		    }
		    m_pSet.MoveFirst ();
	        while (!m_pSet.IsEOF ())
	        {  
				if(!(dlg.m_iKind==0&&m_pSet.m_bAction ==L"借入"
					||dlg.m_iKind ==1&&m_pSet.m_bAction ==L"借出"
					||dlg.m_iKind ==2&&m_pSet.m_bAction ==L"还回"
					||dlg.m_iKind ==3&&m_pSet.m_bAction ==L"还欠"))
				{
					m_pSet.MoveNext ();
					continue;
				}
				m_cBorrowListCtrl.InsertItem(i,m_pSet.m_bOtherName ,0);
				m_cBorrowListCtrl.SetItemText (i,1,m_pSet.m_bAction );
				s.Format (L"%f",m_pSet.m_bAmount );
				Length=s.GetLength ();
				s.Delete (Length-4,4);
			    m_cBorrowListCtrl.SetItemText (i,2,s );
				m_cBorrowListCtrl.SetItemText (i,5,FormatDate(m_pSet.m_bDate ) );
				if(m_pSet.m_bAction ==L"借入"||m_pSet.m_bAction ==L"借出")
				{//当借入借出的时候,不用显示扔欠余额,但是要显示有效日期
					m_cBorrowListCtrl.SetItemText (i,6,L"");
					m_cBorrowListCtrl.SetItemText (i,3,FormatDate(m_pSet.m_bStartDate ));
					m_cBorrowListCtrl.SetItemText (i,4,FormatDate(m_pSet.m_bEndDate  ) );
				}
				else//否则,刚好相反
				{
					s.Format (L"%f",m_pSet.m_bMoneyLeft);
					Length=s.GetLength ();
					s.Delete (Length-4,4);
					m_cBorrowListCtrl.SetItemText (i,6,s);
					m_cBorrowListCtrl.SetItemText (i,3,L"");
					m_cBorrowListCtrl.SetItemText (i,4,L"");
				}
		        m_cBorrowListCtrl.SetItemText (i,7,m_pSet.m_bRemark );
			    s.Format (L"%d",m_pSet.m_bId );
				m_cBorrowListCtrl.SetItemText (i,8,s);            
				m_pSet.MoveNext ();
				i++;
	        }
	        m_pSet.Close ();
	       if(i==0)
	       {
	   	        m_iBorrowAmount=i;
				s.Format (L"%d",m_iBorrowAmount);
				SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
				MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
				m_pSet.Close ();
				EndWaitCursor();
				return ;
			}
	        //现在在右边显示个数
	        m_iBorrowAmount=i;
	        s.Format (L"%d",m_iBorrowAmount);
	        SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
		}
		EndWaitCursor();
	}
}
void CFinanceBorrowDlg::OnBnClickedBorrowKindBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Kind();
}

void CFinanceBorrowDlg::Add ()
{
	CString s;
	int Length;
	CFinanceBorrowAddDlg dlg;
	if(dlg.DoModal ()==IDOK)
	{
		if(!theApp.m_db.CanTransact ())
		{
			//虽然不支持事务处理的数据库很少,但是我强硬地不允许这种情况出现
			MessageBox(L"\n系统不支持事务处理,添加不成功!\n",L"错误", MB_ICONSTOP);
			return ;                                    
		}
		theApp.m_db.BeginTrans ();//开始事务处理
		TRY
		{
			//先添加借贷表中的信息
	        m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Borrow order by bDate");
		    m_pSet.m_strFilter.Empty ();
			m_pSet.AddNew ();
			m_pSet.m_bOtherName =dlg.m_sOtherName ;
			m_pSet.m_bAction =dlg.m_sAction ;
			m_pSet.m_bAmount =dlg.m_dAmount ;
			if(dlg.m_sAction ==L"借入"||dlg.m_sAction ==L"借出")
			{
				m_pSet.m_bStartDate =dlg.m_tStartDate ;
				m_pSet.m_bEndDate =dlg.m_tEndDate ;
			}
			m_pSet.m_bDate =dlg.m_tDate ;
			m_pSet.m_bMoneyLeft =dlg.m_dMoneyLeft ;
			m_pSet.m_bRemark =dlg.m_sRemark ;
			m_pSet.Update ();
			m_pSet.MoveLast ();
		    m_pSet.Close ();
			//再添加现金里的信息,默认的情况是:从现金中借贷
			double MoneyLast;
			if(m_pCashSet.IsOpen ())
				m_pCashSet.Close ();
			m_pCashSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Cash order by cDate ASC");
			m_pCashSet.m_strFilter .Empty ();
			if(m_pCashSet.GetRecordCount ()==0)
				MoneyLast=0;
			else
			{
				m_pCashSet.MoveLast ();
				MoneyLast=m_pCashSet.m_cAmount ;
			}
			if(dlg.m_sAction ==L"借出"||dlg.m_sAction ==L"还出")//都是从现金里要钱
				MoneyLast-=dlg.m_dAmount ;
			else
				MoneyLast+=dlg.m_dAmount ;
			m_pCashSet.AddNew ();
			m_pCashSet.m_cAmount =MoneyLast;
			m_pCashSet.m_cDate =CTime::GetCurrentTime();
			m_pCashSet.Update();
			m_pCashSet.MoveLast ();
			m_pCashSet.Close ();
            theApp.m_db.CommitTrans ();//添加成功了
		}
		CATCH_ALL(e)
		{
			theApp.m_db.Rollback ();
		    MessageBox(L"\n事务处理出错,添加失败!\n",L"错误", MB_ICONSTOP);
			return;
	    }
	    END_CATCH_ALL
		//添加成功了,就要在列表中显示出来
		m_cBorrowListCtrl.InsertItem(0,dlg.m_sOtherName ,0);
		m_cBorrowListCtrl.SetItemText (0,1,dlg.m_sAction );
		s.Format (L"%f",dlg.m_dAmount  );
		Length=s.GetLength ();
		s.Delete (Length-4,4);
	    m_cBorrowListCtrl.SetItemText (0,2,s );
		m_cBorrowListCtrl.SetItemText (0,5,FormatDate(dlg.m_tDate ) );
		if(dlg.m_sAction  ==L"借入"||dlg.m_sAction ==L"借出")
		{
			m_cBorrowListCtrl.SetItemText (0,6,L"");
			m_cBorrowListCtrl.SetItemText (0,3,FormatDate(dlg.m_tStartDate  ));
			m_cBorrowListCtrl.SetItemText (0,4,FormatDate(dlg.m_tEndDate ) );
		}
		else
		{
			s.Format (L"%f",dlg.m_dMoneyLeft );
			Length=s.GetLength ();
			s.Delete (Length-4,4);
			m_cBorrowListCtrl.SetItemText (0,6,s);
			m_cBorrowListCtrl.SetItemText (0,3,L"");
			m_cBorrowListCtrl.SetItemText (0,4,L"" );
		}		
		m_cBorrowListCtrl.SetItemText (0,7,dlg.m_sRemark );
	    s.Format (L"%d",m_pSet.m_bId );
		m_cBorrowListCtrl.SetItemText (0,8,s); 
		//然后再在个数中加一,显示给用户
		m_iBorrowAmount++;
		s.Format (L"%d",m_iBorrowAmount);
		SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
	}
}
void CFinanceBorrowDlg::OnBnClickedFinanceBorrowAddBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Add();
}

void CFinanceBorrowDlg::Update()
{
	CString s;
	int Length;
	POSITION pos = m_cBorrowListCtrl.GetFirstSelectedItemPosition();
    if (pos == NULL)
	{
		MessageBox(L"你没有选择要修改的借贷\n请在列表中选择要修改的借贷!",L"提示",MB_ICONEXCLAMATION);
		return ;//没有选择表项则不用做下面的事情
	}
    else
    {
		if(!theApp.m_db.CanTransact ())
		{
			//虽然不支持事务处理的数据库很少,但是我强硬地不允许这种情况出现
			MessageBox(L"\n系统不支持事务处理,修改不成功!\n",L"错误", MB_ICONSTOP);
			return ;                                    
		}
	    int nItem = m_cBorrowListCtrl.GetNextSelectedItem(pos);//列表中的项目序号也即数据库中的编号
		//下面获取该表项的数据,用于在修改对话框中显示
		int Id=_ttol(m_cBorrowListCtrl.GetItemText (nItem,8));
		if(m_pSet.IsOpen ())
			m_pSet.Close ();
		m_pSet.Open ();
		m_pSet.m_strFilter .Empty ();
		m_pSet.MoveFirst ();
		while(!m_pSet.IsEOF ())
		{
			if(m_pSet.m_bId ==Id)//说明找到了相应的那个字段
			{
				m_iFinanceBorrow_Id=m_pSet.m_bId ;
                m_sFinanceBorrow_OtherName=m_pSet.m_bOtherName ;

⌨️ 快捷键说明

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