📄 borrowborrowdlg.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 + -