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

📄 formlookabout.cpp

📁 使用Visual C++ .NET实现简单了一个书籍管理系统
💻 CPP
字号:
// FormLookAbout.cpp : 实现文件
//

#include "stdafx.h"
#include "LManage.h"
#include "FormLookAbout.h"
#include ".\formlookabout.h"


// CFormLookAbout 对话框

IMPLEMENT_DYNAMIC(CFormLookAbout, CDialog)
CFormLookAbout::CFormLookAbout(CWnd* pParent /*=NULL*/)
	: CDialog(CFormLookAbout::IDD, pParent)
	, m_Name(_T(""))
{
}

CFormLookAbout::~CFormLookAbout()
{
}

void CFormLookAbout::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST_SLTBOOK, m_kBook);
	DDX_Control(pDX, IDC_COMBO_SLTTYPE, m_kSltType);
	DDX_Control(pDX, IDC_EDIT_BOOKNAME, m_kName);
	DDX_Control(pDX, IDC_COMBO_SLT, m_SltCombo);
	DDX_Text(pDX, IDC_EDIT_BOOKNAME, m_Name);
}


BEGIN_MESSAGE_MAP(CFormLookAbout, CDialog)
	ON_CBN_SELCHANGE(IDC_COMBO_SLTTYPE, OnCbnSelchangeComboSlttype)
	ON_BN_CLICKED(IDC_SEARCH, OnBnClickedSearch)
	ON_BN_CLICKED(IDC_BTALL, OnBnClickedBtall)
END_MESSAGE_MAP()


// CFormLookAbout 消息处理程序

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

	// TODO:  在此添加额外的初始化
	m_kSltType.AddString( "书名" );
	m_kSltType.AddString( "作者" );
	m_kSltType.AddString( "出版社" );
	m_kSltType.AddString( "类型" );
	m_kSltType.SetCurSel( 0 );
	OnCbnSelchangeComboSlttype();

	m_kBook.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP );
	m_kBook.InsertColumn(0,"编号",LVCFMT_CENTER,40);
	m_kBook.InsertColumn(1,"书名",LVCFMT_LEFT,110);
	m_kBook.InsertColumn(2,"作者",LVCFMT_LEFT,75);
	m_kBook.InsertColumn(3,"出版社",LVCFMT_LEFT,90);
	m_kBook.InsertColumn(4,"类型",LVCFMT_LEFT,70);

	LoadBooks( );

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

// 按要求读入所有书名,作者,str为查询条件的SQL语句
void CFormLookAbout::LoadBooks( CString str )
{
	_RecordsetPtr pRecord;
	_variant_t value;
	// 清空list
	m_kBook.DeleteAllItems();

	try
	{
		// 生成Recordset实例
		pRecord.CreateInstance("ADODB.Recordset");
		CString sql;
		sql = "SELECT Book.ID , Book.Name , Author.Name, BookConcern.Name, Type.Name ";
		sql += "FROM Book, Author, BookConcern, Type ";
		sql += "WHERE Book.Author = Author.ID ";
		sql += "AND Book.BookConcern = BookConcern.ID ";
		sql += "AND Book.Type = Type.ID ";
		sql += str;

		// 打开记录集,静态光标(静态记录集),乐观锁定方式
		pRecord->Open(sql.GetBuffer(),   // 查询所有语句
			_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

		int i = 0;
		while( !pRecord->adoEOF )
		{
			int k;
			CString name, author,temp, bookc, type;
			value = pRecord->GetCollect( "ID" );
			if( value.vt != VT_NULL )
			{
				k = value.lVal;

				// 作者
				value = pRecord->GetCollect("Book.Name");
				if( value.vt != VT_NULL )
					name = value.bstrVal;
				else
					name = "";

				// 书名
				value = pRecord->GetCollect("Author.Name");
				if( value.vt != VT_NULL )
					author = value.bstrVal;
				else
					author = "";

				// 出版社
				value = pRecord->GetCollect("BookConcern.Name");
				if( value.vt != VT_NULL )
					bookc = value.bstrVal;
				else
					bookc = "";

				// 类型
				value = pRecord->GetCollect("Type.Name");
				if( value.vt != VT_NULL )
					type = value.bstrVal;
				else
					type = "";

				// 加入链表
				temp.Format( "%d",k);
				m_kBook.InsertItem(i,temp,0);
				m_kBook.SetItemText(i,1,name);
				m_kBook.SetItemText(i,2,author);
				m_kBook.SetItemText(i,3,bookc);
				m_kBook.SetItemText(i,4,type );

				i++;
			}

			pRecord->MoveNext();
		}
		pRecord->Close();
		pRecord = NULL;
	}
	catch( _com_error * e )
	{
		MessageBox( e->ErrorMessage() );
	}
}
// 显示所有图书
void CFormLookAbout::OnBnClickedBtall()
{
	LoadBooks( );
}
// 该变选择
void CFormLookAbout::OnCbnSelchangeComboSlttype()
{
	int k = m_kSltType.GetCurSel();

	// 控件状态
	m_kName.EnableWindow( (k == 0) );
	m_SltCombo.EnableWindow( !(k == 0) );

	if( k != 0 )
	{
		switch( k )
		{
		case 1:
			LoadAuthor();
			break;
		case 2:
			LoadBookConcern();
			break;
		case 3:
			LoadType();
			break;
		}
	}
}

// 查询
void CFormLookAbout::OnBnClickedSearch()
{
	if( UpdateData() == false )
		return;
	CString name = m_Name;
	name.Replace( "'", "''" );

	CString sql = "";
	switch( m_kSltType.GetCurSel() )
	{
	case 0:   // 书名查询
		sql.Format( "AND Book.Name LIKE '%%%s%%'", name );
		break;
	case 1:
		sql.Format( "AND Book.Author = %d", m_SltCombo.GetCurMyID() );
		break;
	case 2:
		sql.Format( "AND Book.BookConcern = %d", m_SltCombo.GetCurMyID() );
		break;
	case 3:
		sql.Format( "AND Book.Type = %d", m_SltCombo.GetCurMyID() );
		break;
	}

	LoadBooks( sql );
}
// 读入作者链表
void CFormLookAbout::LoadAuthor()
{
	_RecordsetPtr pRecord;
	_variant_t value;
	// 清空list
	while( m_SltCombo.GetCount() > 0)
		m_SltCombo.DeleteString(0);

	try
	{
		// 生成Recordset实例
		pRecord.CreateInstance("ADODB.Recordset");

		// 打开记录集,静态光标(静态记录集),乐观锁定方式
		pRecord->Open("SELECT ID , Name FROM Author",   // 查询所有语句
			_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

		while( !pRecord->adoEOF )
		{
			value = pRecord->GetCollect( "ID" );
			if( value.vt != VT_NULL )
			{
				CString name;
				int id;
				// 得到ID
				id = value.lVal;

				// 得到名字
				value = pRecord->GetCollect( "Name" );
				if( value.vt != VT_NULL )
					name = value.bstrVal;
				else
					name = "";

				m_SltCombo.AddMyString( id, name );
			}
			pRecord->MoveNext();
		}
		pRecord->Close();
		pRecord = NULL;
	}
	catch( _com_error * e )
	{
		MessageBox( e->ErrorMessage() );
	}
	m_SltCombo.SetCurSel(0);
}
// 读入出版社链表
void CFormLookAbout::LoadBookConcern()
{
	_RecordsetPtr pRecord;
	_variant_t value;
	// 清空list
	while( m_SltCombo.GetCount() > 0)
		m_SltCombo.DeleteString(0);

	try
	{
		// 生成Recordset实例
		pRecord.CreateInstance("ADODB.Recordset");

		// 打开记录集,静态光标(静态记录集),乐观锁定方式
		pRecord->Open("SELECT ID , Name FROM BookConcern",   // 查询所有语句
			_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

		while( !pRecord->adoEOF )
		{
			value = pRecord->GetCollect( "ID" );
			if( value.vt != VT_NULL )
			{
				CString name;
				int id;
				// 得到ID
				id = value.lVal;

				// 得到名字
				value = pRecord->GetCollect( "Name" );
				if( value.vt != VT_NULL )
					name = value.bstrVal;
				else
					name = "";

				m_SltCombo.AddMyString( id, name );
			}
			pRecord->MoveNext();
		}
		pRecord->Close();
		pRecord = NULL;
	}
	catch( _com_error * e )
	{
		MessageBox( e->ErrorMessage() );
	}
	m_SltCombo.SetCurSel(0);
}
// 读入类型链表
void CFormLookAbout::LoadType()
{
	_RecordsetPtr pRecord;
	_variant_t value;
	// 清空list
	while( m_SltCombo.GetCount() > 0)
		m_SltCombo.DeleteString(0);

	try
	{
		// 生成Recordset实例
		pRecord.CreateInstance("ADODB.Recordset");

		// 打开记录集,静态光标(静态记录集),乐观锁定方式
		pRecord->Open("SELECT ID , Name FROM Type",   // 查询所有语句
			_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

		while( !pRecord->adoEOF )
		{
			value = pRecord->GetCollect( "ID" );
			if( value.vt != VT_NULL )
			{
				CString name;
				int id;
				// 得到ID
				id = value.lVal;

				// 得到名字
				value = pRecord->GetCollect( "Name" );
				if( value.vt != VT_NULL )
					name = value.bstrVal;
				else
					name = "";

				m_SltCombo.AddMyString( id, name );
			}
			pRecord->MoveNext();
		}
		pRecord->Close();
		pRecord = NULL;
	}
	catch( _com_error * e )
	{
		MessageBox( e->ErrorMessage() );
	}
	m_SltCombo.SetCurSel(0);
}

⌨️ 快捷键说明

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