📄 borrowdlg.cpp
字号:
// BorrowDlg.cpp : implementation file
//
#include "stdafx.h"
#include "library.h"
#include "ReaderSet.h"
#include "BookSet.h"
#include "BorrowDlg.h"
#include "BorrrowSet.h"
#include "ReturnTableSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBorrowDlg dialog
CBorrowDlg::CBorrowDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBorrowDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBorrowDlg)
m_allow = 6;
m_allowday = 0;
m_already = 0;
m_bookprice = _T("");
m_bookid = _T("");
m_bookname = _T("");
m_readerid = _T("");
m_readername = _T("");
m_stillcan = 0;
//}}AFX_DATA_INIT
m_EableToBorrow = TRUE;
m_EableBeBorrowed = TRUE;
}
void CBorrowDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBorrowDlg)
DDX_Control(pDX, IDC_LIST, m_ctrList);
DDX_Text(pDX, IDC_EDIT_ALLOW, m_allow);
DDX_Text(pDX, IDC_EDIT_ALLOWDAY, m_allowday);
DDX_Text(pDX, IDC_EDIT_ALREADY, m_already);
DDX_Text(pDX, IDC_EDIT_BOOK_PRICE, m_bookprice);
DDX_Text(pDX, IDC_EDIT_BOOKID, m_bookid);
DDV_MaxChars(pDX, m_bookid, 5);
DDX_Text(pDX, IDC_EDIT_BOOKNAME, m_bookname);
DDX_Text(pDX, IDC_EDIT_READERID, m_readerid);
DDV_MaxChars(pDX, m_readerid, 10);
DDX_Text(pDX, IDC_EDIT_READERNAME, m_readername);
DDX_Text(pDX, IDC_EDIT_STILLCAN, m_stillcan);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBorrowDlg, CDialog)
//{{AFX_MSG_MAP(CBorrowDlg)
ON_EN_CHANGE(IDC_EDIT_READERID, OnChangeEditReaderid)
ON_EN_CHANGE(IDC_EDIT_BOOKID, OnChangeEditBookid)
ON_BN_CLICKED(IDOK, OnBorrow)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBorrowDlg message handlers
void CBorrowDlg::OnChangeEditReaderid()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData(true);
CReaderSet readerSet;
CString strsql;
strsql.Format("select * from Reader where CardID='%s'",m_readerid);
if(!readerSet.Open(AFX_DB_USE_DEFAULT_TYPE,strsql))
{
AfxMessageBox("连接数据库出错");
return;
}
if(0 == readerSet.GetRecordCount())
{
readerSet.Close();
return;
}
m_readername = readerSet.m_Name;
m_already = readerSet.m_BorrowNum;
m_stillcan = m_allow - m_already;
if(m_stillcan == 0)
{
m_EableToBorrow = FALSE;
MessageBox("借书册数已满,请先还书再借!","满",MB_OK);
}
readerSet.Close();
UpdateData(false);
}
void CBorrowDlg::OnChangeEditBookid()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CBookSet bookSet;
CString strsql;
strsql.Format("select * from Book where BookID='%s'",m_bookid);
if(!bookSet.Open(AFX_DB_USE_DEFAULT_TYPE,strsql))
{
AfxMessageBox("连接数据库错误");
return;
}
int bookNum = bookSet.GetRecordCount();
if(0 == bookNum)
{
bookSet.Close();
return;
}
if(bookSet.m_IsBorrow)
{
bookSet.Close();
MessageBox("该书已经借出","查询结果",MB_OK);
m_EableBeBorrowed = false;
return;
}
m_bookname = bookSet.m_BookName;
m_bookprice = bookSet.m_Price;
m_allowday = 60;
UpdateData(false);
bookSet.Close();
}
BOOL CBorrowDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// m_borrowSet = new CBorrowSet(&m_borrowDB);
//设置列表
m_ctrList.InsertColumn(0,"图书编号");
m_ctrList.InsertColumn(1,"图书名称");
m_ctrList.InsertColumn(2,"图书价格");
m_ctrList.InsertColumn(3,"借出日期");
m_ctrList.InsertColumn(4,"归还日期");
m_ctrList.InsertColumn(5,"管理员");
m_ctrList.SetColumnWidth(0,80);
m_ctrList.SetColumnWidth(1,100);
m_ctrList.SetColumnWidth(2,80);
m_ctrList.SetColumnWidth(3,120);
m_ctrList.SetColumnWidth(4,120);
m_ctrList.SetColumnWidth(5,80);
m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
return TRUE;
}
void CBorrowDlg::RefreshData()
{
m_ctrList.DeleteAllItems();
m_ctrList.SetRedraw(FALSE);
UpdateData(TRUE);
CString strSQL;
strSQL.Format( "select * from Borrow where CardID = '%s'",m_readerid);
if(!m_borrowSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
int i=0;
CString strtime;
while(!m_borrowSet.IsEOF())
{
m_ctrList.InsertItem(i,m_borrowSet.m_BookID);
m_ctrList.SetItemText(i,1,m_borrowSet.m_BookName);
m_ctrList.SetItemText(i,2,m_borrowSet.m_Price);
strtime = m_borrowSet.m_BorrowData.Format("%Y-%m-%d");
m_ctrList.SetItemText(i,3,strtime);
strtime = m_borrowSet.m_ReturnData.Format("%Y-%m-%d");
m_ctrList.SetItemText(i,4,strtime);
m_ctrList.SetItemText(i,5,m_borrowSet.m_Operator);
i++;
m_borrowSet.MoveNext();
}
m_borrowSet.Close();
m_ctrList.SetRedraw(TRUE);
}
void CBorrowDlg::OnBorrow()
{
// TODO: Add your control notification handler code here
/////如果可以不可以借书则退出
if(!m_EableToBorrow || !m_EableBeBorrowed)
{
AfxMessageBox("你的借书册数已满,或者该书已经借出");
return;
}
CLibraryApp* ptheApp = (CLibraryApp*)AfxGetApp();
UpdateData(TRUE);
if(m_readerid.IsEmpty())
{
AfxMessageBox("请先输入读者卡号");
return;
}
if(m_bookid.IsEmpty())
{
AfxMessageBox("图书卡号不能为空请输入图书卡号");
return;
}
////修改读者借书数量
CReaderSet readerSet;
CString strsql;
strsql.Format("select * from Reader where CardID='%s'",m_readerid);
if(!readerSet.Open(AFX_DB_USE_DEFAULT_TYPE,strsql))
{
AfxMessageBox("连接数据库出错");
return;
}
if(0 == readerSet.GetRecordCount())
{
readerSet.Close();
return;
}
readerSet.Edit();
readerSet.m_BorrowNum++;
readerSet.Update();
readerSet.Close();
CBookSet bookSet;
strsql.Format("select * from Book where BookID='%s'",m_bookid);
if(!bookSet.Open(AFX_DB_USE_DEFAULT_TYPE,strsql))
{
AfxMessageBox("连接数据库错误");
return;
}
bookSet.Edit();
bookSet.m_IsBorrow=TRUE;
bookSet.Update();
bookSet.Close();
strsql.Format("select * from ReturnTable where BookID = '%s' and CardID='%s'",m_bookid,m_readerid);
CReturnTableSet returnSet;
if(!returnSet.Open(AFX_DB_USE_DEFAULT_TYPE,strsql))
{
AfxMessageBox("数据库连接错误");
return;
}
if(0 == returnSet.GetRecordCount())
{
returnSet.Close();
}
else
{
returnSet.Delete();
returnSet.Close();
}
///////修改借阅信息
strsql="select * from Borrow";
if(!m_borrowSet.Open(AFX_DB_USE_DEFAULT_TYPE,strsql))
{
AfxMessageBox("连接数据库错误");
return;
}
CTime time = CTime::GetCurrentTime();
CString tt;
////添加借书记录
m_borrowSet.AddNew();
m_borrowSet.m_CardID = m_readerid;
m_borrowSet.m_Name = m_readername;
m_borrowSet.m_BookID = m_bookid;
m_borrowSet.m_BookName = m_bookname;
m_borrowSet.m_Price = m_bookprice;
m_borrowSet.m_BorrowData = time;
m_borrowSet.m_ReturnData = time + CTimeSpan(60,0,0,0);
m_borrowSet.m_IsReturn = FALSE;
m_borrowSet.m_Operator = ptheApp->m_Operator;
m_borrowSet.Update();
m_borrowSet.Close();
////更新窗口
m_bookid = "";
m_bookname = "";
m_bookprice = "0.0";
m_allowday = 0;
m_already++;
m_stillcan--;
UpdateData(FALSE);
RefreshData();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -