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

📄 booklostdlg.cpp

📁 多张数据表 含有SQL语句
💻 CPP
字号:
// BookLostDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Library.h"
#include "BookLostDlg.h"
#include "BookInfoDlg.h"
#include "PersonInfoDlg.h"
#include "BorrowSet.h"
#include "BookSet.h"
#include "PunishSet.h"
#include "ProofSet.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBookLostDlg dialog


CBookLostDlg::CBookLostDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CBookLostDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBookLostDlg)
	m_strBookID = _T("");
	m_strProofID = _T("");
	m_dPuniMoney = 0.0;
	//}}AFX_DATA_INIT
}


void CBookLostDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBookLostDlg)
	DDX_Text(pDX, IDC_EDIT_BOOK_NO, m_strBookID);
	DDX_Text(pDX, IDC_EDIT_PROOF_NO, m_strProofID);
	DDX_Text(pDX, IDC_EDIT_PUNI_MONEY, m_dPuniMoney);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBookLostDlg, CDialog)
	//{{AFX_MSG_MAP(CBookLostDlg)
	ON_BN_CLICKED(IDC_BUTTON_BOOK_INFO, OnButtonBookInfo)
	ON_BN_CLICKED(IDC_BUTTON_PROOF_INFO, OnButtonProofInfo)
	ON_BN_CLICKED(IDC_BUTTON_LOST, OnButtonLost)
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBookLostDlg message handlers

void CBookLostDlg::OnButtonBookInfo() 
{
	UpdateData();
	CBookInfoDlg m_dlg;
	m_dlg.m_strBookID=m_strBookID;
	m_dlg.DoModal();
}

void CBookLostDlg::OnButtonProofInfo() 
{
	UpdateData();
	CPersonInfoDlg m_dlg;
	m_dlg.m_strProofID=m_strProofID;
	m_dlg.DoModal();
}

void CBookLostDlg::OnButtonLost() 
{
	
	UpdateData();
	if(m_strBookID.Compare("")==0||m_strProofID.Compare("")==0)
	{
		MessageBox("请正确填写所需数据","图书挂失");
		return;
	}
	
	if(!m_database.IsOpen())
	{
		if(!m_database.Open(_T("Library")))
		{
			MessageBox("无法连接数据源!","图书挂失");
			return;
		}
	}

	double m_dblPunish=0.0;
	CString strSQL;
	CTime curTime,oriTime;
	//察看借书(Borrow_Info表)信息,看是否超期
	CBorrowSet *m_pBorrow=new CBorrowSet(&m_database);
	strSQL.Format("select * from Borrow_Info where Proof_ID='%s' AND Book_ID='%s'",m_strProofID,m_strBookID);
	m_pBorrow->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
	if(m_pBorrow->GetRecordCount()==0)
	{
		MessageBox("没有关于这个人借这本书的信息!","图书挂失");
		m_pBorrow->Close();
		m_database.Close();
		return;
	}
	int m_yeardiff,m_monthdiff,m_daydiff,m_timediff;
	oriTime=m_pBorrow->m_Borrow_Date;
	curTime=CTime::GetCurrentTime();
	m_yeardiff=curTime.GetYear()-oriTime.GetYear();
	m_monthdiff=curTime.GetMonth()-oriTime.GetMonth();
	m_daydiff=curTime.GetDay()-oriTime.GetDay();
	m_timediff=m_yeardiff*365+m_monthdiff*30+m_daydiff;
	//超期,予以罚款
	if(m_timediff>=60)
	{
		//60天为超时限制时间,一天缴纳罚款0.1元
		m_dblPunish=m_dblPunish+(m_timediff-60)*0.1;
	}
	//无论是否超期,首先进行还书操作,然后处以丢书罚款
	//Borrow_Info删除该条记录
	m_pBorrow->Delete();
	m_pBorrow->Close();
	//Proof_Info减少借书数量
	CProofSet *m_pProof=new CProofSet(&m_database);
	strSQL.Format("select * from Proof_Info where Proof_ID='%s'",m_strProofID);
	m_pProof->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
	if(m_pProof->GetRecordCount()==0)
	{
		MessageBox("读取借书人信息出错,将进行回退,请与馆主联系!","图书挂失");
		//回退,这里不进行
		m_pProof->Close();
		m_database.Close();
		return;
	}
	m_pProof->Edit();
	m_pProof->m_Now_Borrow_Amount--;
	m_pProof->Update();
	m_pProof->Requery();
	m_pProof->Close();
	
	//查询书籍信息,书库藏书总量减一
	strSQL.Format("select * from Book_Info where Book_ID='%s'",m_strBookID);
	CBookSet *m_pBook=new CBookSet(&m_database);
	m_pBook->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
	if(m_pBook->GetRecordCount()==0)
	{
		MessageBox("查询书籍信息出错,将进行回退,请与馆主联系!","图书挂失");
		m_pBook->Close();
		m_database.Close();
	}
	m_pBook->Edit();
	m_pBook->m_Total_Amount--;
	m_pBook->Update();
	m_pBook->Requery();
	//查询价格信息,计算罚款金额
	double m_dPrice=0.0;
	m_dPrice=m_pBook->m_Price;
	m_dblPunish+=m_dPrice*3;
	m_pBook->Close();
	//将罚款信息存入罚款信息表中
	strSQL.Format("select * from Punish_Info");
	CPunishSet *m_pset=new CPunishSet(&m_database);
	m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
	if(m_pset->GetRecordCount()==0)
	{
		MessageBox("目前还没有任何罚款信息!","图书挂失");
	}
	m_pset->AddNew();
	m_pset->SetFieldNull(&(m_pset->m_Proof_ID),FALSE);
	m_pset->m_Proof_ID=m_strProofID;

	m_pset->SetFieldNull(&(m_pset->m_Book_ID),FALSE);
	m_pset->m_Book_ID=m_strBookID;

	m_pset->SetFieldNull(&(m_pset->m_Borrow_Date),FALSE);
	m_pset->m_Borrow_Date=oriTime;
	
	m_pset->SetFieldNull(&(m_pset->m_Return_Date),FALSE);
	m_pset->m_Return_Date=curTime;

	m_pset->SetFieldNull(&(m_pset->m_Puni_Money),FALSE);
	m_pset->m_Puni_Money=m_dblPunish;

	m_pset->Update();
	m_pset->Requery();

	m_pset->Close();
	m_database.Close();
	MessageBox("挂失成功","图书挂失");
}

void CBookLostDlg::OnClose() 
{
	if(m_database.IsOpen())
		m_database.Close();
	OnOK();
}

⌨️ 快捷键说明

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