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

📄 bookdlg.cpp

📁 用MFC写的图书信息管理系统
💻 CPP
字号:
// BookDlg.cpp : implementation file
//

#include "stdafx.h"
#include "library.h"
#include "BookDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBookDlg dialog


CBookDlg::CBookDlg(CWnd* pView /*=NULL*/)
	: CDialog(CBookDlg::IDD, pView)
{
	//{{AFX_DATA_INIT(CBookDlg)
	m_nBID = 0;
	m_strBName = _T("");
	m_pView=(CLibraryView*)pView;
	m_strOnShelf = _T("");
	//}}AFX_DATA_INIT
}


void CBookDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBookDlg)
	DDX_Control(pDX, IDC_COMBO_TYPE2, m_cOpera);
	DDX_Text(pDX, IDC_EDIT_BID, m_nBID);
	DDX_Text(pDX, IDC_EDIT_BNAME, m_strBName);
	DDX_Text(pDX, IDC_EDIT_ONSHELF, m_strOnShelf);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBookDlg, CDialog)
	//{{AFX_MSG_MAP(CBookDlg)
	ON_CBN_SELCHANGE(IDC_COMBO_TYPE2, OnSelchangeComboType2)
	ON_BN_CLICKED(IDC_BUT_EXIT2, OnButExit)
	ON_BN_CLICKED(IDC_BUT_ADD_BOOK, OnButAddBook)
	ON_BN_CLICKED(IDC_BUT_CHANGE_BNAME, OnButChangeBname)
	ON_BN_CLICKED(IDC_BUT_DEL_BOOK, OnButDelBook)
	ON_BN_CLICKED(IDC_BUT_NEXT_BOOK, OnButNextBook)
	ON_BN_CLICKED(IDC_BUT_QUERY_BOOK, OnButQueryBook)
	ON_EN_CHANGE(IDC_EDIT_BNAME, OnChangeEditBname)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBookDlg message handlers

void CBookDlg::OnSelchangeComboType2() 
{
	// TODO: Add your control notification handler code here
	int index=m_cOpera.GetCurSel();
	switch(index)
	{
	case 0://增加图书
		m_strBName="";
		m_nBID=0;
		UpdateData(false);
		GetDlgItem(IDC_BUT_ADD_BOOK)->EnableWindow(true);
        GetDlgItem(IDC_EDIT_BNAME)->EnableWindow(true);
		GetDlgItem(IDC_EDIT_BID)->EnableWindow(true);
		GetDlgItem(IDC_EDIT_ONSHELF)->EnableWindow(false);
		GetDlgItem(IDC_BUT_DEL_BOOK)->EnableWindow(false);
	    GetDlgItem(IDC_BUT_NEXT_BOOK)->EnableWindow(false);
	    GetDlgItem(IDC_BUT_QUERY_BOOK)->EnableWindow(false);
		GetDlgItem(IDC_BUT_CHANGE_BNAME)->EnableWindow(false);

		break;
	case 1://删除图书
		GetDlgItem(IDC_EDIT_BNAME)->EnableWindow(false);
		GetDlgItem(IDC_EDIT_BID)->EnableWindow(false);
		GetDlgItem(IDC_BUT_DEL_BOOK)->EnableWindow(true);
		GetDlgItem(IDC_BUT_ADD_BOOK)->EnableWindow(false);
	    GetDlgItem(IDC_BUT_NEXT_BOOK)->EnableWindow(false);
	    GetDlgItem(IDC_BUT_QUERY_BOOK)->EnableWindow(false);
		GetDlgItem(IDC_BUT_CHANGE_BNAME)->EnableWindow(false);
		break;
	case 2://改名
		GetDlgItem(IDC_BUT_ADD_BOOK)->EnableWindow(false);
        GetDlgItem(IDC_EDIT_BNAME)->EnableWindow(true);
		GetDlgItem(IDC_EDIT_BID)->EnableWindow(false);
		GetDlgItem(IDC_EDIT_ONSHELF)->EnableWindow(false);
		GetDlgItem(IDC_BUT_DEL_BOOK)->EnableWindow(false);
	    GetDlgItem(IDC_BUT_NEXT_BOOK)->EnableWindow(false);
	    GetDlgItem(IDC_BUT_QUERY_BOOK)->EnableWindow(false);
		GetDlgItem(IDC_BUT_CHANGE_BNAME)->EnableWindow(true);
		break;
	case 3://浏览图书信息
		m_pView->ibook=0;
		GetDlgItem(IDC_BUT_NEXT_BOOK)->EnableWindow(true);
		GetDlgItem(IDC_EDIT_BNAME)->EnableWindow(false);
		GetDlgItem(IDC_EDIT_ONSHELF)->EnableWindow(false);
		GetDlgItem(IDC_EDIT_BID)->EnableWindow(false);
		m_strBName="";
		m_nBID=0;
		UpdateData(false);
		GetDlgItem(IDC_BUT_ADD_BOOK)->EnableWindow(false);
	    GetDlgItem(IDC_BUT_DEL_BOOK)->EnableWindow(false);
	    GetDlgItem(IDC_BUT_QUERY_BOOK)->EnableWindow(false);
		GetDlgItem(IDC_BUT_CHANGE_BNAME)->EnableWindow(false);
		break;
	case 4://查询图书信息
		m_strBName="";
		m_nBID=0;
		UpdateData(false);
		GetDlgItem(IDC_BUT_QUERY_BOOK)->EnableWindow(true);
		GetDlgItem(IDC_EDIT_BNAME)->EnableWindow(false);
		GetDlgItem(IDC_EDIT_BID)->EnableWindow(true);
		GetDlgItem(IDC_EDIT_ONSHELF)->EnableWindow(false);
		GetDlgItem(IDC_BUT_ADD_BOOK)->EnableWindow(false);
	    GetDlgItem(IDC_BUT_DEL_BOOK)->EnableWindow(false);
	    GetDlgItem(IDC_BUT_NEXT_BOOK)->EnableWindow(false);
		GetDlgItem(IDC_BUT_CHANGE_BNAME)->EnableWindow(false);
		break;
	}	
}

void CBookDlg::OnButExit() 
{
	// TODO: Add your control notification handler code here
    TRACE("Enter OnButExit()\n");
	m_pView->SendMessage(DESTROY_BOOK_DLG);
	
}

BOOL CBookDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_cOpera.AddString ("添加");
	m_cOpera.AddString ("删除");
	m_cOpera.AddString ("改名");
	m_cOpera.AddString ("浏览");
	m_cOpera.AddString ("查询");

	m_cOpera.SetCurSel (0);
	GetDlgItem(IDC_BUT_DEL_BOOK)->EnableWindow(false);
	GetDlgItem(IDC_BUT_CHANGE_BNAME)->EnableWindow(false);
	GetDlgItem(IDC_BUT_NEXT_BOOK)->EnableWindow(false);
	GetDlgItem(IDC_BUT_QUERY_BOOK)->EnableWindow(false);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CBookDlg::OnButAddBook() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int bookid=m_nBID;
	CString name=m_strBName;
	int ret=m_pView->bdb.addbook(bookid,name.GetBuffer(20));
	if(ret==0)
	{
		AfxMessageBox("添加图书失败,可能因为图书已经存在");
	}
	else
	{
		AfxMessageBox("添加图书成功");
	}
	m_strBName="";
	m_nBID=0;
	UpdateData(false);

}

void CBookDlg::OnButChangeBname() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int bookid=m_nBID;
    CString name=m_strBName;
	Book* r=m_pView->bdb.query(bookid);
	if(r==NULL)
	{
		AfxMessageBox("该图书不存在");
		return;
	}
	r->setname(name.GetBuffer(20));
	name.ReleaseBuffer();
	AfxMessageBox("改名成功");
}

void CBookDlg::OnButDelBook() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int id=m_nBID;
	Book* b=m_pView->bdb.query(id);
	if(b==NULL)
	{
		AfxMessageBox("该图书不存在");
		return;
	}
	if(b->getonshelf()==0)
	{
		AfxMessageBox("该图书不能删除,因为它被借出");
		return;
	}
	b->delbook();	
	AfxMessageBox("删除成功");
	
}

void CBookDlg::OnButNextBook() 
{
	// TODO: Add your control notification handler code here
start:
    if(m_pView->bdb.nobook())
	{
		AfxMessageBox("一本书都没有");
		return;
	}
    int top=m_pView->bdb.gettop();
	Book* pbook=m_pView->bdb.getbook(m_pView->ibook);
	m_pView->ibook++;
	if(m_pView->ibook==top)
		m_pView->ibook=0;

	if(pbook==NULL)
	{
		goto start;
	}
	m_strBName=pbook->getname();
	m_nBID=pbook->getno();
	
    int onshelf=pbook->getonshelf();
	if(onshelf==1)
	{
		m_strOnShelf="是";
	}
	else
	{
		m_strOnShelf="否";
	}
	UpdateData(false);		
}

void CBookDlg::OnButQueryBook() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int bookid=m_nBID;
	Book *pbook=m_pView->bdb.query(bookid);
	if(pbook==NULL)
	{
		AfxMessageBox("该图书不存者");
		return;
	}
	m_strBName=pbook->getname();
	int ret=pbook->getonshelf();
	if(ret==1)
		m_strOnShelf="是";
	else
		m_strOnShelf="否";
	UpdateData(false);	
	
}

void CBookDlg::OnChangeEditBname() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// 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
	
}

⌨️ 快捷键说明

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