📄 borrowdlg.cpp
字号:
// BorrowDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Library.h"
#include "BorrowDlg.h"
#include "ReaderInfoSet.h"
#include "ReaderTypeSet.h"
#include "BookInfoSet.h"
#include "BookTypeSet.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_strBookName = _T("");
m_strBookCode = _T("");
m_strBookPrice = _T("");
m_strBookType = _T("");
m_strReaderCode = _T("");
m_strReaderName = _T("");
m_strReaderType = _T("");
m_nAlready = 0;
m_nAllow = 0;
m_nLeft = 0;
m_nDays = 0;
//}}AFX_DATA_INIT
m_bReaderEnable = FALSE;
m_bBookEnable = FALSE;
}
void CBorrowDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBorrowDlg)
DDX_Control(pDX, IDC_LIST1, m_ctrList);
DDX_Text(pDX, IDC_EDIT_BOOK_NAME, m_strBookName);
DDX_Text(pDX, IDC_EDIT_BOOK_CODE, m_strBookCode);
DDX_Text(pDX, IDC_EDIT_BOOK_PRICE, m_strBookPrice);
DDX_Text(pDX, IDC_EDIT_BOOK_TYPE, m_strBookType);
DDX_Text(pDX, IDC_EDIT_READER_CODE, m_strReaderCode);
DDX_Text(pDX, IDC_EDIT_READER_NAME, m_strReaderName);
DDX_Text(pDX, IDC_EDIT_READER_TYPE, m_strReaderType);
DDX_Text(pDX, IDC_EDIT_ALEADY, m_nAlready);
DDX_Text(pDX, IDC_EDIT_ALLOW, m_nAllow);
DDX_Text(pDX, IDC_EDIT_LEFT, m_nLeft);
DDX_Text(pDX, IDC_EDIT_DAYS, m_nDays);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBorrowDlg, CDialog)
//{{AFX_MSG_MAP(CBorrowDlg)
ON_EN_CHANGE(IDC_EDIT_READER_CODE, OnChangeEditReaderCode)
ON_EN_CHANGE(IDC_EDIT_BOOK_CODE, OnChangeEditBookCode)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBorrowDlg message handlers
void CBorrowDlg::OnChangeEditReaderCode()
{
// 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();
//获取读者基本信息
CReaderInfoSet rs_reader;
CString strSQL;
strSQL.Format("select * from readerInfo where code = '%s'",m_strReaderCode);
if(!rs_reader.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
if(rs_reader.GetRecordCount()==0)
{
rs_reader.Close();
return;
}
m_strReaderName = rs_reader.m_name;
m_strReaderType = rs_reader.m_type;
rs_reader.Close();
//根据读者类型获取读者可借阅册数
CReaderTypeSet rs_readerType;
strSQL.Format("select * from readerType where type = '%s'",m_strReaderType);
if(!rs_readerType.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
if(rs_readerType.GetRecordCount()==0)
{
rs_readerType.Close();
return;
}
m_nAllow = rs_readerType.m_number;
rs_readerType.Close();
//根据读者编号读取读者已借阅册数
CBookInfoSet rs_BookInfoSet;
strSQL.Format("select * from BookInfo where reader_code = '%s'",m_strReaderCode);
if(!rs_BookInfoSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
m_nAlready=rs_BookInfoSet.GetRecordCount();
m_nLeft = m_nAllow - m_nAlready;
rs_BookInfoSet.Close();
m_bReaderEnable = TRUE;
UpdateData(FALSE);
}
void CBorrowDlg::OnChangeEditBookCode()
{
// 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();
//获取图书基本信息
CBookInfoSet rs_book;
CString strSQL;
strSQL.Format("select * from bookInfo where code = '%s'",m_strBookCode);
if(!rs_book.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
if(rs_book.GetRecordCount()==0)
{
rs_book.Close();
return;
}
if(rs_book.m_isBorrow)
{
AfxMessageBox("此图书已借出!");
rs_book.Close();
return;
}
m_strBookName = rs_book.m_name;
m_strBookType = rs_book.m_type;
m_strBookPrice = rs_book.m_price;
rs_book.Close();
//根据图书类型获取图书可借阅天数
CBookTypeSet rs_bookType;
strSQL.Format("select * from bookType where type = '%s'",m_strBookType);
if(!rs_bookType.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
if(rs_bookType.GetRecordCount()==0)
{
rs_bookType.Close();
return;
}
m_nDays = rs_bookType.m_number;
rs_bookType.Close();
m_bBookEnable = TRUE;
UpdateData(FALSE);
}
void CBorrowDlg::OnOK()
{
// 判断读者是否具有借阅资格,以及图书是否可以被借出
if(!m_bReaderEnable|!m_bBookEnable)
return;
CLibraryApp* ptheApp = (CLibraryApp *) AfxGetApp();
//修改图书库存信息
CBookInfoSet rs_book;
CString strSQL;
strSQL.Format("select * from bookInfo where code = '%s'",m_strBookCode);
if(!rs_book.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
if(rs_book.GetRecordCount()==0)
{
rs_book.Close();
return;
}
rs_book.Edit();
rs_book.m_isBorrow = TRUE;
rs_book.m_reader_code = m_strReaderCode;
rs_book.Update();
rs_book.Close();
if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE))
{
AfxMessageBox("打开数据库失败!");
return ;
}
//添加借书记录
m_recordset.AddNew();
m_recordset.m_book_code = m_strBookCode ;
m_recordset.m_book_name = m_strBookName ;
m_recordset.m_book_type = m_strBookType ;
m_recordset.m_borrow_date = CTime::GetCurrentTime() ;
m_recordset.m_operator = ptheApp->m_strOperator ;
m_recordset.m_price = m_strBookPrice ;
m_recordset.m_reader_code = m_strReaderCode ;
m_recordset.m_reader_name = m_strReaderName ;
m_recordset.m_return_date = CTime::GetCurrentTime()+m_nDays*24*3600 ;
m_recordset.m_isReturn = FALSE;
m_recordset.Update();
m_recordset.Close();
//更新界面显示
m_strBookCode="";
m_strBookName="";
m_strBookType="";
m_strBookPrice="";
m_nDays=0;
m_nAlready++;
m_nLeft--;
m_bBookEnable = FALSE;
UpdateData(FALSE);
RefreshData();
}
void CBorrowDlg::RefreshData()
{
m_ctrList.DeleteAllItems();
m_ctrList.SetRedraw(FALSE);
UpdateData(TRUE);
CString strSQL;
strSQL.Format( "select * from borrowInfo where reader_code = '%s'",m_strReaderCode);
if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
int i=0;
CString strTime;
while(!m_recordset.IsEOF())
{
m_ctrList.InsertItem(i,m_recordset.m_book_code);
m_ctrList.SetItemText(i,1,m_recordset.m_book_name);
m_ctrList.SetItemText(i,2,m_recordset.m_price);
m_ctrList.SetItemText(i,3,m_recordset.m_book_type);
strTime.Format("%d-%d-%d",m_recordset.m_borrow_date.GetYear(),m_recordset.m_borrow_date.GetMonth(),m_recordset.m_borrow_date.GetDay());
m_ctrList.SetItemText(i,4,strTime);
strTime.Format("%d-%d-%d",m_recordset.m_return_date.GetYear(),m_recordset.m_return_date.GetMonth(),m_recordset.m_return_date.GetDay());
m_ctrList.SetItemText(i,5,strTime);
m_ctrList.SetItemText(i,6,m_recordset.m_operator);
i++;
m_recordset.MoveNext();
}
m_recordset.Close();
m_ctrList.SetRedraw(TRUE);
}
BOOL CBorrowDlg::OnInitDialog()
{
CDialog::OnInitDialog();
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.InsertColumn(6,"操作员");
m_ctrList.SetColumnWidth(0,60);
m_ctrList.SetColumnWidth(1,120);
m_ctrList.SetColumnWidth(2,80);
m_ctrList.SetColumnWidth(3,80);
m_ctrList.SetColumnWidth(4,80);
m_ctrList.SetColumnWidth(5,80);
m_ctrList.SetColumnWidth(6,80);
m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -