📄 stupage2.cpp
字号:
// StuPage2.cpp : implementation file
//
#include "stdafx.h"
#include "SCMIS.h"
#include "StuProSht.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CDatabase db;
/////////////////////////////////////////////////////////////////////////////
// CStuPage2 property page
IMPLEMENT_DYNCREATE(CStuPage2, CPropertyPage)
CStuPage2::CStuPage2() : CPropertyPage(CStuPage2::IDD)
{
//{{AFX_DATA_INIT(CStuPage2)
m_avg = 0;
m_max = 0;
m_min = 0;
m_score = 0;
//}}AFX_DATA_INIT
}
CStuPage2::~CStuPage2()
{
}
void CStuPage2::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CStuPage2)
DDX_Control(pDX, IDC_LIST1, m_course);
DDX_Text(pDX, IDC_EDIT_AVG, m_avg);
DDX_Text(pDX, IDC_EDIT_MAX, m_max);
DDX_Text(pDX, IDC_EDIT_MIN, m_min);
DDX_Text(pDX, IDC_EDIT_SCORE, m_score);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CStuPage2, CPropertyPage)
//{{AFX_MSG_MAP(CStuPage2)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStuPage2 message handlers
BOOL CStuPage2::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
m_course.InsertColumn(0,"课程编号");
m_course.InsertColumn(1,"课程名称");
RECT rect;
m_course.GetWindowRect(&rect);
int wid=rect.right-rect.left;
m_course.SetColumnWidth(0,wid/2);
m_course.SetColumnWidth(1,wid/2);
m_course.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_course.SetTextBkColor(RGB(192,192,0));
m_course.SetTextColor(RGB(0,0,255));
//m_stuid="1";
CStuProSht *m_dlg;
m_dlg=(CStuProSht*)this->GetParent();
this->m_stuid=m_dlg->m_id;
this->RefreshData();
/*
CRecordset rs1(&db);
m_course.DeleteAllItems();
//m_stuid=this->GetOwner()->m_hWnd
rs1.Open(CRecordset::forwardOnly,"select course.id ,course.name from course,sc where course.id=sc.corid and sc.stuid='"+m_stuid+"' order by course.id");
char buf[20];
int i=0;
CDBVariant varValue;
while(!rs1.IsEOF())
{
int temp=0;
rs1.GetFieldValue(temp,varValue);
//sprintf(buf,"%d",varValue.m_lVal); m_course.InsertItem(i,buf);//if is int type ,write this way
sprintf(buf,"%s",varValue.m_pstring->GetBuffer(1)); m_course.InsertItem(i,buf);
//m_course.SetItemText(i,0,varValue.m_pstring->GetBuffer(1));
rs1.GetFieldValue(1,varValue);
m_course.SetItemText(i,1,varValue.m_pstring->GetBuffer(1));
rs1.MoveNext();
i++;
}
*/
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CStuPage2::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int i=m_course.GetSelectionMark();
CDBVariant varValue;
CString strSQL;
CRecordset rs(&db);
//m_scoe cal
CStuProSht *m_dlg;
m_dlg=(CStuProSht*)this->GetParent();
this->m_stuid=m_dlg->m_id;
CString ct=m_course.GetItemText(i,0);
strSQL.Format("select score from sc where corid='%s' and stuid='%s'",ct,m_stuid);
rs.Open(CRecordset::forwardOnly,strSQL);
int tempt=0;
rs.GetFieldValue(tempt,varValue);
m_score=varValue.m_iVal;
this->UpdateData(FALSE);
rs.Close();
//m_max cal
strSQL.Format("select max(score) from sc where corid='%s'",ct);
rs.Open(CRecordset::forwardOnly,strSQL);
rs.GetFieldValue(tempt,varValue);
m_max=varValue.m_iVal;
this->UpdateData(FALSE);
rs.Close();
//m_min cal
strSQL.Format("select min(score) from sc where corid='%s'",ct);
rs.Open(CRecordset::forwardOnly,strSQL);
rs.GetFieldValue(tempt,varValue);
m_min=varValue.m_iVal;
this->UpdateData(FALSE);
rs.Close();
//m_avg
strSQL.Format("select avg(SCORE) from sc where corid='%s'",ct);
rs.Open(CRecordset::forwardOnly,strSQL);
rs.GetFieldValue(tempt,varValue);
m_avg=varValue.m_iVal;
this->UpdateData(FALSE);
rs.Close();
/*CString ct=m_course.GetItemText(i,0);
strSQL.Format("select avg(score) from sc where corid='%s'",ct);
rs.Open(CRecordset::forwardOnly,strSQL);
int tempt=0;
rs.GetFieldValue(tempt,varValue);
m_avg=varValue.m_iVal;
this->UpdateData(FALSE);
rs.Close();
*/
*pResult = 0;
}
void CStuPage2::RefreshData()
{ CRecordset rs1(&db);
m_course.DeleteAllItems();
rs1.Open(CRecordset::forwardOnly,"select course.id ,course.name from course,sc where course.id=sc.corid and sc.stuid='"+m_stuid+"' order by course.id");
char buf[20];
int i=0;
CDBVariant varValue;
while(!rs1.IsEOF())
{
int temp=0;
rs1.GetFieldValue(temp,varValue);
//sprintf(buf,"%d",varValue.m_lVal); m_course.InsertItem(i,buf);//if is int type ,write this way
sprintf(buf,"%s",varValue.m_pstring->GetBuffer(1)); m_course.InsertItem(i,buf);
//m_course.SetItemText(i,0,varValue.m_pstring->GetBuffer(1));
rs1.GetFieldValue(1,varValue);
m_course.SetItemText(i,1,varValue.m_pstring->GetBuffer(1));
rs1.MoveNext();
i++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -