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

📄 queryadvanceddlg.cpp

📁 同学编写的图书馆管理系统(数据库原理大作业)
💻 CPP
字号:
// QueryAdvancedDlg.cpp : implementation file
//

#include "stdafx.h"
#include "LIBRARY.h"
#include "QueryAdvancedDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CQueryAdvancedDlg dialog


CQueryAdvancedDlg::CQueryAdvancedDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CQueryAdvancedDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CQueryAdvancedDlg)
	m_condition1 = _T("");
	m_condition2 = _T("");
	m_condition3 = _T("");
	m_condition4 = _T("");
	m_keyword1 = _T("");
	m_keyword2 = _T("");
	m_keyword3 = _T("");
	m_keyword4 = _T("");
	m_strKey = _T("");
	m_strOrder = _T("");
	m_andOr1 = _T("");
	m_andOr2 = _T("");
	m_andOr3 = _T("");
	m_andOr4 = _T("");
	m_andOr5 = _T("");
	m_condition5 = _T("");
	m_condition6 = _T("");
	m_keyword5 = _T("");
	m_keyword6 = _T("");
	m_keyword7 = _T("");
	m_keyword8 = _T("");
	//}}AFX_DATA_INIT
}


void CQueryAdvancedDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CQueryAdvancedDlg)
	DDX_Control(pDX, IDC_LIST_RESULT, m_listResult);
	DDX_Control(pDX, IDC_LIST_DETAIL, m_listDetail);
	DDX_CBString(pDX, IDC_CONDITION1, m_condition1);
	DDX_CBString(pDX, IDC_CONDITION2, m_condition2);
	DDX_CBString(pDX, IDC_CONDITION3, m_condition3);
	DDX_CBString(pDX, IDC_CONDITION4, m_condition4);
	DDX_Text(pDX, IDC_KEY_WORD1, m_keyword1);
	DDX_Text(pDX, IDC_KEY_WORD2, m_keyword2);
	DDX_Text(pDX, IDC_KEY_WORD3, m_keyword3);
	DDX_Text(pDX, IDC_KEY_WORD4, m_keyword4);
	DDX_CBString(pDX, IDC_SELKEY, m_strKey);
	DDX_CBString(pDX, IDC_SELORDER, m_strOrder);
	DDX_CBString(pDX, IDC_AND_OR1, m_andOr1);
	DDX_CBString(pDX, IDC_AND_OR2, m_andOr2);
	DDX_CBString(pDX, IDC_AND_OR3, m_andOr3);
	DDX_CBString(pDX, IDC_AND_OR4, m_andOr4);
	DDX_CBString(pDX, IDC_AND_OR5, m_andOr5);
	DDX_CBString(pDX, IDC_CONDITION5, m_condition5);
	DDX_CBString(pDX, IDC_CONDITION6, m_condition6);
	DDX_Text(pDX, IDC_KEY_WORD5, m_keyword5);
	DDX_Text(pDX, IDC_KEY_WORD6, m_keyword6);
	DDX_Text(pDX, IDC_KEY_WORD7, m_keyword7);
	DDX_Text(pDX, IDC_KEY_WORD8, m_keyword8);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CQueryAdvancedDlg, CDialog)
	//{{AFX_MSG_MAP(CQueryAdvancedDlg)
	ON_LBN_SELCHANGE(IDC_LIST_RESULT, OnSelchangeListResult)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CQueryAdvancedDlg message handlers

void CQueryAdvancedDlg::OnOK() 
{
	// TODO: Add extra validation here
	CString str;
	CString strFilter;
	CString *astrKeyWord[9];
	CString astrColumnCaption[8];
	CString *astrColumnVal[8];
	CString *aAndOr[8];
	int i,last;
	CString kw,odby;
	UpdateData();
//	AfxMessageBox(m_strKey+m_strOrder);

	if (m_strKey=="书号") kw="bno";
	else if (m_strKey=="年份") kw="year";
	else if (m_strKey=="类别") kw="category";
	else if (m_strKey=="出版社") kw="press";
	else if (m_strKey=="作者") kw="author";
	else if (m_strKey=="价格") kw="price";
	else if (m_strKey=="总藏书量") kw="totalnum";
	else if (m_strKey=="现藏书量") kw="stockednum";
	else kw="title";
	if (m_strOrder=="升序") odby="asc";
	else odby="desc";
//	AfxMessageBox(kw+odby);

	aAndOr[1]=&m_andOr1;
	aAndOr[2]=&m_andOr2;
	aAndOr[3]=&m_andOr3;
	aAndOr[4]=&m_andOr4;
	aAndOr[5]=&m_andOr5;
	astrColumnVal[1]=&m_condition1;
	astrColumnVal[2]=&m_condition2;
	astrColumnVal[3]=&m_condition3;
	astrColumnVal[4]=&m_condition4;
	astrColumnVal[5]=&m_condition5;
	astrColumnVal[6]=&m_condition6;
	astrKeyWord[1]=&m_keyword1;
	astrKeyWord[2]=&m_keyword2;
	astrKeyWord[3]=&m_keyword3;
	astrKeyWord[4]=&m_keyword4;
	astrKeyWord[5]=&m_keyword5;
	astrKeyWord[6]=&m_keyword6;
	astrKeyWord[7]=&m_keyword7;
	astrKeyWord[8]=&m_keyword8;

/*	书号
		书名
		类别
		出版社
		年份
		作者
		价格
		总藏书量
		现藏书量*/

	for (i=1;i<7;i++)
	{
		if (!astrColumnVal[i]->Compare("书号"))
		{
			astrColumnCaption[i]="bno";
		}
		if (!astrColumnVal[i]->Compare("书名"))
		{
			astrColumnCaption[i]="title";
		}
		if (!astrColumnVal[i]->Compare("类别"))
		{
			astrColumnCaption[i]="category";
		}
		if (!astrColumnVal[i]->Compare("出版社"))
		{
			astrColumnCaption[i]="press";
		}
		if (!astrColumnVal[i]->Compare("年份"))
		{
			astrColumnCaption[i]="year";
		}
		if (!astrColumnVal[i]->Compare("作者"))
		{
			astrColumnCaption[i]="author";
		}
		if (!astrColumnVal[i]->Compare("价格"))
		{
			astrColumnCaption[i]="price";
		}
		if (!astrColumnVal[i]->Compare("总藏书量"))
		{
			astrColumnCaption[i]="totalnum";
		}
		if (!astrColumnVal[i]->Compare("现藏数量"))
		{
			astrColumnCaption[i]="stockednum";
		}
	}
	i=1;last=0;
	while(/*!astrKeyWord[i]->IsEmpty()&&*/i<7)
	{
//		AfxMessageBox("!");
		if (astrKeyWord[i]->IsEmpty()) {i++;continue;}
		if (last)
		{
			strFilter+=" ";
			int j=last;
			while (*aAndOr[j]=="") j++;
			strFilter+=*aAndOr[j];
			strFilter+=" ";
		}
		if (astrColumnCaption[i]=="price" || astrColumnCaption[i]=="year" || 
			astrColumnCaption[i]=="totalnum" || astrColumnCaption[i]=="stockednum")
			str.Format("%s>=%s and %s<=%s",astrColumnCaption[i],*astrKeyWord[i],astrColumnCaption[i],*astrKeyWord[i+2]);
		else if (astrColumnCaption[i]=="bno") str.Format("%s ='%s'",astrColumnCaption[i],*astrKeyWord[i]);
		else str=astrColumnCaption[i]+" like '%"+(*astrKeyWord[i])+"%'";
		strFilter+=str;
		last=i;
		i++;
	}
	m_bookSet.m_strFilter=strFilter;
	m_bookSet.m_strSort=kw+" "+odby;
//	AfxMessageBox("Where "+m_bookSet.m_strFilter+" Order by "+m_bookSet.m_strSort);
	if (!m_bookSet.IsOpen())
		m_bookSet.Open();
	m_bookSet.Requery();
	m_listResult.ResetContent();
	m_listDetail.ResetContent();
	if (m_bookSet.IsEOF())
	{
		AfxMessageBox("对不起,没有搜到您想要的书,请检查输入是否正确。");
		return;
	}
	while(!m_bookSet.IsEOF())
	{
		m_listResult.AddString(m_bookSet.m_bno+"          "+m_bookSet.m_title);
		m_bookSet.MoveNext();
	}
	//CDialog::OnOK();
}

void CQueryAdvancedDlg::OnSelchangeListResult() 
{
	// TODO: Add your control notification handler code here
	CString Title[9];
	Title[0]="图书编号:                        ";
	Title[1]="类别:                              ";
	Title[2]="书名:                              ";
	Title[3]="出版社:                           ";
	Title[4]="出版年份:                        ";
	Title[5]="作者:                              ";
	Title[6]="价格:                              ";
	Title[7]="总藏书量:                        ";
	Title[8]="现藏数量:                        ";
	m_listDetail.ResetContent();
	int curSel;
	CString strDetail;
	CString strline;
	curSel=m_listResult.GetCurSel();
	m_bookSet.SetAbsolutePosition(curSel+1);
	for (unsigned int i=0;i<m_bookSet.m_nFields;i++)
	{
		m_bookSet.GetFieldValue(i,strDetail);
		strline.Empty();
		strline+=Title[i];
		strline+=strDetail;
		m_listDetail.AddString(strline);
	}		
}

⌨️ 快捷键说明

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