www.pudn.com > chenjing.rar > BookLostDlg.cpp


// BookLostDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "Library.h" 
#include "BookLostDlg.h" 
#include "BookInfoDlg.h" 
#include "PersonInfoDlg.h" 
#include "BorrowSet.h" 
#include "BookSet.h" 
#include "PunishSet.h" 
#include "ProofSet.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CBookLostDlg dialog 
 
 
CBookLostDlg::CBookLostDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CBookLostDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CBookLostDlg) 
	m_strBookID = _T(""); 
	m_strProofID = _T(""); 
	m_dPuniMoney = 0.0; 
	//}}AFX_DATA_INIT 
} 
 
 
void CBookLostDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CBookLostDlg) 
	DDX_Text(pDX, IDC_EDIT_BOOK_NO, m_strBookID); 
	DDX_Text(pDX, IDC_EDIT_PROOF_NO, m_strProofID); 
	DDX_Text(pDX, IDC_EDIT_PUNI_MONEY, m_dPuniMoney); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CBookLostDlg, CDialog) 
	//{{AFX_MSG_MAP(CBookLostDlg) 
	ON_BN_CLICKED(IDC_BUTTON_BOOK_INFO, OnButtonBookInfo) 
	ON_BN_CLICKED(IDC_BUTTON_PROOF_INFO, OnButtonProofInfo) 
	ON_BN_CLICKED(IDC_BUTTON_LOST, OnButtonLost) 
	ON_WM_CLOSE() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CBookLostDlg message handlers 
 
void CBookLostDlg::OnButtonBookInfo()  
{ 
	UpdateData(); 
	CBookInfoDlg m_dlg; 
	m_dlg.m_strBookID=m_strBookID; 
	m_dlg.DoModal(); 
} 
 
void CBookLostDlg::OnButtonProofInfo()  
{ 
	UpdateData(); 
	CPersonInfoDlg m_dlg; 
	m_dlg.m_strProofID=m_strProofID; 
	m_dlg.DoModal(); 
} 
 
void CBookLostDlg::OnButtonLost()  
{ 
	 
	UpdateData(); 
	if(m_strBookID.Compare("")==0||m_strProofID.Compare("")==0) 
	{ 
		MessageBox("请正确填写所需数据","图书挂失"); 
		return; 
	} 
	 
	if(!m_database.IsOpen()) 
	{ 
		if(!m_database.Open(_T("Library"))) 
		{ 
			MessageBox("无法连接数据源!","图书挂失"); 
			return; 
		} 
	} 
 
	double m_dblPunish=0.0; 
	CString strSQL; 
	CTime curTime,oriTime; 
	//察看借书(Borrow_Info表)信息,看是否超期 
	CBorrowSet *m_pBorrow=new CBorrowSet(&m_database); 
	strSQL.Format("select * from Borrow_Info where Proof_ID='%s' AND Book_ID='%s'",m_strProofID,m_strBookID); 
	m_pBorrow->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pBorrow->GetRecordCount()==0) 
	{ 
		MessageBox("没有关于这个人借这本书的信息!","图书挂失"); 
		m_pBorrow->Close(); 
		m_database.Close(); 
		return; 
	} 
	int m_yeardiff,m_monthdiff,m_daydiff,m_timediff; 
	oriTime=m_pBorrow->m_Borrow_Date; 
	curTime=CTime::GetCurrentTime(); 
	m_yeardiff=curTime.GetYear()-oriTime.GetYear(); 
	m_monthdiff=curTime.GetMonth()-oriTime.GetMonth(); 
	m_daydiff=curTime.GetDay()-oriTime.GetDay(); 
	m_timediff=m_yeardiff*365+m_monthdiff*30+m_daydiff; 
	//超期,予以罚款 
	if(m_timediff>=60) 
	{ 
		//60天为超时限制时间,一天缴纳罚款0.1元 
		m_dblPunish=m_dblPunish+(m_timediff-60)*0.1; 
	} 
	//无论是否超期,首先进行还书操作,然后处以丢书罚款 
	//Borrow_Info删除该条记录 
	m_pBorrow->Delete(); 
	m_pBorrow->Close(); 
	//Proof_Info减少借书数量 
	CProofSet *m_pProof=new CProofSet(&m_database); 
	strSQL.Format("select * from Proof_Info where Proof_ID='%s'",m_strProofID); 
	m_pProof->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pProof->GetRecordCount()==0) 
	{ 
		MessageBox("读取借书人信息出错,将进行回退,请与馆主联系!","图书挂失"); 
		//回退,这里不进行 
		m_pProof->Close(); 
		m_database.Close(); 
		return; 
	} 
	m_pProof->Edit(); 
	m_pProof->m_Now_Borrow_Amount--; 
	m_pProof->Update(); 
	m_pProof->Requery(); 
	m_pProof->Close(); 
	 
	//查询书籍信息,书库藏书总量减一 
	strSQL.Format("select * from Book_Info where Book_ID='%s'",m_strBookID); 
	CBookSet *m_pBook=new CBookSet(&m_database); 
	m_pBook->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pBook->GetRecordCount()==0) 
	{ 
		MessageBox("查询书籍信息出错,将进行回退,请与馆主联系!","图书挂失"); 
		m_pBook->Close(); 
		m_database.Close(); 
	} 
	m_pBook->Edit(); 
	m_pBook->m_Total_Amount--; 
	m_pBook->Update(); 
	m_pBook->Requery(); 
	//查询价格信息,计算罚款金额 
	double m_dPrice=0.0; 
	m_dPrice=m_pBook->m_Price; 
	m_dblPunish+=m_dPrice*3; 
	m_pBook->Close(); 
	//将罚款信息存入罚款信息表中 
	strSQL.Format("select * from Punish_Info"); 
	CPunishSet *m_pset=new CPunishSet(&m_database); 
	m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pset->GetRecordCount()==0) 
	{ 
		MessageBox("目前还没有任何罚款信息!","图书挂失"); 
	} 
	m_pset->AddNew(); 
	m_pset->SetFieldNull(&(m_pset->m_Proof_ID),FALSE); 
	m_pset->m_Proof_ID=m_strProofID; 
 
	m_pset->SetFieldNull(&(m_pset->m_Book_ID),FALSE); 
	m_pset->m_Book_ID=m_strBookID; 
 
	m_pset->SetFieldNull(&(m_pset->m_Borrow_Date),FALSE); 
	m_pset->m_Borrow_Date=oriTime; 
	 
	m_pset->SetFieldNull(&(m_pset->m_Return_Date),FALSE); 
	m_pset->m_Return_Date=curTime; 
 
	m_pset->SetFieldNull(&(m_pset->m_Puni_Money),FALSE); 
	m_pset->m_Puni_Money=m_dblPunish; 
 
	m_pset->Update(); 
	m_pset->Requery(); 
 
	m_pset->Close(); 
	m_database.Close(); 
	MessageBox("挂失成功","图书挂失"); 
} 
 
void CBookLostDlg::OnClose()  
{ 
	if(m_database.IsOpen()) 
		m_database.Close(); 
	OnOK(); 
}