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

📄 borrowdlg.cpp

📁 图书管理系统,相对全面,ODBC学习的好材料,仅攻学习,谢绝抄袭
💻 CPP
字号:
// BorrowDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MyLib.h"
#include "BorrowDlg.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_DATEF = 0;
	m_DATET = 0;
	m_FBOOKID = _T("");
	m_FREADERID = _T("");
	m_READERID = _T("");
	m_READERNAME = _T("");
	m_READERTYPE = _T("");
	m_COUNT = 0;
	m_LOSE = FALSE;
	//}}AFX_DATA_INIT
}


void CBorrowDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBorrowDlg)
	DDX_Control(pDX, IDC_LIST1, m_List);
	DDX_DateTimeCtrl(pDX, IDC_DATEF, m_DATEF);
	DDX_DateTimeCtrl(pDX, IDC_DATET, m_DATET);
	DDX_Text(pDX, IDC_FBOOKID, m_FBOOKID);
	DDV_MaxChars(pDX, m_FBOOKID, 20);
	DDX_Text(pDX, IDC_FREADERID, m_FREADERID);
	DDV_MaxChars(pDX, m_FREADERID, 20);
	DDX_Text(pDX, IDC_READERID, m_READERID);
	DDV_MaxChars(pDX, m_READERID, 20);
	DDX_Text(pDX, IDC_READERNAME, m_READERNAME);
	DDV_MaxChars(pDX, m_READERNAME, 20);
	DDX_Text(pDX, IDC_READERTYPE, m_READERTYPE);
	DDV_MaxChars(pDX, m_READERTYPE, 20);
	DDX_Text(pDX, IDC_COUNT, m_COUNT);
	DDV_MinMaxInt(pDX, m_COUNT, 0, 99);
	DDX_Check(pDX, IDC_LOSE, m_LOSE);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBorrowDlg, CDialog)
	//{{AFX_MSG_MAP(CBorrowDlg)
	ON_BN_CLICKED(IDC_EXIT, OnExit)
	ON_BN_CLICKED(IDC_BORROW, OnBorrow)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CBorrowDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_List.InsertColumn(0,"图书ID");
	m_List.InsertColumn(1,"读者ID");
	RECT rect;
	m_List.GetWindowRect(&rect);
	int wid=rect.right-rect.left;
	m_List.SetColumnWidth(0,wid/2);
	m_List.SetColumnWidth(1,wid/2);
	m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CBorrowDlg message handlers

void CBorrowDlg::OnExit() 
{
	if (bfileset.IsOpen())
	{
		bfileset.Close();
	}
	if (btypeset.IsOpen())
	{
		btypeset.Close();
	}
	if (rfileset.IsOpen())
	{
		rfileset.Close();
	}
	if (rtypeset.IsOpen())
	{
		rtypeset.Close();
	}
	CDialog::OnCancel();
}

void CBorrowDlg::OnBorrow() 
{
	m_List.DeleteAllItems();
	UpdateData(TRUE);
	CString sqlstr;

	//读者丢失
	sqlstr = "SELECT * FROM READERINFM WHERE ID='";
	sqlstr += m_FREADERID;
	sqlstr += "'";
	if (rfileset.IsOpen())
	{
		rfileset.Close();
	}
	if (!rfileset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr))
	{
		MessageBox("读者表打开失败!");
		return;
	}
	if (rfileset.IsEOF())
	{
		MessageBox("该读者不存在!");
		rfileset.Close();
		return;
	}
	m_READERID = rfileset.m_ID;
	m_READERNAME = rfileset.m_NAME;
	m_READERTYPE = rfileset.m_TYPE;
	m_LOSE = rfileset.m_LOSE;
	sqlstr = "SELECT * FROM BORROW WHERE READERID ='";
	sqlstr += m_FREADERID;
	sqlstr += "'";
	if(borrowset.IsOpen())
	{
		borrowset.Close();
	}
	if (!borrowset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr))
	{
		MessageBox("借阅表打开失败!");
		rfileset.Close();
		return;
	}
	int i = 0;
	while(!borrowset.IsEOF())
	{
		m_List.InsertItem(i,borrowset.m_BOOKID);
		m_List.SetItemText(i,1,borrowset.m_READERID);
		borrowset.MoveNext();
		i++;
	}
	borrowset.Close();
	UpdateData(FALSE);
	if (rfileset.m_LOSE==TRUE)
	{
		MessageBox("该读者已挂失!");
		rfileset.Close();
		return;
	}
	//书超出
	sqlstr = "SELECT * FROM READERTYPE WHERE TYPE='";
	sqlstr += m_READERTYPE;
	sqlstr += "'";
	if (rtypeset.IsOpen())
	{
		rtypeset.Close();
	}
	if (!rtypeset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr))
	{
		MessageBox("读者类型表打开失败!");
		rfileset.Close();
		return;
	}
	m_COUNT = rtypeset.m_SUM;
	if (rfileset.m_COUNT>=rtypeset.m_SUM)
	{
		MessageBox("该读者借书已达到规定数量!");
		rtypeset.Close();
		rfileset.Close();
		return;
	}
	rtypeset.Close();
	//图书在库
	sqlstr = "SELECT * FROM BOOKINFM WHERE BOOKID='";
	sqlstr += m_FBOOKID;
	sqlstr += "'";
	if (bfileset.IsOpen())
	{
		bfileset.Close();
	}
	if (!bfileset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr))
	{
		MessageBox("图书表打开失败!");
		rfileset.Close();
		return;
	}
	if(bfileset.IsEOF())
	{
		MessageBox("该书不存在!");
		rfileset.Close();
		bfileset.Close();
		return;
	}
	if (bfileset.m_IO==TRUE)
	{
		MessageBox("该图书已借出!");
		rfileset.Close();
		bfileset.Close();
		return;
	}
	
	//查看罚金表
	sqlstr = "SELECT * FROM FINE WHERE READERID='";
	sqlstr += m_FREADERID;
	sqlstr += "' AND DEAL=FALSE";
	if(fineset.IsOpen())
	{
		fineset.Close();
	}
	if (!fineset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr))
	{
		MessageBox("罚金表打开失败!");
		bfileset.Close();
		rfileset.Close();
		return;
	}
	
	if(!fineset.IsEOF())
	{
		MessageBox("该读者仍欠费,不能借书!");
		bfileset.Close();
		rfileset.Close();
		fineset.Close();
		return;
	}
	fineset.Close();
	//修改BORROW表
	sqlstr = "SELECT * FROM BORROW WHERE READERID='";
	sqlstr += m_FREADERID;
	sqlstr += "'";
	if (borrowset.IsOpen())
	{
		borrowset.Close();
	}
	if (!borrowset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr))
	{
		MessageBox("借阅表打开失败!");
		bfileset.Close();
		rfileset.Close();
		return;
	}

	sqlstr = "SELECT * FROM FINE";
	if(fineset.IsOpen())
	{
		fineset.Close();
	}
	if (!fineset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr))
	{
		MessageBox("罚金表打开失败!");
		bfileset.Close();
		rfileset.Close();
		return;
	}
	int flag = 0;
	int day;
	
	while(!borrowset.IsEOF())
	{
		CTime t = CTime::GetCurrentTime();
		if((t - borrowset.m_DATET)>=CTimeSpan(1,0,0,0))
		{
			flag = 1;

			fineset.AddNew();
			fineset.m_BOOKID = borrowset.m_BOOKID;
			fineset.m_READERID = borrowset.m_READERID;
			fineset.m_DATE = borrowset.m_DATET;
			fineset.Update();
			fineset.Requery();	
		}
		borrowset.MoveNext();
	}
	if(flag == 1)
	{
		MessageBox("该读者仍欠费,不能借书!");
		bfileset.Close();
		rfileset.Close();
		fineset.Close();
		borrowset.Close();
		return;
	}
	borrowset.Close();
	fineset.Close();
	//找到可以借的时间
	sqlstr = "SELECT * FROM BOOKTYPE WHERE TYPEID='";
	sqlstr += bfileset.m_TYPEID;
	sqlstr += "'";
	if(btypeset.IsOpen())
	{
		btypeset.Close();
	}
	if(!btypeset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr))
	{
		MessageBox("图书类型表打开失败!");
		bfileset.Close();
		rfileset.Close();
		return;
	}
	day = btypeset.m_DAY;
	btypeset.Close();
	//时间
	m_DATEF = CTime::GetCurrentTime();
	m_DATET = m_DATEF + CTimeSpan(day,0,0,0);

	sqlstr = "SELECT * FROM BORROW";
	if (borrowset.IsOpen())
	{
		borrowset.Close();
	}
	if (!borrowset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr))
	{
		MessageBox("借阅表打开失败!");
		bfileset.Close();
		rfileset.Close();
		return;
	}
	borrowset.AddNew();
	borrowset.m_BOOKID = m_FBOOKID;
	borrowset.m_READERID = m_FREADERID;
	borrowset.m_DATEF = m_DATEF;
	borrowset.m_DATET = m_DATET;
	borrowset.Update();
	borrowset.Requery();

	rfileset.Edit();
	rfileset.m_COUNT = rfileset.m_COUNT+1;
	rfileset.Update();
	rfileset.Requery();

	bfileset.Edit();
	bfileset.m_IO = TRUE;
	bfileset.Update();
	bfileset.Requery();

	UpdateData(FALSE);
	bfileset.Close();
	rfileset.Close();
	borrowset.Close();
	MessageBox("借出成功!");
}

void CBorrowDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	char BOOKID[20];
	char READERID[20];
	POSITION pos = m_List.GetFirstSelectedItemPosition();
	if (pos != NULL)
	{
		int n = m_List.GetNextSelectedItem(pos);  
		m_List.GetItemText(n,0,BOOKID,20);
		m_List.GetItemText(n,1,READERID,20);
		if (borrowset.IsOpen())
		{
			borrowset.Close();
		}
		CString sqlstr = "SELECT * FROM BORROW WHERE BOOKID='";
		sqlstr += BOOKID;
		sqlstr += "' AND READERID='";
		sqlstr += READERID;
		sqlstr += "'";
		if (!borrowset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr))
		{
			MessageBox("借阅表打开失败!");
			return;
		}
		if(!borrowset.IsEOF())
		{
			m_DATEF = borrowset.m_DATEF;
			m_DATET = borrowset.m_DATET;
			borrowset.Close();
			UpdateData(FALSE);
		}		
	}
	*pResult = 0;
}

⌨️ 快捷键说明

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