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

📄 borrowdlg.cpp

📁 一个图书管理系统
💻 CPP
字号:
// BorrowDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Library.h"
#include "Borrowset.h"
#include "Bookset.h"
#include "LibrarySet.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_strbeforeout = _T("");
	m_strbookname = _T("");
	m_strbookID = _T("");
	m_strdays = _T("");
	m_strfutureout = _T("");
	m_strprice = _T("");
	m_strproofID = _T("");
	m_strreadername = _T("");
	//}}AFX_DATA_INIT
}


void CBorrowDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBorrowDlg)
	DDX_Control(pDX, IDC_EDIT_BOOKID, m_ctrbookID);
	DDX_Control(pDX, IDC_EDIT_PROOFID, m_ctrproofID);
	DDX_Control(pDX, IDC_LIST_BORROW, m_ctrlist);
	DDX_Text(pDX, IDC_EDIT_BEFORE_OUT, m_strbeforeout);
	DDX_Text(pDX, IDC_EDIT_BOOK_NAME, m_strbookname);
	DDX_Text(pDX, IDC_EDIT_BOOKID, m_strbookID);
	DDX_Text(pDX, IDC_EDIT_DAYS, m_strdays);
	DDX_Text(pDX, IDC_EDIT_FUTURE_OUT, m_strfutureout);
	DDX_Text(pDX, IDC_EDIT_PRICE, m_strprice);
	DDX_Text(pDX, IDC_EDIT_PROOFID, m_strproofID);
	DDX_Text(pDX, IDC_EDIT_READER_NAME, m_strreadername);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBorrowDlg, CDialog)
	//{{AFX_MSG_MAP(CBorrowDlg)
	ON_BN_CLICKED(IDC_BUTTON_BORROW_OUT, OnButtonBorrowOut)
	ON_EN_CHANGE(IDC_EDIT_PROOFID, OnChangeEditProofid)
	ON_EN_CHANGE(IDC_EDIT_BOOKID, OnChangeEditBookid)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBorrowDlg message handlers

void CBorrowDlg::OnButtonBorrowOut() 
{
	
     
	//更新数据库相关表
	CLibrarySet m_recordset;
	CBorrowset m_borrowset,m_pset;
	CBookset m_bookset;
	CLibraryApp* theApp=(CLibraryApp*)AfxGetApp();
	CString strSQL;
	strSQL.Format("select * from readerinfo where Proof_ID='%s'",m_strproofID);
	if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
	{
		MessageBox("数据库打开失败!","数据库错误",MB_OK);
		return;
	}
	strSQL.Format("select * from borrowinfo where Proof_ID='%s'",m_strproofID);
	if(!m_borrowset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
	{
		MessageBox("数据库打开失败!","数据库错误",MB_OK);
		return;
	}
	strSQL.Format("select * from bookinfo where Book_ID='%s'",m_strbookID);
	if(!m_bookset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
	{
		MessageBox("数据库打开失败!","数据库错误",MB_OK);
		return;
	}
	strSQL.Format("select * from borrowinfo");
	if(!m_pset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
	{
		MessageBox("数据库打开失败!","数据库错误",MB_OK);
		return;
	}
	int m=0;
	while(!m_pset.IsEOF())
	{
		m++;
		m_pset.MoveNext();
	}
	m++;

	if(m_pset.IsEOF())
	{
		strSQL.Format("select * from bookinfo where Book_ID='%s'",m_strbookID);
		if(m_pset.m_Book_ID!=m_strbookID)   
		{
	      MessageBox("没有这本书!","数据库错误",MB_OK);
	      return;
		}
	}
	m_pset.Close();
	
	m_recordset.Edit();
	m_recordset.m_Borrow_Amount++;
	m_recordset.Update();
	m_recordset.Close();
	m_borrowset.AddNew();
	m_borrowset.m_BorrowID=m;
    m_borrowset.m_Proof_ID=m_strproofID;
	m_borrowset.m_Book_ID=m_strbookID;
	m_borrowset.m_BorrowOut_Date=CTime::GetCurrentTime();
	m_borrowset.m_Return_Date=CTime::GetCurrentTime()+30*24*3600;
	m_borrowset.m_User_Name=theApp->m_stroperater;
	m_borrowset.Update();
    m_borrowset.Close();
	m_bookset.Edit();
    m_bookset.m_Total_Amount--;
	m_bookset.Update();
	m_bookset.Close();

    RefreshData();

	//更新显示界面
	m_strproofID=_T("");
	m_strreadername=_T("");
	m_strbeforeout=_T("");
	m_strfutureout=_T("");
	m_strbookID=_T("");
	m_strbookname=_T("");
	m_strdays=_T("");
	m_strprice=_T("");
	UpdateData(FALSE);
    //RefreshData();

}

BOOL CBorrowDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

	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.InsertColumn(6,"借书数");
	m_ctrlist.SetColumnWidth(0,80);
	m_ctrlist.SetColumnWidth(1,80);
	m_ctrlist.SetColumnWidth(2,120);
	m_ctrlist.SetColumnWidth(3,80);
	m_ctrlist.SetColumnWidth(4,80);
	m_ctrlist.SetColumnWidth(5,80);
	m_ctrlist.SetColumnWidth(6,60);
	m_ctrlist.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CBorrowDlg::OnChangeEditProofid() 
{
	
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	UpdateData();
	//检查是否输入借阅证号
	if(m_strproofID.IsEmpty())
	{
		AfxMessageBox("请输入借阅证号!");
		m_ctrproofID.SetFocus();
		return;
	}
    CLibrarySet m_recordset;
	CString strSQL;
	strSQL.Format("select * from readerinfo where Proof_ID='%s'",m_strproofID);
	if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
	{
		MessageBox("数据库打开失败!","数据库错误",MB_OK);
		return;
	}
	if(m_recordset.GetRecordCount()==0)
	{
		m_recordset.Close();
		//AfxMessageBox("图书证号输入错误,请重新输入!");
		return;
	}
	m_strreadername=m_recordset.m_Name;
	CString count;
	count.Format("%d",m_recordset.m_Borrow_Amount);
	m_strbeforeout=	count;
	int m=10-m_recordset.m_Borrow_Amount;
	count.Format("%d",m);
	m_strfutureout=count;
	m_recordset.Close();
	UpdateData(FALSE);
	
}

void CBorrowDlg::OnChangeEditBookid() 
{
	UpdateData();
    //检查是否输入图书编号
	if(m_strbookID.IsEmpty())
	{
		AfxMessageBox("请输入图书编号!");
		m_ctrbookID.SetFocus();
		return;
	}
	//显示图书的基本信息
	CBookset m_bookset;
	CString strSQL;
	strSQL.Format("select * from bookinfo where Book_ID='%s'",m_strbookID);
	if(!m_bookset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
	{
		MessageBox("数据库打开失败!","数据库错误",MB_OK);
		return;
	}
	if(m_bookset.GetRecordCount()==0)
	{
		m_bookset.Close();
		//AfxMessageBox("图书编号不存在,请重新输入!");
		return;
	}
	int m=30;
	CString count,price;
	count.Format("%d",m);
	m_strdays=count;
	m_strbookname=m_bookset.m_Book_Name;
    price.Format("%f",m_bookset.m_Price);
	m_strprice=price;
	m_bookset.Close();
	UpdateData(FALSE);

	
	// 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
	
}
void CBorrowDlg::RefreshData()
{
	m_ctrlist.DeleteAllItems();
    m_ctrlist.SetRedraw(FALSE);
	UpdateData(TRUE);
	CLibrarySet m_recordset1;
	CBorrowset m_borrowset1;
	CBookset m_bookset1;
	CString strSQL;
	strSQL.Format("select * from readerinfo where Proof_ID='%s'",m_strproofID);
	if(!m_recordset1.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
	{
		MessageBox("数据库打开失败!","数据库错误",MB_OK);
		return;
	}
	strSQL.Format("select * from borrowinfo where Proof_ID='%s'",m_strproofID);
	if(!m_borrowset1.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
	{
		MessageBox("数据库打开失败!","数据库错误",MB_OK);
		return;
	}
	//向借阅列表中添加项
	

	CString strcount;
	CString strTime;
	int i=0;
	while(!m_borrowset1.IsEOF())
	{
		m_ctrlist.InsertItem(i,m_recordset1.m_Name);
	    m_ctrlist.SetItemText(i,1,m_borrowset1.m_Book_ID);
		strSQL.Format("select * from bookinfo where Book_ID='%s'",m_borrowset1.m_Book_ID);
	    if(!m_bookset1.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
		{
		    MessageBox("数据库打开失败!","数据库错误",MB_OK);
		    return;
		}
	    m_ctrlist.SetItemText(i,2,m_bookset1.m_Book_Name);
	
	    strTime.Format("%d-%d-%d",m_borrowset1.m_BorrowOut_Date.GetYear(),m_borrowset1.m_BorrowOut_Date.GetMonth(),m_borrowset1.m_Return_Date.GetDay());
        m_ctrlist.SetItemText(i,3,strTime);
	    strTime.Format("%d-%d-%d",m_borrowset1.m_Return_Date.GetYear(),m_borrowset1.m_Return_Date.GetMonth(),m_borrowset1.m_BorrowOut_Date.GetDay());
	    m_ctrlist.SetItemText(i,4,strTime);
	    m_ctrlist.SetItemText(i,5,m_borrowset1.m_User_Name);
	
	    strcount.Format("%d",m_recordset1.m_Borrow_Amount);
	    m_ctrlist.SetItemText(i,6,strcount);
		i++;
		m_borrowset1.MoveNext();
		m_bookset1.Close();
	}
	m_recordset1.Close();
	m_borrowset1.Close();
	//m_bookset1.Close();
	m_ctrlist.SetRedraw(TRUE);


}

⌨️ 快捷键说明

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