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

📄 borrowbook.cpp

📁 自己编写的迷你图书馆的完整程序.VC6MFC编写的,Windows界面.数据采用了Sqlserver2000.压缩包中已包括了数据库.先附加数据库再运行.
💻 CPP
字号:
// BorrowBook.cpp : implementation file
//

#include "stdafx.h"
#include "BookLib.h"
#include "BorrowBook.h"
#include "ReaderAddDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBorrowBook dialog


CBorrowBook::CBorrowBook(CWnd* pParent /*=NULL*/)
	: CDialog(CBorrowBook::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBorrowBook)
	m_bookid = _T("");
	m_readerid = _T("");
	m_max = _T("");
	m_expire = _T("");
	m_remark = _T("");
	//}}AFX_DATA_INIT
}


void CBorrowBook::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBorrowBook)
	DDX_Control(pDX, IDC_CMB_BOOKID, m_cmb_bookid);
	DDX_Control(pDX, IDC_CMB_READERID, m_cmb_readerid);
	DDX_CBString(pDX, IDC_CMB_BOOKID, m_bookid);
	DDX_CBString(pDX, IDC_CMB_READERID, m_readerid);
	DDX_Control(pDX, IDC_DATAGRID1, m_dg);
	DDX_Text(pDX, IDC_EDIT_MAX, m_max);
	DDX_Text(pDX, IDC_EDIT_EXPIRE, m_expire);
	DDX_Text(pDX, IDC_EDIT_REMARK, m_remark);
	DDV_MaxChars(pDX, m_remark, 100);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBorrowBook, CDialog)
	//{{AFX_MSG_MAP(CBorrowBook)
	ON_BN_CLICKED(IDC_BTN_BORROW, OnBtnBorrow)
	ON_BN_CLICKED(IDC_BTN_NEW_READER, OnBtnNewReader)
	ON_CBN_SELCHANGE(IDC_CMB_READERID, OnSelchangeCmbReaderid)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBorrowBook message handlers

void CBorrowBook::OnBtnBorrow() 
{
	if(m_cmb_bookid.GetCurSel()==-1 || m_cmb_readerid.GetCurSel()==-1) 
	{
		MessageBox("请选择书籍编号和读者编号!","提示");
		return;
	}

	CString strBookid,strReaderid;
	m_cmb_bookid.GetLBText(m_cmb_bookid.GetCurSel(),strBookid);
	m_cmb_readerid.GetLBText(m_cmb_readerid.GetCurSel(),strReaderid);

	CString sql,strCount;
	sql.Format("select count(bookID) from 借阅记录表 where readerID=%d and 状态='借出'",atoi(strReaderid));
	g_adoDB.ExecuteQueryValue(sql,strCount);
	if(atoi(strCount)==maxqty)
	{
		MessageBox("该读者借阅数量已达到上限!","错误");
		return;
	}

	CString strID;
	sql.Format("Select max(recordID) from 借阅记录表");
	g_adoDB.ExecuteQueryValue(sql,strID);
	int newID=atoi(strID)+1;

	CTime time=CTime::GetCurrentTime();
	CString strTime=time.Format("%Y-%m-%d");

	sql.Format("Insert into 借阅记录表(recordID,bookID,readerID,起始日期,状态,备注) "
		" values(%d,'%s',%d,'%s','%s','%s')"
		,newID,strBookid,atoi(strReaderid),strTime,"借出",m_remark);
	g_adoDB.Execute(sql);//插入借阅记录表

	sql.Format("select ISBN from 书籍编号表 where bookID='%s'",strBookid);
	CString strISBN;
	g_adoDB.ExecuteQueryValue(sql,strISBN);
	sql.Format("update 书籍信息表 set 剩余数量=剩余数量-1 where ISBN='%s'",strISBN);
	g_adoDB.Execute(sql);//修改书籍信息表该书的数量

	OnSelchangeCmbReaderid();
	m_cmb_bookid.SetCurSel(-1);	
	
}

void CBorrowBook::OnBtnNewReader() 
{
	CReaderAddDlg dlg;
	dlg.DoModal();
	InitCmbReaderid();	
}

void CBorrowBook::InitCmbReaderid()
{
	CDStrs ridFields;
	g_adoDB.ExecuteQuery("Select readerID from 读者表",ridFields);
	m_cmb_readerid.ResetContent();
	for(int i=0;i<ridFields.size();i++)
	{
		CStrs strs=ridFields[i];
		m_cmb_readerid.AddString(strs[0]);
	}
}

void CBorrowBook::InitCmbBookid()
{
	CDStrs bidFields;
	g_adoDB.ExecuteQuery("Select bookID from 书籍编号表",bidFields);
	m_cmb_bookid.ResetContent();
	for(int i=0;i<bidFields.size();i++)
	{
		CStrs strs=bidFields[i];
		m_cmb_bookid.AddString(strs[0]);
	}
}

BOOL CBorrowBook::OnInitDialog() 
{
	CDialog::OnInitDialog();
	InitCmbBookid();
	InitCmbReaderid();
	return TRUE;  
}

void CBorrowBook::OnSelchangeCmbReaderid() 
{
	CString sql,strReaderid;
	m_cmb_readerid.GetLBText(m_cmb_readerid.GetCurSel(),strReaderid);
	sql.Format("select 借阅记录表.bookID,借阅记录表.起始日期,书籍信息表.书名"
		" from 借阅记录表,书籍信息表,书籍编号表"
		" where 借阅记录表.bookID=书籍编号表.bookID and 书籍编号表.ISBN=书籍信息表.ISBN"
		" and readerID=%d"
		" and 状态='借出'",atoi(strReaderid));
	_RecordsetPtr m_pRecordset;
	m_pRecordset=g_adoDB.ExecuteQuery(sql);

	m_dg.SetRefDataSource(NULL);   
	m_dg.SetRefDataSource((LPUNKNOWN)m_pRecordset);   
	m_dg.Refresh(); 

}

⌨️ 快捷键说明

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