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

📄 coursepage.cpp

📁 &#61557 职责描述:
💻 CPP
字号:
// CoursePage.cpp : implementation file
//

#include "stdafx.h"
#include "StudentCheck.h"
#include "CoursePage.h"
#include "GeneralQueryDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCoursePage property page

IMPLEMENT_DYNCREATE(CCoursePage, CPropertyPage)

CCoursePage::CCoursePage() : CPropertyPage(CCoursePage::IDD)
{
	//{{AFX_DATA_INIT(CCoursePage)
	m_strTotal = _T("");
	//}}AFX_DATA_INIT
}

CCoursePage::~CCoursePage()
{
}

void CCoursePage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCoursePage)
	DDX_Control(pDX, IDC_LIST_GOTOCLASS, m_ctrlCourseList);
	DDX_Control(pDX, IDC_BUTTON_QUERY, m_btnQuery);
	DDX_Text(pDX, IDC_STATIC_TOTAL, m_strTotal);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCoursePage, CPropertyPage)
	//{{AFX_MSG_MAP(CCoursePage)
	ON_BN_CLICKED(IDC_BUTTON_QUERY, OnButtonQuery)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCoursePage message handlers

BOOL CCoursePage::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	// TODO: Add extra initialization here
		//为List添加网格
	this->m_ctrlCourseList.SetExtendedStyle(LVS_EX_GRIDLINES);

	//设置List的列
	int nWidth=110;
	this->m_ctrlCourseList.InsertColumn(0,"学号",LVCFMT_LEFT,nWidth);
	this->m_ctrlCourseList.InsertColumn(1,"姓名",LVCFMT_LEFT,nWidth);
	this->m_ctrlCourseList.InsertColumn(2,"性别",LVCFMT_LEFT,nWidth);
	this->m_ctrlCourseList.InsertColumn(3,"年级",LVCFMT_LEFT,nWidth);
	this->m_ctrlCourseList.InsertColumn(4,"专业",LVCFMT_LEFT,nWidth);
	this->m_ctrlCourseList.InsertColumn(5,"班级",LVCFMT_LEFT,nWidth);
	this->m_ctrlCourseList.InsertColumn(6,"上课次数",LVCFMT_LEFT,nWidth);
	this->m_ctrlCourseList.InsertColumn(7,"未上课次数",LVCFMT_LEFT,nWidth);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CCoursePage::UpdateList()
{
	CString strFilter;
	CString strSTime;
	CString strETime;
	CString strGradeID;
	CString strSpecialtyID;
	CString strClassID;
	CString strStudentNum;

	CGeneralQueryDlg *pGeneralQueryDlg;
	pGeneralQueryDlg=(CGeneralQueryDlg*)GetParent()->GetParent();
	pGeneralQueryDlg->UpdateData();

	strSTime=pGeneralQueryDlg->GetStartTime();
	strETime=pGeneralQueryDlg->GetEndTime();
	strGradeID=pGeneralQueryDlg->GetGrade();
	strSpecialtyID=pGeneralQueryDlg->GetSpecialty();
	strClassID=pGeneralQueryDlg->GetClass();
	strStudentNum=pGeneralQueryDlg->GetStudentNum();

	if(strGradeID.GetLength()>0&&pGeneralQueryDlg->m_btnGrade.GetCheck()>0)
		strFilter="and (GradeID='"+strGradeID+"')";
	if(strSpecialtyID.GetLength()>0&&pGeneralQueryDlg->m_btnSpecialty.GetCheck()>0)
		strFilter+="and(SpecialtyID='"+strSpecialtyID+"')";
	if(strClassID.GetLength()>0&&pGeneralQueryDlg->m_btnClass.GetCheck()>0)
		strFilter+="and(ClassID='"+strClassID+"')";
	if(strStudentNum.GetLength()>0&&pGeneralQueryDlg->m_btnStudentNum.GetCheck()>0)
	{
		strFilter="";
		strFilter+="and(StudentNum='"+strStudentNum+"')";
	}
	//SQL语句
	_bstr_t vSql,vSql1;

	vSql1="Select StudentNum, Name,Sex,GradeName,SpecialtyName,ClassName,\
		Count(StudentNum) as IsNotDo from CourseInfo Where (CourseInfo.IsCourse=0)"+strFilter+
		"and(CourDateTime>#"+strSTime+"#)and(CourDateTime<#"+strETime+"#)"+
		" Group by  StudentNum, Name,Sex,GradeName,SpecialtyName,ClassName ";
  

	vSql="Select StudentNum, Name,Sex,GradeName,SpecialtyName,ClassName,\
		Count(StudentNum) as IsDo from CourseInfo Where (CourseInfo.IsCourse=1)"+strFilter+
		"and(CourDateTime>#"+strSTime+"#)and(CourDateTime<#"+strETime+"#)"+
		" Group by  StudentNum, Name,Sex,GradeName,SpecialtyName,ClassName ";

	
	int iCount=m_CurAdo.GetRecordCount(vSql);
	if(iCount==0)return;

	_RecordsetPtr pRs,pRs1;
	pRs=m_CurAdo.GetRecordSet(vSql);
	pRs1=m_CurAdo.GetRecordSet(vSql1);
	int i=0;
	_variant_t Holder;
	CString str,str1;
	CStringArray sa_Stu[2];
	while(pRs1->adoEOF==0)
	{
		//获得学号
		Holder=pRs1->GetCollect("StudentNum");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
        sa_Stu[0].Add(str);

		//获得为出操次数
		Holder=pRs1->GetCollect("IsNotDo");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
        sa_Stu[1].Add(str);             
		i++;
		pRs1->MoveNext();
	}
	i=0;
	//获取记录集中的数据
	while(pRs->adoEOF==0)
	{
		//获得学号
		Holder=pRs->GetCollect("StudentNum");
		str1=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlCourseList.InsertItem(i,str1);

		//获得姓名
		Holder=pRs->GetCollect("Name");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlCourseList.SetItemText(i,1,str);

		//获得性别
		Holder=pRs->GetCollect("Sex");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlCourseList.SetItemText(i,2,str);

		//获得年级
		Holder=pRs->GetCollect("GradeName");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlCourseList.SetItemText(i,3,str);

		//获得专业
		Holder=pRs->GetCollect("SpecialtyName");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlCourseList.SetItemText(i,4,str);

		//获得班级
		Holder=pRs->GetCollect("ClassName");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlCourseList.SetItemText(i,5,str);

		//获得上课次数
		Holder=pRs->GetCollect("IsDo");
		str=Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		m_ctrlCourseList.SetItemText(i,6,str);

		//获得未上课次数
		if(!str1.Compare(sa_Stu[0].GetAt(i)))
		{
			str=sa_Stu[1].GetAt(i);
			m_ctrlCourseList.SetItemText(i,7,str);
		}
		i++;
		pRs->MoveNext();
	}
}

void CCoursePage::OnButtonQuery() 
{
	// TODO: Add your control notification handler code here
	CGeneralQueryDlg *pGeneralQueryDlg;
	pGeneralQueryDlg=(CGeneralQueryDlg*)GetParent()->GetParent();
	pGeneralQueryDlg->UpdateData();

	if(pGeneralQueryDlg->IsSelected())
	{
		this->m_ctrlCourseList.DeleteAllItems();
		UpdateList();
	}
}

⌨️ 快捷键说明

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