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

📄 loan1.cpp

📁 C++ 固定资产管理系统
💻 CPP
字号:
// LOAN1.cpp : implementation file
//

#include "stdafx.h"
#include "FixedAssets.h"
#include "LOAN1.h"
#include "CRACK.h"
#include "PromptDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CLOAN dialog


CLOAN::CLOAN(CWnd* pParent /*=NULL*/)
	: CDialog(CLOAN::IDD, pParent)
{
	//{{AFX_DATA_INIT(CLOAN)
	m_OutDate = -1;
	m_strReason = _T("");
	m_strRemark = _T("");
	m_ReturnDate = -1;
	m_strType = _T("");
	m_strName = _T("");
	m_strSort = _T("");
	m_strBorrower = _T("");
	m_strLender = _T("");
	m_strRatifier = _T("");
	m_strAssetID = _T("");
	//}}AFX_DATA_INIT
}


void CLOAN::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLOAN)
	DDX_Control(pDX, IDC_LN_RATIFIER, m_CtrlCBRatifier);
	DDX_Control(pDX, IDC_LN_LENDER, m_CtrlCBLender);
	DDX_Control(pDX, IDC_LN_BORROWER, m_CtrlCBBorrower);
	DDX_Control(pDX, IDC_LN_REASON, m_CtrlEditReason);
	DDX_Control(pDX, IDC_LN_LIST, m_CtrlList);
	DDX_Control(pDX, IDC_LN_DEPARTMENT, m_CtrlCBDepartment);
	DDX_DateTimeCtrl(pDX, IDC_LN_OUTDATE, m_OutDate);
	DDX_Text(pDX, IDC_LN_REASON, m_strReason);
	DDX_Text(pDX, IDC_LN_REMARK, m_strRemark);
	DDX_DateTimeCtrl(pDX, IDC_LN_RETURNDATE, m_ReturnDate);
	DDX_Text(pDX, IDC_LN_TYPE, m_strType);
	DDX_Text(pDX, IDC_LN_NAME, m_strName);
	DDX_Text(pDX, IDC_LN_SORT, m_strSort);
	DDX_CBString(pDX, IDC_LN_BORROWER, m_strBorrower);
	DDX_CBString(pDX, IDC_LN_LENDER, m_strLender);
	DDX_CBString(pDX, IDC_LN_RATIFIER, m_strRatifier);
	DDX_Text(pDX, IDC_LN_ASSETID, m_strAssetID);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLOAN, CDialog)
	//{{AFX_MSG_MAP(CLOAN)
	ON_BN_CLICKED(IDD_LOAN, OnLoan)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LN_LIST, OnItemchangedLnList)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLOAN message handlers

int CLOAN::DoModal() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::DoModal();
}
BOOL CLOAN::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
    m_CtrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); 
	//连接数据库
    m_pDatabase=new CDaoDatabase;
	try{
		m_pDatabase->Open("FixedAssets");
        m_pRecordset=new CDaoRecordset(m_pDatabase);
	}
	catch(CDaoException *e)
	{
		e->ReportError();
		delete m_pDatabase;
		m_pDatabase=NULL;
		e->Delete();
	}	
	if(!m_pDatabase->IsOpen()) return 0;
	if(!m_pRecordset) return 0;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	CString strSelect;
	try
	{   //保管人员
		strSelect = _T("Select 保管人员ID,保管人员 From 保管人员");
		m_pRecordset->Open(dbOpenDynaset,strSelect);
		while (!m_pRecordset->IsEOF()) 
		{
			COleVariant var;
			var = m_pRecordset->GetFieldValue(0);
			m_uaKeeper.Add(var.lVal);
			var = m_pRecordset->GetFieldValue(1);
			m_saKeeper.Add(CCrack::strVARIANT(var));
			m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();
		// 部门
		strSelect = _T("Select 部门ID,部门名称 From 部门");
		m_pRecordset->Open(dbOpenDynaset,strSelect);
		while (!m_pRecordset->IsEOF())
		{
			COleVariant var;
			var = m_pRecordset->GetFieldValue(0);
			m_uaDepartment.Add(var.lVal);
			var = m_pRecordset->GetFieldValue(1);
			m_saDepartment.Add(CCrack::strVARIANT(var));
			m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();
		// 存放地点
		strSelect = _T("Select 存放地点ID,存放地点 From 存放地点");
		m_pRecordset->Open(dbOpenDynaset,strSelect);
		while (!m_pRecordset->IsEOF())
		{
			COleVariant var;
			var = m_pRecordset->GetFieldValue(0);
			m_uaDepositary.Add(var.lVal);
			var = m_pRecordset->GetFieldValue(1);
			m_saDepositary.Add(CCrack::strVARIANT(var));
			m_pRecordset->MoveNext();
		}
	    m_pRecordset->Close();
		
		// 增加方式
		strSelect = _T("Select 增加方式ID,增加方式 From 增加方式");
		m_pRecordset->Open(dbOpenDynaset,strSelect);
		while (!m_pRecordset->IsEOF())
		{
			COleVariant var;
			var = m_pRecordset->GetFieldValue(0);
			m_uaAddType.Add(var.lVal);
			var = m_pRecordset->GetFieldValue(1);
			m_saAddType.Add(CCrack::strVARIANT(var));
			m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();
		// 资产类别
		strSelect = _T("Select 资产类别ID,资产类别 From 资产类别");
		m_pRecordset->Open(dbOpenDynaset,strSelect);
		while (!m_pRecordset->IsEOF())
		{
			COleVariant var;
			var = m_pRecordset->GetFieldValue(0);
			m_uaSort.Add(var.lVal);
			var = m_pRecordset->GetFieldValue(1);
			m_saSort.Add(CCrack::strVARIANT(var));
			m_pRecordset->MoveNext();
		}
		// close recordset
		m_pRecordset->Close();
        strSelect = _T("Select DISTINCT 借用人 From 借出还入资产");
	    m_pRecordset->Open(dbOpenDynaset,strSelect);
	    while (!m_pRecordset->IsEOF())
		{
		    COleVariant var;
		    var = m_pRecordset->GetFieldValue(0);
	    	m_CtrlCBBorrower.AddString(CCrack::strVARIANT(var));
		    m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();

        strSelect = _T("Select DISTINCT 出借人 From 借出还入资产");
	    m_pRecordset->Open(dbOpenDynaset,strSelect);
	    while (!m_pRecordset->IsEOF())
		{
		    COleVariant var;
		    var = m_pRecordset->GetFieldValue(0);
		    m_CtrlCBLender.AddString(CCrack::strVARIANT(var));
            m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();

	    strSelect = _T("Select DISTINCT 批复人 From 借出还入资产");
	    m_pRecordset->Open(dbOpenDynaset,strSelect);
	    while (!m_pRecordset->IsEOF())
		{
		    COleVariant var;
		    var = m_pRecordset->GetFieldValue(0);
		    m_CtrlCBRatifier.AddString(CCrack::strVARIANT(var));
		    m_pRecordset->MoveNext();
		}
		 m_pRecordset->Close();
	}
	catch (CDaoException* e)
	{
		e->ReportError(); 
		e->Delete();
		return 0;
	}
	int nIndex,i;
	for(i=0;i<m_saDepartment.GetSize();i++)  //初始化 部门
	{
	   nIndex =m_CtrlCBDepartment.AddString(m_saDepartment.GetAt(i));
	   m_CtrlCBDepartment.SetItemData(nIndex, m_uaDepartment.GetAt(i));
	} 
	
	
	Refresh();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CLOAN::Refresh()//刷新
{
    m_strTableName = _T("资产信息");
	if(!m_pDatabase->IsOpen()) return;
	if(!m_pRecordset) return;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	//清空list控件
	m_CtrlList.DeleteAllItems();
	while(m_CtrlList.DeleteColumn(0));
	CDaoFieldInfo fieldInfo;
	int nFields;

	CDaoTableDef td(m_pDatabase);
	try
	{
		td.Open(m_strTableName);
		nFields = td.GetFieldCount();
		for (int j=0; j < nFields; j++)
		{
			td.GetFieldInfo(j,fieldInfo);
			int nWidth = m_CtrlList.GetStringWidth(fieldInfo.m_strName) + 15;
			m_CtrlList.InsertColumn(j,fieldInfo.m_strName, LVCFMT_LEFT, nWidth);
		}
	}
	catch (CDaoException* e)
	{
		e->ReportError(); 
		e->Delete();
		return;
	}
	td.Close();

	int nItem = 0,i;
	try
	{
		CString strSelect(_T("Select * From ["));
		strSelect += m_strTableName;
		strSelect += _T("]");
		m_pRecordset->Open(dbOpenDynaset,strSelect);
		while (!m_pRecordset->IsEOF())
		{
			COleVariant var;
			var = m_pRecordset->GetFieldValue(14);
			if(CCrack::strVARIANT(var)=="借出"||CCrack::strVARIANT(var)=="清理"||CCrack::strVARIANT(var)=="维修") 
			{   
				m_pRecordset->MoveNext();
				continue;
			}
			var = m_pRecordset->GetFieldValue(0);
			m_CtrlList.InsertItem(nItem,CCrack::strVARIANT(var));
			for (i=0; i < nFields; i++)
			{
				var = m_pRecordset->GetFieldValue(i);
				if(i==3||i==15||i==16||i==17||i==18)  
				{
				    CString item;
					item=IdToString(atoi(CCrack::strVARIANT(var)),i);
	                m_CtrlList.SetItemText( nItem,i,item);
					continue;
				}
				
				m_CtrlList.SetItemText( nItem,i,CCrack::strVARIANT(var));
			}
			nItem++;
			m_pRecordset->MoveNext();
		}
	}
	catch (CDaoException* e)
	{
		e->ReportError(); 
		e->Delete();
		return;
	}
	m_ID.Empty();
	m_strAssetID.Empty();
	m_strName.Empty();
	m_strSort.Empty();
	m_strType.Empty();
	m_strRemark.Empty();
	m_strReason.Empty();
	m_strBorrower.Empty();
	m_strLender.Empty();
	m_strRatifier.Empty();
	m_CtrlCBDepartment.SetCurSel(-1);
	m_OutDate=CTime::GetCurrentTime();
	m_ReturnDate=CTime::GetCurrentTime();
	UpdateData(0);

} 
CString CLOAN::IdToString(int ID,int Index)  //将索引ID转换为字符
{
   CStringArray sa;   //资产类别
   CUIntArray ua;
   bool flag=0;
   switch(Index)
   {
     case 3:sa.Copy(m_saSort);ua.Copy(m_uaSort);break;//资产类别
	 case 15:sa.Copy(m_saDepartment);ua.Copy(m_uaDepartment);break;//使用部门
	 case 16:sa.Copy(m_saDepositary);ua.Copy(m_uaDepositary);break;//存放地点
	 case 17:sa.Copy(m_saAddType);ua.Copy(m_uaAddType);break;//增加方式
	 case 18:sa.Copy(m_saKeeper);ua.Copy(m_uaKeeper);break;//保管人员
	 
   }
   int j;
   for(j=0;j<ua.GetSize();j++)
   {
      if(ua[j]==unsigned(ID))
	  {   
		  flag=1;
		  break;
	  }
   }
   if(flag)
     return sa[j];
   else
	 return "!!删除!!";
}

void CLOAN::OnItemchangedLnList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	UpdateData(1);
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    if(pNMListView->uNewState&LVIS_SELECTED)
	{  
		char pContent[50] ;
       	int iCurrent = pNMListView->iItem;
        m_CtrlList.GetItemText(iCurrent,0,pContent,50);
		m_ID.Format("%s", pContent);
		m_CtrlList.GetItemText(iCurrent,1,pContent,50);
		m_strAssetID.Format("%s",pContent);
		m_CtrlList.GetItemText(iCurrent,2,pContent,50);
		m_strName.Format("%s", pContent);
		m_CtrlList.GetItemText(iCurrent,3,pContent,50);
		m_strSort.Format("%s",pContent);
		m_CtrlList.GetItemText(iCurrent,4,pContent,50);
		m_strType.Format("%s",pContent);
        
        UpdateData(FALSE);
		SetEditable(1);
	}		
	else
	{
	   
	   if(m_CtrlList.GetSelectedCount()<=0) 
		{
		   SetEditable(0);
		   m_ID.Empty();
	       m_strAssetID.Empty();
	       m_strName.Empty();
	       m_strSort.Empty();
	       m_strType.Empty();
	       m_strRemark.Empty();
	       m_strReason.Empty();
	       m_strBorrower.Empty();
	       m_strLender.Empty();
	       m_strRatifier.Empty();
	       m_CtrlCBDepartment.SetCurSel(-1);
	       m_OutDate=CTime::GetCurrentTime();
	       m_ReturnDate=CTime::GetCurrentTime();
	       UpdateData(0);
		}
	}
	*pResult = 0;
}
void CLOAN::SetEditable(bool label)
{
    (CButton*)GetDlgItem(IDD_LOAN)->EnableWindow(label);
	(CEdit*)GetDlgItem(IDC_LN_REASON)->EnableWindow(label);
	(CEdit*)GetDlgItem(IDC_LN_REMARK)->EnableWindow(label);
	(CComboBox*)GetDlgItem(IDC_LN_BORROWER)->EnableWindow(label);
	(CComboBox*)GetDlgItem(IDC_LN_LENDER)->EnableWindow(label);
	(CComboBox*)GetDlgItem(IDC_LN_RATIFIER)->EnableWindow(label);
	(CComboBox*)GetDlgItem(IDC_LN_DEPARTMENT)->EnableWindow(label);
	(CDateTimeCtrl*)GetDlgItem(IDC_LN_OUTDATE)->EnableWindow(label);
	(CDateTimeCtrl*)GetDlgItem(IDC_LN_RETURNDATE)->EnableWindow(label);
}
BOOL CLOAN::DestroyWindow() 
{
    m_pDatabase->Close();
	delete m_pDatabase;
	m_pDatabase=NULL;
	return CDialog::DestroyWindow();
}
void CLOAN::OnLoan() 
{
   	UpdateData(1);
	if(!m_pDatabase->IsOpen()) return;
	if(!m_pRecordset) return;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	CString strSql;
	UINT  uSelectedCount = m_CtrlList.GetSelectedCount();
	if (uSelectedCount <1) {MessageBox("请选择记录中的一项","借出提示");return;}
	//检查数据是否正确
	if(m_CtrlCBDepartment.GetCurSel()==-1) {AfxMessageBox("借出部门不能为空!");m_CtrlCBDepartment.SetFocus();return;}
	if(m_strBorrower.IsEmpty()) {AfxMessageBox("借用人不能为空!");m_CtrlCBBorrower.SetFocus();return;}
	if(m_strLender.IsEmpty()) {AfxMessageBox("出借人不能为空!");m_CtrlCBLender.SetFocus();return;}
	if(m_strReason.IsEmpty()) {AfxMessageBox("出借理由不能为空!");m_CtrlEditReason.SetFocus();return;}
	if(m_strRatifier.IsEmpty()) {AfxMessageBox("批复人不能为空!");m_CtrlCBRatifier.SetFocus();return;}
	CPromptDlg dlg;
	dlg.m_Prompt="\n借出这些物品?";
	if(dlg.DoModal()==IDCANCEL) return;
	CString OutDate,ReturnDate,useinfo="借出";
	OutDate.Format("%d %d %d",m_OutDate.GetYear(),m_OutDate.GetMonth(),m_OutDate.GetDay());//借出日期
	ReturnDate.Format("%d %d %d",m_ReturnDate.GetYear(),m_ReturnDate.GetMonth(),m_ReturnDate.GetDay());//拟还日期
	int Department,giveback=0;
	Department=m_CtrlCBDepartment.GetItemData(m_CtrlCBDepartment.GetCurSel());     //借用部门
    
    int  nItemIndex = -1,nSelectIndex;
    // Update all of the selected items.
    if (uSelectedCount > 0)
	{
		while((nItemIndex=m_CtrlList.GetNextItem(nItemIndex,LVNI_SELECTED ) ) != -1 )
		{ 
			m_ID=m_CtrlList.GetItemText ( nItemIndex, 0 );
			nSelectIndex=nItemIndex;
      	    try{
                 if(m_pDatabase->CanUpdate())
				 {
			   	     strSql.Format("Update 资产信息 set 使用情况='%s' where 资产ID=%d",useinfo,atoi(m_ID));
  			         m_pDatabase->Execute(strSql, dbDenyWrite|dbConsistent);
                     strSql.Format("Insert into 借出还入资产(资产ID,借用时间,借用部门ID,借用人,\
					     预计归还时间,出借人,借用理由,批复人,是否归还,备注)values(%d,'%s',%d,'%s','%s','%s','%s','%s',%d,\
					     '%s') ",atoi(m_ID),OutDate,Department,m_strBorrower,ReturnDate,m_strLender,m_strReason,\
					     m_strRatifier,giveback,m_strRemark);
				     m_pDatabase->Execute(strSql, dbDenyWrite|dbConsistent);
				 }
			}  
	       catch(CDaoException* e){
		       e->ReportError();
		       e->Delete();}
		} 
	}
	SetEditable(0);
	Refresh();
	m_CtrlList.EnsureVisible(nSelectIndex,nSelectIndex+1);
    m_CtrlList.SetItemState(nSelectIndex, LVIS_SELECTED, LVIS_SELECTED);
}


⌨️ 快捷键说明

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