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

📄 querybasicdlg.cpp

📁 这个是我写的图书馆管理系统
💻 CPP
字号:
// QueryBasicDlg.cpp : implementation file
//

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

#include "BookRS1.h"

#include "QueryBasicDlg.h"
#include "QueryAdvancedDlg1.h"

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

/////////////////////////////////////////////////////////////////////////////
// CQueryBasicDlg dialog


CQueryBasicDlg::CQueryBasicDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CQueryBasicDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CQueryBasicDlg)
	m_strKeyWord = _T("");
	m_strkw = _T("");
	m_strodby = _T("");
	//}}AFX_DATA_INIT
}


void CQueryBasicDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CQueryBasicDlg)
	DDX_Control(pDX, IDC_LIST_RESULT, m_listResult);
	DDX_Control(pDX, IDC_LIST_DETAIL, m_listDetail);
	DDX_Text(pDX, IDC_KEY_WORD, m_strKeyWord);
	DDX_CBString(pDX, IDC_SEQUENCEKW, m_strkw);
	DDX_CBString(pDX, IDC_SEQUENCEODBY, m_strodby);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CQueryBasicDlg, CDialog)
	//{{AFX_MSG_MAP(CQueryBasicDlg)
	ON_BN_CLICKED(IDC_QUERY, OnQuery)
	ON_LBN_SELCHANGE(IDC_LIST_RESULT, OnSelchangeListResult)
	ON_BN_CLICKED(IDC_ADVANCED_QUERY, OnAdvancedQuery)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CQueryBasicDlg message handlers

void CQueryBasicDlg::OnQuery() 
{
	// TODO: Add your control notification handler code here
    CString skw,sby;
	UpdateData();//将编辑框内容更新到与此绑定的成员变量如m_strKeyWord中
	if(m_strkw == "书名" || m_strkw == "")
		skw = "title";
	else if(m_strkw == "书号")
		skw = "bno";
	else if(m_strkw == "出版社")
		skw = "press";
	else if(m_strkw == "年份")
		skw = "year";
	else if(m_strkw == "类别")
		skw = "category";
	else if(m_strkw == "作者")
		skw = "author";
	else if(m_strkw == "总藏书量")
		skw = "totalnum";
	else if(m_strkw == "库存")
		skw = "stockednum";
	else
		skw = "price";
	if(m_strodby == "升序" || m_strodby == "")
		sby = "ASC";
	else
	    sby = "DESC";

	m_listResult.ResetContent();//清空结果列表的内容(如果有)
	if (!m_bookSet.IsOpen()){
		m_bookSet.Open();
	}
	//设置查询条件,根据书名关键字进行模糊查询
	m_bookSet.m_strFilter="title like '%"+m_strKeyWord+"%'";
    m_bookSet.m_strSort=skw+" "+sby;
	//AfxMessageBox(m_bookSet.m_strSort);
	m_bookSet.Requery();
	
	//找不到该书
	if (m_bookSet.IsEOF()){
		AfxMessageBox("查无此书");
		return;
	}
	//将全部的结果显示在结果列表中
	while (!m_bookSet.IsEOF()){		
		m_listResult.AddString(m_bookSet.m_title);
		m_bookSet.MoveNext();
	}
}

void CQueryBasicDlg::OnSelchangeListResult() 
{
	// TODO: Add your control notification handler code here
	CString aColCaption[9];
	aColCaption[0]="书号:     ";
	aColCaption[1]="书名:      ";
	aColCaption[2]="类别:      ";
	aColCaption[3]="年份:    ";
	aColCaption[4]="出版社     ";
	aColCaption[5]="作者:      ";
	aColCaption[6]="价格:     ";
	aColCaption[7]="总藏书量: ";
	aColCaption[8]="库存:     ";
	
	m_listDetail.ResetContent();//清空书目详细信息列表中的原有内容
	int curSel;//记录集中的当前位置
	CString strDetail;//内容
	CString  strLine;//列表中的一行,行=标题:+内容
	curSel=	m_listResult.GetCurSel();//取得结果列表中当前的选中位置
	m_bookSet.SetAbsolutePosition(curSel+1);	//将记录集指针移到该位置
	for (int i=0;i<m_bookSet.m_nFields;i++){
		m_bookSet.GetFieldValue(i,strDetail);//从记录集中取出第i列的值,存在strDetail中
		strLine.Empty();// 清空原有的内容
		strLine+=aColCaption[i];//增加标题
		strLine+=strDetail;//增加内容		
		m_listDetail.AddString(strLine);//把该行添加到书目详细信息的列表中		
	}
}

void CQueryBasicDlg::OnAdvancedQuery() 
{
	// TODO: Add your control notification handler code here
	int i;
	CQueryAdvancedDlg1 advancedQuery;
    advancedQuery.DoModal();       //显示“高级查询”对话框
	CString str;
	CString strFilter;              //查询条件
	CString * astrKeyWord[9];
	CString astrColumnCaption[7];
    CString * astrColumnVal[7];
	CString * aAndOr[6];
	CString skw,sby;
	//advancedQuery.UpdateData();
	//CQASet.UpdateData();
	//AfxMessageBox(advancedQuery.m_scon+advancedQuery.m_sby);
	if(advancedQuery.m_scon == "书名" || advancedQuery.m_scon == "")
		skw = "title";
	else if(advancedQuery.m_scon == "书号")
		skw = "bno";
	else if(advancedQuery.m_scon == "出版社")
		skw = "press";
	else if(advancedQuery.m_scon == "年份")
		skw = "year";
	else if(advancedQuery.m_scon == "类别")
		skw = "category";
	else if(advancedQuery.m_scon == "作者")
		skw = "author";
	else if(advancedQuery.m_scon == "总藏书量")
		skw = "totalnum";
	else if(advancedQuery.m_scon == "库存")
		skw = "stockednum";
	else
		skw = "price";
	if(advancedQuery.m_sby == "升序" || advancedQuery.m_sby == "")
		sby = "ASC";
	else
	    sby = "DESC";
	//AfxMessageBox(skw+sby);
	aAndOr[1] = &advancedQuery.m_andOr1;
	aAndOr[2] = &advancedQuery.m_andOr2;
	aAndOr[3] = &advancedQuery.m_andOr3;
	aAndOr[4] = &advancedQuery.m_andOr4;
	aAndOr[5] = &advancedQuery.m_andOr5;

	astrColumnVal[1] = &advancedQuery.m_condition1;
	astrColumnVal[2] = &advancedQuery.m_condition2;
	astrColumnVal[3] = &advancedQuery.m_condition3;
	astrColumnVal[4] = &advancedQuery.m_condition4;
	astrColumnVal[5] = &advancedQuery.m_condition5;
	astrColumnVal[6] = &advancedQuery.m_condition6;

	//将中文的查询转换成对应的表列名
    for(i=1;i<7;i++)
	{
		if (!astrColumnVal[i]->Compare("书名"))
		{
			astrColumnCaption[i] = "title";
            continue;
		}
		if (!astrColumnVal[i]->Compare("类别"))
		{
			astrColumnCaption[i] = "category";
            continue;
		}
		if (!astrColumnVal[i]->Compare("出版社"))
		{
			astrColumnCaption[i] = "press";
            continue;
		}
		if (!astrColumnVal[i]->Compare("作者"))
		{
			astrColumnCaption[i] = "author";
            continue;
		}
		if (!astrColumnVal[i]->Compare("价格"))
		{
			astrColumnCaption[i] = "price";
            continue;
		}
		if (!astrColumnVal[i]->Compare("年份"))
		{
			astrColumnCaption[i] = "year";
            continue;
		}
	}

	astrKeyWord[1] = &advancedQuery.m_keyword1;
	astrKeyWord[2] = &advancedQuery.m_keyword2;
	astrKeyWord[3] = &advancedQuery.m_keyword3;
	astrKeyWord[4] = &advancedQuery.m_keyword4;
	astrKeyWord[5] = &advancedQuery.m_keyword51;
	astrKeyWord[6] = &advancedQuery.m_keyword61;
	astrKeyWord[7] = &advancedQuery.m_keyword52;
	astrKeyWord[8] = &advancedQuery.m_keyword62;

	i=1;
	int temp = 0;
	while (i<7)
	{
		if(astrKeyWord[i]->IsEmpty())
		{
			i++;
			continue;
		}
		if(temp)
		{
			strFilter+= " ";
			strFilter+= *aAndOr[temp];
			strFilter+= " ";
		}
		if (astrColumnCaption[i]=="price" || astrColumnCaption[i]=="year")
		{
			str.Format("%s>=%s and %s<=%s", astrColumnCaption[i],*astrKeyWord[i],astrColumnCaption[i],*astrKeyWord[i+2]);
		}
		else
			//str.Format("%s = '%s'",astrColumnCaption[i],*astrKeyWord[i]);
		    str.Format("%s like '%%%s%%'",astrColumnCaption[i],*astrKeyWord[i]);
		strFilter+=str;
		temp=i;
		i++;
	}
	m_bookSet.m_strFilter = strFilter;
	m_bookSet.m_strSort=skw+" "+sby;
	//AfxMessageBox(m_bookSet.m_strSort);

	if(!m_bookSet.IsOpen())
	{
		m_bookSet.Open();
	}
	m_bookSet.Requery();//	AfxMessageBox(strFilter);
	m_listResult.ResetContent();
	m_listDetail.ResetContent();
	if(m_bookSet.IsEOF())
	{
		AfxMessageBox("查无此书");
		return;
	}
	while (!m_bookSet.IsEOF())
	{
		m_listResult.AddString(m_bookSet.m_title);
		m_bookSet.MoveNext();
	}
}

⌨️ 快捷键说明

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