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

📄 financeborrowdlg.cpp

📁 这是一个学生信息管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
				m_sFinanceBorrow_Action=m_pSet.m_bAction;
				m_dFinanceBorrow_Amount=m_pSet.m_bAmount ;
				if(m_pSet.m_bAction==L"借入"||m_pSet.m_bAction==L"借出")
				{
					//借入借出的时候才有开始生效和结束生效时间
					m_tFinanceBorrow_StartDate=m_pSet.m_bStartDate ;
					m_tFinanceBorrow_EndDate=m_pSet.m_bEndDate  ;
				}
				else
				{   //否则用系统日期代替,千万不要用1970年。。。
					m_tFinanceBorrow_StartDate=CTime::GetCurrentTime();
					m_tFinanceBorrow_EndDate=CTime::GetCurrentTime() ;
				}
				m_tFinanceBorrow_Date=m_pSet.m_bDate ;
				m_dFinanceBorrow_MoneyLeft=m_pSet.m_bMoneyLeft ;
				m_sFinanceBorrow_Remark=m_pSet.m_bRemark ;
				break;
			}
			m_pSet.MoveNext ();
		}
		m_pSet.Close ();//记得要关闭!
		//下面弹出修改对话框,初始化数据由上面部分提供
		CFinanceBorrowUpdateDlg dlg;
		if(dlg.DoModal ()!=IDOK)
		{
			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.MoveFirst ();//刚开始移动到第一个位置
			while(!m_pSet.IsEOF ())
			{
				if(m_pSet.m_bId ==m_iFinanceBorrow_Id)
				{
					m_pSet.Edit ();
					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.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_sFinanceBorrow_Action==L"借出"||m_sFinanceBorrow_Action==L"还出")
			MoneyLast+=m_dFinanceBorrow_Amount;//把借出或还出的钱“吐”出来,重新入现金
		else
			MoneyLast-=m_dFinanceBorrow_Amount;
		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.DeleteItem (nItem);
		//再添加新的
		m_cBorrowListCtrl.InsertItem(nItem,dlg.m_sOtherName ,0);
		m_cBorrowListCtrl.SetItemText (nItem,1,dlg.m_sAction );
		s.Format (L"%f",dlg.m_dAmount  );
		Length=s.GetLength ();
		s.Delete (Length-4,4);
	    m_cBorrowListCtrl.SetItemText (nItem,2,s );
		m_cBorrowListCtrl.SetItemText (nItem,5,FormatDate(dlg.m_tDate ) );
		if(dlg.m_sAction  ==L"借入"||dlg.m_sAction ==L"借出")
		{
			//只有在借入借出的时候不显示仍欠余额但是要显示有效日期
			m_cBorrowListCtrl.SetItemText (nItem,6,L"");
			m_cBorrowListCtrl.SetItemText (nItem,3,FormatDate(dlg.m_tStartDate  ));
		    m_cBorrowListCtrl.SetItemText (nItem,4,FormatDate(dlg.m_tEndDate ) );
		}
		else
		{
			s.Format (L"%f",dlg.m_dMoneyLeft );
			Length=s.GetLength ();
			s.Delete (Length-4,4);
			m_cBorrowListCtrl.SetItemText (nItem,6,s);
			m_cBorrowListCtrl.SetItemText (nItem,3,L"");
		    m_cBorrowListCtrl.SetItemText (nItem,4,L"");
		}
		m_cBorrowListCtrl.SetItemText (nItem,7,dlg.m_sRemark );
	    s.Format (L"%d",m_iFinanceBorrow_Id );
		m_cBorrowListCtrl.SetItemText (nItem,8,s);
	}
}
void CFinanceBorrowDlg::OnBnClickedFinanceBorrowUpdateBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Update();
}

void CFinanceBorrowDlg::Delete ()
{
	POSITION pos = m_cBorrowListCtrl.GetFirstSelectedItemPosition();
    if (pos == NULL)
	{
		MessageBox(L"\n你没有选中任何一个借贷,不可以删除!\n",L"提示",MB_ICONEXCLAMATION);
	}
    else
   {
       if(MessageBox(L"\n此操作将永久删除该项,确定吗?\n",L"删除提醒",MB_OKCANCEL|MB_ICONQUESTION|MB_DEFBUTTON2)==IDCANCEL)
		   return ;
	   while (pos)
      {
		  int nItem = m_cBorrowListCtrl.GetNextSelectedItem(pos);
		  CString str;
		  str="Select * from Borrow order by bDate";
	      m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
		  //获取该单词
		  int m_iId;
		  m_iId=_ttol(m_cBorrowListCtrl.GetItemText (nItem,8));
		  m_pSet.m_strFilter.Empty ();
		  m_pSet.MoveFirst ();//刚开始移动到第一个位置
		  while(!m_pSet.IsEOF ())
		  {
			  if(m_iId ==m_pSet.m_bId )
			  {
				  m_pSet.Delete ();
				  break;
			  }
			  m_pSet.MoveNext ();
		  }		 
		  if(!m_pSet.IsDeleted ())
		  {
			  MessageBox(L"\n删除失败!\n",L"错误", MB_ICONSTOP);
			  return ;
		  }
		  m_pSet.MoveNext ();
		  //数据库删除成功后就删除列表了
		  m_cBorrowListCtrl.DeleteItem (nItem);
		  m_pSet.Close ();
		  //现在在右边显示个数
	      m_iBorrowAmount--;
	      CString s;
	      s.Format (L"%d",m_iBorrowAmount);
	      SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
      }
   }
}
void CFinanceBorrowDlg::OnBnClickedFinanceBorrowDeleteBt()
{
	// TODO: 在此添加控件通知处理程序代码
    Delete();
}

void CFinanceBorrowDlg::Search()
{
	BeginWaitCursor();
	int i=0;
	int Length;
	CString s;
	CString SearchTime;
	CString ODate;
	CString StartDate;
	CString EndDate;
    CString str;
 	CFinanceBorrowSearchDlg dlg;
	if(dlg.DoModal ()==IDOK)
	{
		m_cBorrowListCtrl.DeleteAllItems ();
		switch(dlg.m_iItem )
		{
		case 0:
		case 1:
			if(m_pSet.IsOpen ())
				m_pSet.Close ();
		    str="Select * from Borrow where ";
		    if(dlg.m_iItem==0)
				str+="bOtherName";
			else
				str+="bAmount";
			str+=" like '%";
			str+=dlg.m_sKeyWord ;
			str+="%' order by bDate";
	        m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
		    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);//显示
					MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
					m_pSet.Close ();
					EndWaitCursor();
			        return ;
		         }
		        m_pSet.MoveFirst ();
	            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 ();
		    break;
		case 2://
		case 3://
			SearchTime=DateToString(dlg.m_tSearchDate );
		    if(m_pSet.IsOpen ())
				m_pSet.Close ();
		    m_pSet.Open ();
		    m_pSet.m_strFilter .Empty ();
		    m_pSet.Requery ();
	        if(m_pSet.GetRecordCount ()==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_pSet.MoveFirst ();
	        while (!m_pSet.IsEOF ())
			{
				//在这里来判断可以轻松地跳过CTime与CString的差别
				if(dlg.m_iItem ==2)//查询动作时间
				{
					ODate=DateToString(m_pSet.m_bDate );
					if(ODate==SearchTime)
					{
						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++;
					}
				}
				else
				{
					StartDate=DateToString(m_pSet.m_bStartDate );
					EndDate=DateToString(m_pSet.m_bEndDate );
					if(StartDate<=SearchTime&&EndDate>=SearchTime)
					{
						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 ();
			} 

⌨️ 快捷键说明

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