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

📄 financebankdlg.cpp

📁 这是一个学生信息管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	    //现在在右边显示个数
		if(i==0)
		{
			m_iBankAmount=i;
			s.Format (L"%d",m_iBankAmount);
			SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
			MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
			EndWaitCursor();
			return ;
		}
	    m_iBankAmount=i;
	    s.Format (L"%d",m_iBankAmount);
	    SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
	}
	EndWaitCursor();
}
void CFinanceBankDlg::OnBnClickedFinanceBankSearchBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Search();
}

void CFinanceBankDlg::Kind ()
{
	CString s;
	int Length;
	int i=0;
    CFinanceBankKindDlg dlg;
	if(dlg.DoModal ()==IDOK)
	{
		BeginWaitCursor();
		m_cBankListCtrl.DeleteAllItems ();
	    if(m_pSet.IsOpen ())
		    m_pSet.Close ();
	    m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Bank order by bODate");
	    m_pSet.m_strFilter .Empty ();
	    m_pSet.Requery ();
		if(m_pSet.IsEOF ())
		{
			m_iBankAmount=i;
		    s.Format (L"%d",m_iBankAmount);
		    SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
			MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
			m_pSet.Close ();
			EndWaitCursor();
			return ;
		}
	    else
	    {
	        if(m_pSet.GetRecordCount ()==0)
		    {
				m_iBankAmount=i;
				s.Format (L"%d",m_iBankAmount);
				SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
				MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
			    m_pSet.Close ();
				EndWaitCursor();
			    return ;
		    }
		    m_pSet.MoveFirst ();
	        while (!m_pSet.IsEOF ())
	        {  
				if(!(dlg.m_iKind==0&&m_pSet.m_bAction ==true||dlg.m_iKind ==1&&m_pSet.m_bAction ==false))
				{
					m_pSet.MoveNext ();
					continue;
				}
				m_cBankListCtrl.InsertItem(i,m_pSet.m_bCardId ,0);
				if(m_pSet.m_bAction  ==true)
					m_cBankListCtrl.SetItemText (i,1,L"存");
				else 
					m_cBankListCtrl.SetItemText (i,1,L"取");
				s.Format (L"%f",m_pSet.m_bLastLeft );
				Length=s.GetLength ();
				s.Delete (Length-4,4);
				m_cBankListCtrl.SetItemText (i,2,s );
				s.Format (L"%f",m_pSet.m_bAccount  );
				Length=s.GetLength ();
				s.Delete (Length-4,4);
				m_cBankListCtrl.SetItemText (i,3,s);
				s.Format (L"%f",m_pSet.m_bLeft  );
				Length=s.GetLength ();
				s.Delete (Length-4,4);
				m_cBankListCtrl.SetItemText (i,4,s);
				m_cBankListCtrl.SetItemText (i,5,FormatDate(m_pSet.m_bODate  ) );
				m_cBankListCtrl.SetItemText (i,6,FormatDate(m_pSet.m_bRDate ) );
				m_cBankListCtrl.SetItemText (i,7,m_pSet.m_bRemark );
				s.Format (L"%d",m_pSet.m_bId );
				m_cBankListCtrl.SetItemText (i,8,s);	            
				m_pSet.MoveNext ();
				i++;
	        }
	        m_pSet.Close ();
	       if(i==0)
	       {
		        m_iBankAmount=i;
		        s.Format (L"%d",m_iBankAmount);
		        SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
				MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
				m_pSet.Close ();
				EndWaitCursor();
				return ;
			}
	        //现在在右边显示个数
	        m_iBankAmount=i;
	        s.Format (L"%d",m_iBankAmount);
	        SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
		}
		EndWaitCursor();
	}
}
void CFinanceBankDlg::OnBnClickedBankKindBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Kind();
}

void CFinanceBankDlg::Add()
{
	CString s;
	int Length;
	CFinanceBankAddDlg 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 Bank order by bODate");
		    m_pSet.m_strFilter.Empty ();
			m_pSet.AddNew ();
			m_pSet.m_bCardId =dlg.m_sCardId ;
			if(dlg.m_bAction ==false)
				m_pSet.m_bAction =true;
			else 
				m_pSet.m_bAction =false;
			m_pSet.m_bLastLeft =dlg.m_dLastleft ;
			m_pSet.m_bAccount =dlg.m_dAccount ;
            m_pSet.m_bLeft =dlg.m_dLeft ;
			m_pSet.m_bODate =dlg.m_tODate ;
			//登记日期,由系统生成
			m_pSet.m_bRDate =CTime::GetCurrentTime();
			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_bAction ==false)
				 MoneyLast-=dlg.m_dAccount ;
			else //如果是取,则现金必然增多
				 MoneyLast+=dlg.m_dAccount ;
			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_cBankListCtrl.InsertItem(0,dlg.m_sCardId ,0);
		if(dlg.m_bAction ==false)
			m_cBankListCtrl.SetItemText (0,1,L"存");
		else 
			m_cBankListCtrl.SetItemText (0,1,L"取");
		s.Format (L"%f",dlg.m_dLastleft );
		Length=s.GetLength ();
		s.Delete (Length-4,4);
	    m_cBankListCtrl.SetItemText (0,2,s );
		s.Format (L"%f",dlg.m_dAccount );
		Length=s.GetLength ();
		s.Delete (Length-4,4);
		m_cBankListCtrl.SetItemText (0,3,s);
		s.Format (L"%f",dlg.m_dLeft );
		Length=s.GetLength ();
		s.Delete (Length-4,4);
		m_cBankListCtrl.SetItemText (0,4,s);
		m_cBankListCtrl.SetItemText (0,5,FormatDate(dlg.m_tODate ) );
		m_cBankListCtrl.SetItemText (0,6,FormatDate(CTime::GetCurrentTime()) );
		m_cBankListCtrl.SetItemText (0,7,dlg.m_sRemark );
        s.Format (L"%d",m_pSet.m_bId );
		m_cBankListCtrl.SetItemText (0,8,s);
		//然后再在个数中加一,显示给用户
		m_iBankAmount++;
		s.Format (L"%d",m_iBankAmount);
		SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
	}
}
void CFinanceBankDlg::OnBnClickedFinanceBankAddBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Add();
}

void CFinanceBankDlg::Update ()
{
	CString s;
	int Length;
	POSITION pos = m_cBankListCtrl.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_cBankListCtrl.GetNextSelectedItem(pos);//列表中的项目序号也即数据库中的编号
		//下面获取该表项的数据,用于在修改对话框中显示
		int Id=_ttol(m_cBankListCtrl.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_iFinanceBank_Id=m_pSet.m_bId ;
                m_sFinanceBank_CardId=m_pSet.m_bCardId ;
				m_bFinanceBank_Action=m_pSet.m_bAction ;
				m_dFinanceBank_Lastleft=m_pSet.m_bLastLeft ;
				m_dFinanceBank_Account=m_pSet.m_bAccount ;
				m_dFinanceBank_Left=m_pSet.m_bLeft ;
				m_tFinanceBank_ODate=m_pSet.m_bODate ;
				m_tFinanceBank_RDate=m_pSet.m_bRDate ;
				m_sFinanceBank_Remark=m_pSet.m_bRemark ;
				break;
			}
			m_pSet.MoveNext ();
		}
		m_pSet.Close ();//记得要关闭!
		//下面弹出修改对话框,初始化数据由上面部分提供
		CFinanceBankUpdateDlg dlg;
		if(dlg.DoModal ()!=IDOK)
		{
			return ;//万一用户没有输入正确信息,则退出,不给修改
		}
		theApp.m_db.BeginTrans ();//开始事务处理
		TRY
		{
			//先保存银行信息
	        m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Bank order by bODate");
		    m_pSet.m_strFilter.Empty ();
			m_pSet.MoveFirst ();//刚开始移动到第一个位置
			while(!m_pSet.IsEOF ())
			{
				if(m_pSet.m_bId ==m_iFinanceBank_Id)
				{
					m_pSet.Edit ();
			        m_pSet.m_bCardId =dlg.m_sCardId ;
			        if(dlg.m_bAction ==false)
				         m_pSet.m_bAction =true;
			        else 
				        m_pSet.m_bAction =false;
			        m_pSet.m_bLastLeft =dlg.m_dLastleft ;
			        m_pSet.m_bAccount =dlg.m_dAccount ;
                    m_pSet.m_bLeft =dlg.m_dLeft ;
			        m_pSet.m_bODate =dlg.m_tODate ;
			        //登记日期,由系统生成
			        m_pSet.m_bRDate =CTime::GetCurrentTime();
			        m_pSet.m_bRemark =dlg.m_sRemark ;
			        m_pSet.Update ();
			        m_pSet.Requery ();
					m_pSet.MoveNext ();
					break;
				}
				m_pSet.MoveNext ();
			}
			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(m_bFinanceBank_Action==true)//如果本来是存的,则必须把原来的钱“退出来”
				MoneyLast+=m_dFinanceBank_Account;
			else
				MoneyLast-=m_dFinanceBank_Account;//否则必须把上次取的钱“还回去”
			//如果是此次存,则现金必须减少
			if(dlg.m_bAction ==false)
				 MoneyLast-=dlg.m_dAccount ;
			else //如果是取,则现金必然增多
				 MoneyLast+=dlg.m_dAccount ;
			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_cBankListCtrl.DeleteItem (nItem);
		//再添加新的

⌨️ 快捷键说明

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