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

📄 borrowcontinue.cpp

📁 同学编写的图书馆管理系统(数据库原理大作业)
💻 CPP
字号:
// BorrowContinue.cpp : implementation file
//

#include "stdafx.h"
#include "LIBRARY.h"
#include "BorrowContinue.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBorrowContinue dialog


CBorrowContinue::CBorrowContinue(CWnd* pParent /*=NULL*/)
	: CDialog(CBorrowContinue::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBorrowContinue)
	m_strBookNum = _T("");
	m_strCardNum = _T("");
	//}}AFX_DATA_INIT
}


void CBorrowContinue::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBorrowContinue)
	DDX_Control(pDX, IDC_LIST_DETAIL, m_listDetail);
	DDX_Control(pDX, IDC_LIST_BORROWED, m_listBorrowed);
	DDX_Text(pDX, IDC_BOOK_NUM, m_strBookNum);
	DDX_Text(pDX, IDC_CARD_NUM, m_strCardNum);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBorrowContinue, CDialog)
	//{{AFX_MSG_MAP(CBorrowContinue)
	ON_LBN_SELCHANGE(IDC_LIST_BORROWED, OnSelchangeListBorrowed)
	ON_BN_CLICKED(IDBORROWHISTORY, OnBorrowhistory)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBorrowContinue message handlers

void CBorrowContinue::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData();
	
	if (! IsValidCard(m_strCardNum))
	{
		return;
	}
	
	if (BookList(m_strCardNum,m_strBookNum))
	{
		return;
	}
	
	if(ContinueBorrow(m_strCardNum,m_strBookNum))
		AfxMessageBox("恭喜您,续借成功!");
	else return;
	
	CDialog::OnOK();
}

bool CBorrowContinue::BookList(CString cardNum,CString bnn)
{
	CString tmpstr;
	CString bookNumm;
	m_listBorrowed.ResetContent();
	int nBooks=0;
	bool flag=false;
	
	if (!m_borrowSet.IsOpen())
		m_borrowSet.Open();
	m_borrowSet.m_strFilter.Format("cno= '%s' and return_date is null",cardNum);
	//	m_borrowSet.m_strSort="borrow_date asc";
	m_borrowSet.Requery();
	if (m_borrowSet.IsEOF())
	{
		if (bnn=="") AfxMessageBox("当前无借书记录!");
		return false;
	}
	CTime today=CTime::GetCurrentTime();
	CTimeSpan diffDays;
	
	
	while (!m_borrowSet.IsEOF())
	{
		nBooks++;
		CTimeSpan span(45,0,0,0);
		CTime myTime=m_borrowSet.m_borrow_date;
		CString strbTime;
		strbTime=myTime.Format("%Y-%m-%d %H:%M:%S"); 
		CString strTime;
		myTime=myTime+span;
		strTime=myTime.Format("%Y-%m-%d %H:%M:%S"); 
		tmpstr="     "+strbTime+"         "+strTime+"                 "+m_borrowSet.m_bno+"               ";
		if (!m_bookSet.IsOpen())
			m_bookSet.Open();
		bookNumm=m_borrowSet.m_bno;
		m_bookSet.m_strFilter.Format("bno= '%s'",bookNumm);
		m_bookSet.Requery();
		int k=(32 - m_bookSet.m_title.GetLength());
		for (int i = 0; i < k; i++)
			tmpstr+=" ";
		tmpstr+=m_bookSet.m_title;
		m_listBorrowed.AddString(tmpstr);
		
		diffDays=today-m_borrowSet.m_borrow_date;
		
		if(diffDays.GetDays()>45)
		{
			flag=true;
		}
		m_borrowSet.MoveNext();
	}
	if (flag==true)	AfxMessageBox("温馨提醒:您有书过期了,请先归还图书馆才能继续借书!");
	
	//	AfxMessageBox("!!");
	return flag;
}

bool CBorrowContinue::IsValidCard(CString cardNum)
{
	if (!m_cardSet.IsOpen())
		m_cardSet.Open();
	
	m_cardSet.m_strFilter.Format("Cno= '%s'",cardNum);
	m_cardSet.Requery();
	
	if (m_cardSet.IsEOF())
	{
		AfxMessageBox("抱歉,该卡号不存在!请检查输入。");
		return false;
	}
	
	return true;
}

bool CBorrowContinue::ContinueBorrow(CString cardNum, CString bookNum)
{
	CLIBRARYApp *App = (CLIBRARYApp *)AfxGetApp();
	CTime MinTime=CTime::GetCurrentTime();
	CTimeSpan span(45,0,0,0);
	if (bookNum=="") return false;
	if (!m_borrowSet.IsOpen())
		m_borrowSet.Open();
	m_borrowSet.m_strFilter.Format("bno= '%s' and cno= '%s' and return_date is null",bookNum,cardNum);
	m_borrowSet.Requery();
	
	if (m_borrowSet.IsEOF())
	{
		AfxMessageBox("抱歉,您没有借此书,或者已经归还,请检查输入是否正确。");
		bookNum=" ";
		BookList(cardNum,bookNum);
		return false;
	}
	bool flag=false;
	while(!m_borrowSet.IsEOF())
	{
		if (m_borrowSet.m_borrow_date<MinTime && m_borrowSet.m_borrow_date+span>CTime::GetCurrentTime())
			MinTime=m_borrowSet.m_borrow_date,flag=true;
		m_borrowSet.MoveNext();
	}
	if (!flag) 
	{
		AfxMessageBox("您借的书已经过期了,无法完成续借。");
		return false;
	}
	CTime myTime=MinTime;
	CString strTime;
	strTime=myTime.Format("%Y-%m-%d %H:%M:%S"); 
	if (!m_borrowSet.IsOpen())
		m_borrowSet.Open();
	//	AfxMessageBox(strTime);
	m_borrowSet.m_strFilter.Format("borrow_date= '%s' and bno= '%s' and cno= '%s'",strTime,bookNum,cardNum);
	m_borrowSet.Requery();

	if (m_borrowSet.m_reborrowed=="Y")
	{
		AfxMessageBox("对不起,您已经续借过这本书了,不能再次续借。");
		return false;
	}
	m_borrowSet.Edit();
	m_borrowSet.m_borrow_date=CTime::GetCurrentTime();
	m_borrowSet.m_reborrowed="Y";
	m_borrowSet.m_aid=App->aID;
	m_borrowSet.Update();
	m_borrowSet.Requery();
	
	return true;
}

void CBorrowContinue::OnSelchangeListBorrowed() 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	CString Title[9];
	Title[0]="图书编号:                        ";
	Title[1]="类别:                              ";
	Title[2]="书名:                              ";
	Title[3]="出版社:                           ";
	Title[4]="出版年份:                        ";
	Title[5]="作者:                              ";
	Title[6]="价格:                              ";
	Title[7]="总藏书量:                        ";
	Title[8]="现藏数量:                        ";
	m_listDetail.ResetContent();
	int curSel;
	CString strDetail;
	CString strline;
	curSel=m_listBorrowed.GetCurSel();
	m_borrowSet.SetAbsolutePosition(curSel+1);
	for (unsigned int i=0;i<m_bookSet.m_nFields;i++)
	{
		CString bookNumm=m_borrowSet.m_bno;
		if (!m_bookSet.IsOpen())
			m_bookSet.Open();
		bookNumm=m_borrowSet.m_bno;
		m_bookSet.m_strFilter.Format("bno= '%s'",bookNumm);
		m_bookSet.Requery();
		m_bookSet.GetFieldValue(i,strDetail);
		strline.Empty();
		strline+=Title[i];
		strline+=strDetail;
		m_listDetail.AddString(strline);
	}	
		
}

void CBorrowContinue::OnBorrowhistory() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	m_strBookNum="";
	UpdateData(FALSE);
	OnOK();	
}

⌨️ 快捷键说明

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