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

📄 admbookdlg.cpp

📁 本程序是在学习期间编制的图书馆管理系统
💻 CPP
字号:
// ADMBookDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "MyZone.h"
#include "ADMBookDlg.h"
#include ".\admbookdlg.h"


// ADMBookDlg 对话框

IMPLEMENT_DYNAMIC(ADMBookDlg, CDialog)
ADMBookDlg::ADMBookDlg(CWnd* pParent /*=NULL*/)
	: CDialog(ADMBookDlg::IDD, pParent)
	, m_isbn(_T(""))
	, m_bookname(_T(""))
	, m_author(_T(""))
	, m_publish(_T(""))
	, m_publishdate(_T(""))
	, m_total(_T(""))
	, m_price(_T(""))
	, m_left(_T(""))
{
}

ADMBookDlg::~ADMBookDlg()
{
}

void ADMBookDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, m_isbn);
	DDX_Text(pDX, IDC_EDIT2, m_bookname);
	DDX_Text(pDX, IDC_EDIT3, m_author);
	DDX_Text(pDX, IDC_EDIT4, m_publish);
	DDX_Text(pDX, IDC_EDIT5, m_publishdate);
	DDX_Text(pDX, IDC_EDIT6, m_total);
	DDX_Text(pDX, IDC_EDIT7, m_price);
	DDX_Control(pDX, IDC_LIST3, m_List);
}


BEGIN_MESSAGE_MAP(ADMBookDlg, CDialog)
	ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
	ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)
	ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
	ON_LBN_SELCHANGE(IDC_LIST3, OnLbnSelchangeList3)
END_MESSAGE_MAP()


// ADMBookDlg 消息处理程序


void ADMBookDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	if(m_isbn.IsEmpty())
	{
		MessageBox("请输入ISBN");
		return;
	} 
	if(m_bookname.IsEmpty())
	{
		MessageBox("请输入书名");
		return;
	}
	if(m_author.IsEmpty())
	{
		MessageBox("请输入作者名");
		return;
	}
	if(m_publish.IsEmpty())
	{
		MessageBox("请输入出版社名");
		return;
	}
	if(m_publishdate.IsEmpty())
	{
		MessageBox("请输入出版日期");
		return;
	}
	if(m_total.IsEmpty())
	{
		MessageBox("请输入书目总数");
		return;
	}
	if(m_price.IsEmpty())
	{
		MessageBox("请输入书目价格");
		return;
	}
	try
	{
		// 写入各字段值
		theApp.m_pRecordsetbook->AddNew();
		theApp.m_pRecordsetbook->PutCollect("ISBN", _variant_t(m_isbn));		
		theApp.m_pRecordsetbook->PutCollect("Book_Name", _variant_t(m_bookname));
		theApp.m_pRecordsetbook->PutCollect("Author", _variant_t(m_author));
		theApp.m_pRecordsetbook->PutCollect("Publish", _variant_t(m_publish));
		theApp.m_pRecordsetbook->PutCollect("Pub_Date", _variant_t(m_publishdate));
		theApp.m_pRecordsetbook->PutCollect("Total_Num", _variant_t(m_total));
		theApp.m_pRecordsetbook->PutCollect("Left_Num", _variant_t(m_total));
		theApp.m_pRecordsetbook->PutCollect("Price", _variant_t(m_price));
		theApp.m_pRecordsetbook->Update();

		AfxMessageBox("插入成功!");

		// 更新显示其库内容
		int nCurSel = m_List.GetCurSel();
		OnReadAccess();
		m_List.SetCurSel(nCurSel);
		// 移动记录指针到新的位置
		OnLbnSelchangeList3();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
}

void ADMBookDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	if(m_List.GetCount() == 0)
		return;
	else if(m_List.GetCurSel() < 0 || m_List.GetCurSel() > m_List.GetCount())
		m_List.SetCurSel(0);

	try
	{
		// 删除当前行记录
		theApp.m_pRecordsetbook->Delete(adAffectCurrent);
		theApp.m_pRecordsetbook->Update();

		// 删除列表中当前值
		int nCurSel = m_List.GetCurSel();
		m_List.DeleteString(nCurSel);
		if(nCurSel == 0 && (m_List.GetCount() != 0))
			m_List.SetCurSel(nCurSel);
		else if(m_List.GetCount() != 0)
			m_List.SetCurSel(nCurSel-1);
		
		// 移动记录指针到新的位置
		OnLbnSelchangeList3();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
}

void ADMBookDlg::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData();        // 更新对话框数据
	if(m_List.GetCount() == 0 || m_isbn == "" || m_bookname == "" || m_author == "" || m_publish == "" || m_publishdate == "" || m_total == "" || m_price == "" )
	{
		AfxMessageBox("表中记录数为空或信息没有设置!");
		return;
	}
	else if(m_List.GetCurSel() < 0 || m_List.GetCurSel() > m_List.GetCount())
		m_List.SetCurSel(0);

	// 修改当前记录的字段值
	try
	{
		theApp.m_pRecordsetbook->PutCollect("ISBN", _variant_t(m_isbn));		
		theApp.m_pRecordsetbook->PutCollect("Book_Name", _variant_t(m_bookname));
		theApp.m_pRecordsetbook->PutCollect("Author", _variant_t(m_author));
		theApp.m_pRecordsetbook->PutCollect("Publish", _variant_t(m_publish));
		theApp.m_pRecordsetbook->PutCollect("Pub_Date", _variant_t(m_publishdate));
		theApp.m_pRecordsetbook->PutCollect("Total_Num", _variant_t(m_total));
		theApp.m_pRecordsetbook->PutCollect("Left_Num", _variant_t(m_total));
		theApp.m_pRecordsetbook->PutCollect("Price", _variant_t(m_price));
		theApp.m_pRecordsetbook->Update();

		// 重新读入库记录更新显示
		int nCurSel = m_List.GetCurSel();
		OnReadAccess();
		m_List.SetCurSel(nCurSel);
		// 移动记录指针到新的位置
		OnLbnSelchangeList3();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
}

void ADMBookDlg::OnBnClickedCancel()
{
	// TODO: 在此添加控件通知处理程序代码
	OnCancel();
}

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

	// TODO:  在此添加额外的初始化
	try
	{
		theApp.m_pRecordsetbook->Open(_variant_t("SELECT * FROM Book"),                
							theApp.m_pConnection.GetInterfacePtr(),	 
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
		OnReadAccess();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}


	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}

void ADMBookDlg::OnReadAccess(void)
{
	_variant_t var;
	CString strisbn,strbookname,strauthor,strpublish,strpublishdate,strtotal,strprice,strleft;

	// 清空列表框
	m_List.ResetContent();
	strisbn=strbookname=strauthor=strpublish=strpublishdate=strtotal=strprice=strleft="";

	try
	{
		if(!theApp.m_pRecordsetbook->BOF)
		{
			theApp.m_pRecordsetbook->MoveFirst();
		}
		else
		{
			AfxMessageBox("表内数据为空");
			return;
		}

		// 读入库中各字段并加入列表框中
		while(!theApp.m_pRecordsetbook->adoEOF)
		{
			var = theApp.m_pRecordsetbook->GetCollect("ISBN");//collect收集、聚焦
			if(var.vt != VT_NULL)
				strisbn = (LPCSTR)_bstr_t(var);
			var = theApp.m_pRecordsetbook->GetCollect("Book_Name");
			if(var.vt != VT_NULL)
				strbookname = (LPCSTR)_bstr_t(var);
			var = theApp.m_pRecordsetbook->GetCollect("Author");
			if(var.vt != VT_NULL)
				strauthor = (LPCSTR)_bstr_t(var);
			var = theApp.m_pRecordsetbook->GetCollect("Publish");
			if(var.vt != VT_NULL)
				strpublish = (LPCSTR)_bstr_t(var);
			var = theApp.m_pRecordsetbook->GetCollect("Pub_Date");
			if(var.vt != VT_NULL)
				strpublishdate = (LPCSTR)_bstr_t(var);
			var = theApp.m_pRecordsetbook->GetCollect("Total_Num");
			if(var.vt != VT_NULL)
				strtotal = (LPCSTR)_bstr_t(var);
			var = theApp.m_pRecordsetbook->GetCollect("Left_Num");
			if(var.vt != VT_NULL)
				strleft = (LPCSTR)_bstr_t(var);
			var = theApp.m_pRecordsetbook->GetCollect("Price");
			if(var.vt != VT_NULL)
				strprice = (LPCSTR)_bstr_t(var);

           			  
			m_List.AddString( strisbn + " --> "+strbookname + " --> "+strauthor + " --> "+strpublish + " --> "+strpublishdate+ " --> "+strtotal+ " --> "+strleft+ " --> "+strprice);

			theApp.m_pRecordsetbook->MoveNext();
		}

		// 默认列表指向第一项,同时移动记录指针并显示
		m_List.SetCurSel(0);
		OnLbnSelchangeList3();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
}


BOOL ADMBookDlg::DestroyWindow()
{
	// TODO: 在此添加专用代码和/或调用基类
	theApp.m_pRecordsetbook->Close();
	theApp.m_pRecordsetbook = NULL;

	return CDialog::DestroyWindow();
}

void ADMBookDlg::OnLbnSelchangeList3()
{
	// TODO: 在此添加控件通知处理程序代码
	int curSel = m_List.GetCurSel();		
	_variant_t var,varIndex;

	if(curSel < 0)
		return;

	try
	{
		// 先将指针移向第一条记录,然后就可以相对第一条记录来随意移动记录指针
		theApp.m_pRecordsetbook->MoveFirst();
		theApp.m_pRecordsetbook->Move(long(curSel));

		var = theApp.m_pRecordsetbook->GetCollect("ISBN");
		if(var.vt != VT_NULL)
			m_isbn = (LPCSTR)_bstr_t(var);
		var = theApp.m_pRecordsetbook->GetCollect("Book_Name");
		if(var.vt != VT_NULL)
			m_bookname = (LPCSTR)_bstr_t(var);
		var = theApp.m_pRecordsetbook->GetCollect("Author");
		if(var.vt != VT_NULL)
			m_author = (LPCSTR)_bstr_t(var);
		var = theApp.m_pRecordsetbook->GetCollect("Publish");
		if(var.vt != VT_NULL)
			m_publish = (LPCSTR)_bstr_t(var);
		var = theApp.m_pRecordsetbook->GetCollect("Pub_Date");
		if(var.vt != VT_NULL)
			m_publishdate = (LPCSTR)_bstr_t(var);
		var = theApp.m_pRecordsetbook->GetCollect("Total_Num");
		if(var.vt != VT_NULL)
			m_total = (LPCSTR)_bstr_t(var);
		var = theApp.m_pRecordsetbook->GetCollect("Left_Num");
		if(var.vt != VT_NULL)
			m_left = (LPCSTR)_bstr_t(var);
		var = theApp.m_pRecordsetbook->GetCollect("Price");
		if(var.vt != VT_NULL)
			m_price = (LPCSTR)_bstr_t(var);
		UpdateData(false);
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
}

⌨️ 快捷键说明

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