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


// BorrowDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "Library.h" 
#include "BorrowDlg.h" 
#include "ProofSet.h" 
#include "BookSet.h" 
#include "BorrowSet.h" 
#include "CheckBorrowDlg.h" 
#include "CheckBooksDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CBorrowDlg dialog 
 
 
CBorrowDlg::CBorrowDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CBorrowDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CBorrowDlg) 
	m_strBookID = _T(""); 
	m_strProofID = _T(""); 
	//}}AFX_DATA_INIT 
} 
 
 
void CBorrowDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CBorrowDlg) 
	DDX_Control(pDX, IDC_LIST_SHOW, m_ctrList); 
	DDX_Text(pDX, IDC_EDIT_BOOK, m_strBookID); 
	DDX_Text(pDX, IDC_EDIT_PROOF, m_strProofID); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CBorrowDlg, CDialog) 
	//{{AFX_MSG_MAP(CBorrowDlg) 
	ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk) 
	ON_BN_CLICKED(IDC_BUTTON_BACK, OnButtonBack) 
	ON_WM_CLOSE() 
	ON_BN_CLICKED(IDC_BUTTON_CHECK_BORROW, OnButtonCheckBorrow) 
	ON_BN_CLICKED(IDC_BUTTON_RETURN, OnButtonReturn) 
	ON_BN_CLICKED(IDC_BUTTON_CHECK_BOOKS, OnButtonCheckBooks) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CBorrowDlg message handlers 
void CBorrowDlg::OnButtonOk()  
{ 
	UpdateData(); 
	if(m_strProofID==""||m_strBookID=="") 
	{ 
		MessageBox("请输入完整信息!","借书管理",MB_ICONERROR); 
		m_strProofID.Empty(); 
		m_strBookID.Empty(); 
		UpdateData(FALSE); 
		return; 
	} 
 
	if(!m_database.IsOpen()) 
	{ 
		if(!m_database.Open(_T("Library"))) 
		{ 
			MessageBox("无法打开数据库!","借书管理"); 
			return; 
		} 
	} 
	 
	CString strSQL; 
	//判断借书人是否有资格 
	strSQL.Format("select * from Proof_Info where Proof_ID='%s'", m_strProofID); 
	CProofSet *m_pProof=new CProofSet(&m_database); 
	m_pProof->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pProof->GetRecordCount()==0) 
	{ 
		MessageBox("没有此人的信息","借书/还书",MB_ICONINFORMATION); 
		m_pProof->Close(); 
		m_database.Close(); 
		return; 
	} 
	CDBVariant varValue; 
	m_pProof->GetFieldValue(7,varValue); 
	if(varValue.m_iVal==5) 
	{ 
		//如果不满足条件 
		MessageBox("每人最多可借五本书!","借书/还书",MB_OK|MB_ICONINFORMATION); 
		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(); 
	//Book_Info表中,现存数量减一 
	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("查无此书!","借书/还书",MB_ICONINFORMATION); 
		m_pBook->Close(); 
		m_database.Close(); 
		return; 
	} 
	m_pBook->Edit(); 
	m_pBook->m_Now_Amount--; 
	m_pBook->Update(); 
	m_pBook->Requery(); 
	m_pBook->Close(); 
	//将借书信息存入借书信息表中 
	strSQL.Format("select * from Borrow_Info"); 
	CBorrowSet *m_pBorrow=new CBorrowSet(&m_database); 
	m_pBorrow->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pBorrow->GetRecordCount()==0) 
	{ 
		MessageBox("没有借阅信息!","借书/还书",MB_OK|MB_ICONINFORMATION); 
	} 
	 
	m_pBorrow->AddNew(); 
	 
	m_pBorrow->SetFieldNull(&(m_pBorrow->m_Proof_ID),FALSE); 
	m_pBorrow->m_Proof_ID=m_strProofID; 
 
	m_pBorrow->SetFieldNull(&(m_pBorrow->m_Book_ID),FALSE); 
	m_pBorrow->m_Book_ID=m_strBookID; 
 
	CTime curTime=CTime::GetCurrentTime(); 
	m_pBorrow->SetFieldNull(&(m_pBorrow->m_Borrow_Date),FALSE); 
	m_pBorrow->m_Borrow_Date=curTime; 
	 
	m_pBorrow->Update(); 
	m_pBorrow->Requery(); 
	m_pBorrow->Close(); 
	m_database.Close(); 
 
	MessageBox("成功借出!","借书/还书",MB_OK|MB_ICONINFORMATION); 
	RefreshData(); 
	 
} 
void CBorrowDlg::RefreshData() 
{ 
	//刷新显示 
	if(!m_database.IsOpen()) 
	{ 
		if(!m_database.Open(_T("Library"))) 
		{ 
			MessageBox("无法打开数据库!","借书/还书"); 
			return; 
		} 
	} 
	CString strSQL,m_strName,m_strBName,m_strBookNo,m_strSex; 
	char buf[50]; 
	CDBVariant varValue; 
	//处理借阅证信息 
	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->GetFieldValue(1,varValue); 
	m_strName=varValue.m_pstring->GetBuffer(1); 
	m_pProof->GetFieldValue(2,varValue); 
	m_strSex=varValue.m_pstring->GetBuffer(1); 
	m_pProof->Close(); 
 
	//处理表格 
	strSQL.Format("select * from Borrow_Info where Proof_ID='%s'",m_strProofID); 
	CBorrowSet *m_pBorrow=new CBorrowSet(&m_database); 
	m_pBorrow->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pBorrow->GetRecordCount()==0) 
	{ 
		MessageBox("无法得到借阅信息!","借书/还书",MB_OK|MB_ICONINFORMATION); 
		m_pBorrow->Close(); 
		m_database.Close(); 
		return; 
	} 
	m_ctrList.DeleteAllItems(); 
	m_pBorrow->MoveFirst(); 
	int i=0; 
	CBookSet *m_pBook=new CBookSet(&m_database); 
 
	while(!m_pBorrow->IsEOF()) 
	{ 
		m_ctrList.InsertItem(i,buf); 
		m_ctrList.SetItemText(i,0,m_strProofID); 
		 
		m_ctrList.SetItemText(i,1,m_strName); 
		m_ctrList.SetItemText(i,2,m_strSex); 
		m_pBorrow->GetFieldValue(2,varValue); 
		m_strBookNo=varValue.m_pstring->GetBuffer(1); 
		m_ctrList.SetItemText(i,3,m_strBookNo); 
		m_pBorrow->GetFieldValue(3,varValue); 
		sprintf(buf,"%d-%d-%d %d:%d:%d",varValue.m_pdate->year, 
			varValue.m_pdate->month,varValue.m_pdate->day, 
			varValue.m_pdate->hour,varValue.m_pdate->minute, 
			varValue.m_pdate->second); 
		m_ctrList.SetItemText(i,5,buf); 
		 
		strSQL.Format("select * from Book_Info where Book_ID='%s'",m_strBookNo); 
		m_pBook->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
		m_pBook->GetFieldValue(1,varValue); 
		m_ctrList.SetItemText(i,4,varValue.m_pstring->GetBuffer(1)); 
		m_pBook->Close(); 
		i++; 
		m_pBorrow->MoveNext(); 
	} 
	m_pBorrow->Close(); 
	m_database.Close(); 
} 
 
void CBorrowDlg::OnButtonCheckBorrow()  
{ 
	CCheckBorrowDlg dlg; 
	dlg.m_strProofID=m_strProofID; 
	dlg.DoModal(); 
} 
 
void CBorrowDlg::OnButtonBack()  
{ 
	if(m_database.IsOpen()) 
		m_database.Close(); 
	OnOK(); 
} 
 
void CBorrowDlg::OnClose()  
{ 
	OnButtonBack(); 
} 
 
BOOL CBorrowDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
		 
	m_ctrList.InsertColumn(0,"借阅证号"); 
	m_ctrList.InsertColumn(1,"姓名"); 
	m_ctrList.InsertColumn(2,"性别"); 
	m_ctrList.InsertColumn(3,"书号"); 
	m_ctrList.InsertColumn(4,"书籍名称"); 
	m_ctrList.InsertColumn(5,"借书日期"); 
 
	RECT rect; 
	m_ctrList.GetWindowRect(&rect); 
	int Width=rect.right-rect.left; 
	m_ctrList.SetColumnWidth(0,Width/6); 
	m_ctrList.SetColumnWidth(1,Width/6); 
	m_ctrList.SetColumnWidth(2,Width/6); 
	m_ctrList.SetColumnWidth(3,Width/6); 
	m_ctrList.SetColumnWidth(4,Width/6); 
	m_ctrList.SetColumnWidth(5,Width/6); 
	m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT); 
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
 
void CBorrowDlg::OnButtonReturn()  
{ 
	UpdateData(); 
	if(m_strProofID==""||m_strBookID=="") 
	{ 
		MessageBox("请输入完整信息!","借书管理",MB_ICONERROR); 
		m_strProofID.Empty(); 
		m_strBookID.Empty(); 
		UpdateData(FALSE); 
		return; 
	} 
 
	if(!m_database.IsOpen()) 
	{ 
		if(!m_database.Open(_T("Library"))) 
		{ 
			MessageBox("无法打开数据库!","借书管理"); 
			return; 
		} 
	} 
	 
	CString strSQL; 
	//借书信息表中是否有借书人的信息 
	strSQL.Format("select * from Borrow_Info where Proof_ID='%s' AND Book_ID='%s'",m_strProofID,m_strBookID); 
	CBorrowSet *m_pBorrow=new CBorrowSet(&m_database); 
	m_pBorrow->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pBorrow->GetRecordCount()==0) 
	{ 
		MessageBox("您没有借这本书!","借书/还书",MB_OK|MB_ICONINFORMATION); 
		m_pBorrow->Close(); 
		m_database.Close(); 
		return; 
	} 
	//借有这本书,删除这条记录信息。 
	m_pBorrow->Delete(); 
	m_pBorrow->Close(); 
	//将借书人借书的总数减一 
	strSQL.Format("select * from Proof_Info where Proof_ID='%s'", m_strProofID); 
	CProofSet *m_pProof=new CProofSet(&m_database); 
	m_pProof->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); 
	if(m_pProof->GetRecordCount()==0) 
	{ 
		MessageBox("数据库中没有这个人!","借书/还书",MB_ICONINFORMATION); 
		m_pProof->Close(); 
		m_database.Close(); 
		return; 
	} 
	CDBVariant varValue; 
	//借书量加一 
	m_pProof->Edit(); 
	m_pProof->m_Now_Borrow_Amount--; 
	m_pProof->Update(); 
	m_pProof->Requery(); 
	m_pProof->Close(); 
	//Book_Info表中,现存数量加一 
	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("对不起,本馆没有这本书!","借书/还书",MB_ICONINFORMATION); 
		m_pBook->Close(); 
		m_database.Close(); 
		return; 
	} 
	m_pBook->Edit(); 
	m_pBook->m_Now_Amount++; 
	m_pBook->Update(); 
	m_pBook->Requery(); 
	m_pBook->Close(); 
	 
	m_database.Close(); 
 
	MessageBox("成功返回!","借书/还书",MB_OK|MB_ICONINFORMATION); 
	RefreshData();		 
} 
 
void CBorrowDlg::OnButtonCheckBooks()  
{ 
	CCheckBooksDlg m_dlg; 
	m_dlg.DoModal(); 
}