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

📄 bookborrowdlg.cpp

📁 小型图书管理系统
💻 CPP
字号:
// BookBorrowDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Library_5.h"
#include "BookBorrowDlg.h"
#include "ManagerLandDlg.h"

#include "BookRS.h"
#include "CardRS.h"
#include "BorrowRS.h"
#include "Global.h"
 
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBookBorrowDlg dialog


CBookBorrowDlg::CBookBorrowDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CBookBorrowDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBookBorrowDlg)
	m_strBookNum = _T("");
	m_strCardNum = _T("");
	//}}AFX_DATA_INIT
}


void CBookBorrowDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBookBorrowDlg)
	DDX_Control(pDX, IDC_LIST_RESULT, m_listResult);
	DDX_Control(pDX, IDC_LIST_DETAIL, m_listDetail);
	DDX_Text(pDX, IDC_BOOK_NUM, m_strBookNum);
	DDX_Text(pDX, IDC_CARD_NUM, m_strCardNum);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBookBorrowDlg, CDialog)
	//{{AFX_MSG_MAP(CBookBorrowDlg)
	ON_BN_CLICKED(ID_QUERY, OnQuery)
	ON_LBN_SELCHANGE(IDC_LIST_RESULT, OnSelchangeListResult)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBookBorrowDlg message handlers

void CBookBorrowDlg::OnQuery() 
{
	UpdateData();

	m_listResult.ResetContent();
	m_listDetail.ResetContent();
	if (!m_borrowSet.IsOpen())
		m_borrowSet.Open();
	if (!m_bookSet.IsOpen())
		m_bookSet.Open();
	if (!m_cardSet.IsOpen())
		m_cardSet.Open();

	CString strFilter,str;
	strFilter.Format(" cno = '%s'",m_strCardNum);
	m_cardSet.m_strFilter=strFilter;
	m_cardSet.Requery();

	if(m_cardSet.IsEOF())
	{
		AfxMessageBox("卡号不存在");
		return ;
	}
	if(m_cardSet.m_flag=="挂失")
	{
		AfxMessageBox("您的借书证已挂失");
		return ;
	}
	strFilter.Format("cno= '%s' and return_date is null ",m_strCardNum);

	m_borrowSet.m_strFilter=strFilter;
	m_borrowSet.Requery();
	if (m_borrowSet.IsEOF())
	{
		AfxMessageBox("该借书证号没有未归还的图书");
	}

	strFilter.Format("cno='%s' ",m_strCardNum);

	m_borrowSet.m_strFilter=strFilter;
	m_borrowSet.Requery();

	while (!m_borrowSet.IsEOF())
	{			
		m_listResult.AddString(m_borrowSet.m_bno);
		m_borrowSet.MoveNext();
	}	
}

void CBookBorrowDlg::OnSelchangeListResult() 
{
	CString aColCaption[9];
	aColCaption[0]="书号:            ";
	aColCaption[1]="种类:            ";
	aColCaption[2]="书名:            ";
	aColCaption[3]="出版社:          ";
	aColCaption[4]="出版日期:      ";
	aColCaption[5]="作者:             ";
	aColCaption[6]="价格:             ";
	aColCaption[7]="藏书总量:       ";
	aColCaption[8]="当前库存量:    ";

	m_listDetail.ResetContent();
	
	int curSel;
	CString strDetail;
	CString strLine;
	curSel=m_listResult.GetCurSel();
	m_bookSet.SetAbsolutePosition(curSel+1);
	
	for(int i=0;i<m_bookSet.m_nFields;i++)
	{
		m_bookSet.GetFieldValue(i,strDetail);
		strLine.Empty();
		strLine+=aColCaption[i];
		strLine+=strDetail;
		m_listDetail.AddString(strLine);
	}
	// TODO: Add your control notification handler code here
	
}

void CBookBorrowDlg::OnOK() 
{
	CLibrary_5App *App = (CLibrary_5App *)AfxGetApp();
	CString managerNum=App->managerID;
	UpdateData();
	if(managerNum=="无管理员登录")
	{
		AfxMessageBox("无管理员登录,请先登录");
		CManagerLandDlg managerLandDlg;
		managerLandDlg.DoModal();
		if((managerNum=App->managerID)=="无管理员登录")
			return;
	}


	if(AnyBookExpired(m_strCardNum))
	{
		return ;
	}

	if(!AllowedToBorrow(m_strBookNum))
	{
		return;
	}

	if(!m_borrowSet.IsOpen())
	{
		m_borrowSet.Open();
	}

	m_borrowSet.m_strFilter.Format("cno = '%s' and bno= '%s' and return_date is null",m_strCardNum,m_strBookNum);
	m_borrowSet.Requery();

	if(!m_borrowSet.IsEOF())
	{
		AfxMessageBox("已借过此书!");
		return;
	}


	if(BorrowBook(m_strCardNum,m_strBookNum,managerNum))
	{
		AfxMessageBox("借书成功");
	}
	else
	{
		AfxMessageBox("借书失败");
	}
	
//	CDialog::OnOK();
}


bool CBookBorrowDlg::AnyBookExpired(const CString &cardNum)
{
	int nBooks=0;
	if(!m_borrowSet.IsOpen())
	{
		m_borrowSet.Open();
	}

	m_borrowSet.m_strFilter.Format("cno= '%s' and Return_date is null",cardNum);
	m_borrowSet.Requery();
	CTime today = CTime::GetCurrentTime();
	CTimeSpan diffDays;

	while(!m_borrowSet.IsEOF())
	{
		nBooks++;
		diffDays = today-m_borrowSet.m_borrow_date;
		if(diffDays.GetDays()>30)
		{
			AfxMessageBox("您有书过期了");
			return TRUE;
		}
		m_borrowSet.MoveNext();
	}

	if(nBooks>12)
	{
		AfxMessageBox("您借书总数超额了");
		return TRUE;
	}

	return FALSE;

}


bool CBookBorrowDlg::AllowedToBorrow(const CString &bno)
{
	if(!m_bookSet.IsOpen())
	{
		m_bookSet.Open();
	}

	m_bookSet.m_strFilter.Format("bno= '%s' ",bno);
	m_bookSet.Requery();

	if(m_bookSet.IsEOF())
	{
		AfxMessageBox("该书不存在");
		return FALSE;
	}

	if(!(m_bookSet.m_stocked_num>0))
	{
		if(!m_borrowSet.IsOpen())
		{
			m_borrowSet.Open();
		}

		m_borrowSet.m_strFilter.Format("bno = '%s'  ",m_strBookNum);
		m_borrowSet.Requery();

		CTime day=CTime::GetCurrentTime();
		while(!m_borrowSet.IsEOF())
		{
			if(m_borrowSet.m_borrow_date<day)
				day=m_borrowSet.m_borrow_date;
			m_borrowSet.MoveNext();
		}
		day=day+30*3600*24;

		CString str;
		str.Format("%d-%d-%d",day.GetYear(),day.GetMonth(),day.GetDay());


		AfxMessageBox("该书已全借出,最早归还时间:"+str);
		return FALSE;
	}


	m_listResult.ResetContent();

	if(!m_bookSet.IsOpen())
	{
		m_bookSet.Open();
	}


	while(!m_bookSet.IsEOF())
	{
		m_listResult.AddString(m_bookSet.m_title);
		m_bookSet.MoveNext();
	}

	return TRUE;
}


bool CBookBorrowDlg::BorrowBook(const CString &cardNum, const CString &bookNum, const CString &managerNum)
{
	CTimeSpan span(30,0,0,0);
	CTime nextMonth=CTime::GetCurrentTime()+span;

	if(!m_bookSet.IsOpen())
	{
		m_bookSet.Open();
	}

	m_bookSet.m_strFilter.Format("bno= '%s'",bookNum);
	m_bookSet.Requery();
	m_bookSet.Edit();
	m_bookSet.m_stocked_num=m_bookSet.m_stocked_num-1;
	m_bookSet.Update();

	if(!m_borrowSet.IsOpen())
	{
		m_borrowSet.Open();
	}

	m_borrowSet.AddNew();
	m_borrowSet.m_bno=bookNum;
	m_borrowSet.m_cno=cardNum;
	m_borrowSet.m_borrow_date=CTime::GetCurrentTime();
	m_borrowSet.m_mno=managerNum;
	m_borrowSet.Update();
	m_borrowSet.Requery();
	
	return true;
}

⌨️ 快捷键说明

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