📄 bookborrowdlg.cpp
字号:
// BookBorrowDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "library.h"
#include "BookBorrowDlg.h"
#include "book.h"
#include "borrow.h"
#include "card.h"
#include "afxwin.h"
#include "atltime.h"
// CBookBorrowDlg 对话框
IMPLEMENT_DYNAMIC(CBookBorrowDlg, CDialog)
CBookBorrowDlg::CBookBorrowDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBookBorrowDlg::IDD, pParent)
, m_strBookNum(_T(""))
, m_strCardNum(_T(""))
{
}
CBookBorrowDlg::~CBookBorrowDlg()
{
}
void CBookBorrowDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_Book_Num, m_strBookNum);
DDX_Text(pDX, IDC_Card_Num, m_strCardNum);
DDX_Control(pDX, IDC_BORROWED, m_borrowed);
}
BEGIN_MESSAGE_MAP(CBookBorrowDlg, CDialog)
ON_BN_CLICKED(IDOK, &CBookBorrowDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON1, &CBookBorrowDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
// CBookBorrowDlg 消息处理程序
void CBookBorrowDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();
if(!IsValidCard(m_strCardNum))
{
CDialog::OnOK();
return ;
}
if(!AllowedToBorrow(m_strBookNum))
{
CDialog::OnOK();
return;
}
if(AnyBookExpired(m_strCardNum))
{
CDialog::OnOK();
return;
}
if(BorrowBook(m_strCardNum,m_strBookNum))
{
AfxMessageBox(_T("借书成功"));
}
else
{
AfxMessageBox(_T("借书失败"));
}
OnOK();
}
bool CBookBorrowDlg::IsValidCard(const CString & cardNum)
{
if(!m_cardSet.IsOpen())
{
m_cardSet.Open();
}
UpdateData();
m_borrowed.ResetContent();
//指定查询条件Cno为卡号
m_cardSet.m_strFilter=(CString)"cno like '"+(CString)cardNum+(CString)"' ";
m_cardSet.Requery();
if(m_cardSet.IsEOF())
{
AfxMessageBox(_T("该卡号不存在"));
m_cardSet.Close();
return false;
}
return true;
}
bool CBookBorrowDlg::AnyBookExpired(const CString & cardNum)
{
CTime Time;
int nBooks=0;
if(!m_borrowSet.IsOpen())
{
m_borrowSet.Open();
}
m_cardSet.m_strFilter=(CString)"cno like '"+(CString)cardNum+(CString)"' ";
m_borrowSet.m_strFilter=(CString)"cno like '"+(CString)cardNum+(CString)"' ";
m_borrowSet.Requery();
CTime today =CTime::GetCurrentTime();
while(!m_borrowSet.IsEOF())
{
nBooks++;
if(today-m_borrowSet.m_return_date>0)
{
AfxMessageBox(_T("您有书过期了"));
return true ;
}
m_borrowSet.MoveNext();
}
if(nBooks>2)
{
AfxMessageBox(_T("您借书超过3本"));
return true;
}
return false;
}
bool CBookBorrowDlg::AllowedToBorrow(const CString & bno)
{
CTime rtime;
if(!m_bookSet.IsOpen())
m_bookSet.Open();
m_bookSet.m_strFilter=(CString)"bno like '"+(CString)bno+(CString)"'";
m_bookSet.Requery();
if(m_bookSet.IsEOF())
{
AfxMessageBox(_T("该书不存在"));
m_bookSet.Close();
return false;
}
if(!m_bookSet.m_stock)
{
AfxMessageBox(_T("该书已全部借出"));
m_borrowSet.Open();
m_borrowSet.m_strFilter=(CString)"bno like '"+(CString)bno+(CString)"'";
m_borrowSet.Requery();
rtime=m_borrowSet.m_return_date;
while(!m_borrowSet.IsEOF())
{
if((rtime-m_borrowSet.m_return_date)>0)
rtime=m_borrowSet.m_return_date;
m_borrowSet.MoveNext();
}
CString message;
message.Format((CString)"最近归还时间 %d-%d-%d %d: %d:%d",rtime.GetYear(),rtime.GetMonth(),rtime.GetDay(),rtime.GetHour(),rtime.GetMinute(),rtime.GetSecond());
AfxMessageBox(message);
m_bookSet.Close();
m_borrowSet.Close();
return false;
}
return true;
}
bool CBookBorrowDlg::BorrowBook(const CString & cardNum, const CString & bno)
{
CTime rtime;
if(!m_bookSet.IsOpen())
m_bookSet.Open();
m_bookSet.m_strFilter=(CString)"bno like '"+(CString)bno+(CString)"'";
m_bookSet.Requery();
m_bookSet.Edit();
m_bookSet.m_stock -= 1;
m_bookSet.Update();
if(!m_borrowSet.IsOpen())
m_borrowSet.Open();
CTime today=CTime::GetCurrentTime();
m_borrowSet.AddNew();
m_borrowSet.m_bno=bno;
m_borrowSet.m_cno=cardNum;
m_borrowSet.m_borrow_date=today;
m_borrowSet.m_return_date=m_borrowSet.m_borrow_date+2592000;
m_borrowSet.Update();
m_bookSet.Close();
m_borrowSet.Close();
return true;
}
void CBookBorrowDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
m_cardSet.Open();
UpdateData();
m_borrowed.ResetContent();
m_cardSet.m_strFilter=(CString)"cno like '"+(CString)m_strCardNum+(CString)"' ";
m_cardSet.Requery();
if(m_cardSet.IsEOF())
{
AfxMessageBox(_T("没有该借书证!"));
m_cardSet.Close();
return;
}
m_borrowSet.Open();
m_borrowSet.m_strFilter=(CString)"cno like '"+(CString)m_strCardNum+(CString)"' ";
m_borrowSet.Requery();
m_bookSet.Open();
if(m_borrowSet.IsEOF())
{
m_borrowed.AddString(_T("没有借书记录"));
AfxMessageBox(_T("没有借书记录"));
}
else
{
while(!m_borrowSet.IsEOF())
{
m_bookSet.m_strFilter=(CString)"bno like '"+(CString)m_borrowSet.m_bno+(CString)"' ";
m_bookSet.Requery();
CString stryear,strprice,strtotal,strstock;
stryear.Format((CString)"%d",m_bookSet.m_year);
strprice.Format((CString)"%.2f",m_bookSet.m_price);
strtotal.Format((CString)"%d",m_bookSet.m_total);
strstock.Format((CString)"%d",m_bookSet.m_stock);
CString a[9],str;
str.Empty();
a[0]=(CString)"书号:"+(CString)m_bookSet.m_bno+(CString)" ";
a[1]=(CString)"类别:"+(CString)m_bookSet.m_category+(CString)" ";
a[2]=(CString)"书名:"+(CString)m_bookSet.m_title+(CString)" ";
a[3]=(CString)"出版社:"+(CString)m_bookSet.m_press+(CString)" ";
a[4]=(CString)"年份:"+stryear+(CString)" ";
a[5]=(CString)"作者:"+(CString)m_bookSet.m_author+(CString)" ";
a[6]=(CString)"价格:"+strprice+(CString)" ";
a[7]=(CString)"总藏书量:"+strtotal+(CString)" ";
a[8]=(CString)"库存:"+strstock+(CString)" ";
for(int i=0;i<9;i++)
{
str+=a[i];
str+=(CString)"|";
}
m_borrowed.AddString(str);
m_borrowSet.MoveNext();
}
}
m_cardSet.Close();
m_bookSet.Close();
m_borrowSet.Close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -