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

📄 pagestat.cpp

📁 一个简单的本科生信息管理系统
💻 CPP
字号:
// PageStat.cpp : implementation file
//

#include "stdafx.h"
#include "UGMS.h"
#include "PageStat.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPageStat dialog


CPageStat::CPageStat(CWnd* pParent /*=NULL*/)
	: CDialog(CPageStat::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPageStat)
	m_Avg = 0;
	m_NPass = 0;
	m_CouNum = 0;
	m_SID = _T("");
	//}}AFX_DATA_INIT
}


void CPageStat::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPageStat)
	DDX_Control(pDX, IDC_ADODC, m_Ado);
	DDX_Control(pDX, IDC_DATAGRID, m_Data);
	DDX_Text(pDX, IDC_EDIT_AVERAGE, m_Avg);
	DDX_Text(pDX, IDC_EDIT_NPASSNum, m_NPass);
	DDX_Text(pDX, IDC_EDIT_NUMCOU, m_CouNum);
	DDX_Text(pDX, IDC_EDIT_SID, m_SID);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPageStat, CDialog)
	//{{AFX_MSG_MAP(CPageStat)
	ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPageStat message handlers
BOOL CPageStat::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_pRecordset.CreateInstance(__uuidof(Recordset));
	try
	{
		//从SQL数据库中打开STUDENTS表
		m_pRecordset->Open("SELECT * FROM STUDENTS", 
							theApp.m_pConnection.GetInterfacePtr(),
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CPageStat::OnButtonOk() 
{
		// TODO: Add your control notification handler code here
	UpdateData(true);
	_variant_t var;
	bool findSID = false;
	if(m_SID != "")
	{
		try
		{
			//先关闭已经打开的记录集对象
			m_pRecordset->Close();
			//从SQL数据库中打开STUDENTS表
			m_pRecordset->Open("SELECT * FROM STUDENTS", 
								theApp.m_pConnection.GetInterfacePtr(),
								adOpenDynamic,
								adLockOptimistic,
								adCmdText);
		}
		catch(_com_error *e)
		{
			AfxMessageBox(e->ErrorMessage());
		}
		if(!m_pRecordset->BOF)
		{
			m_pRecordset->MoveFirst();
		}
		while(!m_pRecordset->adoEOF)
		{
			var = m_pRecordset->GetCollect("SID");
			if(atoi(m_SID) == var.iVal)
			{
				findSID = true;
				QuerySID();
				break;
			}
			else
			{
				m_pRecordset->MoveNext();
			}
		}
		if(findSID == false)
		{
			MessageBox("学号输入不正确!");
		}
		UpdateData(true);
	}

	// TODO: Add your control notification handler code here
	
}
void CPageStat::QuerySID()
{
	UpdateData(true);
	if(m_SID != "")
	{
		m_Ado.SetRecordSource("select SID as 学号, CHOICES.CID as 课程号, CName as 课程名, Score as 分数 from COURSES, CHOICES WHERE COURSES.CID = CHOICES.CID and SID = " + m_SID);
		m_Ado.Refresh();		
	}
	CString str;
	_variant_t var;
	int CouNum = 0,Avg = 0,sum = 0,NPass = 0;
	str.Format("select SID, CHOICES.CID, CName, Score from COURSES, CHOICES WHERE COURSES.CID = CHOICES.CID and SID = '%s'",m_SID);
	try
		{
			//先关闭已经打开的记录集对象
			m_pRecordset->Close();
			//
			//根据新的Sql查询语句,重新打开记录集对象
			//使用记录集对象的Open()函数
			//
			m_pRecordset->Open(str.AllocSysString(),                
						    theApp.m_pConnection.GetInterfacePtr(),
						    adOpenDynamic,
						    adLockOptimistic,
						    adCmdText);
		}
		catch(_com_error *e)
		{
			AfxMessageBox(e->ErrorMessage());
		}
	if(m_pRecordset->adoEOF)
	{
		AfxMessageBox("该生没有选课!");
		m_Ado.SetRecordSource("select * from STUDENTS");
		m_Ado.Refresh();
		return;
	}
	if(!m_pRecordset->BOF)
	{
		m_pRecordset->MoveFirst();
	}
	while(!m_pRecordset->adoEOF)
	{
		CouNum ++;
		var = m_pRecordset->GetCollect("Score");
		sum += var.iVal;
		if(var.iVal < 60)
		{
			NPass ++;
		}
		m_pRecordset->MoveNext();
	}
	m_CouNum = CouNum;
	if(CouNum != 0)
	{
		Avg = sum/CouNum;
	}
	m_Avg = Avg;
	m_NPass = NPass;
	UpdateData(false);
}

⌨️ 快捷键说明

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