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

📄 bankoperationview.cpp

📁 Visual C++NET专业项目实例开发-源代码Project01Chapter08BankOperation
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	m_pBk=new CChkBook;
	if(!m_pBk->IsOpen())
		m_pBk->Open();
	if(m_pBk->IsBOF() && m_pBk->IsEOF ())
		AfxMessageBox("No Records in the Database...");
	m_pBk->MoveLast();

	int st=m_pBk->m_Start_Check_Number;
	m_pBk->AddNew();
	UpdateData(true);
	m_pBk->m_Account_Number=m_pSet->m_Account_Number;
	GetDlgItemText(IDC_CURRDT,m_pBk->m_Date_of_Issue);
	m_pBk->m_Hand_Over="C";
	
	if(m_pSet->m_Type_account=="S") //saving account
	{
		m_pBk->m_Number_of_Checks=20;
		m_pBk->m_Start_Check_Number=st+1;
		m_pBk->m_End_Check_Number=m_pBk->m_Start_Check_Number + 20;
	}
	if(m_pSet->m_Type_account=="C") //Current account
	{
		m_pBk->m_Number_of_Checks=40;
		m_pBk->m_Start_Check_Number=st+1;
		m_pBk->m_End_Check_Number=m_pBk->m_Start_Check_Number + 40;
	}
	if(m_pSet->m_Type_account=="K") //Checking account
	{
		m_pBk->m_Number_of_Checks=10;
		
		m_pBk->m_Start_Check_Number=st+1;
		m_pBk->m_End_Check_Number=m_pBk->m_Start_Check_Number + 50;
	}
	if(!m_pBk->Update())
		AfxMessageBox("Updation of Record Failed!!!");
	UpdateData(false);

	AfxMessageBox("Check Book has been issued");
	if(m_pBk->Requery()==0)
		return;
}

void CBankOperationView::OnClear() 
{
	CButton *bAdd,*bMod,*bDel,*bUpd;
	SetDlgItemText(IDC_VALID,"");

	bAdd=(CButton*)GetDlgItem(IDC_SAVE);
	bAdd->EnableWindow(true);
	bUpd=(CButton*)GetDlgItem(IDC_UPD);
	bUpd->EnableWindow(false);
	bMod=(CButton*)GetDlgItem(IDC_MOD);
	bMod->EnableWindow(false);
	bDel=(CButton*)GetDlgItem(IDC_DELETE);
	bDel->EnableWindow(false);
	
	SetDlgItemText(IDC_FNAME,"");
	SetDlgItemText(IDC_LNAME,"");
	SetDlgItemInt(IDC_ACCNO,0,false);
	SetDlgItemText(IDC_PADD,"");
	SetDlgItemText(IDC_MADD,"");
	SetDlgItemText(IDC_PHONE,"");
	SetDlgItemText(IDC_EMAIL,"");
	SetDlgItemInt(IDC_REFACCNO,0,false);
	SetDlgItemInt(IDC_AMOUNT,0,false);
	SetDlgItemText(IDC_DOB,"");
	
	CButton *chk1;
	chk1=(CButton*)GetDlgItem(IDC_CHECK1);
	chk1->SetCheck(false);

	CButton *pSaveing,*pCurrent,*pChecking;
	pSaveing=(CButton*)GetDlgItem(IDC_RADIO1);
	pCurrent=(CButton*)GetDlgItem(IDC_RADIO2);
	pChecking=(CButton*)GetDlgItem(IDC_RADIO3);
	
	pSaveing->SetCheck(true);
	pCurrent->SetCheck(false);
	pChecking->SetCheck(false);
}

//Handles Deposit/Wihdrawl to/from an account
void CBankOperationView::OnDeposit() 
{
	CDeposit d1;
	d1.DoModal();
}

//Handles Transfer amount from one account to other
void CBankOperationView::OnTransfer() 
{
	CTransfer d2;
	d2.DoModal();
}

//Handles the "<<" button
void CBankOperationView::OnBnClickedFirst()
{
	OnRecordFirst();
	EnableDisableNavigationKeys(1);
}

//Handles the ">>" button
void CBankOperationView::OnBnClickedLast()
{
	OnRecordLast();
	EnableDisableNavigationKeys(2);
}

//Handles the "<" button
void CBankOperationView::OnBnClickedPrev()
{
	OnRecordPrev();

	EnableDisableNavigationKeys(3);
}
//Handles the ">" button
void CBankOperationView::OnBnClickedNext()
{
	OnRecordNext();
	EnableDisableNavigationKeys(4);
}

//Handles the Commit of transactions
void CBankOperationView::OnBnClickedCommit()
{
	//This will commit Pending "Transfer" operations
	Tran_DW *ptr_Tran=new Tran_DW;		//Contains Transaction Details
	Ref_AccNo *m_pGet=new Ref_AccNo;	//Contains Customer Details
	
	if(!ptr_Tran->IsOpen())
		ptr_Tran->Open();
	if(!ptr_Tran->IsBOF() && ptr_Tran->IsEOF ())
		ptr_Tran->MoveFirst();
	
	if(!m_pGet->IsOpen())
		m_pGet->Open();
	if(!m_pGet->IsBOF() && m_pGet->IsEOF ())
		m_pGet->MoveFirst();

	BOOL bFirstTransactionOver = FALSE;
	//Go through all the transactions in transaction recordset
	while (!ptr_Tran->IsEOF())
	{
		//Choose pending records from the recordset
		if (ptr_Tran->m_Transaction_Status.CompareNoCase("P") == 0)
		{
			//Case of Cheque transactions in Deposit/Withdrawl
			if (ptr_Tran->m_Transaction_Mode.CompareNoCase("CHQ") == 0)
			{
				// Deposit Case
				if (ptr_Tran->m_Transaction_Type.CompareNoCase("DEP") == 0)
				{
					while (!m_pGet->IsEOF())
					{
						if (m_pGet->m_Account_Number == ptr_Tran->m_Account_Number)
						{
							m_pGet->Edit();
							m_pGet->m_Balance=m_pGet->m_Balance + ptr_Tran->m_Transaction_Amount;
							m_pGet->Update();
							m_pGet->Requery();
							ptr_Tran->Edit();
							ptr_Tran->m_Transaction_Status = "C";
							ptr_Tran->Update();
							ptr_Tran->Requery();
							break;
						}
						m_pGet->MoveNext();
					}
					m_pGet->MoveFirst();
				}
				else if (ptr_Tran->m_Transaction_Type.CompareNoCase("WTH") == 0) // Withdrawl Case
				{
					while (!m_pGet->IsEOF())
					{
						if (m_pGet->m_Account_Number == ptr_Tran->m_Account_Number)
						{
							m_pGet->Edit();
							m_pGet->m_Balance=m_pGet->m_Balance - ptr_Tran->m_Transaction_Amount;
							m_pGet->Update();
							m_pGet->Requery();
							ptr_Tran->Edit();
							ptr_Tran->m_Transaction_Status = "C";
							ptr_Tran->Update();
							ptr_Tran->Requery();
							break;
						}
						m_pGet->MoveNext();
					}
					m_pGet->MoveFirst();
				}
			}
			else if(ptr_Tran->m_Transaction_Mode.CompareNoCase("TRF") == 0) //Case of money transfer from one account to another
			{
				//Transfer to an internal account
				if (ptr_Tran->m_Transaction_Type.CompareNoCase("ITF") == 0)
				{
					long lAccNumFrom = ptr_Tran->m_Account_Number;
					while (!m_pGet->IsEOF())
					{
						if (m_pGet->m_Account_Number == ptr_Tran->m_Account_Number)
						{
							m_pGet->Edit();
							m_pGet->m_Balance=m_pGet->m_Balance - ptr_Tran->m_Transaction_Amount;
							m_pGet->Update();
							m_pGet->Requery();
							if (bFirstTransactionOver)
							{
								ptr_Tran->Edit();
								ptr_Tran->m_Transaction_Status = "C";
								ptr_Tran->Update();
								ptr_Tran->Requery();
								break;
							}
							bFirstTransactionOver = TRUE;
						} 
						if (m_pGet->m_Account_Number == ptr_Tran->m_To_Account)
						{
							m_pGet->Edit();
							m_pGet->m_Balance=m_pGet->m_Balance + ptr_Tran->m_Transaction_Amount;
							m_pGet->Update();
							m_pGet->Requery();
							if (bFirstTransactionOver)
							{
								ptr_Tran->Edit();
								ptr_Tran->m_Transaction_Status = "C";
								ptr_Tran->Update();
								ptr_Tran->Requery();
								break;
							}
							bFirstTransactionOver = TRUE;
						}
						m_pGet->MoveNext();
					}
					m_pGet->MoveFirst();
				}
				else if (ptr_Tran->m_Transaction_Type.CompareNoCase("ETF") == 0) 
				{
					//Transfer to an External account
					long lAccNumFrom = ptr_Tran->m_Account_Number;
					while (!m_pGet->IsEOF())
					{
						if (m_pGet->m_Account_Number == ptr_Tran->m_Account_Number)
						{
							m_pGet->Edit();
							m_pGet->m_Balance=m_pGet->m_Balance - ptr_Tran->m_Transaction_Amount;
							m_pGet->Update();
							m_pGet->Requery();
							ptr_Tran->Edit();
							ptr_Tran->m_Transaction_Status = "C";
							ptr_Tran->Update();
							ptr_Tran->Requery();
							break;
						} 
						m_pGet->MoveNext();
					}
					m_pGet->MoveFirst();
				}
			}
			bFirstTransactionOver = FALSE;
		}

		ptr_Tran->MoveNext();
	}

	if (ptr_Tran) //Contains Transaction Details
		delete ptr_Tran;
	if (m_pGet) //Contains Transaction Details
		delete m_pGet;
	
	//Refresh the records
	m_bFromCommit = TRUE;
	OnInitialUpdate();

	//Display the message "Transactions have been commited"
	MessageBox("All pending transactions have been commited");
}

//Handles the reactivate button
void CBankOperationView::OnBnClickedReactivate()
{
	m_pSet->Edit();
	//Get the Account Number to edit
	long lCurrentAccountNum = m_pSet->m_Account_Number;
	m_pSet->m_Valid_Acc="VA";
	UpdateData(true);
	if(!m_pSet->Update())
		AfxMessageBox("Some internal problem. Not Able to reactivate the account");
	if(m_pSet->Requery()==0)
		return;

	if(!m_pSet->IsBOF() && m_pSet->IsEOF())
		m_pSet->MoveFirst();
	while( m_pSet->m_Account_Number == lCurrentAccountNum || m_pSet->IsEOF())
	{
		m_pSet->MoveNext();
	}

	//Update the Operational box
	SetDlgItemText(IDC_VALID,"Operational Account");

	CButton *pAdd, *pUpd, *pMod, *pDel, *pReActivate, *pChk1;

	pAdd=(CButton*)GetDlgItem(IDC_SAVE);
	pAdd->EnableWindow(true);
		
	pUpd=(CButton*)GetDlgItem(IDC_UPD);
	pUpd->EnableWindow(false);
	
	pMod=(CButton*)GetDlgItem(IDC_MOD);
	pMod->EnableWindow(true);
	
	pDel=(CButton*)GetDlgItem(IDC_DELETE);
	pDel->EnableWindow(true);
		
	pReActivate=(CButton*)GetDlgItem(IDC_REACTIVATE);
	pReActivate->EnableWindow(false);

	pChk1=(CButton*)GetDlgItem(IDC_CHECK1);
	pChk1->SetCheck(false);

	AfxMessageBox("The Record has been activated!");
}

//Handles Navigation keys
void CBankOperationView::EnableDisableNavigationKeys(int nFrom)
{
	Ref_AccNo *m_pGet=new Ref_AccNo;
	long lCurrentRecord=0;
	lCurrentRecord = m_pGet->GetCurrentRecord();
	if(!m_pGet->IsOpen())
		m_pGet->Open();
	if(!m_pGet->IsBOF() && m_pGet->IsEOF ())
	{
		m_pGet->MoveFirst();
	}
	int nTotalRecordCount=0;
	while (!m_pGet->IsEOF())
	{
		nTotalRecordCount++;
		m_pGet->MoveNext();
	}

	//nTotalRecordCount = m_pGet->GetTotalCount();
	m_pGet->MoveFirst();

	CButton *pFirst, *pLast, *pNext, *pPrev;
	pFirst = (CButton*)GetDlgItem(IDC_BUTTON1);
	pLast = (CButton*)GetDlgItem(IDC_BUTTON4);
	pPrev = (CButton*)GetDlgItem(IDC_BUTTON2);
	pNext = (CButton*)GetDlgItem(IDC_BUTTON3);

	if (nTotalRecordCount == 0 || nTotalRecordCount == 1) {
		pFirst->EnableWindow(false);
		pLast->EnableWindow(false);
		pPrev->EnableWindow(false);
		pNext->EnableWindow(false);
		return;
	}

	switch(nFrom)
	{
		case 1: //First
			pFirst->EnableWindow(false);
			pLast->EnableWindow(true);
			pPrev->EnableWindow(false);
			pNext->EnableWindow(true);
			break;
		case 2: //Last
			pFirst->EnableWindow(true);
			pLast->EnableWindow(false);
			pPrev->EnableWindow(true);
			pNext->EnableWindow(false);
			break;
		case 3: //Prev 
			//if (m_nCurrentRecord == 1) 
			//{
			//	pFirst->EnableWindow(false);
			//	pLast->EnableWindow(true);
			//	pPrev->EnableWindow(false);
			//	pNext->EnableWindow(true);
			//}
			//else
			//{
				pFirst->EnableWindow(true);
				pLast->EnableWindow(true);
				pPrev->EnableWindow(true);
				pNext->EnableWindow(true);
			//}
			break;
		case 4: //Next
			//if (m_nCurrentRecord == nTotalRecordCount) 
			//{
			//	pFirst->EnableWindow(true);
			//	pLast->EnableWindow(false);
			//	pPrev->EnableWindow(true);
			//	pNext->EnableWindow(false);
			//}
			//else
			//{
				pFirst->EnableWindow(true);
				pLast->EnableWindow(true);
				pPrev->EnableWindow(true);
				pNext->EnableWindow(true);
			//}
			break;
		case 5: //From IniialUpdate
			pFirst->EnableWindow(false);
			pLast->EnableWindow(true);
			pPrev->EnableWindow(false);
			pNext->EnableWindow(true);
			break;
	}
}

//Handles the Cancel button
void CBankOperationView::OnBnClickedCancel1()
{
	// TODO: Add your control notification handler code here
	CComboBox *cmb=(CComboBox*)GetDlgItem(IDC_ACCNO);
	cmb->EnableWindow(TRUE); 

	CEdit *pFName, *pLName, *pDOB, *pRefAcct, *pAmnt;

	pFName=(CEdit*)GetDlgItem(IDC_FNAME);
	pFName->EnableWindow(TRUE);

	pLName=(CEdit*)GetDlgItem(IDC_LNAME);
	pLName->EnableWindow(TRUE);

	pDOB = (CEdit*)GetDlgItem(IDC_DOB);
	pDOB->EnableWindow(TRUE);

	pRefAcct=(CEdit*)GetDlgItem(IDC_REFACCNO);
	pRefAcct->EnableWindow(TRUE);
	
	pAmnt=(CEdit*)GetDlgItem(IDC_AMOUNT);
	pAmnt->EnableWindow(TRUE);

	CButton *pDep, *pTransfer, *pCancel;

	pCancel=(CButton*)GetDlgItem(IDC_CANCEL1);
	pCancel->EnableWindow(FALSE);

	pDep=(CButton*)GetDlgItem(IDC_DEPOSIT);
	pDep->EnableWindow(true);

	pTransfer=(CButton*)GetDlgItem(IDC_TRANSFER);
	pTransfer->EnableWindow(true);

	m_bFromCancel = TRUE;
	//To refresh the records
	OnInitialUpdate();
}

BOOL CBankOperationView::VerifyDate(CString strDate)
{
	BOOL bValidDate = FALSE;
	CString strTemp1, strTemp2, strTemp3;
	for (int i=0; i<10; i++)
	{
		strTemp1 = strDate.Left(2);
		if (atoi(strTemp1)> 0 && atoi(strTemp1)< 13) // 1 to 12
		{
			//Valid Month. Wait till we check the date.
		}
		else
		{
			return FALSE;
		}

		strTemp2 = strDate.Right(4);
		if (atoi(strTemp2)> 1700 && atoi(strTemp2)< 3000)
		{
			//Valid Year. Wait till we check the date.
		}
		else
		{
			return FALSE;
		}
		strTemp3 = strDate.Mid(3, 2);
		if (atoi(strTemp3)> 0 && atoi(strTemp3)< 32)
		{
			//Valid Month
			int iMonth = atoi(strTemp1);
			switch(iMonth)
			{
				case 1:
					bValidDate = TRUE;
					break;
				case 2:
					{
						int nRes = atoi(strTemp2)/4;
						if ( nRes == 0 && (atoi(strTemp3)> 0 && atoi(strTemp3)< 29) )
							bValidDate = TRUE;
						if ( nRes != 0 && atoi(strTemp3)> 0 && atoi(strTemp3)< 30) ////Leap year
							bValidDate = TRUE;
					}
					break;
				case 3:
					bValidDate = TRUE;
					break;
				case 4:
					if (atoi(strTemp3)> 0 && atoi(strTemp3)< 31)
						bValidDate = TRUE;
					break;
				case 5:
					bValidDate = TRUE;
					break;
				case 6:
					if (atoi(strTemp3)> 0 && atoi(strTemp3)< 31)
						bValidDate = TRUE;
					break;
				case 7:
					bValidDate = TRUE;
					break;
				case 8:
					bValidDate = TRUE;
					break;
				case 9:
					if (atoi(strTemp3)> 0 && atoi(strTemp3)< 31)
						bValidDate = TRUE;
					break;
				case 10:
					bValidDate = TRUE;
					break;
				case 11:
					if (atoi(strTemp3)> 0 && atoi(strTemp3)< 31)
						bValidDate = TRUE;
					break;
				case 12:
					bValidDate = TRUE;
					break;
			}
		}
	}
	return bValidDate;
}

//Handles the "Day end transactions" button
void CBankOperationView::OnReportsDayendtransactions()
{
	// TODO: Add your command handler code here
}

//Handles the "reports more..." button
void CBankOperationView::OnReportsMore()
{
	// TODO: Add your command handler code here
}

⌨️ 快捷键说明

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