📄 borrowmanagedlg.cpp
字号:
// BorrowManageDlg.cpp : implementation file
//
#include "stdafx.h"
#include "LibraryManage.h"
#include "BorrowManageDlg.h"
#include "CommonFunc.h"
// CBorrowManageDlg dialog
IMPLEMENT_DYNAMIC(CBorrowManageDlg, CDialog)
CBorrowManageDlg::CBorrowManageDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBorrowManageDlg::IDD, pParent)
, strReaderID_(_T(""))
, strBookID_(_T(""))
, szBookID_(_T(""))
, strReaderName_(_T(""))
, strBookName_(_T(""))
, strReaderType_(_T(""))
, strBookType_(_T(""))
, nOutNumLimit_(0)
, nOutDayLimit_(0)
, nAlOutNum_(0)
, dPunish_(0.0)
, strOperatorName_(_T(""))
, oleDeadLineDT_(CTime::GetCurrentTime())
, oleBorrwDT_(CTime::GetCurrentTime())
, strSQL_(_T(""))
, eType_(BORROW)
, nDamReate_(0)
, nBorOutNumLimit_(0)
, bRenewed_(TRUE)
, bOff_(FALSE)
{
}
CBorrowManageDlg::~CBorrowManageDlg()
{
}
void CBorrowManageDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBorrowManageDlg)
DDX_Control(pDX, IDC_EDIT_BREADERID, ctrlReaderID_);
DDX_Control(pDX, IDC_EDIT_BBOOKID, ctrlBookID_);
DDX_Control(pDX, IDC_COMBO_BORROWED, ctrlComBorrowed_);
DDX_Control(pDX, IDC_EDIT_PUNISH, ctrlPunish_);
DDX_Text(pDX, IDC_EDIT_BREADERID, strReaderID_);
DDV_MaxChars(pDX, strReaderID_, 10);
DDX_Text(pDX, IDC_EDIT_BBOOKID, strBookID_);
DDV_MaxChars(pDX, strBookID_, 10);
DDX_CBString(pDX, IDC_COMBO_BORROWED, szBookID_);
DDX_Text(pDX, IDC_EDIT_BREADERNAME, strReaderName_);
DDX_Text(pDX, IDC_EDIT_BBOOKNAME, strBookName_);
DDX_Text(pDX, IDC_EDIT_BREADERTYPE, strReaderType_);
DDX_Text(pDX, IDC_EDIT_BBOOKTYPE, strBookType_);
DDX_Text(pDX, IDC_EDIT_BOUTNUMBER, nOutNumLimit_);
DDX_Text(pDX, IDC_EDIT_BBORDAY, nOutDayLimit_);
DDX_Text(pDX, IDC_EDIT_BAROUTNUM, nAlOutNum_);
DDX_Text(pDX, IDC_EDIT_RATE, nDamReate_);
DDX_Text(pDX, IDC_EDIT_PUNISH, dPunish_);
DDX_Text(pDX, IDC_EDIT_OPERATORNAME, strOperatorName_);
DDX_Text(pDX, IDC_EDIT_BBORNUM, nBorOutNumLimit_);
DDX_DateTimeCtrl(pDX, IDC_DATETIME_DEADLINE, oleDeadLineDT_);
DDX_DateTimeCtrl(pDX, IDC_DATETIME_BORROWDAY, oleBorrwDT_);
DDX_Check(pDX, IDC_CHECK_RENEW, bRenewed_);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBorrowManageDlg, CDialog)
//{{AFX_MSG_MAP(CBorrowManageDlg)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_EN_CHANGE(IDC_EDIT_BREADERID, OnEnChangeEditBreaderid)
ON_EN_CHANGE(IDC_EDIT_BBOOKID, OnEnChangeEditBbookid)
ON_CBN_SELCHANGE(IDC_COMBO_BORROWED, OnCbnSelchangeComboBorrowed)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//! 根据读者ID查询读者基本信息表
BOOL CBorrowManageDlg::QueryReader()
{
strSQL_.Format(_T("SELECT * FROM ReaderInfo WHERE ReaderID = '%s'"), strReaderID_);
if (rdRS_.IsOpen())rdRS_.Close();
if (!rdRS_.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL_))
{
AfxMessageBox(IDS_OPENDBFAIL);
return FALSE;
}
if (rdRS_.GetRecordCount() == 0)
{
rdRS_.Close();
return FALSE;
}
strReaderName_ = rdRS_.m_ReaderName;
strReaderType_ = rdRS_.m_Type;
dPunish_ = rdRS_.m_Punish;
rdRS_.Close();
return TRUE;
}
//! 根据读者ID查询读者可借书册书
BOOL CBorrowManageDlg::QueryReaderType()
{
strSQL_.Format(_T("SELECT * FROM ReaderType WHERE Type = '%s'"), strReaderType_);
if (rdtRS_.IsOpen())rdtRS_.Close();
if (!rdtRS_.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL_))
{
AfxMessageBox(IDS_OPENDBFAIL);
return FALSE;
}
if (rdtRS_.GetRecordCount() == 0)
{
rdtRS_.Close();
return FALSE;
}
nOutNumLimit_ = rdtRS_.nNumber_;
rdtRS_.Close();
return TRUE;
}
BOOL CBorrowManageDlg::QueryBorrowInfo(CString strReaderID, CString strBookID /* = _T */ )
{
if (strReaderID.IsEmpty())
return FALSE;
else
{
if (strBookID.IsEmpty())
strSQL_.Format(_T("SELECT * FROM BorrowInfo WHERE ReaderID = '%s'"), strReaderID);
else
strSQL_.Format(_T("SELECT * FROM BorrowInfo WHERE ReaderID \
= '%s' AND BookID = '%s'"), strReaderID, strBookID);
}
if (biRS_.IsOpen())biRS_.Close();
if (!biRS_.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL_))
{
AfxMessageBox(IDS_OPENDBFAIL);
return FALSE;
}
nAlOutNum_ = 0;
if (biRS_.GetRecordCount() != 0)
{
while(!biRS_.IsEOF())
{
if (!biRS_.bReturned_)
{
++nAlOutNum_;
if (strBookID.IsEmpty())
ctrlComBorrowed_.AddString(biRS_.strBookID_);
}
biRS_.MoveNext();
}
}
bRenewed_ = !biRS_.bRenewed_;
biRS_.Close();
if (strBookID.IsEmpty())
nOutNumLimit_ -= nAlOutNum_;
if (nAlOutNum_)
{
oleBorrwDT_ = biRS_.oleBorrowDT_;
oleDeadLineDT_ = biRS_.oleDeadLineDT_;
}
return TRUE;
}
//! 根据图书ID查询图书基本信息表
BOOL CBorrowManageDlg::QueryBook()
{
strSQL_.Format(_T("SELECT * FROM BookInfo WHERE BookID = '%s'"), strBookID_);
if (bkRS_.IsOpen())bkRS_.Close();
if (!bkRS_.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL_))
{
AfxMessageBox(IDS_OPENDBFAIL);
return FALSE;
}
if (bkRS_.GetRecordCount() == 0)
{
bkRS_.Close();
return FALSE;
}
strBookName_ = bkRS_.strBookName_;
strBookType_ = bkRS_.strBookType_;
nBorOutNumLimit_ = bkRS_.nInNumber_;
dPrice_ = bkRS_.dPrice_;
bkRS_.Close();
return TRUE;
}
//! 根据图书ID查询可借出天数
BOOL CBorrowManageDlg::QueryBookType()
{
strSQL_.Format(_T("SELECT * FROM BookType WHERE Type = '%s'"), strBookType_);
if (bkRS_.IsOpen())bkRS_.Close();
if (!bktRS_.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL_))
{
AfxMessageBox(IDS_OPENDBFAIL);
return FALSE;
}
if (bktRS_.GetRecordCount() == 0)
{
bktRS_.Close();
return FALSE;
}
nOutDayLimit_ = bktRS_.nNumber_;
bktRS_.Close();
return TRUE;
}
BOOL CBorrowManageDlg::BorrowBook()
{
double punishlimit = 0.0;
QueryPunishLimit(strReaderType_, punishlimit);
if ((nOutNumLimit_ <= 0) || (nBorOutNumLimit_ <= 0)|| (nOutDayLimit_ <= 0))
{
MessageBox(_T("无法完成借书!"), theApp.strSystemName);
return FALSE;
}
if (dPunish_ >= punishlimit)
{
MessageBox(_T("无法完成借书!\n\n请先缴纳罚款!"), theApp.strSystemName);
return FALSE;
}
CString strSQL[2];
strSQL[0].Format(_T("SELECT * FROM BookInfo WHERE BookID = '%s'"), strBookID_);
strSQL[1] = _T("SELECT * FROM BorrowInfo");
if (bkRS_.IsOpen())bkRS_.Close();
if (biRS_.IsOpen())biRS_.Close();
if (!bkRS_.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL[0]) ||
!biRS_.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL[1]))
{
MessageBox(_T("数据库打开失败!\n无法完成借书!"), theApp.strSystemName);
return FALSE;
}
if (bkRS_.GetRecordCount() == 0)
{
bkRS_.Close();
biRS_.Close();
MessageBox(_T("未找到图书!"), theApp.strSystemName);
return FALSE;
}
bkRS_.Edit();
--bkRS_.nInNumber_;
++nAlOutNum_;
++bkRS_.nOutNumber_;
--nOutNumLimit_;
biRS_.AddNew();
biRS_.lRecordID_ = biRS_.GetRecordCount() + 1;
biRS_.strReaderID_ = strReaderID_;
biRS_.strBookID_ = strBookID_;
biRS_.oleBorrowDT_ = oleBorrwDT_;
biRS_.oleReturnDT_ = 0;
biRS_.bReturned_ = FALSE;
biRS_.bRenewed_ = FALSE;
biRS_.strOperator_ = theApp.GetOperator();
biRS_.oleDeadLineDT_ = oleDeadLineDT_;
biRS_.Update();
bkRS_.Update();
biRS_.Close();
bkRS_.Close();
return TRUE;
}
BOOL CBorrowManageDlg::RenewBook()
{
double punishlimit = 0.0;
QueryPunishLimit(strReaderType_, punishlimit);
int days = (int)(oleDeadLineDT_ - CTime::GetCurrentTime()).GetDays();
strSQL_.Format(_T("SELECT * FROM BorrowInfo WHERE ReaderID = '%s' AND BookID = '%s'"),
strBookID_, strBookID_);
if (!bRenewed_)
{
MessageBox(_T("此书已经续借过,不能再续借了"), theApp.strSystemName);
return FALSE;
}
if (days < 0)
{
MessageBox(_T("已经过了续借期限!"), theApp.strSystemName);
return FALSE;
}
if ((UINT)days > nOutDayLimit_ / 2)
{
MessageBox(_T("续借得太早了!"), theApp.strSystemName);
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -