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

📄 bookborrowdlg.cpp

📁 一个图书管理程序 其中数据库部分需要自己设置 具体设置请参看源码
💻 CPP
字号:
// BookBorrowDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "library.h"
#include "BookBorrowDlg.h"
#include "book.h"
#include "borrow.h"
#include "card.h"
#include "afxwin.h"
#include "atltime.h"


// CBookBorrowDlg 对话框

IMPLEMENT_DYNAMIC(CBookBorrowDlg, CDialog)

CBookBorrowDlg::CBookBorrowDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CBookBorrowDlg::IDD, pParent)
	, m_strBookNum(_T(""))
	, m_strCardNum(_T(""))
{

}

CBookBorrowDlg::~CBookBorrowDlg()
{
}

void CBookBorrowDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_Book_Num, m_strBookNum);
	DDX_Text(pDX, IDC_Card_Num, m_strCardNum);
	DDX_Control(pDX, IDC_BORROWED, m_borrowed);
}


BEGIN_MESSAGE_MAP(CBookBorrowDlg, CDialog)
	ON_BN_CLICKED(IDOK, &CBookBorrowDlg::OnBnClickedOk)
	ON_BN_CLICKED(IDC_BUTTON1, &CBookBorrowDlg::OnBnClickedButton1)
END_MESSAGE_MAP()


// CBookBorrowDlg 消息处理程序

void CBookBorrowDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	
	UpdateData();


	if(!IsValidCard(m_strCardNum))
	{
		CDialog::OnOK();
		return ;
	}

	if(!AllowedToBorrow(m_strBookNum))
	{
		CDialog::OnOK();
		return;
	}

	if(AnyBookExpired(m_strCardNum))
	{
		CDialog::OnOK();
		return;
	}

	if(BorrowBook(m_strCardNum,m_strBookNum))
	{
		AfxMessageBox(_T("借书成功"));
	}
	else
	{
		AfxMessageBox(_T("借书失败"));
	}


	OnOK();
}


bool CBookBorrowDlg::IsValidCard(const CString & cardNum)
{
	if(!m_cardSet.IsOpen())
	{
		m_cardSet.Open();
	}
	
	UpdateData();
	m_borrowed.ResetContent();

	//指定查询条件Cno为卡号
	m_cardSet.m_strFilter=(CString)"cno like '"+(CString)cardNum+(CString)"' ";
	m_cardSet.Requery();


	if(m_cardSet.IsEOF())
	{
		AfxMessageBox(_T("该卡号不存在"));
		m_cardSet.Close();
		return false;
	}

	return true;
}


bool CBookBorrowDlg::AnyBookExpired(const CString & cardNum)
{	
	CTime Time;
	int nBooks=0;

	if(!m_borrowSet.IsOpen())
	{
		m_borrowSet.Open();
	}

	m_cardSet.m_strFilter=(CString)"cno like '"+(CString)cardNum+(CString)"' ";
	
	m_borrowSet.m_strFilter=(CString)"cno like '"+(CString)cardNum+(CString)"' ";
	m_borrowSet.Requery();
	CTime today =CTime::GetCurrentTime();

	while(!m_borrowSet.IsEOF())
	{
		nBooks++;
		if(today-m_borrowSet.m_return_date>0)
		{
			AfxMessageBox(_T("您有书过期了"));
			return true ;
		}
		m_borrowSet.MoveNext();
		
	}

	if(nBooks>2)
	{
		AfxMessageBox(_T("您借书超过3本"));
		return true;
	}

	return false;
	
}


bool CBookBorrowDlg::AllowedToBorrow(const CString & bno)
{
	CTime rtime;
	if(!m_bookSet.IsOpen())
		m_bookSet.Open();
	
	m_bookSet.m_strFilter=(CString)"bno like '"+(CString)bno+(CString)"'";
	m_bookSet.Requery();


	if(m_bookSet.IsEOF())
	{
		AfxMessageBox(_T("该书不存在"));
		m_bookSet.Close();
		return false;
	}

	if(!m_bookSet.m_stock)
	{
		AfxMessageBox(_T("该书已全部借出"));
		m_borrowSet.Open();
		m_borrowSet.m_strFilter=(CString)"bno like '"+(CString)bno+(CString)"'";
		m_borrowSet.Requery();

		rtime=m_borrowSet.m_return_date;

		while(!m_borrowSet.IsEOF())
		{
			if((rtime-m_borrowSet.m_return_date)>0)
				rtime=m_borrowSet.m_return_date;
				m_borrowSet.MoveNext();
		}

		CString message;
		message.Format((CString)"最近归还时间 %d-%d-%d  %d: %d:%d",rtime.GetYear(),rtime.GetMonth(),rtime.GetDay(),rtime.GetHour(),rtime.GetMinute(),rtime.GetSecond()); 

		AfxMessageBox(message);
		m_bookSet.Close();
		m_borrowSet.Close();
		return false;
	}


	return true;
}



bool CBookBorrowDlg::BorrowBook(const CString & cardNum, const CString & bno)
{
	CTime rtime;
	
	if(!m_bookSet.IsOpen())
		m_bookSet.Open();

	m_bookSet.m_strFilter=(CString)"bno like '"+(CString)bno+(CString)"'";
	m_bookSet.Requery();
	m_bookSet.Edit();
	m_bookSet.m_stock -= 1;
	m_bookSet.Update();
    
	if(!m_borrowSet.IsOpen())
		m_borrowSet.Open();
	CTime today=CTime::GetCurrentTime();
	m_borrowSet.AddNew();
	m_borrowSet.m_bno=bno;
	m_borrowSet.m_cno=cardNum;
	m_borrowSet.m_borrow_date=today;
	m_borrowSet.m_return_date=m_borrowSet.m_borrow_date+2592000;
	m_borrowSet.Update();
	
	m_bookSet.Close();
	m_borrowSet.Close();

	return true;
}






void CBookBorrowDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	m_cardSet.Open();
	UpdateData();
	m_borrowed.ResetContent();

	m_cardSet.m_strFilter=(CString)"cno like '"+(CString)m_strCardNum+(CString)"' ";
	m_cardSet.Requery();

	if(m_cardSet.IsEOF())
	{
		AfxMessageBox(_T("没有该借书证!"));
		m_cardSet.Close();
		return;
	}

	m_borrowSet.Open();
	m_borrowSet.m_strFilter=(CString)"cno like '"+(CString)m_strCardNum+(CString)"' ";
	m_borrowSet.Requery();

	m_bookSet.Open();
	
	if(m_borrowSet.IsEOF())
	{
		m_borrowed.AddString(_T("没有借书记录"));
		AfxMessageBox(_T("没有借书记录"));
	}
	else
	{
		while(!m_borrowSet.IsEOF())
		{
			m_bookSet.m_strFilter=(CString)"bno like '"+(CString)m_borrowSet.m_bno+(CString)"' ";
			m_bookSet.Requery();

		
			CString   stryear,strprice,strtotal,strstock;  
			stryear.Format((CString)"%d",m_bookSet.m_year);
			strprice.Format((CString)"%.2f",m_bookSet.m_price);
			strtotal.Format((CString)"%d",m_bookSet.m_total);
			strstock.Format((CString)"%d",m_bookSet.m_stock);
	
			CString a[9],str;
			str.Empty();
			a[0]=(CString)"书号:"+(CString)m_bookSet.m_bno+(CString)" ";
			a[1]=(CString)"类别:"+(CString)m_bookSet.m_category+(CString)" ";
			a[2]=(CString)"书名:"+(CString)m_bookSet.m_title+(CString)"  ";
			a[3]=(CString)"出版社:"+(CString)m_bookSet.m_press+(CString)" ";
			a[4]=(CString)"年份:"+stryear+(CString)" ";
			a[5]=(CString)"作者:"+(CString)m_bookSet.m_author+(CString)" ";
			a[6]=(CString)"价格:"+strprice+(CString)" ";
			a[7]=(CString)"总藏书量:"+strtotal+(CString)" ";
			a[8]=(CString)"库存:"+strstock+(CString)" ";
			for(int i=0;i<9;i++)
			{
				str+=a[i];
				str+=(CString)"|";
			}
			m_borrowed.AddString(str);
			m_borrowSet.MoveNext();
		}
	}
	m_cardSet.Close();
	m_bookSet.Close();
	m_borrowSet.Close();

	
}


⌨️ 快捷键说明

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