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

📄 bookinfoview.cpp

📁 图书借阅管理 图书借阅管理
💻 CPP
字号:
// BookInfoView.cpp : implementation file
//

#include "stdafx.h"
#include "Library.h"
#include "BookInfoView.h"
#include "QueryBookInfo.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBookInfoView

IMPLEMENT_DYNCREATE(CBookInfoView, CRecordView)

CBookInfoView::CBookInfoView()
	: CRecordView(CBookInfoView::IDD)
{
	//{{AFX_DATA_INIT(CBookInfoView)
	m_pSet = NULL;
	m_olePublishDate = COleDateTime::GetCurrentTime();
	//}}AFX_DATA_INIT
	m_bAdding = FALSE;
}

CBookInfoView::~CBookInfoView()
{
	if (m_pSet)
		delete m_pSet;
}

void CBookInfoView::DoDataExchange(CDataExchange* pDX)
{
	CRecordView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBookInfoView)
	DDX_FieldText(pDX, IDC_NAME, m_pSet->m_BookName, m_pSet);
	DDX_FieldText(pDX, IDC_ISBN, m_pSet->m_ISBN, m_pSet);
	DDX_FieldText(pDX, IDC_PRICE, m_pSet->m_Price, m_pSet);
	DDX_FieldText(pDX, IDC_PUBLISHINGHOUSE, m_pSet->m_PublishingHouse, m_pSet);
	DDX_FieldText(pDX, IDC_REMARK, m_pSet->m_Remark, m_pSet);
	DDX_FieldText(pDX, IDC_BOOKTYPECODE, m_pSet->m_BookTypeCode, m_pSet);
	DDX_FieldText(pDX, IDC_WRITER, m_pSet->m_Writer, m_pSet);
	DDX_Text(pDX, IDC_PUBLISHDATE, m_olePublishDate);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBookInfoView, CRecordView)
	//{{AFX_MSG_MAP(CBookInfoView)
	ON_COMMAND(ID_INSERT_BOOKINFO, OnInsertBookinfo)
	ON_COMMAND(ID_QUERY_BOOKINFO, OnQueryBookinfo)
	ON_COMMAND(ID_UNQUERY_BOOKINFO, OnUnqueryBookinfo)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBookInfoView diagnostics

#ifdef _DEBUG
void CBookInfoView::AssertValid() const
{
	CRecordView::AssertValid();
}

void CBookInfoView::Dump(CDumpContext& dc) const
{
	CRecordView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CBookInfoView message handlers

CRecordset* CBookInfoView::OnGetRecordset()
{
	if (m_pSet != NULL)
		return m_pSet;

	m_pSet = new CBookInfoSet(NULL);
	m_pSet->Open();

	return m_pSet;
}

CBookInfoSet* CBookInfoView::GetRecordset()
{
	CBookInfoSet* pData = (CBookInfoSet*) OnGetRecordset();
	ASSERT(pData == NULL || pData->IsKindOf(RUNTIME_CLASS(CBookInfoSet)));
	return pData;
}

void CBookInfoView::OnInitialUpdate()
{
	BeginWaitCursor();
	GetRecordset();
	CRecordView::OnInitialUpdate();
	if (m_pSet->IsOpen())
	{
		CString strTitle = m_pSet->m_pDatabase->GetDatabaseName();
		CString strTable = m_pSet->GetTableName();
		if (!strTable.IsEmpty())
			strTitle += _T(":") + strTable;
		GetDocument()->SetTitle(strTitle);
	}
	EndWaitCursor();

	// 移动到第一条记录
	if (m_pSet->IsBOF() == FALSE)
		m_pSet->MoveFirst();

	// 显示出版日期
	m_olePublishDate.SetDate(m_pSet->m_PublisDate.GetYear(), m_pSet->m_PublisDate.GetMonth(), m_pSet->m_PublisDate.GetDay());
	UpdateData(FALSE);
}

void CBookInfoView::OnInsertBookinfo() 
{
	// 添加新的书目信息
	m_pSet->AddNew();
	m_bAdding = TRUE;

	// 更新显示
	UpdateData(FALSE);
}

BOOL CBookInfoView::OnMove(UINT nIDMoveCommand) 
{
	if (m_bAdding == TRUE)
	{
		// 变量复位
		m_bAdding = FALSE;

		// 更新数据
		UpdateData(TRUE);

		// 设置出版日期
		int year = m_olePublishDate.GetYear();
		int month = m_olePublishDate.GetMonth();
		int day = m_olePublishDate.GetDay();
		m_pSet->m_PublisDate = CTime(year, month, day, 0, 0, 0);

		// 更新数据
		if (m_pSet->CanUpdate() == TRUE)
			m_pSet->Update();

		// 刷新记录
		if (m_pSet->CanRestart() == TRUE)
			m_pSet->Requery();

		// 更新显示
		UpdateData(FALSE);
	}
	else
	{
		// 先移动指针
		BOOL ret = CRecordView::OnMove(nIDMoveCommand);
		
		// 显示出版日期
		m_olePublishDate.SetDate(m_pSet->m_PublisDate.GetYear(), m_pSet->m_PublisDate.GetMonth(), m_pSet->m_PublisDate.GetDay());

		// 更新显示
		UpdateData(FALSE);
		return ret;
	}
}

void CBookInfoView::OnQueryBookinfo() 
{
	// 条件查询
	CQueryBookInfo dlg;
	if (dlg.DoModal() == IDOK)
	{
		// 各种查询条件
		CString sCondition = "";
		if (dlg.m_sBookName != "")
			sCondition += "书名 = '" + dlg.m_sBookName + "' AND ";
		if (dlg.m_sWriter != "")
			sCondition += "作者 = '" + dlg.m_sWriter + "' AND ";
		if (dlg.m_sISBN != "")
			sCondition += "书号 = '" + dlg.m_sISBN + "' AND ";
		if (dlg.m_sPulishingHouse != "")
			sCondition += "出版社 = '" + dlg.m_sPulishingHouse + "' AND ";

		if (dlg.m_sYear != "" && dlg.m_sCondition != "" && dlg.m_sMonth != "")
		{
			// 得到月份
			CString sMonth;
			if (dlg.m_sMonth.Left(1) == "1")
				sMonth = dlg.m_sMonth.Left(2);
			else
				sMonth = dlg.m_sMonth.Mid(2, 1);

			if (dlg.m_sCondition == "等于")
				sCondition += "出版日期 >= #" + sMonth + "/1/" + dlg.m_sYear + "# AND 出版日期 <= #" + sMonth + "/31/" + dlg.m_sYear + "# AND ";
			if (dlg.m_sCondition == "大于")
				sCondition += "出版日期 > #" + sMonth + "/31/" + dlg.m_sYear + "# AND ";
			if (dlg.m_sCondition == "小于")
				sCondition += "出版日期 < #" + sMonth + "/1/" + dlg.m_sYear + "# AND ";			
		}
		sCondition += "图书ID > 0";

		// 关闭数据库
		if (m_pSet->IsOpen() == TRUE)
			m_pSet->Close();

		// 查找到指定卡号的记录
		m_pSet->m_strFilter = sCondition;

		// 打开数据库
		m_pSet->Open();
	
		// 移动到第一条记录
		if (m_pSet->GetRecordCount() > 0)
		{
			m_pSet->MoveFirst();

			// 显示出版日期
			m_olePublishDate.SetDate(m_pSet->m_PublisDate.GetYear(), m_pSet->m_PublisDate.GetMonth(), m_pSet->m_PublisDate.GetDay());
		}

		// 更新显示
		UpdateData(FALSE);
	}
}

void CBookInfoView::OnUnqueryBookinfo() 
{
	// 关闭数据库
	if (m_pSet->IsOpen() == TRUE)
		m_pSet->Close();

	// 无限定条件
	m_pSet->m_strFilter = "";	

	// 打开数据库
	m_pSet->Open();
}

⌨️ 快捷键说明

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