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

📄 borrowdlg.cpp

📁 图书管理系统可以添加
💻 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 + -