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

📄 bookmanagedlg.cpp

📁 书库管理 使用时要输入密码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// BookManageDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "BookManage.h"
#include "BookManageDlg.h"
#include ".\bookmanagedlg.h"
#include "dlgaddbook.h"
#include "dlglendbook.h"
#include "dlgback.h"
#include "clog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// 对话框数据
	enum { IDD = IDD_ABOUTBOX };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()


// CBookManageDlg 对话框



CBookManageDlg::CBookManageDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CBookManageDlg::IDD, pParent)
	,m_CurSelQuyKeyWord("书名")
	, m_bQueryType(FALSE)
	, m_Edit_QueryContent(_T(""))
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CBookManageDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_BOOKLIST, m_ListBook);

	DDX_Control(pDX, IDC_COMBO_QUERY_KEY_WORD, m_CobQueryKeyWord);


	DDX_Radio(pDX, IDC_RADIO1, m_bQueryType);
	DDX_Text(pDX, IDC_EDIT_QUERY_CONTENT, m_Edit_QueryContent);
}

BEGIN_MESSAGE_MAP(CBookManageDlg, CDialog)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	
	ON_BN_CLICKED(IDC_QUERY, OnBnClickedQuery)
	ON_CBN_SELCHANGE(IDC_COMBO_QUERY_KEY_WORD, OnCbnSelchangeComboQueryKeyWord)
	ON_WM_DESTROY()
	ON_COMMAND(ID_ADD, OnAdd)
	ON_COMMAND(ID_LEND, OnLend)
	ON_COMMAND(ID_DEL, OnDel)
	ON_COMMAND(ID_BACK, OnBack)
	ON_COMMAND(ID_ABOUT, OnAbout)
	ON_COMMAND(ID_MODIFY_DATA, OnModifyData)
	ON_NOTIFY(NM_CLICK, IDC_BOOKLIST, OnNMClickBooklist)
END_MESSAGE_MAP()


// CBookManageDlg 消息处理程序

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

	// 将\“关于...\”菜单项添加到系统菜单中。

	// IDM_ABOUTBOX 必须在系统命令范围内。
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码


	



	m_ListBook.SetBkColor(RGB(240,247,233));
	m_ListBook.SetTextBkColor(RGB(240,247,233));

	

	DWORD dwStyle;
	RECT rect;
	
	dwStyle = m_ListBook.GetStyle();
	dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT ;//|LVS_SHOWSELALWAYS
	m_ListBook.SetExtendedStyle(dwStyle);
	m_ListBook.GetClientRect(&rect);

	//设置list对话框的列
	m_ListBook.InsertColumn(1,"序 号",LVCFMT_LEFT,50);
	m_ListBook.InsertColumn(1,"页数",LVCFMT_LEFT,80);
	m_ListBook.InsertColumn(1,"借阅人",LVCFMT_LEFT,160);
	m_ListBook.InsertColumn(1,"状态",LVCFMT_LEFT,80);
	m_ListBook.InsertColumn(1,"出版时间",LVCFMT_LEFT,80);
	m_ListBook.InsertColumn(1,"出版社",LVCFMT_LEFT,80);
	m_ListBook.InsertColumn(1,"编号",LVCFMT_LEFT,80);
	m_ListBook.InsertColumn(1,"作 者",LVCFMT_LEFT,80);
	m_ListBook.InsertColumn(1,"书 名",LVCFMT_LEFT,80);
	

	//设置Cob
	m_CobQueryKeyWord.InsertString(0,"书名");
	m_CobQueryKeyWord.InsertString(1,"作者");
	m_CobQueryKeyWord.InsertString(2,"书籍编号");
	m_CobQueryKeyWord.InsertString(3,"出版社");
	m_CobQueryKeyWord.InsertString(4,"借阅人");

	//数据库操作
	/*
	char con[200];
	sprintf(con,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;"";""","BookData.mdb");
	_bstr_t conn(con);

	
	try
	{
		m_pConnection->Open(conn,"","",-1 );
	}
	catch(_com_error e)
	{
		AfxMessageBox("数据库连接失败!");
		return TRUE;
	
	} 

*/
//	_RecordsetPtr  pRstSchema  = NULL;
//	pRstSchema = theApp.m_pConnection->OpenSchema(adSchemaTables);


	
	m_commandptr.CreateInstance (__uuidof(Command));
		
	m_commandptr->ActiveConnection =theApp.m_pConnection ;

	CCLog dlgLog;
	int nRespond = dlgLog.DoModal();
	if(nRespond != IDOK)
	{
		GetDlgItem(IDC_QUERY)->EnableWindow(FALSE);
		CMenu* mmenu = AfxGetMainWnd()->GetMenu();

		CMenu* submenu = mmenu->GetSubMenu(0);

		submenu->EnableMenuItem(ID_ADD,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
		submenu->EnableMenuItem(ID_BACK,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
		submenu->EnableMenuItem(ID_LEND,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
		submenu->EnableMenuItem(ID_DEL,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
	}
	return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE
}

void CBookManageDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CBookManageDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标显示。
HCURSOR CBookManageDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}



void CBookManageDlg::OnBnClickedQuery()
{
	// TODO: 在此添加控件通知处理程序代码

	//查询操作
	_RecordsetPtr  m_pUserSet;
	
	
	m_pUserSet.CreateInstance (__uuidof(Recordset));

	UpdateData(TRUE);
	char SQLstr[200];
	m_ListBook.DeleteAllItems();

	if(!m_bQueryType)
	{
		sprintf(SQLstr,"SELECT * FROM %s where %s Like'%s'",(LPCSTR)"BookManager",m_CurSelQuyKeyWord,m_Edit_QueryContent);//,,//where %s = '%s
		if(m_Edit_QueryContent=="*")
			sprintf(SQLstr,"SELECT * FROM %s ",(LPCSTR)"BookManager");//,,//where %s = '%s


	}
	else
	{
		sprintf(SQLstr,"SELECT * FROM %s where %s Like'%s%s%s'",(LPCSTR)"BookManager",m_CurSelQuyKeyWord,"%",m_Edit_QueryContent,"%");
		if(m_Edit_QueryContent=="*")
			sprintf(SQLstr,"SELECT * FROM %s ",(LPCSTR)"BookManager");
	}
	m_CurSql = SQLstr;
	m_commandptr->CommandText = _bstr_t(SQLstr);
	m_commandptr->CommandType =adCmdText;	



	try
	{
		m_pUserSet=m_commandptr->Execute(NULL,NULL,adCmdUnknown);

		CString str;
		char ch[50];

		int i = 0;
		m_pUserSet->MoveFirst();

		while(!m_pUserSet ->adoEOF)
		{
			LV_ITEM m_ListItem;
			m_ListItem.mask=LVIF_TEXT;
			str.Format("%d",i);
			sscanf(str,"%s",ch);
			m_ListItem.pszText=ch;
			m_ListItem.iItem = i;
			m_ListItem.iSubItem = 0;
			m_ListBook.InsertItem(&m_ListItem);



			m_ListBook.SetItemText(i,1,(char*)(_bstr_t)(m_pUserSet->GetCollect("书名")));
			m_ListBook.SetItemText(i,2,(char*)(_bstr_t)(m_pUserSet->GetCollect("作者")));
			m_ListBook.SetItemText(i,3,(char*)(_bstr_t)(m_pUserSet->GetCollect("书籍编号")));
			m_ListBook.SetItemText(i,4,(char*)(_bstr_t)(m_pUserSet->GetCollect("出版社")));
			m_ListBook.SetItemText(i,5,(char*)(_bstr_t)(m_pUserSet->GetCollect("出版时间")));
			m_ListBook.SetItemText(i,6,(char*)(_bstr_t)(m_pUserSet->GetCollect("状态")));
			m_ListBook.SetItemText(i,7,(char*)(_bstr_t)(m_pUserSet->GetCollect("借阅人")));
			m_ListBook.SetItemText(i,8,(char*)(_bstr_t)(m_pUserSet->GetCollect("页数")));

			i++;
			m_pUserSet->MoveNext();
		}
	}
	catch(_com_error e)
	{
		AfxMessageBox("没有所要查询的纪录!");
		return;
	}
	
	m_pUserSet->Close();
	m_pUserSet = NULL;
	

}

void CBookManageDlg::OnCbnSelchangeComboQueryKeyWord()
{
	// TODO: 在此添加控件通知处理程序代码
	int CurSelIndex = m_CobQueryKeyWord.GetCurSel();
	m_CobQueryKeyWord.GetLBText(CurSelIndex,m_CurSelQuyKeyWord);
}

void CBookManageDlg::OnDestroy()
{
	CDialog::OnDestroy();

//	m_pUserSet->Close();
//	m_pConnection->Close();
//	m_commandptr->Release();

	// TODO: 在此处添加消息处理程序代码
}

void CBookManageDlg::OnAdd()
{
	// TODO: 在此添加命令处理程序代码
	CDlgAddBook DlgAddBook;
	int nRespond = DlgAddBook.DoModal();

	if(m_CurSql.IsEmpty())
		return;

	if(IDOK == nRespond )
	{
		_RecordsetPtr  m_pRecordset;
	
		m_pRecordset.CreateInstance (__uuidof(Recordset));
		m_ListBook.DeleteAllItems();
		m_commandptr->CommandText = _bstr_t(m_CurSql);
		m_commandptr->CommandType =adCmdText;	
		m_pRecordset = m_commandptr->Execute(NULL,NULL,adCmdUnknown);
		int i = 0;
		m_pRecordset->MoveFirst();
		char ch[10];
		CString str;
		while(!m_pRecordset ->adoEOF)
		{
			LV_ITEM m_ListItem;
			m_ListItem.mask=LVIF_TEXT;
			str.Format("%d",i);
			sscanf(str,"%s",ch);
			m_ListItem.pszText=ch;
			m_ListItem.iItem = i;
			m_ListItem.iSubItem = 0;
			m_ListBook.InsertItem(&m_ListItem);



			m_ListBook.SetItemText(i,1,(char*)(_bstr_t)(m_pRecordset->GetCollect("书名")));
			m_ListBook.SetItemText(i,2,(char*)(_bstr_t)(m_pRecordset->GetCollect("作者")));
			m_ListBook.SetItemText(i,3,(char*)(_bstr_t)(m_pRecordset->GetCollect("书籍编号")));
			m_ListBook.SetItemText(i,4,(char*)(_bstr_t)(m_pRecordset->GetCollect("出版社")));
			m_ListBook.SetItemText(i,5,(char*)(_bstr_t)(m_pRecordset->GetCollect("出版时间")));
			m_ListBook.SetItemText(i,6,(char*)(_bstr_t)(m_pRecordset->GetCollect("状态")));
			m_ListBook.SetItemText(i,7,(char*)(_bstr_t)(m_pRecordset->GetCollect("借阅人")));
			m_ListBook.SetItemText(i,8,(char*)(_bstr_t)(m_pRecordset->GetCollect("页数")));

			i++;
			m_pRecordset->MoveNext();
		}

	}

}

void CBookManageDlg::OnLend()
{
	// TODO: 在此添加命令处理程序代码
	
	POSITION pos = m_ListBook.GetFirstSelectedItemPosition();
	int nItem = m_ListBook.GetNextSelectedItem(pos);

	CString bookname = m_ListBook.GetItemText(nItem,1);
	if(bookname.IsEmpty())
	{
		AfxMessageBox("请先选择书籍!");
		return;
	}

	CString str;
	str = m_ListBook.GetItemText(nItem,6);
	if(str.Compare("0")==0)
	{
		AfxMessageBox("此书已借出");
		return;
	}

	CString nowtime;
	CTime now=CTime::GetCurrentTime();
	nowtime=now.Format(_T("%Y%m%d"));
	CDlgLendBook dlglend;
	dlglend.m_sLendTime = nowtime;

	dlglend.m_sBookName = bookname;
	

	CString bookcode;
	bookcode = m_ListBook.GetItemText(nItem,3);
	int nRespond = dlglend.DoModal();

	if(nRespond == IDOK)
	{
		_RecordsetPtr  m_pRecordset;
		try
		{
			m_pRecordset.CreateInstance (__uuidof(Recordset));

			m_pRecordset->Open("SELECT * FROM BookManager",                // 查询DemoTable表中所有字段
							theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
		
			m_pRecordset->MoveFirst();

			CString temp;
			

⌨️ 快捷键说明

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