📄 dialogstat.cpp
字号:
// DialogSTAT.cpp : implementation file
//
#include "stdafx.h"
#include "YDMS.h"
#include "DialogSTAT.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDialogSTAT dialog
CDialogSTAT::CDialogSTAT(CWnd* pParent /*=NULL*/)
: CDialog(CDialogSTAT::IDD, pParent)
{
//{{AFX_DATA_INIT(CDialogSTAT)
m_AvgL = 0;
m_NotPassL = 0;
m_AvgR = 0;
m_NotPassR = 0;
m_CouID = _T("");
m_StuID = _T("");
m_CouNum = 0;
m_StuNum = 0;
//}}AFX_DATA_INIT
}
void CDialogSTAT::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDialogSTAT)
DDX_Control(pDX, IDC_DATAGRID_STU, m_DataL);
DDX_Control(pDX, IDC_ADODC_STU, m_AdoL);
DDX_Control(pDX, IDC_ADODC_COU, m_AdoR);
DDX_Control(pDX, IDC_DATAGRID_COU, m_DataR);
DDX_Text(pDX, IDC_EDIT_AVGL, m_AvgL);
DDX_Text(pDX, IDC_EDIT_NOTPASSL, m_NotPassL);
DDX_Text(pDX, IDC_EDIT_AVGR, m_AvgR);
DDX_Text(pDX, IDC_EDIT_NOTPASSR, m_NotPassR);
DDX_Text(pDX, IDC_EDIT_COUID, m_CouID);
DDX_Text(pDX, IDC_EDIT_STUID, m_StuID);
DDX_Text(pDX, IDC_EDIT_COUNTL, m_CouNum);
DDX_Text(pDX, IDC_EDIT_COUNTR, m_StuNum);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDialogSTAT, CDialog)
//{{AFX_MSG_MAP(CDialogSTAT)
ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOK)
ON_BN_CLICKED(IDC_BUTTON_GOBACK, OnButtonGoback)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDialogSTAT message handlers
BOOL CDialogSTAT::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 CDialogSTAT::OnButtonOK()
{
// TODO: Add your control notification handler code here
UpdateData(true);
_variant_t var;
bool findStuID = false,findCouID = false;
if(m_StuID != "")
{
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("StuID");
if(atoi(m_StuID) == var.iVal)
{
findStuID = true;
QueryStuID();
break;
}
else
{
m_pRecordset->MoveNext();
}
}
if(findStuID == false)
{
MessageBox("学号输入不正确!");
}
UpdateData(true);
}
if(m_CouID != "")
{
try
{
//先关闭已经打开的记录集对象
m_pRecordset->Close();
//从SQL数据库中打开COURSES表
m_pRecordset->Open("SELECT * FROM COURSES",
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("CouID");
if(atoi(m_CouID) == var.iVal)
{
findCouID = true;
QueryCouID();
break;
}
else
{
m_pRecordset->MoveNext();
}
}
if(findCouID == false)
{
MessageBox("课程号输入不正确!");
}
}
}
void CDialogSTAT::QueryStuID()
{
UpdateData(true);
if(m_StuID != "")
{
m_AdoL.SetRecordSource("select StuID as 学号, CHOICES.CouID as 课程号, CouName as 课程名, Score as 分数 from COURSES, CHOICES WHERE COURSES.CouID = CHOICES.CouID and StuID = " + m_StuID);
m_AdoL.Refresh();
}
CString str;
_variant_t var;
int CouNum = 0,AvgL = 0,sum = 0,NotPassL = 0;
str.Format("select StuID, CHOICES.CouID, CouName, Score from COURSES, CHOICES WHERE COURSES.CouID = CHOICES.CouID and StuID = '%s'",m_StuID);
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_AdoL.SetRecordSource("select * from STUDENTS");
m_AdoL.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)
{
NotPassL ++;
}
m_pRecordset->MoveNext();
}
m_CouNum = CouNum;
if(CouNum != 0)
{
AvgL = sum/CouNum;
}
m_AvgL = AvgL;
m_NotPassL = NotPassL;
UpdateData(false);
}
void CDialogSTAT::QueryCouID()
{
UpdateData(true);
if(m_CouID != "")
{
m_AdoR.SetRecordSource("select CHOICES.CouID as 课程号, COURSES.CouName as 课程名, CHOICES.StuID as 学号,STUDENTS.StuName as 姓名,CHOICES.Score as 分数 from COURSES, CHOICES,STUDENTS WHERE CHOICES.CouID =COURSES.CouID AND CHOICES.StuID = STUDENTS.StuID AND CHOICES.CouID = " + m_CouID);
m_AdoR.Refresh();
}
CString str;
_variant_t var;
int StuNum = 0,AvgR = 0,sum = 0,NotPassR = 0;
str.Format("select CHOICES.CouID, COURSES.CouName, CHOICES.StuID,STUDENTS.StuName,CHOICES.Score from COURSES, CHOICES,STUDENTS WHERE CHOICES.CouID =COURSES.CouID AND CHOICES.StuID = STUDENTS.StuID AND CHOICES.CouID = '%s'",m_CouID);
_variant_t RecordsAffected;
try
{
//先关闭已经打开的记录集对象
m_pRecordset->Close();
//利用连接对象的Execute方法执行SQL命令
m_pRecordset = theApp.m_pConnection->Execute(str.AllocSysString(),
&RecordsAffected,adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
if(m_pRecordset->adoEOF)
{
AfxMessageBox("该课没有人选!");
m_AdoR.SetRecordSource("select * from COURSES");
m_AdoR.Refresh();
return;
}
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
StuNum ++;
var = m_pRecordset->GetCollect("Score");
sum += var.iVal;
if(var.iVal < 60)
{
NotPassR ++;
}
m_pRecordset->MoveNext();
}
m_StuNum = StuNum;
if(StuNum != 0)
{
AvgR = sum/StuNum;
}
m_AvgR = AvgR;
m_NotPassR = NotPassR;
UpdateData(false);
}
void CDialogSTAT::OnButtonGoback()
{
// TODO: Add your control notification handler code here
// TODO: Add your control notification handler code here
//关闭记录集并退出
m_pRecordset->Close();
OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -