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

📄 borrowborrowdlg.cpp

📁 同学编写的图书馆管理系统(数据库原理大作业)
💻 CPP
字号:
// BorrowBorrowDlg.cpp : implementation file
//

#include "stdafx.h"
#include "LIBRARY.h"
// 手动添加
#include "BookRS1.h"
#include "CardRS.h"
#include "BorrowRS.h"
// 添加完毕
#include "BorrowBorrowDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBorrowBorrowDlg dialog


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


void CBorrowBorrowDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBorrowBorrowDlg)
	DDX_Control(pDX, IDC_LIST_DETAIL, m_listDetail);
	DDX_Control(pDX, IDC_LIST_BORROWED, m_listBorrowed);
	DDX_Text(pDX, IDC_BOOK_NUM, m_strBookNum);
	DDX_Text(pDX, IDC_CARD_NUM, m_strCardNum);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBorrowBorrowDlg, CDialog)
	//{{AFX_MSG_MAP(CBorrowBorrowDlg)
	ON_LBN_SELCHANGE(IDC_LIST_BORROWED, OnSelchangeListBorrowed)
	ON_BN_CLICKED(IDBORROWHISTORY, OnBorrowhistory)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBorrowBorrowDlg message handlers

void CBorrowBorrowDlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData();
//	m_strCardNum="11111111";
//	UpdateData(FALSE);

	if (! IsValidCard(m_strCardNum))
	{
		return;
	}

	if (AnyBookExpired(m_strCardNum,m_strBookNum))
	{
//		CDialog::OnCancel();
		return;
	}

	if(BorrowBook(m_strCardNum,m_strBookNum))
		AfxMessageBox("恭喜您,借书成功!");
	else return;//AfxMessageBox("借书失败!");
	
	CDialog::OnOK();
}

bool CBorrowBorrowDlg::IsValidCard(const CString& cardNum)
{
	if (!m_cardSet.IsOpen())
		m_cardSet.Open();

	m_cardSet.m_strFilter.Format("Cno= '%s'",cardNum);
	m_cardSet.Requery();

	if (m_cardSet.IsEOF())
	{
		AfxMessageBox("抱歉,该卡号不存在!请检查输入。");
		return false;
	}

	return true;
}

bool CBorrowBorrowDlg::AnyBookExpired(const CString& cardNum,const CString& bookNum)
{
	CString tmpstr;
	CString bookNumm;
	m_listBorrowed.ResetContent();
	int nBooks=0;
	bool flag=false;

	if (!m_borrowSet.IsOpen())
		m_borrowSet.Open();
	m_borrowSet.m_strFilter.Format("cno= '%s' and return_date is null ",cardNum);
//    m_borrowSet.m_strSort="borrow_date desc";
	m_borrowSet.Requery();
	if (m_borrowSet.IsEOF())
	{
		if (bookNum=="") AfxMessageBox("当前无借书记录!");
		return false;
	}
	CTime today=CTime::GetCurrentTime();
	CTimeSpan diffDays;


	while (!m_borrowSet.IsEOF())
	{
		nBooks++;
		CTime myTime=m_borrowSet.m_borrow_date;
		CString strTime=myTime.Format("%Y-%m-%d %H:%M:%S"); 
		tmpstr="     "+strTime+"                "+m_borrowSet.m_bno+"               ";
		if (!m_bookSet.IsOpen())
			m_bookSet.Open();
		bookNumm=m_borrowSet.m_bno;
		m_bookSet.m_strFilter.Format("bno= '%s'",bookNumm);
		m_bookSet.Requery();
		int k=(34 - m_bookSet.m_title.GetLength());
		for (int i = 0; i < k; i++)
			tmpstr+=" ";
		tmpstr+=m_bookSet.m_title;
		m_listBorrowed.AddString(tmpstr);

		diffDays=today-m_borrowSet.m_borrow_date;
		
		if(diffDays.GetDays()>45)
		{
			flag=true;
		}
		m_borrowSet.MoveNext();
	}
	if (flag==true)	{AfxMessageBox("温馨提醒:您有书过期了,归还后才能继续借书!");return flag;}
	if (nBooks>4 && bookNum!="")
	{
		AfxMessageBox("温馨提醒:您的借书总数已达到上限,请先归还部分图书才能继续借书!");
		flag=true;
	}
//	AfxMessageBox("!!");
	return flag;
}

bool CBorrowBorrowDlg::BorrowBook(const CString &cardNum, const CString &bookNum)
{
	CLIBRARYApp *App = (CLIBRARYApp *)AfxGetApp();
	CTime MinTime/*(3000,12,31,1,1,1,0);//*/=CTime::GetCurrentTime();
	if (bookNum=="") return false;
	if (!m_bookSet.IsOpen())
		m_bookSet.Open();
	m_bookSet.m_strFilter.Format("bno= '%s'",bookNum);
	m_bookSet.Requery();

	if (m_bookSet.IsEOF())
	{
		AfxMessageBox("抱歉,该书号不存在,请检查输入是否正确。");
		return false;
	}

	if (m_bookSet.m_stockednum==0)
	{
		if(!m_borrowSet.IsOpen())
			m_borrowSet.Open();
		m_borrowSet.m_strFilter.Format("bno= '%s' and return_date is null",bookNum);
		m_borrowSet.Requery();

		while(!m_borrowSet.IsEOF())
		{
			if (m_borrowSet.m_borrow_date<MinTime)
				MinTime=m_borrowSet.m_borrow_date;

			m_borrowSet.MoveNext();
		}		
		CTimeSpan span(45,0,0,0);
		CTime myTime=MinTime+span;
		CString strTime;
		strTime=myTime.Format("%Y-%m-%d %H:%M:%S"); 
		AfxMessageBox("该书暂无库存,请在 "+strTime+" 之后来借,谢谢!");
		return false;
	}

	m_bookSet.Edit();
	m_bookSet.m_stockednum--;
	m_bookSet.Update();
	m_bookSet.Requery();

	//AfxMessageBox("!!");

	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_aid=App->aID;    //Need to be changed

	m_borrowSet.Update();
	m_borrowSet.Requery();
	return true;
}


void CBorrowBorrowDlg::OnSelchangeListBorrowed() 
{
	// TODO: Add your control notification handler code here
	CString Title[9];
	Title[0]="图书编号:        ";
	Title[1]="类别:              ";
	Title[2]="书名:              ";
	Title[3]="出版社:           ";
	Title[4]="出版年份:        ";
	Title[5]="作者:              ";
	Title[6]="价格:              ";
	Title[7]="总藏书量:        ";
	Title[8]="现藏数量:        ";
	m_listDetail.ResetContent();
	int curSel;
	CString strDetail;
	CString strline;
	curSel=m_listBorrowed.GetCurSel();
	m_borrowSet.SetAbsolutePosition(curSel+1);
	for (unsigned int i=0;i<m_bookSet.m_nFields;i++)
	{
		CString bookNumm=m_borrowSet.m_bno;
		if (!m_bookSet.IsOpen())
			m_bookSet.Open();
		bookNumm=m_borrowSet.m_bno;
		m_bookSet.m_strFilter.Format("bno= '%s'",bookNumm);
		m_bookSet.Requery();
		m_bookSet.GetFieldValue(i,strDetail);
		strline.Empty();
		strline+=Title[i];
		strline+=strDetail;
		m_listDetail.AddString(strline);
	}
}


void CBorrowBorrowDlg::OnBorrowhistory() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	m_strBookNum="";
	UpdateData(FALSE);
	OnOK();
}

⌨️ 快捷键说明

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