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

📄 searchstdlg.cpp

📁 学校社团管理系统Visual C
💻 CPP
字号:
/**
 * <p> Title: 查询社团的窗口类实现 </p>
 * <p> Description:提供查询社团功能 </p>
 * <p> Copyright: Copyright (c) 2005-12-17 </p>
 * <p> Company: bjut </p>
 * @author gaok
 * @version 1.0 
 * @Created on 2005-12-17
 */
#include "stdafx.h"
#include "STMis.h"
#include "SearchSTDlg.h"
#include "AddXsMsgReSet.h"
#include "AddStMsgRSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSearchSTDlg dialog

/*
 * 构造函数
 */
CSearchSTDlg::CSearchSTDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSearchSTDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSearchSTDlg)
	m_strStuId = _T(""); // 所输入的学生学号
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CSearchSTDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSearchSTDlg)
	DDX_Control(pDX, IDC_LIST1, m_ctrList);
	DDX_Text(pDX, IDC_EDIT_STUDENTID, m_strStuId); // 学生学号
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSearchSTDlg, CDialog)
	//{{AFX_MSG_MAP(CSearchSTDlg)
	ON_BN_CLICKED(IDC_Search, OnButtonSearch)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSearchSTDlg message handlers
/*
 * 初始化社团列表的列表名字
 */
BOOL CSearchSTDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	UpdateData(TRUE); // 读入用户输入的信息

	// 设置学生信息列表的表项
	m_ctrList.InsertColumn(0,"社团名称");
	m_ctrList.InsertColumn(1,"社团负责人");
	m_ctrList.InsertColumn(2,"联系电话");
	m_ctrList.SetColumnWidth(0,100);
	m_ctrList.SetColumnWidth(1,100);
	m_ctrList.SetColumnWidth(2,100);
	m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); // 设置列表	
	UpdateData(FALSE);	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
/*
 * 执行查询操作后刷新社团信息列表的记录
 * @param oaValues 数组对象
 */
void CSearchSTDlg::RefreshData(CStringArray* oaValues)
{	
	int i=0;
	StSearch* ssSearch = new StSearch();
	m_ctrList.DeleteAllItems(); // 将活动列表的记录清空
	m_ctrList.SetRedraw(FALSE);
	UpdateData(TRUE); // 读入用户输入的信息
	for (int j = 0; j < oaValues->GetSize(); j++) { // 将社团名称依次取出
		strSQL.Format("select * from ST where ST_ZZMC='%s' order by ST_ZZMC", oaValues->GetAt(j));
		/* 将符合条件的查询结果显示在列表中, 将CRecordset对象转成不同的数据集对象 */
        CAddStMsgRSet* m_recordSet = (CAddStMsgRSet *)ssSearch->RefreshData(strSQL);
        /* 将记录显示在活动列表中 */
		m_ctrList.InsertItem(i,m_recordSet->m_ST_ZZMC); // 社团名称
		m_ctrList.SetItemText(i,1,m_recordSet->m_ST_FZR); // 负责人
		m_ctrList.SetItemText(i,2,m_recordSet->m_ST_LXDH); // 联系电话
		i++;
	}
	m_database.Close(); // 关掉数据库
	m_ctrList.SetRedraw(TRUE);
}

/*
 * 执行查询操作
 */
void CSearchSTDlg::OnButtonSearch() 
{
	UpdateData(); // 读入用户输入的信息
	int i=0;
	CString  strSQL; // sql文
	BOOL bHaveCon = FALSE; // 是否输入了“学生学号”
	StSearch* ssSearch = new StSearch();
	if(m_strStuId!="") { // 若输入了“学生学号”
		strSQL.Format("select * from XS where XS_SCBZ=false and XS_XH = '%s' order by XS_STMC",m_strStuId);
		bHaveCon = TRUE;
	}
	if(!bHaveCon) { // 若什么都没有选择,则查询所有的
		strSQL.Format("select * from XS where XS_SCBZ=false order by XS_STMC");
	}
	/* 将符合条件的查询结果显示在列表中, 将CRecordset对象转成不同的数据集对象 */
	CAddXsMsgReSet* oaValues = (CAddXsMsgReSet *)ssSearch->getSearchResult(strSQL);
	CStringArray* saRecord = new CStringArray();
	/* 将有重复的社团过滤掉 */
	while (!oaValues->IsEOF()) {
		bool flag = true;
		CString sStZzmc = oaValues->m_XS_STMC;
		CAddXsMsgReSet* oaSecValues = (CAddXsMsgReSet *)ssSearch->getSearchResult(strSQL); // 用来比较是否有重复记录的结果集合
		oaSecValues->Move(i); // 记录移到第i条
		if (!oaSecValues->IsEOF()) { // 如果不是最后记录了,则向下移动一条记录
            oaSecValues->MoveNext();
		}
		while (!oaSecValues->IsEOF()) {
			if (sStZzmc == oaSecValues->m_XS_STMC) { // 如果有重复的,就跳出这层循环
				flag = false;
				break;
			}
			oaSecValues->MoveNext();
		}
		if (flag) { // 将过滤后的社团名称加到数组中
			saRecord->Add(sStZzmc);	
		}
		i++;
		oaValues->MoveNext();
	}
	RefreshData(saRecord); // 查询出结果,刷新显示列表
}

⌨️ 快捷键说明

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