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

📄 borrowmanagedlg.cpp

📁 LibraryManageDM.rar 数据库设计图书馆管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -