// ManageDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "LManage.h"
#include "ManageDlg.h"
#include ".\managedlg.h"
#include "ADDAuthor.h"
#include "AddBookConcern.h"
#include "ADDTypeDlg.h"
// CManageDlg 对话框
IMPLEMENT_DYNAMIC(CManageDlg, CDialog)
CManageDlg::CManageDlg(CWnd* pParent /*=NULL*/)
: CDialog(CManageDlg::IDD, pParent)
, m_BookName(_T(""))
, m_BookNum(0)
{
}
CManageDlg::~CManageDlg()
{
}
void CManageDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST_BOOK, m_BookList);
DDX_Control(pDX, IDC_COMBO_AUTHOR, m_kAuthor);
DDX_Control(pDX, IDC_COMBO_CONCERN, m_kBookConcern);
DDX_Control(pDX, IDC_COMBO_TYPE, m_kType);
DDX_Text(pDX, IDC_EDIT_BOOKNAME, m_BookName);
DDX_Text(pDX, IDC_EDIT_BOOKNUM, m_BookNum);
DDV_MinMaxLong(pDX, m_BookNum, 0, 10000000);
}
BEGIN_MESSAGE_MAP(CManageDlg, CDialog)
ON_BN_CLICKED(IDC_BTADDAUTHOR, OnBnClickedBtaddauthor)
ON_BN_CLICKED(IDC_BTADDCONCERN, OnBnClickedBtaddconcern)
ON_BN_CLICKED(IDC_BTADDTYPE, OnBnClickedBtaddtype)
ON_NOTIFY(NM_CLICK, IDC_LIST_BOOK, OnNMClickListBook)
ON_BN_CLICKED(IDC_BTADD, OnBnClickedBtadd)
ON_BN_CLICKED(IDC_BTCHANGE, OnBnClickedBtchange)
ON_BN_CLICKED(IDC_BTDEL, OnBnClickedBtdel)
END_MESSAGE_MAP()
// CManageDlg 消息处理程序
BOOL CManageDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
m_BookList.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP );
m_BookList.InsertColumn(0,"编号",LVCFMT_CENTER,40);
m_BookList.InsertColumn(1,"书名",LVCFMT_LEFT,110);
m_BookList.InsertColumn(2,"作者",LVCFMT_LEFT,75);
// 读入初始化数据
LoadAuthor();
LoadBookConcern();
LoadType();
LoadBook();
if( m_BookList.GetItemCount() > 0 )
{
m_BookList.SetItemState( 0,LVIS_SELECTED,LVIS_SELECTED );
ShowSltBookInfo();
}
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
// 读入作者
void CManageDlg::LoadAuthor()
{
_RecordsetPtr pRecord;
_variant_t value;
// 清空list
while( m_kAuthor.GetCount() > 0)
m_kAuthor.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_kAuthor.AddMyString( id, name );
}
pRecord->MoveNext();
}
pRecord->Close();
pRecord = NULL;
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
m_kAuthor.SetCurSel(0);
}
// 读入出版社
void CManageDlg::LoadBookConcern()
{
_RecordsetPtr pRecord;
_variant_t value;
// 清空list
while( m_kBookConcern.GetCount() > 0)
m_kBookConcern.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_kBookConcern.AddMyString( id, name );
}
pRecord->MoveNext();
}
pRecord->Close();
pRecord = NULL;
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
m_kBookConcern.SetCurSel(0);
}
// 读入类型
void CManageDlg::LoadType()
{
_RecordsetPtr pRecord;
_variant_t value;
// 清空list
while( m_kType.GetCount() > 0)
m_kType.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_kType.AddMyString( id, name );
}
pRecord->MoveNext();
}
pRecord->Close();
pRecord = NULL;
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
m_kType.SetCurSel(0);
}
// 添加作者
void CManageDlg::OnBnClickedBtaddauthor()
{
// TODO: 在此添加控件通知处理程序代码
CADDAuthor dlg;
dlg.DoModal();
LoadAuthor();
}
// 添加出版社
void CManageDlg::OnBnClickedBtaddconcern()
{
CAddBookConcern dlg;
dlg.DoModal();
LoadBookConcern();
}
// 添加类型
void CManageDlg::OnBnClickedBtaddtype()
{
CADDTypeDlg dlg;
dlg.DoModal();
LoadType();
}
// 读入所有书名,作者
void CManageDlg::LoadBook()
{
_RecordsetPtr pRecord;
_variant_t value;
// 清空list
m_BookList.DeleteAllItems();
try
{
// 生成Recordset实例
pRecord.CreateInstance("ADODB.Recordset");
CString sql;
sql = "SELECT b.ID , b.Name , a.Name ";
sql += "FROM Book b, Author a ";
sql += "WHERE b.Author = a.ID";
// 打开记录集,静态光标(静态记录集),乐观锁定方式
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;
value = pRecord->GetCollect( "ID" );
if( value.vt != VT_NULL )
{
k = value.lVal;
// 作者
value = pRecord->GetCollect("b.Name");
if( value.vt != VT_NULL )
name = value.bstrVal;
else
name = "";
// 书名
value = pRecord->GetCollect("a.Name");
if( value.vt != VT_NULL )
author = value.bstrVal;
else
author = "";
// 加入链表
temp.Format( "%d",k);
m_BookList.InsertItem(i,temp,0);
m_BookList.SetItemText(i,1,name);
m_BookList.SetItemText(i,2,author);
i++;
}
pRecord->MoveNext();
}
pRecord->Close();
pRecord = NULL;
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
}
void CManageDlg::OnNMClickListBook(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
ShowSltBookInfo();
}
// 显示当前选中的书的信息
void CManageDlg::ShowSltBookInfo()
{
if(m_BookList.GetSelectedCount() <= 0)
{
return;
}
int k = 0;
int countnum=m_BookList.GetItemCount();
for(int i =0;i<countnum;i++)
{
if(m_BookList.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)//选中状态。。
{
k = i;
}
}
CString id;
id = m_BookList.GetItemText(k,0);
LoadOneBookData( atol( id ) );
}
// 读入一本书的所有属性,并更改显示
// id : 书的索引号
bool CManageDlg::LoadOneBookData( int id )
{
_RecordsetPtr pRecord;
_variant_t value;
try
{
// 生成Recordset实例
pRecord.CreateInstance("ADODB.Recordset");
CString sql;
sql.Format("SELECT * FROM Book WHERE ID = %d", id );
// 打开记录集,静态光标(静态记录集),乐观锁定方式
pRecord->Open(sql.GetBuffer(), // 查询所有语句
_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if( !pRecord->adoEOF )
{
// 书名
c++编的图书管理系统有界面的
4星 · 超过85%的资源 需积分: 10 109 浏览量
2009-01-03
10:02:29
上传
评论 3
收藏 267KB RAR 举报
woxiangkeer
- 粉丝: 0
- 资源: 1
最新资源
- IMG_20240425_120538.jpg
- My Complete Genome_6k Base-Pairs of Phenotype SNPs_Complete Raw Data.zip
- qt 的mqtt测试demo
- 移动应用开发教程-zip.zip
- mosquitto-2.018-install-windows-x64
- FTPServer FTP 服务器,绿色免安装,单文件
- 梦畅语音点名软件,上课点名
- 利用ADNI数据集和标签,在tensorflow框架上使用tensorlayer接口,通过架构u-net实现海马体的分割
- Kutools for Word v9.0 office word 插件
- 修复Windows 10 LTSC 2021资源占用率高
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论4